控制进程

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 章中题为 执行多个命令 的部分

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

pgrep -l process_name
top

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

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

kill

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

killall 和 pkill - 通过名称终止进程:pkillkillall 可能比 kill 更易于使用。pkill 允许您键入进程名称的一部分来终止它,而 killall 则需要完整的进程名称。 请参阅下文以获取更多信息。

示例

kill pid

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

kill %id

与上面相同,不同之处在于它使用 id 而不是 pid, 当使用 id 进行终止时,您需要使用 %(百分号)。

kill -kill pid

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

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

killall

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

pkill - 有点像带有正则表达式的 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

将进程放到后台。 要在后台 启动程序(使其不占用终端),请在命令末尾使用 “&”(和号)。 您通常使用 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 用户的进程的优先级