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”命令;

  • 相关阅读:
    【leetcode】106. Construct Binary Tree from Inorder and Postorder Traversal
    【leetcode】105. Construct Binary Tree from Preorder and Inorder Traversal
    【leetcode】236. Lowest Common Ancestor of a Binary Tree
    【leetcode】235. Lowest Common Ancestor of a Binary Search Tree
    【leetcode】352. Data Stream as Disjoint Intervals
    【leetcode】897. Increasing Order Search Tree
    【leetcode】900. RLE Iterator
    BEC listen and translation exercise 26
    BEC listen and translation exercise 25
    BEC listen and translation exercise 24
  • 原文地址:https://www.cnblogs.com/sq5288/p/10545338.html
Copyright © 2011-2022 走看看