Linux :进程管理,进程控制与计划任务
一、进程管理
1. 进程与程序
- 程序:静态的可执行文件(存储于磁盘)。
- 进程:动态执行的程序实例(占用CPU/内存)。
2. 查看进程
命令 | 作用 | 常用组合 |
---|---|---|
ps | 静态查看进程 | ps -aux (所有进程) |
top | 动态监控进程(实时刷新) | top -d 5 (5秒刷新) |
pgrep -l 名称 | 按名称查进程PID | pgrep -l nginx |
pstree -p | 树形显示进程层级(含PID) | `pstree -p |
关键字段解析(
top/ps
):
STAT
状态:R
(运行)、S
(休眠)、Z
(僵尸)、D
(不可中断)、+
(前台进程)。NI
值:进程优先级(-20~19,值越小优先级越高)。%CPU/%MEM
:CPU/内存占用率。
3. 控制进程
-
前后台切换:
command & # 后台启动 Ctrl + Z # 挂起到后台(暂停状态) jobs -l # 查看后台任务 fg %1 # 恢复1号任务到前台 bg %1 # 后台继续运行1号任务
-
终止进程:
kill PID # 优雅终止 kill -9 PID # 强制终止 killall 名称 # 终止同名所有进程 pkill -U 用户 # 终止某用户的所有进程
二、计划任务
1. 一次性任务(at)
at 14:30 2025-4-20 # 设置任务时间
at> echo "new earth kami!" > /tmp/msg
at> Ctrl+D # 保存退出
atq # 查看任务队列
atrm 任务号 # 删除任务
2. 周期性任务(cron)
-
配置文件:
- 系统任务:
/etc/crontab
- 用户任务:
/var/spool/cron/用户名
- 系统任务:
-
时间格式:
* * * * * <命令> 分 时 日 月 周
到用 - 和用, 每隔用/ 未提及用 * (1到3点,1-3,1点和3点,1,3,每隔两分钟*/2 )
-
管理命令:
crontab -e # 编辑当前用户任务 crontab -l # 查看任务列表 crontab -r # 删除所有任务
3. 关键示例
# 示例1:每天14:23输出"RHCSA"
23 14 * * * /bin/echo "RHCSA"# 示例2:每月1-5号14:00-17:00,每10分钟执行
*/10 14-17 1-5 * * /bin/echo "I Love Galaxy"
三、补充重要知识点
1. 僵尸进程处理
- 原因:子进程结束但父进程未回收资源。
- 解决:
- 终止其父进程:
kill -9 父进程PID
- 系统自动回收(若父进程为init)。
- 终止其父进程:
2. 进程优先级调整
-
启动时指定优先级:
nice -n -20 command # 最高优先级(-20)
-
调整运行中进程:
renice -n 10 -p PID # 将PID进程优先级改为10
3. Cron环境变量问题
- 问题:cron任务可能缺少环境变量(如
PATH
)。 - 解决:
- 在脚本中设置变量(如
export PATH=/usr/bin:/bin
)。 - 使用绝对路径执行命令。
- 在脚本中设置变量(如
4. Cron权限控制
- 白名单:
/etc/cron.allow
(存在时仅允许列表用户)。 - 黑名单:
/etc/cron.deny
(拒绝列表用户)。