10.进程和计划任务管理

本文介绍Linux环境下进程的概念、查看与管理方法,包括ps、top、pgrep等命令的使用技巧,以及如何通过at和crontab设置计划任务。
  • 概念理解
    1. 程序:保存在外部存储介质(如硬盘)中的可执行机器代码和数据的静态集合
    2. 进程:cpu及内存中处于动态执行的计算机程序
    3. 程序和进程关系:

每个程序启动后可以创建一个或是多个进程.

进程是实现程序功能服务的实现过程和体现形式.

网站服务--------httpd程序------多个进程来接受和处理用户请求

  • 查看进程

了解系统中进程的状态是对进程管理的前提,使用不同的进程多角度查看进程状态

    1. ps命令-------查看静态的进程统计信息(processes statistic)
      1. Ps命令是最常用的进程查看工具,用于显示当前运行的个进程完整信息的静态快照
      2. Ps命令选项:

a:显示当前终端下所有用户的所有进程信息

u:使用以用户为主的格式输出进程信息.

x:显示当前用户所在终端下的进程信息

-e:显示系统内的所有进程信息

-l:使用长格式显示进程信息

-f:使用完整的格式显示进程信息

      1. 常用PS命令组合
        • Ps aux------以简单列表的形式显示出进程信息

USER               用户 

PID                  进程号 

%CPU              执行命令时候进程占用的CPU百分比

%MEM             执行命令时候进程占用的CPU百分比

VSZ                  虚拟内存集(swap空间大小)         

RSS                  常住内存集

TTY                   终端号 

STAT              当前进程状态

             Rruning 运行态 

             S:可中断睡眠态 (休眠状态)

             D:不可中断睡眠态

             T:停止态

             Z:僵死进程

             s:表示这个进程是个领导者进程(父进程)

             +:该进程为后台进程

             l:该进程是多线程进程

            N:低优先级进程

            <:高优先级进程 

            []:表示这个一个内核线程

START   启动时间

TIME        运行时间

COMMAND 执行的命令

        • Ps -lef-----长格式显示系统中的进程信息,内容更丰富完整.
        • Ps

Ps 不加任何选项代表查询当前用户会话中打开的进程

        • Ps 结合管道符”|”

Ps aux | grep 进程名  -------过滤vim这个程序的状态

    1. Top

Top:动态实时显示进程状态信息(每个3s 刷新进程状态)

解析:

当前时间 系统已运行时间 当前登录用户数  最近5\10\15分钟平均负载

load average:0.24, 0.15, 0.19 — load average后面的三个数分别是5分钟、10分钟、15分钟的负载情况

   

主要看id空闲百分比  部分 判断cpu是否忙

物理内存使用率(单位是k)

 total — 物理内存总量,  used — 使用中的内存总量, free — 空闲内存总量,buffers — 缓存的内存量

  1. top命令模式下的交互命令:
  • M:根据内存占用情况进行排序
  • N进程按照启动时间进行排序
  • h:获得top命令的在线帮助
  • q:正常退出top程序
  • K:结束进程交互界面,输入pid结束对应进程

PID 进程id

USER 进程所有者的用户名

PR 优先级

NI nice值。负值表示高优先级,正值表示低优先级

VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

SHR 共享内存大小,单位kb

S 进程状态。(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)

%CPU 上次更新到现在的CPU时间占用百分比

%MEM 进程使用的物理内存百分比

TIME+ 进程使用的CPU时间总计,单位1/100秒

COMMAND 命令名/命令行

    1. pgrep

程序管理中对PID的查询使用比较多,比如结束一个进程需要先知道其PID,然后在杀死,Ps 查询指定程序PID的时候需要用过滤才能查看

Grep 可以直接查看指定程序的PID信息,相对比较方便.

Pgrep  选项  --------pgrep使用的命令格式

Pgrep -l 程序名称   -----查询指定程序的PID

Pgrep -u 用户名 ------查询指定用户的所有进程ID(只显示PID,不显示程序名称)

Pgrep –lu 用户名  ----查询指定用户的所有程序以及PID

    1. pstree

pstree命令可以输出linux系统中各种进程的树形结构,更好判断进程之间的关系(父子进程)

-a:列出完整命令信息

-u:列出对应的用户名

-p:列出对应的PID

Pstree -aup -----查看系统的进程树,包括进程对应的PID 用户名 完整命令

Pstree -ap   ------查看指定用户的进程树信息

  • 控制进程
    1. 启动进程
      1. 手动启动进程
        • &(放在执行命令后面) ---将该执行命令放到后台执行
      2. 调度启动进程
        • at------一次性计划启动进程
        • Crontab  ------周期性计划启动进程
    1. 改变进程的运行方式
      1. 挂起当前的进程
        • Ctrl+Z(快捷键) ------将前台的任务调入后台暂停运行
      2. 查看后台的进程
        • Jobs -l

      1. 将后台的进程恢复运行

bg 任务编号  ------将指定的后台暂停程序在后台继续执行

fg 任务编号  -------将制定的后台暂停程序调入前台继续执行

    1. 终止进程执行
      1. Ctrl + c -------强制中断正在执行或是未执行完的命令
      2. Kill  ----终止进程(kill命令给指定PID程序发出正常退出信号,如不能正常退出 -9强制退出)
        • Pgrep -l 程序名  -------得到指定进程的PID
        • Kill PID  --------正常退出PID对应的进程
        • Kill -9 PID -------不能正常退出的程序,-9强制杀死
  1. Killall  进程名称-------退出同一个程序的多个进程

(vim aa.txt  vim bb.txt vim cc.txt    killall vim)

Killall -9 vim ------强制杀死指定进程

  1. Pkill ----终止进程

Pkill可以根据指定的用户 进程名 终端所运行的程序进行终止

Pgrep -l - U “zhangsan” --------查看指定用户执行的进程

Pkill -9 -U “zhangsan” -------强制关闭zhangsan用户的进程

  • 计划任务管理
    1. at一次性任务设置
      1. at命令设置的计划任务是在指定时间点执行一次
      2. 必须开启atd系统服务

      1. 执行at一次性计划的时间以系统时间为准,必须在系统时间之后,否则无法正确设置.
      2. 命令
        • date ----查看系统时间日期
        • At 10:35 2019-02-21  -------创建10:354 2019-02-21时间点的计划任务

At>tail -2 /etc/passwd > /top.txt (‘>’  ‘>>’)

  Crtl+d ------结束计划任务配置

        • 验证结果

  Cat /top.txt

  1. atq -----查看未执行的一次性计划任务

  1. atrm 计划任务编号  ------删除指定未执行的一次性计划任务
  2. at 时间 ------常见当天的一次性计划任务(没有带日期就表示当天)

    1. crontab周期性任务计划设置

(一)计划任务管理 crond

  • crontab命令
    • 按照预先设置的时间周期(分钟、小时、天……)重复执行用户指定的命令操作
    • 属于周期性计划任务
    • 主要设置文件
      •  全局配置文件,位于文件:/etc/crontab
      •  系统默认的设置,位于目录:/etc/cron.*/
      •  用户定义的设置,位于文件:/var/spool/cron/用户名
  • 管理cron计划任务
    • 编辑计划任务
  • crontab  -e  [-u  用户名] 
  • crontab  -l [-u  用户名]   列出查看计划任务
  • crontab  -r  [-u  用户名]  清空计划任务

crontab 任务配置的格式

  • 时间数值的特殊表示方法
    • *     表示该范围内的任意时间
    • ,    表示间隔的多个不连续时间点
    • -     表示一个连续的时间范围
    • /     指定间隔的时间频率
  • 应用示例
    • 0  17  *  *  1-5          周一到周五每天17:00
    • 30  8  *  *  1,3,5       每周一、三、五的8点30分
    • 0  8-18/2  *  *  *       8点到18点之间每2小时
    • 0  *`  */3  *  *      每3天

每月28号23点59分 重启服务器

  1. 每天早上05:29自动开启防火墙服务

29 05 * * * /usr/bin/systemctl start firewalld.service=systemctl start firewalld

  1. 每个隔7天清空/ftproot/tmp

0 0 */7 * * /usr/bin/rm -rf /ftproot/tmp/*

  1. 每周一23:59重启服务器

59 23 * * 1 /usr/sbin/reboot

  1. 每周一 三 五下午23:30 使用tar命令压缩/ftp/root目录为ftproot.tar.gz

30 23 * * 1,3,5 /usr/bin/tar zcvf ftproot.tar.gz /ftp/root

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值