介绍

在本次挑战中,你将探索如何管理 Linux 系统上的进程调度。进程调度是操作系统的核心功能,它决定了哪个进程可以使用 CPU 以及使用多长时间。作为系统管理员,你可以通过调整进程优先级来影响这种调度。你将使用 nicerenice 命令来控制进程优先级,这是优化系统性能并确保关键应用获得所需资源的必备技能。

以自定义优先级启动进程

在 Linux 中,每个进程都有一个「谦让度」(nice)值,它会影响进程的调度优先级。该值的范围从 -20(最高优先级)到 19(最低优先级)。nice 命令允许你在启动新命令时指定其谦让度值。请注意,只有根用户(或具有 sudo 权限的用户)才能设置负的谦让度值来提高进程优先级。

任务

  • 使用 nice 命令在后台启动一个新的 sleep 600 进程。
  • 为该新进程分配高优先级,谦让度值为 -10
  • 使用 ps 命令验证新进程的优先级。

要求

  • 要运行的命令是 sleep 600
  • 进程必须以 -10 的谦让度值启动。
  • 你必须使用 sudo 来分配负的谦让度值。
  • 进程必须在后台运行,以便你可以继续使用终端。

示例

启动进程后,执行 ps -e -o pid,ni,comm | grep sleep 的输出应显示 sleep 进程的 NI(谦让度)值为 -10。进程 ID(PID)会有所不同。

ps -e -o pid,ni,comm | grep sleep
   2250 -10 sleep

你也可以使用 ps -e -o pid,ni,comm 来查看所有进程及其谦让度值:

  PID  NI COMMAND
    1   0 systemd
 2188   0 bash
 2250 -10 sleep

使用 renice 调整运行中进程的优先级

有时你需要更改已经在运行的进程的优先级。为此,你可以使用 renice 命令。与 nice 类似,你需要 sudo 权限来提高进程的优先级(设置更小或更负的谦让度值)。要更改其他用户(如 root)拥有的进程优先级,同样需要 sudo 权限。

任务

  • 找到你在上一步中启动的 sleep 600 进程的进程 ID(PID)。
  • 使用 renice 命令将其优先级调低,将谦让度值设为 5
  • 使用 ps 命令验证新的优先级级别。

要求

  • 目标进程是上一步中的 sleep 600 进程。
  • 新的谦让度值必须为 5
  • 你必须使用 sudo 来更改该进程的优先级(因为它是以 sudo 启动且由 root 拥有的)。

示例

运行 renice 命令后,ps -e -o pid,ni,comm | grep sleep 的输出应显示 sleep 进程的新 NI 值为 5

ps -e -o pid,ni,comm | grep sleep
   2250   5 sleep

你也可以使用 ps -e -o pid,ni,comm 来查看所有进程:

  PID  NI COMMAND
    1   0 systemd
 2188   0 bash
 2250   5 sleep

总结

在本次挑战中,你学习了在 Linux 系统上调整进程调度优先级的基本方法。你练习了使用 nice 命令以特定优先级启动新进程,以及使用 renice 命令修改已运行进程的优先级。你还了解到,提高进程优先级(设置负的谦让度值)需要管理员权限(sudo)。这些技能对于系统管理和性能调优至关重要。

✨ 查看解决方案并练习✨ 查看解决方案并练习