Linux 进程管理与计划任务设置

Linux 进程管理与计划任务设置

一、进程管理

进程管理用于监控、控制系统中运行的程序(进程),包括查看进程状态、调整优先级、终止异常进程等。以下是核心命令及操作说明:

1. 常用进程查看命令

(1)ps:查看进程静态信息

功能:显示系统当前进程的快照(静态信息)。

|----|--------------------------------------|
| 选项 | 说明 |
| -a | 显示当前终端下的所有进程(包括其他用户),与 -x 结合显示系统所有进程 |
| -u | 以用户为中心的格式输出进程信息 |
| -x | 显示当前用户所有终端的进程(包括无终端的后台进程) |
| -e | 显示系统内所有进程 |
| -l | 长格式显示进程信息 |
| -f | 完整格式显示进程信息 |

常用用法

java 复制代码
ps -aux # 显示所有进程的详细信息(用户视角)

ps -elf # 显示所有进程的完整格式(系统视角)

输出字段说明

|---------|---------------------------------|
| 字段 | 含义 |
| USER | 启动进程的用户账号 |
| PID | 进程唯一 ID(系统中唯一) |
| %CPU | 进程占用 CPU 的百分比 |
| %MEM | 进程占用内存的百分比 |
| VSZ | 占用虚拟内存(swap)的大小(KB) |
| RSS | 占用物理内存的大小(KB) |
| TTY | 进程运行的终端(? 表示无需终端) |
| STAT | 进程状态(R运行、S休眠、Z僵死、<高优先级、N低优先级等) |
| START | 进程启动时间 |
| TIME | 进程占用 CPU 的总时间 |
| COMMAND | 启动进程的命令名称 |

(2)top:查看进程动态信息

功能:实时动态监控进程状态(默认每 3 秒刷新一次)。

界面核心指标说明

  • 顶部系统信息
    • load average: 0.1, 0.5, 1.0:CPU 1 分钟、5 分钟、15 分钟内的平均负载(超过 CPU 核心数 2 倍表示高负载)。
  • Task(进程统计)
    • total:总进程数;running:运行中;sleeping:休眠;stopped:停止;zombie:僵死。
  • % CPU(CPU 占用)
    • us:用户进程占用;sy:系统进程占用;ni:调整过优先级的用户进程;id:空闲 CPU;wa:I/O 等待;hi/si:硬 / 软中断;st:虚拟化占用。
  • Mem/Swap:物理内存 / 交换空间的使用情况(总容量、已用、空闲)。
  • 进程列表字段

|-----------|-------------------------------|
| 字段 | 含义 |
| PID | 进程 ID |
| USER | 进程属主 |
| PR | 进程优先级(内核动态调整) |
| NI | 进程 nice 值(-20~19,值越小优先级越高) |
| VIRT | 进程占用的虚拟内存总量(KB) |
| RES | 进程占用的物理内存总量(KB) |
| SHR | 与其他进程共享的内存量(KB) |
| S | 进程状态(D不可中断休眠、R运行、S休眠、T停止、Z僵死) |
| %CPU/%MEM | 进程占用 CPU / 内存的百分比 |
| TIME+ | 进程启动后占用的 CPU 总时间 |
| COMMAND | 启动进程的命令 |

(3)pgrep -l <进程名>:按名称查询进程

功能:根据进程名查找对应的进程 ID(PID)和名称。

示例

复制代码
pgrep -l systemd # 查找名为sshd的进程,输出格式:PID 进程名
(4)pstree:查看进程树形结构

功能:以树形图展示进程间的父子关系。

|----|------------|
| 选项 | 说明 |
| -p | 同时显示进程 PID |
| -u | 显示进程所属用户 |
| -a | 显示完整的命令行信息 |

示例

复制代码
pstree -pu # 显示进程树、PID及所属用户

2. 进程控制操作

(1)进程启动方式
  • 前台启动:命令直接在当前终端运行(默认方式),例如:

    ls /home # 前台执行,执行期间终端被占用

  • 后台启动:命令后加 &,进程在后台运行,终端可继续使用:

    route & # 后台执行route命令

(2)进程挂起与恢复
  • 挂起当前进程:前台进程运行时,按 Ctrl + Z 可将其挂起(转入后台并停止执行)。

示例:

复制代码
top # 前台运行top,按Ctrl+Z挂起
  • 查看后台进程

    jobs -l # 列出后台进程(-l显示PID)

  • 恢复后台进程

    • bg <任务号>:将后台挂起的进程恢复运行(继续在后台):

      bg 1 # 恢复任务号为1的后台进程

    • fg <任务号>:将后台进程调回前台运行:

      fg 1 # 将任务号为1的进程调至前台

3. 进程终止与优先级调整

(1)kill <进程号>:通过 PID 终止进程

功能:向指定 PID 的进程发送终止信号(默认信号为 15,正常终止)。

  • 强制终止(信号 9,无法忽略):

    kill -9 1234 # 强制终止PID为1234的进程

(2)pkill <条件>:按条件终止进程

功能:根据进程名、用户、终端等属性终止进程。

|------------|-----------|
| 选项 | 说明 |
| -U <用户名> | 终止指定用户的进程 |
| -t <终端> | 终止指定终端的进程 |

示例

复制代码
pkill -U zhangsan # 终止用户zhangsan的所有进程
pkill -9 sshd # 强制终止所有名为sshd的进程
(3)killall <进程名>:按名称终止所有同名进程

示例

复制代码
killall -9 httpd # 强制终止所有httpd进程
(4)renice:调整进程优先级

功能修改进程的 nice 值(-20~19,值越小优先级越高)

示例

复制代码
renice -5 1234 # 将PID为1234的进程nice值改为-5(提高优先级)

二、计划任务设置

计划任务用于自动执行周期性或一次性任务(如备份、监控等),核心工具为 at(一次性)和 crontab(周期性)。

1. 一次性计划任务(at)

(1)设置一次性任务

语法at <时间> [日期],进入编辑界面输入命令,按 Ctrl + D 保存退出。

示例

java 复制代码
at 23:30 2025-07-31 # 设置2025年7月31日23:30执行任务

at> ls / > /tmp/dir_list # 任务内容:将/目录列表写入/tmp/dir_list

at> <EOT> # 按Ctrl+D结束编辑
(2)管理at任务
  • 查看待执行任务

    atq # 列出所有at任务(格式:任务号 执行时间 用户名)

  • 查看任务详情

    at -c 1 # 查看任务号为1的具体内容

  • 删除任务

    atrm 1 # 删除任务号为1的at任务

2. 周期性计划任务(crontab)

(1)基本语法

通过 crontab -e 编辑任务,格式为:

分 时 日 月 周 命令

|------|---------------|------|-------------------------|
| 时间字段 | 取值范围 | 特殊符号 | 含义 |
| 分 | 0~59 | , | 枚举(如10,20表示 10 分和 20 分) |
| 时 | 0~23 | - | 范围(如9-17表示 9 点到 17 点) |
| 日 | 1~31 | */n | 间隔(如*/2表示每 2 天) |
| 月 | 1~12 | | |
| 周 | 0~7(0/7 为周日) | | |

(2)crontab 命令选项

|-----------|------------------------------------------|
| 选项 | 说明 |
| -e | 编辑当前用户的计划任务 |
| -u <用户> | 指定用户(仅 root 可用),如 crontab -u zhangsan -e |
| -l | 列出当前用户的计划任务 |
| -r | 删除当前用户的所有计划任务 |

(3)配置示例
java 复制代码
# 每天凌晨3点执行备份脚本

0 3 * * * /root/backup.sh

# 每周一、三、五的18:30执行日志清理

30 18 * * 1,3,5 /usr/bin/clean_logs.sh

# 每月1日和15日的0点,每小时执行一次监控脚本

0 */1 1,15 * * /usr/local/monitor.sh
(4)任务文件存放
  • 系统级任务:/etc/crontab(需 root 编辑)。
  • 用户级任务:/var/spool/cron/<用户名>(自动生成,无需手动编辑)。
(5)服务管理

crontab 依赖 crond 服务,需确保其运行:

java 复制代码
systemctl restart crond # 重启服务

systemctl enable crond # 设置开机自启

3. 注意事项

  • 关机影响:at 和 crontab 任务均依赖系统运行状态。若系统在任务预定时间关机,at 任务会失效,crontab 任务会跳过该次执行,后续周期继续。
  • 命令路径:计划任务中建议使用命令绝对路径(如 /usr/bin/ls 而非 ls),避免环境变量问题。
  • 日志查看:任务执行日志可通过 /var/log/cron 或 journalctl -u crond 查看。

通过上述工具和操作,可实现对 Linux 进程的全面管理及自动化任务调度,适用于系统监控、定期维护等场景。

相关推荐
鹦鹉0071 小时前
SpringAOP实现
java·服务器·前端·spring
一只小松许️2 小时前
Linux性能分析与内存调试:perf和Valgrind高级使用指南
linux
巴里巴气3 小时前
zookeeper基本概念介绍
linux·分布式·zookeeper
codu4u13145 小时前
Maven中的bom和父依赖
java·linux·maven
_Rookie._5 小时前
http触发预检请求条件
网络·网络协议·http
IT成长日记6 小时前
【自动化运维神器Ansible】Ansible常用模块之hostname模块详解
运维·自动化·ansible·hostname·常用模块
NewCarRen6 小时前
汽车电子控制系统开发的整体安全理念
网络·安全·汽车
lixzest6 小时前
Linux 中,命令查看系统版本和内核信息
linux·运维·服务器
朱小弟cs67 小时前
Orange的运维学习日记--16.Linux时间管理
linux·运维·学习
chen_note7 小时前
LAMP及其环境的部署搭建
linux·运维·mysql·php·apache·lamp·phpmyadmin