首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在退出非root用户的ssh之后,如何让Linux程序继续运行?

在退出非root用户的ssh之后,如何让Linux程序继续运行?
EN

Stack Overflow用户
提问于 2012-03-17 19:51:54
回答 4查看 2.7K关注 0票数 2

我搜索了,谷歌了,在IRC上坐了一个星期,甚至和一个忠实地支持linux的朋友谈过话,但我还没有得到一个可靠的答案。

我已经编写了一个shell脚本,只要我登录到我的非root用户,它就会立即运行,并且基本上只运行"./myprogram &“而不加引号。当我退出shh时,我的程序超时,我无法连接到它,直到我重新登录。在退出非root用户的SSH后,如何让程序保持运行?

我很好奇这是不是必须在程序层面上完成?我的道歉,如果这不属于这里,我不知道它去哪里是完全诚实的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-03-17 20:25:22

除了使用nohup之外,您还可以在screentmux等终端多路复用器中运行您的程序。有了它们,您可以重新连接到会话,例如,如果您需要在不稳定的ssh连接上运行基于终端的交互式程序或长时间运行脚本,这将非常有用。

boybu是对screen的一个很好的增强。

票数 7
EN

Stack Overflow用户

发布于 2012-03-17 19:54:26

试试nohup:http://linux.die.net/man/1/nohup

当您退出ssh会话时,您的程序可能会收到SIGHUP信号。

票数 3
EN

Stack Overflow用户

发布于 2012-03-17 20:12:48

有两个信号会导致您的程序在ssh会话结束后终止:SIGHUPSIGPIPE

由于父进程(ssh)已死,将向您的程序发送SIGHUP。您可以通过使用程序nohup (即nohup ./myprogram &)或使用shell内置disown (./myprogram& disown)来解决此问题。

如果程序在ssh会话断开后尝试写入stdoutstderr,则会将SIGPIPE发送到您的程序。要解决此问题,请将它们重定向到文件或/dev/null,即nohup ./myprogram >/dev/null 2>/dev/null &

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9749770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档