我正在打开远程服务器的ssh会话,并在远程计算机上执行更大的(大约1000行)bash脚本。它涉及几个CPU密集型呼叫,每个呼叫最多运行三分钟。要跟踪脚本的进度,它会回显放置在脚本中多个点的消息。
通常,脚本运行顺畅。脚本不时运行(远程机器上的结果文件是正确的)但终止输出。 Ctrl-C没有帮助,没有提示,只是一个冻结的会话。单独会话中的top显示脚本的正常执行。
我的问题:如何使会话保持活力?
本地机器:
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.9
BuildVersion: 13A603
远程机器:
$ lsb_release -d
Description: Ubuntu 12.04.3 LTS
答案 0 :(得分:2)
就我个人而言,我建议在远程终端上使用screen
或tmux
。
即使您的本地SSH会话超时,这些应用也将允许远程进程继续。
答案 1 :(得分:2)
在远程计算机上启动一个屏幕并从中运行命令:
screen -S largeScript
然后
./yourLargeScript.sh
每当您的ssh
会话被冻结时,您都可以使用~.
如果再次ssh
,您可以通过以下方式取回屏幕:
screen -dr largeScript
答案 2 :(得分:1)
让它记录到一个文件(可能通过syslog
),并tail
该文件从哪里方便。这也有助于分离脚本,以便您可以从cron作业等无头运行脚本。此外,如果日志文件对其他人具有读取权限,他们也可以监视它。