退出非root用户的ssh后,如何保持Linux程序运行?
我已经搜索、谷歌搜索、在IRC坐了一个星期,甚至和一位忠实支持linux的朋友交谈过,但我还没有得到确切的答案 我已经编写了一个shell脚本,它在我登录到非root用户时立即运行,并且基本上只运行“/myprogram&”,不带引号。当我退出嘘我的程序超时,我无法连接到它,直到我重新登录。退出非root用户的SSH后,如何保持程序运行 我很好奇,这是否必须在项目层面上完成,还是什么?如果这不属于这里,我很抱歉,我不确定这是怎么回事。请尝试nohup:退出非root用户的ssh后,如何保持Linux程序运行?,linux,debian,Linux,Debian,我已经搜索、谷歌搜索、在IRC坐了一个星期,甚至和一位忠实支持linux的朋友交谈过,但我还没有得到确切的答案 我已经编写了一个shell脚本,它在我登录到非root用户时立即运行,并且基本上只运行“/myprogram&”,不带引号。当我退出嘘我的程序超时,我无法连接到它,直到我重新登录。退出非root用户的SSH后,如何保持程序运行 我很好奇,这是否必须在项目层面上完成,还是什么?如果这不属于这里,我很抱歉,我不确定这是怎么回事。请尝试nohup: 退出ssh会话时,您的程序可能会收到SIG
退出ssh会话时,您的程序可能会收到SIGHUP信号。有两个信号可能会导致您的程序在
ssh
会话结束后死亡:SIGHUP
和SIGPIPE
SIGHUP
将被发送到您的程序,因为父进程(ssh
)已死亡。您可以通过使用程序nohup
(即nohup./myprogram&
)或通过使用shell内置的disown
(/myprogram&disown
)绕过此问题
断开
ssh
会话后,如果程序试图写入stdout
或stderr
,则将向程序发送SIGPIPE
。要解决这个问题,请将它们重定向到一个文件或/dev/null
,即nohup./myprogram>/dev/null 2>/dev/null&
除了使用nohup
,您还可以在终端多路复用器中像或一样运行您的程序。使用它们,您可以重新连接到会话,例如,如果您需要在不稳定的ssh连接上运行基于终端的交互式程序或长时间运行脚本,这将非常有用
是
screen
的一个很好的增强功能除了其他答案(nohup
,screen
,…)之外,您可能还想使用(或at
)命令。而且ssh
有一个-f
选项,您可能会感兴趣。+1用于考虑交互式流程。也是我第一次听说boybu。。。听起来很有趣