进程常用命令

Linux 进程管理命令详解

1. 查看进程信息

1.1 ps 命令 - 查看系统进程快照

ps 命令用于显示当前系统的进程状态快照。

常用参数:

  • -e:显示所有进程
  • -l:以长格式显示更详细的信息
  • -f:显示完整格式信息,通常与其他选项联用
  • -aux:显示所有用户的进程(BSD风格)
  • -ef:显示所有进程的完整信息(标准风格)

示例:

bash 复制代码
# 查看所有进程
ps -ef

# 查看指定用户的进程
ps -u username

# 查看进程树
ps -ef --forest

1.2 top 命令 - 查看进程动态信息

top 命令实时显示系统进程的动态信息,包括CPU、内存使用情况等。

常用操作:

  • Shift + >:向后翻页
  • Shift + <:向前翻页
  • q:退出 top
  • k:杀死指定进程
  • r:调整进程优先级

示例:

bash 复制代码
# 查看所有进程动态信息
top

# 查看指定进程的信息
top -p PID

# 按内存使用排序
top -o %MEM

# 按CPU使用排序
top -o %CPU

1.3 /proc 目录 - 查看进程详细信息

Linux 系统中,/proc 是一个虚拟文件系统,包含了系统运行时的各种信息,包括进程信息。

常用文件:

  • /proc/PID/status:进程状态信息
  • /proc/PID/cmdline:进程启动命令
  • /proc/PID/environ:进程环境变量
  • /proc/PID/fd/:进程打开的文件描述符

示例:

bash 复制代码
# 查看进程1234的状态信息
cat /proc/1234/status

# 查看进程1234的启动命令
cat /proc/1234/cmdline | xargs -0 echo

2. 进程优先级管理

2.1 nice 命令 - 按指定优先级运行进程

nice 命令用于以指定的优先级启动新进程。

语法:

bash 复制代码
nice [-n NI值] 命令

参数说明:

  • -n NI值:指定优先级值(NI范围:-20~19)
    • 数值越小,优先级越高(-20最高)
    • 数值越大,优先级越低(19最低)

权限限制:

  1. 普通用户:

    • 只能调整自己的进程
    • NI值调整范围:0~19
    • 只能调高NI值(降低优先级),不能降低NI值(提高优先级)
    • 例如:原本NI值为0,只能调整为大于0的值
  2. root用户:

    • 可以调整任何用户的进程
    • 可以设置NI值为负值(-20~19)
    • 可以调高或降低NI值

示例:

bash 复制代码
# 以较低优先级运行命令(普通用户)
nice -n 10 ./myprogram

# 以较高优先级运行命令(需要root权限)
sudo nice -n -10 ./important_program

2.2 renice 命令 - 改变运行中进程的优先级

renice 命令用于修改已经运行进程的优先级。

语法:

bash 复制代码
renice [优先级] -p PID
renice [优先级] -u 用户名
renice [优先级] -g 组名

示例:

bash 复制代码
# 修改进程1234的优先级为10
renice 10 -p 1234

# 修改用户alice所有进程的优先级为5
renice 5 -u alice

# 修改进程组456的优先级为-5(需要root权限)
sudo renice -5 -g 456

3. 进程前后台管理

3.1 jobs 命令 - 查看后台进程

jobs 命令用于显示当前shell会话中的后台作业(进程)。

常用选项:

  • -l:显示作业的PID
  • -p:仅显示作业的进程组ID
  • -r:仅显示运行中的作业
  • -s:仅显示停止的作业

示例:

bash 复制代码
# 查看所有后台作业
jobs

# 查看后台作业并显示PID
jobs -l

# 查看运行中的后台作业
jobs -r

3.2 bg 命令 - 将挂起的进程在后台运行

bg 命令用于将挂起(暂停)的作业放到后台继续运行。

语法:

bash 复制代码
bg [作业号]

示例:

bash 复制代码
# 将最近挂起的作业放到后台运行
bg

# 将作业1放到后台运行
bg 1

3.3 fg 命令 - 把后台进程放到前台运行

fg 命令用于将后台作业放到前台运行。

语法:

bash 复制代码
fg [作业号]

示例:

bash 复制代码
# 将最近的后台作业放到前台运行
fg

# 将作业2放到前台运行
fg 2

3.4 常用快捷键

  1. Ctrl + Z:将当前前台进程挂起并放到后台

    • 进程状态变为"Stopped"
    • 可以使用 bg 命令让其在后台继续运行
    • 可以使用 fg 命令将其调回前台
  2. & 符号:在后台运行命令

    bash 复制代码
    # 在后台运行程序
    ./test &
    
    # 在后台运行命令并将输出重定向到文件
    ./long_running_script.sh > output.log 2>&1 &

3.5 实用示例

bash 复制代码
# 示例1:启动、挂起、恢复进程
$ ./my_script.sh     # 前台运行
^Z                    # 按 Ctrl+Z 挂起
[1]+  Stopped        ./my_script.sh
$ bg 1              # 在后台继续运行
[1]+ ./my_script.sh &
$ fg 1              # 调回前台运行

# 示例2:查看和管理后台作业
$ sleep 100 &
[1] 12345
$ sleep 200 &
[2] 12346
$ jobs -l            # 查看所有后台作业
[1]- 12345 Running  sleep 100 &
[2]+ 12346 Running  sleep 200 &
$ fg 2              # 将作业2调回前台
sleep 200
^C                   # 按 Ctrl+C 终止

4. 总结

命令类别 主要命令 功能描述 常用场景
进程查看 ps, top, /proc 查看进程状态和信息 系统监控、故障排查
优先级管理 nice, renice 调整进程优先级 资源分配、性能优化
前后台管理 jobs, bg, fg 管理进程前后台运行 多任务处理、会话管理