7.Linux :进程管理,进程控制与计划任务

发布于:2025-08-03 ⋅ 阅读:(14) ⋅ 点赞:(0)

Linux :进程管理,进程控制与计划任务

一、进程管理

1. 进程与程序
  • 程序:静态的可执行文件(存储于磁盘)。
  • 进程:动态执行的程序实例(占用CPU/内存)。
2. 查看进程
命令 作用 常用组合
ps 静态查看进程 ps -aux(所有进程)
top 动态监控进程(实时刷新) top -d 5(5秒刷新)
pgrep -l 名称 按名称查进程PID pgrep -l nginx
pstree -p 树形显示进程层级(含PID) `pstree -p

关键字段解析top/ps):

  • STAT状态:R(运行)、S(休眠)、Z(僵尸)、D(不可中断)、+(前台进程)。
  • NI值:进程优先级(-20~19,值越小优先级越高)。
  • %CPU/%MEM:CPU/内存占用率。
3. 控制进程
  • 前后台切换

    command &       # 后台启动
    Ctrl + Z        # 挂起到后台(暂停状态)
    jobs -l         # 查看后台任务
    fg %1           # 恢复1号任务到前台
    bg %1           # 后台继续运行1号任务
    
  • 终止进程

    kill PID        # 优雅终止
    kill -9 PID     # 强制终止
    killall 名称    # 终止同名所有进程
    pkill -U 用户   # 终止某用户的所有进程
    

二、计划任务

1. 一次性任务(at)
at 14:30 2025-4-20   # 设置任务时间
at> echo "new earth kami!" > /tmp/msg
at> Ctrl+D             # 保存退出
atq                   # 查看任务队列
atrm 任务号           # 删除任务
2. 周期性任务(cron)
  • 配置文件

    • 系统任务:/etc/crontab
    • 用户任务:/var/spool/cron/用户名
  • 时间格式

    *   *   *   *   *   <命令>
    分  时  日   月  周
    

    到用 - 和用, 每隔用/ 未提及用 * (1到3点,1-3,1点和3点,1,3,每隔两分钟*/2 )

  • 管理命令

    crontab -e      # 编辑当前用户任务
    crontab -l      # 查看任务列表
    crontab -r      # 删除所有任务
    
3. 关键示例
# 示例1:每天14:23输出"RHCSA"
23 14 * * * /bin/echo "RHCSA"

# 示例2:每月1-5号14:00-17:00,每10分钟执行
*/10 14-17 1-5 * * /bin/echo "I Love Galaxy"

三、补充重要知识点

1. 僵尸进程处理
  • 原因:子进程结束但父进程未回收资源。
  • 解决
    1. 终止其父进程:kill -9 父进程PID
    2. 系统自动回收(若父进程为init)。
2. 进程优先级调整
  • 启动时指定优先级:

    nice -n -20 command  # 最高优先级(-20)
    
  • 调整运行中进程:

    renice -n 10 -p PID  # 将PID进程优先级改为10
    
3. Cron环境变量问题
  • 问题:cron任务可能缺少环境变量(如PATH)。
  • 解决
    1. 在脚本中设置变量(如 export PATH=/usr/bin:/bin)。
    2. 使用绝对路径执行命令。
4. Cron权限控制
  • 白名单/etc/cron.allow(存在时仅允许列表用户)。
  • 黑名单/etc/cron.deny(拒绝列表用户)。