vfc*_*sts 15 ssh remote background
我需要远程运行 SSH 命令,并在本地显示输出。但是如果连接中断,我希望命令仍然运行。
我不是在谈论登录和执行,而是在做 ssh user@remotehost 'commands && command etc'
即使连接中断,我如何确保命令运行?
Fal*_*mot 27
最好的方法是使用 screen,即使连接中断,它也能以持久的方式保持会话打开(如果你想再次开始使用它,你可以执行 ascreen -r并且它会再次打开它)。
为您想要运行的任何命令添加前缀screen(例如ssh -t user@host screen command)应该可以完成这项工作。
如果您希望它在 shell 的后台运行,您还可以将 an 附加&到整个内容。
正如前面提到的,screen可以做所有的把戏。但不仅仅是你需要的。我已经使用 screen 多年了,现在每次登录系统时都会使用它。尝试使用这样的配置安装screen和创建~/.screenrc:
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 "
Run Code Online (Sandbox Code Playgroud)
然后运行screen -Rd vcf。这是最好的调用 screen. 您将重新连接到先前创建的名为 vcf* 的会话(如果有歧义则警告),或者,如果会话尚未打开,它将被创建。CTRL+A是一个可以做所有事情的元键。CTRL+A C( CTRL+ A, then C) 在会话中创建新窗口(屏幕)。CTRL+A SPACE将焦点移动到一轮中的下一个窗口。CTRL+A D分离当前会话,保持连接之间的所有窗口正常运行。如果您启动了一些 looooong 任务,您可以从屏幕上分离并稍后重新附加到它以查看会发生什么。如果您的 ssh 会话丢失,也会发生同样的情况 - 所有打开的窗口和启动的所有任务的屏幕都保持活动状态。
如果您想关闭屏幕内的某个窗口 - 只需exit从其中的 shell 即可。如果您想关闭所有窗口中的所有外壳程序/任务并退出屏幕 - 只需按CTRL+A CTRL+\并在询问时按“Y”。
对于所有其他人,请参阅 man screen。
| 归档时间: |
|
| 查看次数: |
5947 次 |
| 最近记录: |