zoukankan      html  css  js  c++  java
  • Linux:Day12(下) 进程、任务计划

    vmstat命令:

      vmstat [options] [delay [ count]]

      procs:

        r:等待运行的进程的个数;

        b:处于不可中断睡眠态的进程个数;(被阻塞的队列的长度);

      memory:

        swpd:交换内存的使用总量;

        free:空闲物理内存总量;

        buffer:用于buffer的内存总量;

        cache:用于cache的内存总量;

      swap:

        si:数据进入swap中的数据速率(kb/s)

        so:数据离开swap中的数据速率(kb/s)

      io:

        bi:从块设备读入数据到系统的速率(kb/s)

        bo:保存数据至块设备的速率;

      system:

        in:interrupts,中断速率;每秒发生多少次中断

        cs:context switch,进程切换速率;

      cpu:

        us:用户空间占据的比例

        sy:内核空间占据的比例

        id:空闲比例

        wa:等待IO完成所消耗的时间比例

        st:被虚拟化技术偷走的时间比例

      选项:

        -s:显示内存的统计数据

    pmap命令:

      pmap [ options ] pids...

        -x:显示详细格式 的信息;

      另外一种实现:

        cat /proc/PID/maps

    glances:

      常用选项:

        -b:以Byte为单位显示网卡数据速率;

        -d:关闭磁盘I/O模块;

        -f /path/to/somefile:设定输入文件位置;

        -o { HTML | CSV }:输出格式;

        -m:禁用mount模块;

        -n:禁用网络模块;

        -t #:延迟时间间隔;

        -1:每个CPU的相关数据单独显示;

      C/S模式下运行glances命令:

        服务模式:

          glances -s -B IPADDR

          IPADDR:指明监听本机哪个地址

        客户端模式:

          glances -c IPADDR

          IPADDR:要连入的服务器端地址

    dstat命令:

      dstat [-afv] [options..] [delay [count]]

        -c:显示cpu相关信息;

          -C #,#,....,total

        -d:显示disk相关信息;

          -D total,sda,sdb,...

        -g:显示page相关统计数据;

        -m:显示memory相关统计数据;

        -n:显示network相关统计数据;

        -p:显示process相关统计数据;

        -r:显示io请求相关的统计数据;

        -s:显示swapped相关的统计数据;

        --tcp

        --udp

        --unix

        --raw:裸套接字

        --socket

        --ipc

        --top-cpu:显示最占用CPU的进程;

        --top-io:显示最占用io的进程;

        --top-mem:显示最占用内存的进程;

        --top-lantency:显示延迟最大的进程;

    kill命令:

      向进程发送控制信息,以实现对进程管理

      显示当前系统可用信息:

        kill -l

        man 7 signal

        常用信号:

          1) SIGHUP:无需关闭进程而让其重读配置文件;

          2) SIGINT:中止正在运行的进程;相当于Ctrl + c;

          9) SIGKILL:杀死正在运行的进程;

          15) SIGTERM:终止正在运行的进程;

          18) SIGCONT:手工调度进程继续运行;

          19) SIGSTOP:让进程处理停止态;

        指定信息的方法:

          (1) 信号的数字标识:1,2,9

          (2) 信号完整名称:SIGHUP

          (3) 信号的简写名称:HUP

      向进程发信号:

        kill [ -SIGNAL ]  PID...

      终止“名称”之下的所有进程:

        killall  [ -SIGNAL ]  Program

    Linux的作业控制

      前台作业:通过终端启动,且启动后一直占据终端;

      后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端);

      如何让作业运行于后台?

        (1)运行中的作业

          Ctrl + z

        (2)尚未启动的作业

          COMMAND &

        此类作业虽然被送往后台运行,但其依然与终端相关;如果希望送往后台后,剥离与终端的关系;

          nohup COMMAND &

        查看所有作业:

          jobs

        作业控制:

          fg [[%]JOB_NUM]:把指定的后台作业调回前台;

          bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行;

          kill [%JOB_NUM]:终止指定的作业;

    进程优先级调整:

      静态优先级:100-139

      进程默认启动时的nice值为0,优先级为120;

      nice命令:

        nice [OPTION] [COMMAND [ARG]...]

        nice,renice

      renice命令:

        renice [-n] priority pid...

      查看:

        ps axo pid,comm,ni

    未涉及到的命令:sar,tsar,iostat,iftop

    博客作业:进程管理工具top/htop/glances/dstat的使用;

    Linux任务计划、周期生任务执行

      未来的某时间点执行一次任务:at,batch

      周期生运行某伤:cron

      电子邮件服务:

        smtp:simple mail transmission protocol,用于传送邮件;

        pop3:Post Office Protocol

        imap4:Internet Mail Access Protocol

        mailx - send and receive Internet mail

          MUA:Mail User Agent

          mailx [-s "SUBJECT"] username[@hostname]

            邮件正文的生成:

              (1)直接给出,Ctrl+d

              (2)输入重定向

              (3)通过管道:

                echo -e "How are you? How old are you?" | mail

          mail  收件

    at命令:

      at [option] TIME

        TIME:

          HH:MM [YYY-mm-dd]

          nonn,midnight,teatime

          tomorrow

          now+#{minutes,hours,days,OR weeks}

        常用选项:

          -q QUEUE:

          -l:列出指定队列中等待运行的作业;相当于atq

          -d:删除指定的作业;相当于atrm

          -c:具体的作业任务;

          -f /path/from/somefile:从指定的文件中读取任务

        注意:作业执行结果以邮件通知给相关用户;

    batch命令:

      让系统自行选择空闲时间去执行此处指定的任务;

    周期性任务计划:cron

      相关的程序包:

        cronie:主程序包,提供了crond守护进程及相关辅助工具;

        cronie-anacron:cronie的补充程序;用于监控cronie任务执行状况;如cronie中的任务在过去该运行的时间点未能正常运行,则anacron会随后启动一次此任务;

        crontabs:包含CentOS提供系统维护任务;

        确保crond守护处理运行状态:

          CentOS 7: 

            ssytemctl status crond

              ...running...

          CentOS 6:

            service crond status

      计划要周期性执行的任务提交给crond,由其来实现到点运行。

        系统cron任务:系统维护作业

          /etc/crontab

        用户cron任务:

          crontab命令

        系统cron任务

        例如:晚上9点10分运行echo命令:

          10 21 * * * gentoo /bin/echo "Howdy!"

        时间表示法:

          (1)特定值:

            给定时间点有效取值范围内的值;

          (2)*

            给定时间点上有效取值范围内的所有值;

            表示“每....”

          (3)离散取值:,

            #,#,#,

          (4)连续取值:-

            #-#

          (5)在指定时间范围上,定义步长;

            /#:#即为步长

        例如:每3小时echo命令;

          0 */3 * * * gentoo /bin/echo "howdy!"

      用户cron:

        crontab命令定义,每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

        crontab命令:

          crontab [-u user] [-l | -r | -e] [-i]

            -l:列出所有任务;

            -e:编辑任务;

            -r:移除所有任务;

            -i:同-r一同使用,以交互式模式让用户有选择地移除指定任务;

            -u user:仅root可运行,代为为指定用户管理cron任务;

        注意:运行结果以邮件通知给相关用户;

          (1)COMMAND > /dev/null;

          (2)COMMAND &> /dev/null

          对于cron任务来讲,%有特殊用途:如果在命令中要使用%,则需要转义;不过,如果把%放置于单引号中,也可以不用转义。

        思考:

          (1)如何在秒级别运行任务?

            * * * * * for min in 0 1 2;  do echo "hi";  sleep 20; done

          (2)如何实现每7分钟运行一次任务?

          sleep命令:

            sleep NUMBER [SUFFIX]...

              SUFFIX:

                s:秒,默认

                m:分

                h:小时

                d:天

    练习:

      1、每4小时备份一次/etc目录至/backup目录中,保存的文件名称格式为“etc-yyy-mm-dd-HH.tar.xz";

      2、每周2,4,7备份/var/log/messages文件至/logs目录中,文件名形如”message-yymmdd”;

      3、每两小时取出当前系统/proc/meminfo文件中以S或M开关的信息追加至/tmp/meminfo.txt文件中;

      4、工作日时间内,每小时执行一次“ip addr show”命令;

  • 相关阅读:
    MySQL基础语句【学习笔记】
    减一技术应用:生成排列与幂集
    Java实现动态规划法求解0/1背包问题
    LODOP中ADD_PRINT_TABLE、HTM、HTML表格自动分页测试
    LODOP设置判断后执行哪个
    Lodop删除语句Deleted只能内嵌设计维护可用
    Lodop、c-lodop注册与角色简短问答
    LODOP暂存、应用、复原 按钮的区别
    JS判断语句 注意多句时加大括号 回调函数LODOP兼顾写法
    LODOP、C-Lodop简短排查语句
  • 原文地址:https://www.cnblogs.com/sq5288/p/10545338.html
Copyright © 2011-2022 走看看