如何在 Linux 中更改进程的优先级

在 Unix 生态系统中,进程是一个正在运行的程序。 所以,在你的 Linux 机器上运行的任何程序都是一个进程。 一次可以在您的 Linux 机器上运行一个或多个进程。 我们可以使用显示有关活动进程的信息 ps 命令。 默认情况下,ps 命令只显示当前用户的进程。 您可以使用“ps -ef”(当然不带引号)命令来显示所有进程。 要查看进程的用户,我们使用“ps -u”。 希望您对 Linux 进程有一个基本的了解。 现在让我们来到今天的话题——如何在 Linux 中使用改变进程的优先级 好的雷尼斯 命令。

您可能知道,默认情况下,Linux 内核将所有进程视为同等重要,并为每个进程分配相同数量的 CPU 时间。 有时,您可能希望提高或降低某些进程的优先级以利用更多 CPU 时间。 这是 nice 和 renice 命令提供帮助的地方。 Nice 命令用于以用户定义的优先级运行进程,而 renice 命令用于更改正在运行的进程的优先级。 通常,nice 和 renice 命令用于更改优先级而不是进程的默认优先级。

使用 Nice 命令更改进程的优先级

查看进程的默认优先级

每当一个进程正常启动时,它都会获得默认的优先级值 .

我们用 cmus程序,用于本指南的命令行媒体播放器。

让我们使用命令运行它:

$ cmus &

笔记: 如果命令被控制操作员终止 &,shell 在子shell 的后台执行命令。

现在让我们使用命令查看正在运行的进程:

$ ps -al

样本输出:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 13829 13704 0 80 0 - 39431 signal pts/0 00:00:00 cmus
0 R 1000 13848 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

使用 ps 命令查看正在运行的进程

正如您在上面的输出中看到的,niceness 值列在列标题下 “你”. 因此,很明显,所有进程都获得默认的优先级值零。

使用不错的实用程序启动进程

如果你用 nice 命令启动一个进程,不带任何参数,它会得到默认值 10. 这里 10 是niceness 值或优先级。 尼斯值范围从 -20 (最有利于该过程) 19 (对过程最不利)。 简而言之,负值(例如 -20)赋予进程更高的优先级,正值(例如 19)赋予进程较低的优先级。

现在,让我们用命令停止正在运行的程序 cmus:

$ kill -9 13829

这里,13829 是 cmus 程序的 PID。 您将在上述输出中的标题“PID”下看到此值。

现在,使用“nice”实用程序运行 cmus 程序。

$ nice cmus &

使用命令检查正在运行的进程:

$ ps -al

样本输出:

 F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
 0 T 1000 13957 13704 0 90 10 - 55815 signal pts/0 00:00:00 cmus
 0 R 1000 13985 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

使用不错的实用程序启动进程

看,现在 cmus 进程得到了默认的 niceness 值 10,这意味着它的优先级已经改变。

使用优先级较低的 nice 实用程序启动进程

此外,您可以使用特定的 niceness 值启动相同的过程,例如 example 15,如下所示。

使用 kill 命令杀死进程:

$ kill -9 13957

同样,以 niceness 值为 15 开始该过程:

$ nice -15 cmus &

笔记: 在这里,不要混淆 (连字符)带减号。 我们用 (连字符)传递一个值。 因此,要分配一个正值,我们使用 -15。 同样,要分配负值,我们使用–15(即双连字符)。

让我们使用 ps -al 命令检查 niceness 值:

$ ps -al

样本输出:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 14060 13704 0 95 15 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 14069 13704 0 80 0 - 8148 - pts/0 00:00:00 ps

使用优先级较低的 nice 实用程序启动进程

使用优先级较低的 nice 实用程序启动进程

看,现在 cmus 进程得到了 15 的 niceness 值。

在上述示例中,我们启动了优先级较低的进程。 记住 正的 niceness 值表示较低的优先级.

使用优先级更高的 Nice 实用程序启动进程

您已经知道负的 niceness 值代表更高的优先级。 请注意 不允许普通用户启动具有更高优先级的进程。 您需要成为 root 用户才能启动任何具有更高优先级的进程.

因此,要使用优先级较低的 nice 实用程序启动进程,对于 example -15,运行以下命令:

# nice --15 cmus &

样本输出:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 14331 14306 0 80 0 - 20531 poll_s pts/0 00:00:00 sudo
4 S 0 14332 14331 0 80 0 - 13796 wait pts/0 00:00:00 su
4 S 0 14333 14332 0 80 0 - 5736 wait pts/0 00:00:00 bash
4 T 0 14358 14333 0 65 -15 - 55643 signal pts/0 00:00:00 cmus
0 R 0 14366 14333 0 80 0 - 8148 - pts/0 00:00:00 ps

使用优先级更高的 Nice 实用程序启动进程

使用优先级更高的 Nice 实用程序启动进程

使用 -n 选项启动进程

你也可以使用 -n 增加或减少优先级的选项。

要提高优先级,请运行以下命令 用户:

# nice -n -15 cmus &

要降低优先级,请运行以下命令 普通的 用户:

$ nice -n 15 cmus &

下载免费电子书:“Amazon S3 教程”

使用 Renice 命令更改正在运行的进程的优先级

到目前为止,我们看到的是我们启动了一个具有用户定义优先级的流程。 现在,我们将使用 renice 命令更改正在运行的进程的优先级。

让我们使用命令查看正在运行的进程:

$ ps -al

样本输出:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 15059 14306 0 95 15 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 15066 14306 0 80 0 - 8148 - pts/0 00:00:00 ps

正如您在上面的输出中看到的,cmus 以较低的优先级值 15 运行。

要更改正在运行的进程的当前 niceness 值,对于 example 18,运行以下命令:

$ renice -n 18 -p 15059

这里, 15059 是 cmus 进程的进程 ID。

示例输出为:

15059 (process ID) old priority 15, new priority 18

使用命令验证 niceness 值:

$ ps -al

样本输出:

F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
0 T 1000 15059 14306 0 98 18 - 55815 signal pts/0 00:00:00 cmus
0 R 1000 15074 14306 0 80 0 - 8148 - pts/0 00:00:00 ps

要将其更改为负的 niceness 值(以分配更高的优先级),请运行以下命令 用户:

# renice -n -20 -p 14749

您甚至可以更改属于特定组的所有运行组的优先级,如下所示。

# renice -n -20 -g ostechnix

上面的命令改变了属于一个名为的组的所有正在运行的进程的优先级 ostechnix.

此外,您可以更改特定用户拥有的运行进程的优先级,例如 example sk,使用命令:

# renice -n -20 -u sk

有关更多选项,我建议您参考 nice 和 renice 实用程序的手册页。

$ man nice
$ man renice

建议阅读:

  • 如何找出一个进程在 Linux 中运行了多长时间
  • 如何在 Linux 上使用 Procs 显示进程信息

我希望您对什么是 Linux 进程以及如何使用 nice 和 renice 实用程序更改其优先级有一个基本的了解。希望对您有所帮助。

感谢您的光临!

帮助我们帮助您:

祝你有美好的一天!!