温馨提示×

Ubuntu如何管理后台进程

小樊
44
2025-11-16 11:56:07
栏目: 智能运维

Ubuntu后台进程管理实用指南

一 基础概念与常用术语

  • 前台进程:占用终端,直接与用户交互;按 Ctrl+C 发送 SIGINT 终止。
  • 后台进程:在命令末尾加 & 启动,不占用当前终端输入;仅对当前 Shell 会话有效。
  • 脱离终端运行:使用 nohup 或终端复用器(如 screen/tmux),即使关闭终端或 SSH 会话也能继续运行。
  • 作业号 vs 进程号jobs 显示的是当前 Shell 的作业号(如 %1),而 ps/pidof/pgrep 显示的是系统 PID;两者用途不同,不能混用。
  • 信号SIGTERM(15) 请求优雅退出;SIGKILL(9) 强制终止,可能导致数据不一致,仅在必要时使用。

二 启动与脱离终端运行

  • 在后台直接启动:
    • 命令:your_command &
    • 说明:进入后台运行,输出默认仍打印到当前终端;关闭终端后进程通常会被挂断信号终止。
  • 暂停后转入后台:
    • 步骤:在进程前台运行时按 Ctrl+Z 暂停 → 执行 bg %n 让编号为 n 的任务在后台继续。
  • 脱离终端并持久运行:
    • 命令:nohup your_command > myout.log 2>&1 &
    • 说明:忽略挂断信号;标准输出与错误合并写入 myout.log(也可用默认的 nohup.out);关闭终端不受影响。
  • 终端复用器管理会话:
    • screen:screen -S s1 创建会话;在会话内运行程序;按 Ctrl+A 再按 D 分离;screen -r s1 重新连接。
    • tmux:tmux new -s s1 创建会话;Ctrl+B 再按 D 分离;tmux attach -t s1 重新连接。

三 查看与监控进程

  • 实时动态监控:
    • top(按 P 按 CPU、按 M 按内存排序;q 退出)
    • htop(更友好,支持按键筛选与鼠标操作;安装:sudo apt install htop
  • 进程快照与检索:
    • ps auxps -ef 查看全局进程;ps -p PID -o comm= 查看指定 PID 的进程名。
    • pgrep -l pattern 按名称/命令行匹配进程;pidof your_app 获取进程 PID
    • pstree -p 以树形显示进程父子关系。
  • 作业列表(仅当前 Shell):
    • jobs -l 查看后台/暂停任务及其 PID

四 终止与清理进程

  • 优雅终止与强制结束:
    • kill PID(发送 SIGTERM,允许清理退出)
    • kill -9 PID(发送 SIGKILL,强制结束,慎用)
  • 按名称批量终止:
    • killall firefox(按进程名终止全部匹配进程)
    • pkill -f "pattern"(按命令行模式匹配并终止)
  • 作业号方式:
    • kill %1(终止作业号为 1 的任务)
  • 端口占用定位:
    • sudo lsof -i:8090netstat -tulpen | grep 8090 查找占用 8090 端口的进程,再结合 kill 处理。

五 长期运行与系统服务

  • 将程序注册为 systemd 服务(适合守护进程/长期任务):
    • 新建服务文件:sudo nano /etc/systemd/system/your_service.service
    • 示例内容:
      [Unit]
      Description=Your Service
      After=network.target
      
      [Service]
      ExecStart=/usr/bin/python3 /home/ubuntu/app.py
      Restart=always
      User=ubuntu
      WorkingDirectory=/home/ubuntu
      
      [Install]
      WantedBy=multi-user.target
      
    • 常用命令:
      • 启动/停止/重启/查看状态:sudo systemctl start|stop|restart|status your_service
      • 开机自启/禁用:sudo systemctl enable|disable your_service
  • 资源占用过高时的快速处置:
    • top/htop 找出高占用 PID → 先 kill PID 尝试优雅退出 → 无效再用 kill -9 PID;必要时检查并禁用不必要的开机服务。

0