在与同事长时间讨论后提出这个问题,我真的很想在这里澄清一下。
我启动了一个后台进程,通过将“ &”附加到命令行或通过CTRL-Z使用“ bg”停止并在后台恢复它。然后我退出。
发生什么了?
我们很确定它应该被 SIGHUP 杀死,但这并没有发生;再次登录后,该进程愉快地运行并pstree显示它已被“采用”init.
这是预期的行为吗?
但是,如果是,那么nohup命令的目的是什么?看起来这个过程无论如何都不会被杀死,不管有没有它......
更多细节:
nohup和/或的情况下启动的&;然后它被暂停CTRL-Z并在后台恢复bg。exit ”命令)。scp文件复制操作。pstree显示进程正在运行并且是init.更清楚地说明问题:是否将进程置于后台(使用&或bg)使其 ignore SIGHUP,就像nohup命令一样?
我尝试手动发送一个SIGHUPto scp: 它退出了,所以它绝对不会忽略信号。
然后我再次尝试启动它,将它放在后台并注销:它被“采用”init并继续运行,当我重新登录时我在那里找到了它。
我现在很困惑。看起来SIGHUP在注销时根本没有发送。
我需要远程运行 SSH 命令,并在本地显示输出。但是如果连接中断,我希望命令仍然运行。
我不是在谈论登录和执行,而是在做 ssh user@remotehost 'commands && command etc'
即使连接中断,我如何确保命令运行?
我有一个 Sinatra 应用程序,我使用ruby app.rb. 通过 ssh 在远程机器上部署它时,如何在后台运行它并将 stdout 和 stderr 重定向到日志文件?
在重新启动时,我想保留以前的日志,以便将较新的消息附加到现有的日志文件中,而不是截断它。
将我的 Web 应用程序作为守护程序运行的推荐方式是什么?
我试过了nohup ruby app.rb &,但似乎缺少 stderr 并且在某些情况下日志语句似乎乱序。
我知道有两种或多种方法可以运行作业并将其置于后台。
现在我使用 ctrl-z 在后台进行 scp 传输,因为我注意到这需要一段时间。如何在后台运行该进程,以便在等待完成时编写其他命令?
注意:我可以创建一个新终端,但是在这种情况下,我通过 SSH 连接到 2 个不同的服务器,因此在后台为我想要的每个并发作业执行此操作很不方便。
我已经为我从 Hostgator 开发的网站购买了托管服务。但是,开发人员说他为我开发的站点无法托管在那里,因为他需要能够在后台运行 cron 作业,并希望我在他的服务器上托管(这要贵得多)。我知道通过我的托管,我可以通过 cpanel 设置 cron 作业。这些作业不是在后台运行吗?我真的需要更换主机还是这个开发人员只是想给我挤更多的钱?有人可以告诉我我的开发人员在说什么吗?