Linux中的进程管理是系统操作的核心,涉及查看、控制和调度运行中的程序。以下是一些最常用的命令,可以分为几个类别:

1. 查看进程状态

这是了解系统正在运行什么的基础。

  • ps:最常用的进程查看命令。
    • ps aux:查看系统中所有用户的详细进程信息(常用组合)。
    • ps -ef:以完整格式列表显示所有进程。
    • ps -u [用户名]:查看特定用户的进程。
  • top / htop:实时动态查看进程状态和系统资源占用(如CPU、内存)。
    • top:系统自带,交互式界面。

Important

Linux 中的每个进程(process)都有 ID,称为 PID,他们是进行进程管理的关键

2. 结束或发送信号给进程

用于终止失控进程或通知进程做某些操作(如重载配置)。

  • kill:通过进程ID(PID)向进程发送信号。
    • kill [PID]:默认发送TERM信号(15),请求进程正常终止。
    • kill -9 [PID]:发送KILL信号(9),强制立即终止进程(最后手段)。
  • pkill / killall:通过进程名来发送信号,避免先查找PID。
    • pkill [进程名]
    • killall [进程名]

3. 后台与前台作业管理

在同一个终端会话内管理启动的任务。

  • &:在命令末尾加上&,使程序在后台立即运行。
    • 例如:python long_script.py &
  • jobs:列出当前终端会话中的所有后台作业及其编号。
  • fg %[作业号]:将指定的后台作业切换到前台运行。
  • bg %[作业号]:将已暂停的作业在后台继续运行。
  • Ctrl + Z:快捷键,暂停当前前台运行的程序,并将其放入作业列表。

4. 其他实用命令

  • nicerenice:调整进程的优先级(Nice值)。
    • nice -n 5 [命令]:以较低的优先级(数字越大,优先级越低)启动命令。
    • renice -n 10 -p [PID]:修改一个已运行进程的优先级。
  • pgrep:根据名称查找进程的PID。
    • 例如:pgrep python 会列出所有Python进程的PID。

一个简单的工作流示例

假设你在终端运行一个耗时的生物信息学分析:

  1. 启动程序:./analysis.sh (它在前台运行)
  2. 你临时需要终端做别的事,于是按 Ctrl + Z 暂停它。
  3. 输入 bg %1 让它转到后台继续运行。
  4. 输入 jobs 查看它的状态(显示为“Running”)。
  5. 分析结束后,你想把它拉回前台查看输出:fg %1
  6. 如果需要强制停止它:先按 Ctrl + Z 暂停,然后用 kill -9 %1 终止该作业。

核心要点ps/top 用于kill 用于jobs/fg/bg 用于管理你的终端任务。掌握这些就能应对大多数基本的进程管理场景。