什么是在后台运行远程SSH命令的最佳方式,但仍然显示?

我需要远程运行SSH命令,输出显示在本地。 但是如果连接中断,我想命令仍然运行。

我不是那么谈论login和执行,但做了SSH用户@远程主机'命令&&命令等'

即使连接中断,我如何确保命令运行?

最好的方法是使用屏幕,即使连接中断,会话仍以持久的方式打开会话(如果要再次开始使用screen -r ,则可以执行screen -r并再次打开)。

screen任何要运行的命令(例如, ssh -t user@host screen command )都可以完成这项工作。

如果你想让它在shell的后台运行,你也可以把一个&附加到整个事情上。

你正在寻找一个持续的会话,你可以恢复,或者只是为了阻止断开连接,杀死exech?

对于前者,使用screen ,对于后者, nohup

如前所述, screen可以做所有的伎俩。 但不仅仅是你需要的东西。 我已经使用了多年的屏幕,现在每次login系统时都使用它。 尝试安装screen并创build~/.screenrc这样的configuration:

 sessionname vcflists startup_message off deflogin off vbell off msgminwait 0 msgwait 10 log off backtick 1 0 0 hostname caption splitonly "%?%F%{= yk}%:%{= Kk}%? %n %t%=" hardstatus alwayslastline "%{= rY} %1` %{= kg} %0c %{= bY} %-w%{= Yk} %n %t %{-}%+w %=%{g}%l " 

然后运行screen -Rd vcf 。 这是最好的屏幕调用。 您将重新连接到名称为vcf *的以前创build的会话(如果不明确,则会被警告),或者如果会话尚未打开,则会创build会话。 CTRL + A是一个可以做所有事情的元键。 CTRL+ACCTRL + A ,然后C )在会话内创build新的窗口(屏幕)。 CTRL+A SPACE将焦点移到下一个窗口。 CTRL+AD分离当前会话,保持连接之间的所有窗口function。 如果您启动了一些looooong任务,您可以从屏幕上分离并稍后重新附加以查看会发生什么情况。 如果你的SSH会话丢失,也会发生同样的情况 – 在所有打开的窗口和所有启动的任务中,屏幕保持活动。

如果你想closures屏幕内的某个窗口,只需从shell中exit 。 如果要closures所有窗口中的所有shell /任务并退出屏幕 – 只需按CTRL+A CTRL+\并在询问时按“Y”。

其余的请看男人的画面。

我已经看到了一个可靠的ssh“like”连接的替代scheme:

http://mosh.mit.edu/

我通常会这样做:

 nohup mycommand & tail -f nohup.out