Linux 是多任务操作系统,进程管理负责对系统中运行的程序进行监控,调度,启停和资源管控,保障系统稳定高效;计划任务管理则实现程序/命令的定时,周期性自动执行,无需人工干预,是自动化运维的核心基础
ps 命令是Linux操作系统中最为常见的进程查看工具,主要用于显示包含当前运行的各进程完整信息的静态快照。通过不同的命令选项,可以有选择性地查看进程信息
a:显示当前终端下的所有进程信息,包括其他用户的进程,与"x"选项结合时显示系统中所有的进程信息
u:使用以用户为主的格式输出进程信息
x:显示当前用户在所有终端下的进程信息
-e:显示系统内的所有进程信息
-l:使用长(long)格式显示进程信息
-f:使用完整的(Full)格式显示进程信息
进程核心概念
进程(Process):程序(二进制可执行文件)在 Linux 系统中运行的实例,拥有独立的 PID(进程 ID,唯一标识)、内存空间、CPU 资源,是系统资源分配的最小单位。
-
父进程 / 子进程:Linux 中进程遵循fork 机制,除了初始化进程
init(PID=1,系统启动后第一个进程),所有进程都由其他进程创建,创建者为父进程,被创建者为子进程,形成进程树。 -
进程状态:核心状态需掌握,通过命令可查看
-
R(Running/Runnable):运行中 / 就绪态,进程正在占用 CPU 或等待 CPU 调度
-
S(Sleeping):睡眠态,进程等待事件完成(如 IO 操作),可被唤醒
-
D(Uninterruptible Sleep):不可中断睡眠态,关键 IO 操作中,强制杀死会导致数据丢失,需等待 IO 完成
-
Z(Zombie):僵尸态,进程已结束但父进程未回收其资源(PID、状态信息),大量僵尸进程会占用系统 PID 资源
-
T(Stopped):停止态,进程被暂停(如执行
ctrl+z),可被唤醒继续运行
-
-
前台 / 后台进程
-
前台进程:占用终端,执行时终端无法输入其他命令(如直接执行
ls -l) -
后台进程:不占用终端,在后台运行,终端可继续使用(如执行
ls -l &,&表示后台运行)
-
进程查看命令(核心)
ps:静态查看进程快照(一次性获取当前进程状态)
最常用组合参数(无分隔符,Linux 风格),记住这两个即可覆盖 90% 场景:
启动进程:前台 / 后台 / 守护进程
-
前台启动:直接输入命令,如
python test.py,终端被占用,关闭终端进程终止 -
后台启动:命令后加
&,如python test.py &,终端可继续使用,关闭终端进程仍会终止(因为进程依赖终端的会话)
Linux计划任务分一次性计划任务和周期性计划任务,分别由at和crontab实现,其中crontab是生产化境中最常用的(占99%场景)。
核心前提:计划任务服务开启
计划任务依赖系统服务,需确保服务运行,否则任务不执行:
- crontab 依赖
crond服务(CentOS7+/RHEL7 + 为crond,Ubuntu/Debian 为cron)- 查看状态:
systemctl status crond - 启动:
systemctl start crond - 开机自启:
systemctl enable crond
- 查看状态:
- at 依赖
atd服务- 查看状态:
systemctl status atd - 启动:
systemctl start atd
- 查看状态:
2. 一次性计划任务:at(仅执行一次)
适用于未来某个时间点执行一次命令 / 脚本,执行后任务自动失效,无需手动删除。
at 实操示例
bash
运行
# 10分钟后执行一次备份命令,将/root目录打包到/backup
at now + 10 minutes
> tar -zcf /backup/root_$(date +%Y%m%d).tar.gz /root
> ctrl+d # 保存退出,提示job 1 at 2026-01-27 14:30
# 查看已创建的at任务
atq # 显示任务编号、执行时间、所属用户
# 删除指定at任务(根据atq显示的任务编号)
atrm 1 # 删除编号为1的at任务
# 查看at任务执行日志(CentOS)
tail -f /var/spool/mail/root # 任务执行结果会发送到用户邮箱
- 命令 / 脚本必须使用绝对路径(如
/usr/bin/ls,而非ls;/root/backup.sh,而非backup.sh),避免因环境变量问题导致任务执行失败; - 任务执行的输出(如日志、报错)需手动重定向(
> /日志路径 2>&1),否则会以邮件形式发送,堆积大量邮件占用磁盘; - 分钟位是第一个字段,不可省略,即使是整点执行,也需写
0(如每小时执行一次,分钟位为0)。
crontab 的时间格式
crontab 的核心是时间表达式 + 执行命令,时间表达式由5 个字段组成,代表分、时、日、月、周,字段之间用空格分隔,支持通配符和特殊符号:
| 字段 | 含义 | 取值范围 |
|---|---|---|
| 第 1 位 | 分钟 | 0~59 |
| 第 2 位 | 小时 | 0~23 |
| 第 3 位 | 日期 | 1~31 |
| 第 4 位 | 月份 | 1~12 |
| 第 5 位 | 星期 | 0~7(0 和 7 均为周日) |
通配符 / 特殊符号:
*:匹配任意值(如分钟位*表示每分钟);,:指定多个值(如小时位3,18表示 3 点和 18 点);-:指定范围(如日期位1-5表示 1 到 5 号);/:指定步长(如分钟位*/10表示每 10 分钟)。
时间表达式示例:
0 3 * * *:每天凌晨 3 点整;*/10 * * * *:每 10 分钟;0 0 1 * *:每月 1 号凌晨 0 点;0 2 * * 6:每周六凌晨 2 点;30 18 * * 1-5:工作日(周一到周五)18 点 30 分。
1360

被折叠的 条评论
为什么被折叠?



