我试图通过ssh启动一个testing服务器,但是一旦我从ssh断开,它总是死掉。
有没有办法启动一个进程(运行服务器),所以它不会死在我的SSH会话结束?
作为nohup
的替代方案,您可以在终端复用器(如GNU screen
或tmux
运行远程应用程序。
使用这些工具可以轻松地重新连接到另一个主机的会话,这意味着您可以在离开工作之前进行长时间的构建或下载,并在您回家时检查其状态。 例如。 我发现这非常有用的时候,在远程(在不同的国家)与我和他们之间的不可靠的连接的服务器的开发工作,如果连接下降,我可以简单地重新连接和继续而不失去任何状态。
是; 您可以使用nohup
命令来吞咽挂断SSH会话时发送到程序的HUP(“挂断”)信号。
或者,如果您自己编写服务器,则可以对其进行编码,以便为HUP信号注册一个处理程序 ,并将其吞入程序(而不是使用外部nohup
程序)。
除了其他答复之外,你可以通过批处理 (或者)启动你的测试服务器at
但是Brian回答你应该调用daemon
你可以将-f
选项传递给ssh
作为nohup
, screen
等的替代方案, 你可以修改你的服务器来调用daemon
把它从终端上分离出来。 这是为linux编写服务的惯用方式。
另请参阅daemon(3)
。
如果您正在使用systemd-run
的Linux发行版进行SSH连接,则可以使用systemd-run
在后台启动进程(systemd的术语“暂时服务”)。 例如,假设你想在后台ping一些东西:
systemd-run --unit=pinger ping 10.8.178.3
systemd通过nohup
运行一个进程所带来的好处是,systemd将跟踪进程和它的子进程,保存日志,记住退出代码,并允许你干净地杀死进程和所有的孩子。 例子:
查看输出的状态和最后一行:
systemctl status pinger
流输出:
journalctl -xfu pinger
杀:
systemctl kill pinger