9.3. 控制进程

ps

将显示您系统上正在运行的进程列表。 如果没有选项,ps 将列出属于当前用户并具有控制终端的进程。

示例选项包括

  • -aux --- 列出所有正在运行的进程(所有用户,带有一些信息)。

  • -a --- 列出所有用户的所有进程。

  • -u --- 列出更多信息,包括用户名、%cpu 使用率和 %mem 使用率等等。

  • -x --- 列出没有控制终端的进程。

  • -l --- 显示不同的信息,包括 UID 和 nice 值。

  • --forest --- 这使您可以更容易地查看进程层次结构,它会告诉您系统上各种进程是如何相互关联的(尽管您也应该尝试使用 pstree)。

例如,要列出所有带有附加信息的正在运行的进程,只需键入

ps -aux
pstree

以树形结构显示进程(类似于 tree 对目录的操作)。

使用 -p 选项来显示进程 ID。

示例

pstree -p

这将列出所有进程及其 ID。

pgrep

当您知道进程名称的一部分时,此命令可用于查找特定进程的进程 ID。

使用 -l 选项来同时列出进程的名称,使用 -u 选项来通过特定用户进行搜索。

通常 pgrep 只会返回 pid 号码;这样您可以将其与其他命令一起使用。

示例

kill $(pgrep mozilla)

这将终止任何名称以 mozilla 开头的进程。 请注意,这与使用 pkill(见下文)相同。

如果您不熟悉此命令的 $(�) 部分,请参阅第 6.4 节

要列出进程 ID 和名称,请键入

pgrep -l process_name
top

显示“top”(如 CPU 使用率)进程,提供比 ps 更详细的信息。

top 还提供更新的显示,它具有许多选项,使其可以完全自定义,请参阅手册或 info 页面了解详细信息。

kill

要在系统上终止进程,您需要它们的 pid 或 id。 使用 pspstree 查找进程 id (pid),或使用 jobs 查找 id。

Tipkillall 和 pkill - 按名称终止进程
 

pkillkillallkill 更容易使用。pkill 允许您键入进程名称的一部分来终止它,而 killall 需要完整的进程名称。 请参阅下文了解更多信息。

示例

kill pid

简单地终止一个进程(允许它有时间保存文件并退出)

kill %id

与上面相同,只是它使用 id 而不是 pid,使用 id 终止时需要使用 %(百分号)。

kill -kill pid

强制终止一个进程(不允许保存或更新文件);仅在必要时使用,因为程序拥有的所有数据都将丢失。

还有许多其他 kill 选项,例如 kill -HUP (挂断)... 请参阅手册/info 页面了解更多信息。

killall

通过进程名称终止进程,使用名称而不是进程 ID (pid)。 使用 -vkillall 报告终止是否成功,使用 -i 进入交互模式(在尝试终止之前会提示您)。

Tippkill - 有点像带有正则表达式的 killall
 

pkill 是另一个允许终止进程的命令,但它使用正则表达式。 请参阅下文了解更多信息。

例如

killall -iv mozilla

这将终止任何名为“mozilla”的内容,并在每次终止之前提示您并报告终止是否成功。 遗憾的是,您需要获得完全正确的名称才能使 killall 工作,您需要使用“mozilla-bin”来终止 mozilla 浏览器。 如果你想要一些你不需要知道确切名称的东西,试试 pkill (见下文)。

pkill

pkill 用于根据扩展的正则表达式终止进程。 使用 -u 选项使用用户名和进程名称进行终止(例如,仅终止特定用户的进程)。 pkill 还可以向进程发送特定信号。

对于正常使用,只需键入

pkill process_name

请注意,“process_name”不必完全匹配……

或者要仅终止用户“fred”和“anon”的“process_name”,请键入

pkill -u fred anon process_name
skill

skill 用于向命令/用户名/tty 发送特定信号。

skill 有许多选项可用于确保正确的解释(否则它只是猜测它是什么),只需键入 skill -option(s)

  • -L --- 列出可以发送的各种信号

  • -u --- 指定用户名;这显然后面跟着用户名或以空格分隔的用户名列表。

  • -p --- 进程 ID(后跟进程 ID)

  • -c --- 命令名称(这与 killall 相同)

  • -t --- (tty 号码)

  • -v --- 详细模式

  • -i --- 交互模式。

skill 可用于使用用户名、命令名称或进程 ID 停止、继续或终止进程(或向它们发送您喜欢的任何信号)。

有用的例子

skill -STOP abusive_user_name

上面的命令将停止该用户的所有进程,这将导致他的屏幕冻结,直到您键入

skill -CONT abusive_user_name

这将告诉所有进程可以像以前一样继续。 请注意,这仅在您是 root 用户时才有效。 另请注意,您可以在命令中列出多个用户名,以便将其应用于多个用户。

CTRL-C

中断键,将终止(中断,停止)在您的终端上运行的某些内容。

jobs

打印当前正在运行的作业,如您在 shell 中执行的进程。

bg

将进程放入后台。 要在后台启动程序(因此它不会接管终端),请在命令末尾使用“&”(and 符号)。 您通常使用 CTRL-Z 来暂停当前正在使用的内容。 您只需使用 bg 即可在后台恢复上次暂停的作业……

命令语法

bg job_number

bg job_name
fg

将进程调到前台,以便您可以与之交互。 该进程将使用您当前的终端。 请注意,只需使用 fg 即可将上次暂停的作业编号调到前台……

您可以按名称或按编号将作业调到前台(使用 jobs 查找编号)。

命令语法

fg job_number

fg job_name
nice

设置进程的优先级。 nice -20 是最高优先级(只有管理用户才能分配负优先级), nice 20 是最低优先级。 您必须是 root 用户才能赋予进程更高的优先级,但您可以始终降低您自己的进程的优先级……

示例

nice -20 make

将执行 make 并且它将以最高优先级运行。

renice

更改现有命令的优先级。 您可以使用选项 -u 来更改特定用户名的所有进程的优先级,使用 -g 来更改特定组的所有进程的优先级。 默认是通过进程 ID 号码进行更改。

示例

renice +20 2222

这将把进程 2222 的优先级更改为 +20(最低优先级)。

snice

snice 的工作方式与 skill 非常相似,只是它更改进程的优先级。 它的功能类似于 renice

要使用选项(以确保正确的解释),您只需键入 snice -option(s):

  • -u --- 指定用户名;这显然后面跟着用户名或以空格分隔的用户名列表。

  • -p --- 进程 ID(后跟进程 ID)

  • -c --- 命令名称(这与 killall 相同)

  • -t --- tty 号码

  • -v --- 详细模式

  • -i --- 交互模式。

示例

snice -10 -u root

这将提高所有 root 进程的优先级。