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

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

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

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

  • 程序:保存在外部存储介质中的可执行机器代码和数据的静态集合。
  • 进程:在CPU及内存中处于动态执行状态的计算机程序。
  • 关系:每个程序启动后,可创建一个或多个进程。

二、进程查看工具

1. ps(查看静态进程信息)
  • 常用选项:

    • -a:显示当前终端下所有进程(含其他用户);与-x结合显示系统所有进程。
    • -u:以用户为主的格式输出进程信息。
    • -x:显示当前用户所在终端的进程信息。
    • -e:显示系统内所有进程。
    • -l:长格式显示。
    • -f:完整格式显示。

    常用aux和elf的组合

    在这里插入图片描述

    在这里插入图片描述

  • 输出字段含义:

    • USER:启动进程的用户账号。
    • PID:进程唯一ID号。
    • %CPU:CPU占用百分比。
    • %MEM:内存占用百分比。
    • VSZ:虚拟内存(swap)占用大小。
    • RSS:物理内存占用大小。
    • TTY:运行终端(“?”表示未知/无需终端)。
    • STAT:进程状态(S休眠、R运行、Z僵死、<高优先级、N低优先级、s父进程、+前台进程、L锁内存)。
    • START:启动时间。
    • TIME:占用CPU的时间。
    • COMMAND:启动进程的命令名称。
2. top(查看动态进程信息)

在这里插入图片描述

  • 核心指标:

    • load average:CPU平均负载(1分钟、5分钟、15分钟);若5/15分钟负载超过CPU个数2倍,系统高负载。

    • task

      • total:系统当前所有进程的总数(包括所有状态)。
      • running:正在占用 CPU 运行的进程数(处于 R 状态)。
      • sleeping:休眠的进程数(等待事件 / 资源,如 I/O 完成,处于 SD 状态)。
      • stopped:被暂停的进程(如通过 ctrl+z 挂起,处于 T 状态)。
      • zombie:僵死进程(进程已终止,但父进程未回收其资源,需手动清理)。
    • %cpu

      • us(user):用户空间进程占用 CPU 的比例(如应用程序)。若长期过高,可能是用户程序消耗资源过多。
      • sy(system):内核空间进程占用 CPU 的比例(如系统调用、进程调度)。若过高,可能是内核频繁处理任务(如大量 I/O 调度)。
      • ni(nice):调整过优先级的用户进程(通过 nice 命令设置)占用 CPU 的比例。
      • id(idle):CPU 空闲的比例。若长期过低(如 < 10%),说明 CPU 负载高。
      • wa(iowait):CPU 等待 I/O 操作(如磁盘读写、网络传输)的时间比例。若长期 > 20%,可能是 I/O 瓶颈(如磁盘慢、网络拥堵)。
      • hi(hardware irq):硬件中断(如键盘、磁盘控制器)占用 CPU 的比例。
      • si(software irq):软件中断(如系统定时器)占用 CPU 的比例。
      • st(steal):被虚拟化环境中其他虚拟机占用的 CPU 比例(仅在虚拟机中有效)。
    • mem

      • total:物理内存总容量(单位通常为 KB)。
      • used:已被进程实际使用的内存(不包括缓冲 / 缓存)。
      • free:完全空闲的内存(未被任何进程或缓冲 / 缓存使用)。
      • buff/cache:
        • buff:用于缓冲写入的数据(即将写入磁盘的临时数据,避免频繁磁盘 I/O)。
        • cache:用于缓存读取的数据(从磁盘读取过的数据,下次可直接从内存读取,加速访问)。
        • 这部分内存可被系统自动释放给需要的进程,因此实际 “可用内存”≈ free + buff/cache。
    • swap

      • total:交换空间(虚拟内存)总容量(通常为磁盘上的 swap 分区 / 文件)。
      • used:已使用的交换空间(当物理内存不足时,系统会将部分不常用内存数据写入 swap)。
      • free:空闲的交换空间。
      • avail Mem:估算的 “可用物理内存”(包括 free 内存 + 可释放的 buff/cache,供新进程使用的内存量)。
  • 进程信息字段:

    列名含义说明
    PID进程唯一 ID(系统中唯一,可用于 kill 等命令操作进程)。
    USER进程所属用户(进程的创建者或运行用户)。
    PR进程优先级(数值越小,优先级越高): - 0~39 之间(内核动态调整); - 实时优先级(-1~-20,比普通进程高)。
    NI进程的 nice 值(用户可调整的优先级偏移量): - 范围 -20~19(默认 0); - 数值越小,优先级越高(PR = NI + 20,便于显示)。
    VIRT进程占用的虚拟内存总量(包括物理内存、swap、未使用的分配内存等,单位 KB)。
    RES进程实际使用的物理内存(不包括 swap,单位 KB,RES = 实际占用的物理内存)。
    SHR进程与其他进程共享的内存量(单位 KB,包括共享库、共享数据等)。
    S进程状态(单字母标识): - R:运行中(正在使用 CPU 或等待调度); - S:休眠(等待事件,可被唤醒); - D:不可中断休眠(如等待磁盘 I/O,不能被信号终止); - T:停止(被 ctrl+zkill -19 暂停); - Z:僵死(进程已终止,资源未回收)。
    %CPU进程自上次刷新以来占用 CPU 的百分比(单个核心为 100%,多核心总和可超过 100%)。
    %MEM进程使用的物理内存占系统总内存的百分比。
    TIME+进程自启动以来累计占用的 CPU 时间(精确到 0.01 秒)。
    COMMAND启动进程的命令(按 c 可显示完整命令路径)。
3. 其他进程查看命令
  • pgrep -l 进程名:查看某进程的进程号和名称(如pgrep -l systemd)。
  • pstree:查看进程树形结构:
    • -p:同时列出PID;-u:列出用户名;-a:列出完整命令。

三、进程控制

1. 手动启动进程
  • 前台启动:默认方式(命令直接执行)。
  • 后台启动:命令后加&(如route &,进程放入后台执行)。
2. 进程挂起与恢复
  • 挂起当前进程:前台执行的命令按ctrl+z,调入后台并停止执行。
  • 查看后台进程jobs -l
  • 恢复运行
    • bg:后台暂停的任务恢复后台执行。
    • fg:后台任务恢复到前台执行。
3. 终止进程
  • kill 进程号:终止指定进程;-9选项强制终止(如kill -9 1234)。
  • killall 进程名:终止多个同名进程;-9强制(如killall -9 httpd)。
  • pkill:按进程名、用户、终端等终止(-U指定用户,-t指定终端)。

四、计划任务

用于在指定时间/日期执行预设任务(如备份、数据采集)。

1. at(一次性任务)
  • 设置:at 时间 日期(如at 23:30 2020-11-23),输入命令后按ctrl+d结束。
  • 示例:at 23:30 2020-11-23at> ls / > /tmp/actrl+d
  • 管理:
    • atq:查询at任务。
    • at -c 任务号:查看任务详情。
    • atrm 任务号:删除任务。
2. crontab(周期性任务)
  • 配置文件:
    • 系统任务:/etc/crontab
    • 用户任务:/var/spool/cron/(按用户名存储)。
  • 时间格式:分 时 日 月 周(空格分隔)。
  • 常用选项:
    • -e:编辑计划任务。
    • -u 用户名:指定用户(如crontab -u natasha -e)。
    • -l:查询任务列表。
    • -r:删除任务列表。
  • 示例:
    1. 为用户natasha配置每天14:23执行/bin/echo "RHCSA",仅允许natasha和root创建任务:
      useradd natasha
      crontab -u natasha -e  
      输入:23 14 * * * /bin/echo "RHCSA"
      vim /etc/cron.allow  创建白名单只允许natasha和root创建任务
      写入:root、natasha
      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
http://www.dtcms.com/a/306572.html

相关文章:

  • Kafka 单机多 Broker 实例集群搭建 | 详情
  • 育儿补贴之外,父母更需要的 “认知补贴”|创客匠人
  • 测试用例颗粒度全解析
  • 领域驱动设计(DDD)在分布式系统中的架构实践
  • Linux:haproxy
  • ORACLE的表维护
  • Ubuntu LNMP
  • 容器化与Docker核心原理
  • 流程制造的数字孪生:从黑箱生产到全息掌控
  • 滚珠导轨在电子制造中的流畅性优势
  • 虚实共生的智能革命:元宇宙、物联网与 AI 融合生态全景图谱
  • 高可靠液晶屏系统解决方案深度解析
  • 基于 Python 开发的信阳市天气数据可视化系统源代码+数据库+课程报告
  • 老旧泵房物联网改造方案与成本效益深度解析
  • C++线程详解
  • 关于“LoggerFactory is not a Logback LoggerContext but Logback is on ......“的解决方案
  • [源力觉醒 创作者计划]_巅峰对话:文心 vs. DeepSeek/Qwen 3.0 深度解析
  • Wan2.2 - 阿里最新开源视频生成模型 支持文生视频/图生视频 支持50系显卡 一键整合包
  • 293F细胞是什么?
  • C语言《智能自平衡小车,实现平衡功能的基础上,加入了超声波避障、超声波跟随、蓝牙遥控等功能》+源代码+文档说明
  • DEC 指令
  • spark的broadcast variables
  • 重庆邮电大学2026年计算机/软件/人工智能/网安考研备考指南
  • css初学者第二天
  • RabbitMQ 发送方确认的两大工具 (With Spring Boot)
  • 15、点云<—>深度图转换原理
  • Centos 7.9安装部署cobbler-自动化部署服务器完整教程
  • 【Flask 基础 ①】 | 路由、参数与模板渲染
  • 【AI】开源项目整理
  • 数据库账号密码、查找文件、文件权限