跳至主要內容

进程管理命令

Mr.Liu大约 6 分钟Linuxpstopkillnohup

进程管理命令

ps

ps​ 命令用于显示当前正在运行的进程(进程状态)信息。它是一个常用的 Linux 命令,可以监视系统上正在运行的进程,查找特定进程,以及获取关于进程资源使用情况的信息。

基本语法格式如下:

ps [options]

其中,options​ 是一系列用于指定 ps​ 命令行为的选项。下面是一些常用的 ps​ 命令选项及其说明:

  • -e​: 显示所有所有进程,包括正在运行的和已经终止的,无论它们是否在当前终端会话中。
  • -a​:显示当前终端会话中的所有用户进程,包括其他用户的进程,但默认情况下不包括停止的进程。
  • -x​ 参数用于显示所有与当前用户相关的进程,包括没有终端控制的进程。它会列出不与任何终端相关联的进程,例如守护进程(daemon processes)等。
  • -f​: 显示详细的进程信息,包括用户、PID、PPID、CPU 使用率、内存使用等。
  • -H​: 显示进程树,以缩进方式显示进程之间的层次关系。可以更清晰地展示父进程和子进程的关系。
  • -L​:显示进程的线程信息,如果一个进程有多个线程,这将显示每个线程的信息。
  • -u <user>​: 显示指定用户的进程,可以同时指定多个用户,用逗号分隔
  • -p <PID>​:显示指定进程ID的详细信息,可以添加多个进程ID,用空格分隔
  • --sort​: 按指定的字段排序显示进程列表,例如 --sort=-%cpu​ 按 CPU 使用率降序排序。

以下是一些常用的 ps​ 命令选项以及案例说明:

# 显示当前终端窗口中的进程列表
ps

# 显示所有进程,包括正在运行的和已经终止的
ps -e

# 显示所有进程的详细信息,包括用户、PID(进程标识符)、CPU 使用率、内存使用等。
ps -ef
ps -aux

# 显示特定用户运行的进程列表
ps -u <用户名>
# 显示特定进程ID的详细信息
ps -p <进程ID>

# 按照 CPU 使用率从高到低的顺序显示进程列表
ps -ef --sort=-%cpu
# 按照内存使用率从高到低的顺序显示进程列表
ps -ef --sort=-%mem

# 显示进程树,包括父进程和子进程的关系
ps -efH
# 显示进程和线程,包括每个线程的详细信息
ps -efL

kill

kill​ 命令用于向进程发送信号,从而影响进程的行为。信号是一种通知机制,可以用来控制进程的运行状态、执行特定操作或请求进程终止。通过 kill​ 命令,您可以与正在运行的进程进行交互,例如终止、重新加载配置或重新启动等操作。

基本语法格式如下:

kill [options] <PID>

其中,<PID>​ 是要操作的进程的进程ID。可以添加多个进程ID,用空格分隔

列出所有可用信号及其编号:

kill -l
  • kill -9​​:

    • 发送 SIGKILL​ 信号给目标进程,该信号是终止(kill)信号。
    • 使用 -9​​ 选项会强制终止目标进程,进程将立即被终止,不会有清理操作或终止信号处理。
    • 这种方式可能会导致进程在终止时无法进行资源释放或状态保存,可能会留下未处理的数据或文件。
  • kill -15​​:

    • 发送 SIGTERM​ 信号给目标进程,该信号是终止(terminate)信号。
    • 使用 -15​​ 选项会优雅地请求目标进程终止,允许进程执行清理操作和终止信号处理。
    • 这是一种通常建议的终止方法,因为它允许进程在退出前完成必要的操作。
  • kill -20​:

    • 发送 SIGTSTP​ 信号给目标进程,该信号是挂起(suspend)信号。
    • 使用 -20​ 选项会暂停(挂起)目标进程,类似于按下 Ctrl+Z​ 键。进程会停止执行,但可以在后台继续运行。
    • 适用于暂停正在运行的进程,然后将其放到后台以便执行其他操作,在后续需要时重新启动它。

nohup

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。

基本语法格式如下:

 nohup Command [ Arg … ] [ & ]

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。

以下是一些常用的 nohup​ 命令选项以及案例说明:

nohup sh -c 'while true; do date; sleep 2; done'  > log.txt 2>&1 &

2>&1 解释:

将标准错误 2 重定向到标准输出 &1 ,标准输出 &1 再被重定向输入到 log.txt​ 文件中。

  • 0 – stdin (standard input,标准输入)
  • 1 – stdout (standard output,标准输出)
  • 2 – stderr (standard error,标准错误输出)

top

top​ 是一个命令行实用程序,用于实时监视系统的运行状态和进程活动。它可以显示各种系统性能指标,如CPU使用率、内存使用、进程列表等,并且会持续刷新显示,以便实时了解系统的性能情况。

常见的交互式操作:

  • 使用键盘上的箭头键上下浏览进程列表。
  • 按下 f​键进入交互界面,使用 d​或​ space​选择是否显示某些字段,使用 s​ 指定字段排序
  • 按下 Shift+M​ 按内存使用排序进程列表。
  • 按下 Shift+P​ 按CPU使用排序进程列表。
  • 按下 k​ 键输入进程PID来终止一个进程。
  • 按下 q​ 键退出 top​。

每一列字段说明:

  • PID​:进程ID,唯一标识一个进程。
  • USER​:进程的所有者用户名。
  • PR​:进程的优先级。
  • NI​:NICE值,影响进程的调度优先级。
  • VIRT​:进程使用的虚拟内存量。
  • RES​:进程使用的实际物理内存量(Resident Set Size)。
  • SHR​:进程使用的共享内存量。
  • S​:进程状态,如运行(R)、等待(S)、停止(T)、僵尸(Z)等。
  • %CPU​:进程使用的CPU资源百分比。
  • %MEM​:进程使用的内存资源百分比。
  • TIME+​:进程在CPU上的累计运行时间。
  • COMMAND​:进程的命令行。