LINUX 进程和计划任务管理
查看进程
查看静态的进程统计信息
ps 命令 时Linux操作系统中常用的进程查看工具
选项
a 显示当前终端下的所有进程信息
u 使用以用户为主的格式输出进程信息
x 显示当前用户在所有终端下的进程信息
-e 显示系统内的所有进程信息
-l 使用长格式显示进程信息
-f 使用完成的格式显示进程信息
查看进程示例
上述输出信息中,第一行列表标题,字段含义解释
USER: 启动该进程的用户账号的名称。
PID: 该进程在系统中的数字ID,在当前系统中是唯一的。
%CPU: CPU 占用的百分比,
%MEM: 内存占用的百分比。
VSZ: 占用虚拟内存(Swap 空间)的大小。
RSS: 占用常驻内存(物理内存)的大小。
TTY: 表明该进程在哪个终端上运行。“?”表示未知或不需要终端。
STAT: 显示进程当前的状态,如S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状态的进程应该予以手动终止。
START: 启动该进程的时间。
TIME: 该进程占用的 CPU 时间,
COMMAND: 启动该进程的命令的名称。
只执行ps 只显示当前用户下的进程
\
现实中进程可能很多可以使用“|”通配符和过滤命令在实现范围查找
示例
grep 命令后面跟着的 bash是过滤的条件,和更换成其他条件
查看进程动态信息
top 命令 可以连续反馈当前进程的运行状态、
示例
系统任务(Tasks)信息:total,总进程数;running,正在运行的进程数:sleeping,休眠的进程数:stopped,中止的进程数;zombie,僵死无响应的进程数。
CPU 占用信息:us,用户占用;sy,内核占用:ni,优先级调度占用;id,空闲CPU:wa.IO 等待占用:hi,硬件中断占用:si,软件中断占用:st,虚拟化占用。要了解空闲的CPU百分比,主要看 id 部分。
内存(Mem)占用信息:total,总内存空间:free,空闲内存:used,已用内存:buf/cache物理内存和交换内存的缓冲区总和。
交换空间(Swap)占用:total,总交换空间:fee,空闲交换空间:used,已用交换空间:availMem,可用物理空间。
查询进程信息
pgrep 命令 查询进程信息,可以依赖进程名称,运行该进程的用户,进程所在终端等多属性查询特定的进程PID
示例
图上加上“-l”可以输出对应的进程名(否则只输出 PID,不便于理解)
-U 选项查询用户
-t 选项查询特定的终端运行程序
示例
查看进程树
pstree 将进程以树状行展示出来方方便查看进程是由那个程序产生的
-u 选项 可以列出对应的用户名
-a 选项 可以列出完成信息
-p 选项 可以列出对应的PID
示例
该命令可以增加参数 在后面加上用户参数即可查看对应用户进程及子进程
示例
控制进程
手动启动进程
启动后台进程需要使用 ‘&’ 操作符,
不加& 符号就会在当前进行是干不了其他事情的
加上操作符我们就可以看到在后台进行了不会干扰我们做其他的事
改变进程的运行方式
挂起当前进程 可以使用快捷键 Ctrl + z 组合键
示例
查看后台的进程
jobs 命令可以查看后台挂起的程序
选项 -l 显示进程对应的 PID
将后台的进程恢复运行
bg 命令可以让后台暂停的执行任务在后台恢复运行
fg 命令可以让后台暂停执行的任务恢复在前台运行
示例
恢复在前台运行,图中的连接失败不用在意,只是做实验弄得运行程序
终止进程执行
kill 命令终止进程 需要结合进程PID使用
-9 选项可以强制停止程序
示例
killall 命令同样也有 -9选项 只是可以通过进程名字来进行中断
示例
pkill 命令可以根据进程名称,运行该进程的用户,进程所在的终端等多种属性终止特定进程
该命令针对于一些用户做坏事时,直接针对用户停掉所有程序。
计划任务管理
一次性任务设置
at 命令设置的计划任务只在指定的时间点执行一次
示例
上图解释 at 12:20 2025-03-12 创建一个 与2025年3月12日的执行任务
pgrep -U root | wc -l > /tmp/ps.root 这是个执行任务内容 统计该时间点系统中由root用户运行的进程数量 输入执行内容后按 Ctrl + D 上传执行内容
cat /tmp/ps.root 查看ps.root 文件、
删除一次性任务
atq 命令可以查看未执行的一次任务
atrm 删除未执行的一次性任务
示例
周期性任务设置
crontab 命令 设置计划任务
选项:
-e 编辑计划任务列表
-u 指定所管理的计划任务属于哪个用户
-l 列表显示计划任务
-r 删除计划任务列表
crontab 计划任务的配置格式
命令格式 : crontab * * * * * [执行任务] 执行任务必须要以绝对路径表示 *号顺序代表 分,时,日,月,周。周期循序不能变。 *号可以去掉输入数值
用户执行 cat /etc/crontab 命令可以查看执行crontab内容
/var/spool/cron 用户的cron 任务都存放于该目录文件内
实验示例
下创建一个简单的脚本
然后在用crontab 做一个周期性任务
输入crontab -e 进入编辑周期任务界面
查看root任务
查看其它用户 任务命令格式: crontab -l -u [用户名]
删除任务计划表 命令 crontab -r ,crontab -l ,
有个更实用的方法停止周期任务
进入编辑周期任务界面、
在周期执行前面加个 # 号就停止了,想启用时去掉 # 即可
周期任务符号扩展
减号“-” 可以表示一个连续的时间范围,例如 1- 4 表示整数 1,2,3,4.
逗号“,”可以表示一个间隔的不连续范围,例如 “1,3,4,5”
斜杠符号“/”可以用来指定间隔频率,如在日期字段中的 “*/3” 表示每个三天