当前位置: 首页 > news >正文

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

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

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

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

二、进程查看工具

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

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

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

ps输出字段说明

字段含义
USER启动进程的用户账号名称
PID进程在系统中的唯一数字 ID 号
%CPUCPU 占用百分比
%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 的百分比
waI/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. 终止进程

命令格式适用场景
killkill 进程号正常终止指定 PID 的进程
kill -9kill -9 进程号强制终止无法正常结束的进程(慎用)
killallkillall 进程名终止所有同名进程(如killall httpd
pkillpkill -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手动终止,避免资源占用
http://www.dtcms.com/a/305861.html

相关文章:

  • 在 CentOS 系统上安装 Docker
  • ComfyUI自定义图片导出路径
  • SpringBoot 2.7.18 升级 3.4.6
  • PHP语法高级篇(七):MySQL数据库
  • 具身智能 自动驾驶相关岗位的技术栈与能力地图
  • 微信小程序中实现页面跳转的方法
  • 爬虫验证码处理:ddddocr 的详细使用(通用验证码识别OCR pypi版)
  • 第2章 cmd命令基础:常用基础命令(2)
  • 数据驱动的自动驾驶虚拟测试方法
  • 【同济大学】双速率自动驾驶架构LeAD:端到端+LLM,CARLA实测93%路线完成率,性能SOTA!
  • 深入浅出设计模式——创建型模式之原型模式 Prototype
  • 【MySQL 数据库】MySQL索引特性(二)页目录(B和B+树)(非)聚簇索引 索引操作
  • 李宏毅2025《机器学习》-第九讲:大型语言模型评测的困境与“古德哈特定律”**
  • java面向对象高级02——单例类(设计模式)
  • 数据分析师进阶——95页零售相关数据分析【附全文阅读】
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 微博评论IP地图可视化分析实现
  • 语言模型的评估指标整理
  • Python设计模式详解:策略模式(Strategy Pattern)实战指南
  • LRU (Least Recently Used) 缓存实现及原理讲解
  • Ubuntu22.04中搭建GN编译环境
  • 深入理解缓存淘汰策略:LRU vs LFU 完全解析
  • 2025 年 NOI 最后一题题解
  • LoongCollector 安全日志接入实践:企业级防火墙场景的日志标准化采集
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现裂缝的检测识别(C#代码UI界面版)
  • docker:将cas、tomcat、字体统一打包成docker容器
  • 工厂方法模式:从基础到C++实现
  • 自动驾驶车辆的敏捷安全档案
  • java web 对比使用注解方式和 web.xml 方式配置过滤器
  • 「日拱一码」043 机器学习-多目标预测可解释性
  • 解决Nginx的HTTPS跨域内容显示问题