我有一个init.d脚本,我希望它在后台工作,即使我从终端退出。但是,我尝试让它在后台运行nohup但“没有希望”,因为当我退出时,通过查看pstree我可以看到 PID 消失并因此nohup停止工作。
问:除了nohup将在前台工作的脚本推送到后台之外,还有其他方法,即使您退出终端后?
好的,所以有几个选择:
disown您可以组合disown并&推送您的脚本到后台
$ disown [your_script] &Run Code Online (Sandbox Code Playgroud) [your_script]可以通过jobs命令检查。输入后,您将看到:
$ jobs
[1]+ Running [your_script]Run Code Online (Sandbox Code Playgroud)
杀戮可以通过kill %1,1指上面看到的作业号。这是更好的替代方案,nohup因为它不会让nohup.out文件散落在整个文件系统中。
screen 是一个“虚拟”终端,您可以从“真实”终端运行它(实际上今天所有的终端都是“虚拟”的,但那是另一天的另一个话题)。Screen即使您的 ssh 会话断开连接,它也会继续运行。您在screen会话中启动的任何进程都将与该屏幕会话一起运行。当您重新连接到服务器时,您可以重新连接到 screen 会话,除了经过的时间之外,一切都好像什么都没发生过一样。
优秀来源:Speaking UNIX: Stayin' alive with Screen”。