我搜索了,谷歌了,在IRC上坐了一个星期,甚至和一个忠实地支持linux的朋友谈过话,但我还没有得到一个可靠的答案。
我已经编写了一个shell脚本,只要我登录到我的非root用户,它就会立即运行,并且基本上只运行"./myprogram &“而不加引号。当我退出shh时,我的程序超时,我无法连接到它,直到我重新登录。在退出非root用户的SSH后,如何让程序保持运行?
我很好奇这是不是必须在程序层面上完成?我的道歉,如果这不属于这里,我不知道它去哪里是完全诚实的。
发布于 2012-03-17 20:25:22
发布于 2012-03-17 19:54:26
试试nohup:http://linux.die.net/man/1/nohup
当您退出ssh会话时,您的程序可能会收到SIGHUP信号。
发布于 2012-03-17 20:12:48
有两个信号会导致您的程序在ssh会话结束后终止:SIGHUP和SIGPIPE。
由于父进程(ssh)已死,将向您的程序发送SIGHUP。您可以通过使用程序nohup (即nohup ./myprogram &)或使用shell内置disown (./myprogram& disown)来解决此问题。
如果程序在ssh会话断开后尝试写入stdout或stderr,则会将SIGPIPE发送到您的程序。要解决此问题,请将它们重定向到文件或/dev/null,即nohup ./myprogram >/dev/null 2>/dev/null &
https://stackoverflow.com/questions/9749770
复制相似问题