想象一下这个场景。 你运行一个程序。 但是,你不知道需要多长时间才能完成。 该过程会持续运行几分钟。 你不能再等太久了,因为其他一些重要的程序正在排队等候。 你有没有遇到过这样的情况? 不用担心! 我刚刚发现了一个简单的技巧来暂停一个进程并稍后在 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
看? 我们之前停止的过程已经恢复!
就像我已经说过的,如果您不能在 RAM 或 CPU 速度较低的系统中执行多任务,这将很有帮助。
TL;博士
首先,使用 ps 命令找到正在运行的进程的 pid。 然后,暂停使用 kill -STOP <PID>
,然后休眠您的系统。 恢复您的系统并使用命令恢复停止的进程 kill -CONT <PID>
.
重新启动我的系统后它会工作吗?
您可能想知道,这在系统完全关闭或重新启动后也会起作用吗? 不. 因为,重新启动系统后,进程的 PID 会自动更改。 它们不会在重新启动后持续存在。 在这种情况下,您可以暂停或休眠整个系统,并在准备好时恢复它们。
就这样。 您现在知道如何在 Linux 和类 Unix 操作系统中暂停和恢复进程。 希望这可以帮助。
- 在特定时间自动关闭、重启、挂起、休眠您的 Linux 系统
- 自动从睡眠或休眠模式唤醒您的 Linux 系统
- Reptyr – 将正在运行的进程从一个终端移动到另一个终端而不关闭它
- 如何将Linux命令添加到队列并一一执行
- 如何在 Linux 上使用 Procs 显示进程信息