如何在Linux中挂起进程并在以后恢复
假设我们运行一个程序。
但是,我们不知道需要多长时间才能完成。
该过程持续运行几分钟。
我们不想等待那么久。
因为,其他一些重要程序正在队列中等待。
我们是否曾经遇到过这样的情况?
不用担心!我只是找到了一个简单的技巧,可以暂停进程并在以后恢复它。
我要做的只是暂停当前正在运行的进程,执行一些其他重要任务,然后在所有其他进程完成后恢复已停止的进程。
当我们具有较少的内存或者处理器来执行多任务时,这将非常有用。
我们可以随时暂停正在运行的进程,然后再恢复它们,而不必重新启动它们。
现在,让我们继续学习,暂停或者暂停正在运行的进程,并在以后在类似Unix的操作系统中恢复它。
挂起进程并稍后在Linux中恢复
这绝对是容易的!我们要做的就是找到PID(进程ID)并使用ps或者ps aux命令,然后将其暂停,最后使用kill命令将其恢复。
让我们来看一个例子。
我将使用wget命令下载Ubuntu 18.04 netboot镜像:
$wget http://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 http://archive.ubuntu.com/ubuntu/dists/xenial/main/installer-amd64/current/images/netboot/mini.iso
看到了吗?
wget进程已停止。
继续执行其他重要任务。
一旦完成所有任务,请使用以下命令恢复已停止的进程:
$kill -CONT 16143
要验证该进程是否正在运行,请运行ps命令。
$ps
看到了吗?
我们先前停止的过程已经恢复!
就像我已经说过的那样,如果我们不能在内存或者CPU速度较低的系统中不能执行多任务,这将很有帮助。
首先,使用ps命令找到正在运行的进程的pid。
然后,使用kill -STOP <PID>暂停它,然后使系统休眠。
使用命令kill -CONT <PID>恢复系统并恢复已停止的进程。
重新启动系统后,此功能可以工作吗?
我们可能想知道,在完全关闭系统或者重新启动后,这是否还能正常工作?
不。
因为,重新启动系统后,进程的PID将自动更改。
它们不会在重新启动后持续存在。
在这种情况下,我们可以挂起或者休眠整个系统,并在准备就绪后恢复它们。