当前位置: 首页 > 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.xdnf.cn/news/1213867.html

相关文章:

  • 关于神经网络CNN的搭建过程以及图像卷积的实现过程学习
  • Mac下的Homebrew
  • 如何不让android studio自动换行
  • cpp c++面试常考算法题汇总
  • 高防CDN与高防IP的选择
  • 【ip】IP地址能否直接填写255?
  • SpringBoot升级2.5.3 2.6.8
  • gtest框架的安装与使用
  • 基于成像空间转录组技术的肿瘤亚克隆CNV原位推断方法
  • android-PMS-创建新用户流程
  • VUE -- 基础知识讲解(三)
  • 记录Linux下ping外网失败的问题
  • 时序数据库厂商 TDengine 发布 AI 原生的工业数据管理平台 IDMP,“无问智推”改变数据消费范式
  • 问题1:uniapp在pages样式穿刺没有问题,在components组件中样式穿刺小程序不起效果
  • Django常见模型字段
  • 一篇文章读懂麦科信CP3008系列高频交直流电流探头
  • 基于数字信息化的全面研发项目管理︱裕太微电子股份有限公司研发项目管理部负责人唐超
  • 新手向:DeepSeek 部署中的常见问题及解决方案
  • Jupyter Notebook 中显示图片、音频、视频的方法汇总
  • RabbitMQ 发送方确认的两大工具 (With Spring Boot)
  • 开源 Arkts 鸿蒙应用 开发(十三)音频--MP3播放
  • 在线教育场景下AI应用,课程视频智能生成大纲演示
  • 大厂主力双塔模型实践与线上服务
  • 【swoole Windows 开发(swoole-cli 开发 hyperf)】
  • 算法训练营day36 动态规划④ 1049. 最后一块石头的重量 II、494. 目标和、474.一和零
  • 基于Rust与HDFS、YARN、Hue、ZooKeeper、MySQL
  • 【ee类保研面试】数学类---线性代数
  • 【iOS】weak修饰符
  • USRP捕获手机/路由器数据传输信号波形
  • 国内好用的智能三防手机,适合户外、工业、公共安全等场景