Linux 进程管理与计划任务详解

发布于:2025-07-31 ⋅ 阅读:(33) ⋅ 点赞:(0)

Linux 进程管理与计划任务详解

一、程序与进程的基本概念

  • 程序:保存在外部存储介质中的可执行机器代码和数据的静态集合,是静态的文件实体
  • 进程:在 CPU 及内存中处于动态执行状态的计算机程序,是程序的动态执行实例
  • 关联关系:每个程序启动后可创建一个或多个进程,进程随程序启动而产生,随执行结束而消亡

二、进程查看工具

1. ps:查看静态进程信息

用于捕捉某一时刻的进程快照,常用选项及功能如下:

选项组合 功能描述
-a 显示当前终端下的所有进程(包括其他用户)
-u 以用户为主的格式输出进程信息
-x 显示当前用户所在终端的进程信息(与-a结合显示系统所有进程)
-e 显示系统内所有进程信息
-l 以长格式显示进程信息
-f 以完整格式显示进程信息

ps输出字段说明

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

2. top:查看进程动态信息

实时监控进程资源占用,动态刷新进程状态(默认 3 秒 / 次),核心信息如下:

(1)系统负载信息
  • load average:CPU 平均负载,依次为 1 分钟、5 分钟、15 分钟内的平均值。若 5 分钟或 15 分钟负载值超过 CPU 核心数的 2 倍,系统处于高负载状态
(2)进程状态统计(task)
状态 含义
total 总进程数
running 正在运行的进程数
sleeping 休眠状态的进程数
stopped 停止状态的进程数
zombie 僵死状态的进程数
(3)CPU 占用信息(% cpu)
指标 含义
us 用户进程占用 CPU 时间的百分比
sy 系统进程占用 CPU 时间的百分比
ni 优先级调整后的用户进程占用 CPU 百分比
id 空闲 CPU 的百分比
wa I/O 等待占用 CPU 时间的百分比
hi 硬件中断占用 CPU 时间的百分比
si 软件中断占用 CPU 时间的百分比
st 虚拟化环境中被占用的 CPU 时间百分比
(4)进程详细字段(top输出)
字段 含义
PID 进程 ID
USER 进程属主名称
PR 进程优先级
NI 进程 nice 值(-20~+19,值越小优先级越高)
VIRT 占用虚拟内存总量(kb)
RES 占用物理内存总量(kb)
SHR 与其他进程共享的内存总量(kb)
S 进程状态(D 不可中断休眠、R 运行、S 休眠、T 停止、Z 僵死)
%CPU 进程使用 CPU 的百分比
%MEM 进程使用内存的百分比
TIME+ 进程启动后占用的 CPU 总时间
COMMAND 启动进程的命令名称

3. 其他进程查看工具

  • pgrep -l 进程名:查看某一进程的进程号和名称(例:pgrep -l systemd

  • pstree
    

    :查看进程树形结构,常用选项:

    • -p:同时列出对应 PID
    • -u:列出对应用户名
    • -a:列出完整命令信息

三、进程控制方法

1. 手动启动进程

  • 前台启动:直接执行命令(如ls),进程占用当前终端
  • 后台启动:命令后加&(如route &),进程在后台执行,不阻塞终端

2. 进程挂起与恢复

操作 命令 / 快捷键 功能
挂起前台进程 Ctrl+Z 将当前运行的前台进程调入后台并停止执行
查看后台进程 jobs -l 显示后台进程列表(含进程号和状态)
恢复后台进程(后台运行) bg 任务号 使后台暂停的进程继续在后台执行
恢复后台进程(前台运行) fg 任务号 将后台进程调回前台执行

3. 终止进程

命令 格式 适用场景
kill kill 进程号 正常终止指定 PID 的进程
kill -9 kill -9 进程号 强制终止无法正常结束的进程(慎用)
killall killall 进程名 终止所有同名进程(如killall httpd
pkill pkill -U 用户名/pkill -t 终端 根据用户或终端终止特定进程

四、计划任务设置

1. at:一次性任务

  • 设置任务:

    at 23:30 2020-11-23  # 指定执行时间
    at> ls / > /tmp/a     # 输入要执行的命令
    at> <Ctrl+D>          # 按Ctrl+D确认
    
  • 任务管理:

    • atq:查询待执行的 at 任务
    • at -c 任务号:查看任务具体内容
    • atrm 任务号:删除指定 at 任务

2. crontab:周期性任务

(1)核心配置
  • 系统配置文件/etc/crontab(系统级任务)
  • 用户任务存放目录/var/spool/cron/(用户级任务)
  • 时间格式:分、时、日、月、周(支持通配符:*任意值、*/n每隔 n 单位、-范围、,列表)
(2)常用命令
命令 功能
crontab -e 编辑当前用户的周期性任务
crontab -u 用户名 -e 编辑指定用户的周期性任务
crontab -l 查看当前用户的任务列表
crontab -r 删除当前用户的所有任务
(3)权限控制
  • 通过/etc/cron.allow(允许创建任务的用户列表)和/etc/cron.deny(禁止创建任务的用户列表)限制权限
  • /etc/cron.allow中列出的用户可创建任务(默认优先于cron.deny

五、计划任务示例解析

示例 1:为用户 natasha 配置每日定时任务

需求:每天 14:23 执行/bin/echo "RHCSA",仅允许 natasha 和 root 创建计划任务
步骤

  1. 创建用户:useradd natasha

  2. 配置任务:

    crontab -u natasha -e
    

    ,添加内容:

    23 14 * * * /bin/echo "RHCSA"
    
  3. 限制权限:编辑

    /etc/cron.allow
    

    ,添加:

    root
    natasha
    
  4. 重启服务:

    systemctl restart crond
    systemctl enable crond
    

示例 2:每月周期性任务

需求:每月 1~5 号 14:00-17:00,每隔 10 分钟执行/bin/echo "I Love Galaxy"
配置

crontab -e  # 编辑当前用户任务
*/10 14-17 1-5 * * /bin/echo "I Love Galaxy"  # 添加任务
systemctl restart crond  # 重启服务使配置生效
systemctl enable crond   # 设置开机自启

示例 3:工作日定时记录时间

需求:周一至周五 8:00-21:00,每 2 分钟将当前时间附加到/home/galaxy/my_first_cron_job.txt
配置

crontab -e  # 编辑任务
*/2 8-21 * * 1-5 date >> /home/galaxy/my_first_cron_job.txt  # 添加任务(注意用>>追加内容)
systemctl restart crond
systemctl enable crond

六、注意事项

  1. crontab任务中建议使用命令绝对路径(如/bin/date),避免环境变量问题
  2. 追加内容用>>,覆盖内容用>,根据需求选择
  3. 修改计划任务后需重启crond服务(systemctl restart crond)使其生效
  4. 僵死进程(Z 状态)需及时用kill -9手动终止,避免资源占用

网站公告

今日签到

点亮在社区的每一天
去签到