进程和计划任务管理

本文详细介绍了Linux系统下的进程管理工具,包括 pstree、ps、top、kill 和 vmstat 命令的使用,以及如何查看和处理僵尸进程。此外,还讲解了计划任务的设置方法,如at和cron。通过对这些工具的掌握,可以有效地监控和管理Linux系统的进程,提升系统性能。
摘要由CSDN通过智能技术生成

查看进程

pstree以树形结构列出进程信息

pstree  [选项] (用户名)
	常用命令选项
-p:列出对应进程的PID编号 
-a:显示完整的命令行  
-u:显示进程的用户名称。
-u 用户名:显示指定用户的进程 
-T 不显示线程thread,默认显示线程
-H pid 高亮显示指定进程及其前辈进程
[root@localhost ~]# pstree     #显示正在运行的所有进程
[root@localhost ~]# pstree  -p lisi #显示lisi用户开启的进程

ps静态查看进程

格式:ps  [选项]...
常用命令选项
aux:显示当前终端所有进程(a)、当前用户在所有终端下的进程(x)、以用户格式输出(u)
	列出正在运行的所有进程,显示进程信息非常详细
-elf:显示系统内所有进程(-e)、以长格式输出(-l)信息、包括最完整的进程信息(-f)
	列出正在运行的所有进程,显示进程父进程信息
	PPID为父进程的PID
-l  只能看到当前 Shell 产生的进程

k|--sort 属性 对属性排序,属性前加 - 表示倒序
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem

面试题:找到未知进程的执行程序文件路径(如高cpu进程、病毒等)

[root@localhost ~]#ll /proc/24081/exe
lrwxrwxrwx. 1 root root 0 10月  7 23:11 /proc/24081/exe -> /usr/bin/dd
[root@localhost ~]#rm –rf  /usr/bin/dd
[root@localhost ~]#touch a;chattr +i  a  创建一个跟刚才删除的那个文件同名的新文件,
添加chattr属性,添加之后这个文件不能被删除修改

prtstat 查看指定的进程

prtstat PID

pgrep根据特定条件查询进程的PID信息

–	用途:pgrep  [选项]...  查询条件
	常用命令选项
-u:检索指定用户的进程
-x:精确匹配完整的进程名 
-P < PID>:显示指定进程的子进程
-a:显示完整格式的进程名
-l:输出进程名,而不仅仅是 PID

top命令——动态查看进程

–	格式:top [选项]  参数   
-p 进程PID:仅查看指定 ID 的进程
-d 刷新秒
-U 用户名

按大写P按照CPU排序
按大写M按照内存排序
按大写N按照PID排序
按c按照CPU的使用率排序,默认就是此选项 
按大写F通过光标设置字段是否展示,以及展示顺序      

top命令输出内容

表头(字段名)                         说明
PID                               进程的 ID号
USER                            该进程所属的用户
PR                     priority优先级,数值越小 优先级越高
NI                       nice优先级,数值越小 优先级越高
VIRT                   该进程使用的虚拟内存的大小,单位为 KB
RES                    该进程使用的物理内存的大小,单位为 KB
SHR                      共享内存大小,单位为 KBS进程状态
%CPU                         该进程占用 CPU 的百分比
%MEM                          该进程占用内存的百分比
TIME+                        该进程总共占用的 CPU 时间
COMMAND                   进程的命令名(进程文件、进程名称)

处理僵尸进程

僵尸进程:当子进程比父进程先结束,而父进程又没有回收子进程,释放子进程占用的资源,此时子进程将成为
一个僵厂进程。
ps -A -o stat,pid,ppid | grep -e '[zZ]'  得到僵尸进程的 PID 及其父进程的 PID
#方法1:恢复父进程
kill -18 <parent_process_ID>
#方法2:杀死父进程
kill -9 <parent_process_ID>

vmstat监控系统资源

vmstat [-a] [刷新延时 刷新次数]
[root@localhost proc]# vmstat 1 3
#使用vmstat检测,每隔1秒刷新一次,共刷新3次

常用选项:
-f显示从启动到目前为止,系统复制(fork)的程序数。此信息是从 /proc/stat 中的 processes字段中
取得的。
-s将从启动到目前为止,由一些事件导致的内存变化情况列表说明。这些信息的分别来
自于/proc/meminfo,/proc/stat和/proc/vmstat。
-S 单位令输出的数据显示单位,例如用 K/M 取代 bytes 的容量。
-d列出硬盘有关读写总量的统计表。-p 分区设备文件名查看硬盘分区的读写情况。



通过分析 vmstat 命令的执行结果,可以获得一些与当前 Linux 运行性能相关的信息。比如说:

r 列表示运行和等待 CPU 时间片的进程数,如果这个值长期大于系统 CPU 的个数,就说明 CPU 不足,
需要增加 CPU。
swpd 列表示切换到内存交换区的内存数量(以 kB 为单位)。如果 swpd 的值不为 0,或者比较大,
而且 si、so 的值长期为 0,那么这种情况下一般不用担心,不用影响系统性能。
cache 列表示缓存的内存数量,一般作为文件系统缓存,频繁访问的文件都会被缓存。如果缓存值较大,
就说明缓存的文件数较多,如果此时 I/O 中 bi 比较小,就表明文件系统效率比较好。
一般情况下,si(数据由硬盘调入内存)、so(数据由内存调入硬盘) 的值都为 0,如果 si、so 的
值长期不为 0,则表示系统内存不足,需要增加系统内存。
如果 bi+bo 的参考值为 1000 甚至超过 1000,而且 wa 值较大,则表示系统磁盘 I/O 有问题,
应该考虑提高磁盘的读写性能。
输出结果中,CPU 项显示了 CPU 的使用状态,其中当 us 列的值较高时,说明用户进程消耗的 CPU 
时间多,如果其长期大于 50%,就需要考虑优化程序或算法;sy 列的值较高时,说明内核消耗的 CPU 
资源较多。
通常情况下,us+sy 的参考值为 80%,如果其值大于 80%,则表明可能存在 CPU 资源不足的情况。

总的来说,vmstat 命令的输出结果中,我们应该重点注意 procs 项中 r 列的值,以及 CPU 项中
 us 列、sy 列和 id 列的值。


结束进程

kill

Ctrl+c 组合键,中断当前命令程序
kill  [-9]  PID... 、kill  [-9]  %后台任务编号

killall

killall  [-9]  进程名...
- -i:交互式,询问是否要杀死某个进程;
- -I:忽略进程名的大小写;

pkill

pkill    [-9]  查找条件   #包含就算
pkill [-U 用户名] 进程名
pkill [-t 终端号] 进程名
 ​
-U:根据进程所属的用户名终止相应进程
-t:根据进程所在的终端终止相应进程

控制进程(进程前后台的调度)

&符号:    正在运行的状态放入后台
Ctrl + z 组合键   挂起当前进程(暂停并转入后台)
jobs 命令  查看后台任务列表
fg 命令    将后台任务恢复到前台运行
bg 命令    激活后台被挂起的任务

计划任务

at一次性任务设置

at 工具介绍:

at 命令的访问控制是依靠 /etc/at.allow(白名单)和 /etc/at.deny(黑名单)这两个文件来实现的,
具体规则如下:

如果系统中有 /etc/at.allow 文件,那么只有写入 /etc/at.allow 文件(白名单)中的用户可以使用 
at 命令,其他用户不能使用 at 命令(注意,/etc/at.allow 文件的优先级更高,也就是说,如果同一个
用户既写入 /etc/at.allow 文件,又写入 /etc/at.deny 文件,那么这个用户是可以使用at命令的)。
如果系统中没有 /etc/at.allow 文件,只有 /etc/at.deny 文件,那么写入 /etc/at.deny 文件
(黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。
如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。

系统中默认只有/etc/at.deny 文件,而且这个文件是空的,因此,系统中所有的用户都可以使用at命令。
不过,如果我们打算控制用户的 at 命令权限,那么只需把用户写入 /etc/at.deny 文件即可。

at 设置任务

 at [选项]  [时间]
 at [HH:MM]  [yyyy-mm-dd]
 ​
 #设置具体任务后,按 ctrl+d 提交 。
 #若设置具体任务时,想要退格重写,按ctrl+backspace进行退格。

查询和删除at任务:

 atq      //查看at任务列表
 ​
 atrm [工作号]  //删除指定的at任务

crontab

crontab命令格式:

 crontab -e [-u 用户名]      //编辑计划任务
 ​
 crontab -l [-u 用户名]      //查看计划任务
 ​
 crontab -r [-u 用户名]      //删除计划任务
 ​
 #-u选项缺省时默认针对当前用户,只有超级用户才可以使用-u
复制代码
使用 "crontab -e" 进入 crontab 编辑界面。会打开vim编辑你的任务,输入格式为:
 * * * * * 需要执行的任务
 ​
 #即:时间周期设置 任务内容设置。
 #任务内容设置中,命令一定要用绝对路径,例如cp命令,要用/usr/bin/cp,可以用which查看命令的
 绝对路径

每个星号(*)表示不同的时间概念:

项目                              含义                            范围
第一个"*"                 一小时当中的第几分钟(minute)             0~59
第二个"*"                一天当中的第几小时(hour)                  0~23
第三个"*"                 一个月当中的第几天(day)                  1~31
第四个"*"                 一年当中的第几个月(month)                1~12
第五个"*"                  一周当中的星期几(week)          0~7(0和7都代表星期日)


时间数值的特殊表示方法:

*(星号)代表任何时间。比如第一个"*"就代表一小时种每分钟都执行一次的意思。

,(逗号)
代表不连续的时间。比如"0 8,12,16***命令"就代表在每天的 8 点 0 分、12 点 0 分、
16 点 0 分都执行一次命令。

-(中杠)代表连续的时间范围。比如"0 5 ** 1-6命令",代表在周一到周六的凌晨 5 点 0 分执行命令。

/(正斜线)代表每隔多久执行一次。比如"*/10

crontab注意事项

在书写 crontab 定时任务时,需要注意以下几个事项:

6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3点30分30秒这
样的时间都不能被识别。
在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员
混淆。
在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命
令会报错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值