默认情况下,一旦您注销会话,在 linux 命令行上运行的进程就会终止。但是,如果您想要启动一个长时间运行的进程并确保它在您注销后继续运行,可以通过多种方法实现这一点。第一种是使用nohup命令。
使用nohup
nohup (无挂起)命令将覆盖在您注销时终止进程的正常挂起(SIGHUP 信号)。例如,如果您想运行一个具有长时间运行循环的进程并让它自行完成,您可以使用如下命令:
% nohup long-loop & [1] 6828 $ nohup: ignoring input and appending output to 'nohup.out'
请注意,SIGHUP 是当进程的控制终端关闭时发送到进程的信号。
一旦以这种方式使用nohup命令,您就可以注销,因为它会自行运行完成。根据进程,它可能会在您下次登录时完成。无论如何,生成的输出将添加到名为“nohup.out”的文件中。
如果您希望将输出放入单独的文件中(例如,如果您需要保留一些早期的 nohup.out 内容),您可以使用如下命令指定另一个输出名称:
$ nohup long-loop &> nohup2.out &
如果您重新登录时该进程仍在运行,您应该能够在ps命令输出中找到它。使用jobs命令您将看不到它。
$ ps -ef | grep loop shs 6861 6366 0 13:52 pts/4 00:00:00 /bin/bash ./long-loop
如果该过程在您重新登录之前完成,请在 nohup.out 文件中查找其输出。
让进程在启动后自行运行
即使进程已经开始运行,您也可以让其自行运行,去做这个:
- 键入Ctrl+Z暂停程序并返回 shell
- 使用bg命令将进程移至后台运行
- 使用disown -h命令(即 disown -h %1),其中 %1 是作业编号,以解除它与当前 shell 的关联
注意:您还可以使用 jobs 命令查找您的作业编号。
$ big-loop ^Z [1]+ Stopped big-loop $ bg [1]+ big-loop & <=== %1 $ disown -h %1 $ jobs [1]+ Running big-loop &
本文由 @大老鹰 发布于弱电智能网 。
题图来自Unsplash,基于CC0协议
内容观点仅代表作者本人,弱电智能网平台仅提供信息存储空间服务。
如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
文章名称:《如何在注销后保持 Linux 上的进程继续运行》
文章链接:https://www.ruodian360.com/tech/sytemops/50703.html
添加微信ydian188免费入群,记得备注“弱电智能网”。