想象一下这个场景。你运行一个程序。但是,你不知道需要多长时间才能完成。该过程会持续运行几分钟。你不能再等太久了,因为其他一些重要的程序正在排队等候。你有没有遇到过这样的情况?不用担心!我刚刚发现了一个简单的技巧来暂停一个进程并稍后在 Linux 中恢复它。
我要做的只是暂停当前正在运行的进程,做一些其他重要的任务,然后在所有其他进程完成后恢复停止的进程。当你有较少的 RAM 或处理器来执行多任务时,这可能非常有用。你可以随时暂停正在运行的进程,并在以后恢复它们,而无需重新启动它们。现在让我们继续学习暂停或暂停正在运行的进程并稍后在 Linux 和类 Unix 操作系统中恢复它。
在 Linux 中暂停进程并稍后恢复它
代码语言:javascript复制这绝对是一件容易的事!你所要做的就是找到PID(进程ID)并使用
ps
或ps aux
命令,然后暂停它,最后使用kill
命令恢复它。让我们看一个例子。我将使用以下
wget
命令下载 Ubuntu 18.04 网络引导映像:
$ wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso &
在这里,
&
symbol 会将正在运行的任务(即wget
)移动到后台而不关闭它。现在,我想暂停此任务并运行其他重要任务。为此,首先使用命令查找正在运行的进程:
$ ps -aux | grep wget
root 10901 0.0 0.0 151020 2524 ? R 21:42 0:00 wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
如你所见, wget 命令的 PID 是
16143
。让我们现在停止这个过程。为此,请从终端运行以下命令:
$ kill -STOP 10901
代码语言:javascript复制使用命令验证进程是否已停止:
$ ps -aux | grep wget
root 10901 0.0 0.0 151020 2524 ? T 21:42 0:00 wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
该
wget
过程已停止(T表示终止)。继续做其他重要的任务。完成所有任务后,使用命令恢复停止的进程:
$ kill -CONT 10901
代码语言:javascript复制要验证进程是否正在运行,请运行
ps
命令。
$ ps -aux | grep wget
root 10901 0.0 0.0 151020 2524 ? R 21:42 0:00 wget http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
我们之前停止的过程已经恢复!
就像我已经说过的,如果你不能在 RAM 或 CPU 速度较低的系统中执行多任务,这将很有帮助。
首先,使用 ps 命令找到正在运行的进程的 pid。然后,使用 暂停它
kill -STOP <PID>
,然后休眠你的系统。恢复你的系统并使用命令恢复停止的进程kill -CONT <PID>
。
重新启动我的系统后它会工作吗?
重新启动系统后,进程的 PID 会自动更改。它们不会在重新启动后持续存在。在这种情况下,你可以暂停或休眠整个系统,并在准备好时恢复它们。