![防止远程计算机上正在运行的命令在断开连接时终止](https://linux22.com/image/1438883/%E9%98%B2%E6%AD%A2%E8%BF%9C%E7%A8%8B%E8%AE%A1%E7%AE%97%E6%9C%BA%E4%B8%8A%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%E7%9A%84%E5%91%BD%E4%BB%A4%E5%9C%A8%E6%96%AD%E5%BC%80%E8%BF%9E%E6%8E%A5%E6%97%B6%E7%BB%88%E6%AD%A2.png)
假设我通过 ssh 连接到一台远程机器并运行这个ping www.google.com
,当我断开连接时,它就会停止。
有什么方法可以让我登录、运行命令,然后注销/断开连接但仍保持命令运行?
答案1
通常的方法是使用
nohup command >log 2>error-log &
您必须将进程置于后台 (&),并确保它不会在尝试将消息写入终端时挂起。nohup 确保它在父进程(终端会话)关闭时不会收到信号(如 SIGHUP)。
顺便说一句,如果你读过 ping 的手册页,你就会发现让它以那种方式运行是一个坏主意。
This program is intended for use in network testing, measurement and
management. Because of the load it can impose on the network, it is
unwise to use ping during normal operations or from automated scripts.
答案2
screen
并 tmux
可以维持断开的会话。
它们可以在任何接受 SSH 连接的东西上运行(您没有说是什么操作系统),但它们是可选包,因此您可能必须安装它们。