如何在 Linux 中暂停进程并稍后恢复它

想象一下这个场景。 你运行一个程序。 但是,你不知道需要多长时间才能完成。 该过程会持续运行几分钟。 你不能再等太久了,因为其他一些重要的程序正在排队等候。 你有没有遇到过这样的情况? 不用担心! 我刚刚发现了一个简单的技巧来暂停一个进程并稍后在 Linux 中恢复它。

我要做的只是暂停当前正在运行的进程,做一些其他重要的任务,然后在所有其他进程完成后恢复停止的进程。

当您有较少的 RAM 或处理器来执行多任务时,这可能非常有用。 您可以随时暂停正在运行的进程,并在以后恢复它们,而无需重新启动它们。

现在让我们继续学习暂停或暂停正在运行的进程,稍后在 Linux 和类 Unix 操作系统中恢复它。

在 Linux 中暂停进程并稍后恢复它

这绝对是一件容易的事! 您所要做的就是找到 PID(进程 ID)并使用 ps 或者 ps aux 命令,然后暂停它,最后使用 kill 命令。

让我们看看一个 example. 我将使用下载 Ubuntu 18.04 网络引导映像 wget 命令:

$ wget https://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso &

这里, & 符号将移动正在运行的任务(即 wget) 到后台而不关闭它。

现在,我想暂停此任务并运行其他重要任务。 为此,首先使用命令查找正在运行的进程:

$ ps

样本输出:

  PID TTY          TIME CMD
30056 pts/0    00:00:00 bash
16143 pts/0    00:00:01 wget
32677 pts/0    00:00:00 ps

如您所见, wget 命令的 PID 是 16143.

让我们现在停止这个过程。 为此,请从终端运行以下命令:

$ kill -STOP 16143

使用命令验证进程是否已停止:

$ ps

样本输出:

PID TTY TIME CMD
8155 pts/0 00:00:00 bash
16143 pts/0 00:00:01 wget
16398 pts/0 00:00:00 ps

[1]+ Stopped wget https://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso

看? 这 wget 进程已停止。

继续做其他重要的任务。 完成所有任务后,使用命令恢复停止的进程:

$ kill -CONT 16143

要验证进程是否正在运行,请运行 ps 命令。

$ ps
在 Linux 中暂停进程并稍后恢复它

看? 我们之前停止的过程已经恢复!

就像我已经说过的,如果您不能在 RAM 或 CPU 速度较低的系统中执行多任务,这将很有帮助。

TL;博士

首先,使用 ps 命令找到正在运行的进程的 pid。 然后,暂停使用 kill -STOP <PID>,然后休眠您的系统。 恢复您的系统并使用命令恢复停止的进程 kill -CONT <PID>.

重新启动我的系统后它会工作吗?

您可能想知道,这在系统完全关闭或重新启动后也会起作用吗? . 因为,重新启动系统后,进程的 PID 会自动更改。 它们不会在重新启动后持续存在。 在这种情况下,您可以暂停或休眠整个系统,并在准备好时恢复它们。

就这样。 您现在知道如何在 Linux 和类 Unix 操作系统中暂停和恢复进程。 希望这可以帮助。

  • 在特定时间自动关闭、重启、挂起、休眠您的 Linux 系统
  • 自动从睡眠或休眠模式唤醒您的 Linux 系统
  • Reptyr – 将正在运行的进程从一个终端移动到另一个终端而不关闭它
  • 如何将Linux命令添加到队列并一一执行
  • 如何在 Linux 上使用 Procs 显示进程信息