通过终端远程操作服务器时,难免要使特定进程处于持续运行状态,例如深度学习训练网络参数,但又不可能长时间不间断操作终端,我们希望将进程保持后台持续运行,这里提供两个思路:(1)docker 内运行,退出但不终止程序;(2)nohup 命令与 & 结合。

这里只讲第二个思路:nohup 命令与 & 结合。

举个例子,我们需要保持 test.py 程序的持续运行(用于长时间训练神经网络),并且将控制台输出重定向到日志文件中,那么如下命令可以轻松办到:

nohup python test.py > log.txt &

在使用 nohup 后台运行命令之后,需要使用 exit 正常退出当前账户,这样才能更好地保证命令一直在后台运行。

上述进程保持持续运行一段时间后,若想停止运行,即杀掉该进程,有如下操作:

ps -ef | grep python

通过用户名以及程序名等信息找到对应的 PID,使用 kill 命令强制终止进程(若PID为2223):

kill -s 9 2223

由此便完成了对进程的强制结束。kill 命令实际上是很常见的 linux 命令,在很久之前也就接触过,这里作为总结和回顾,也一并作了相应介绍。