我自己在Linux Mint上工作,使用root ssh访问远程Ubuntu VPS服务器。 我有服务器上的脚本进行长时间的数据处理 (小时或任何天的处理)。
现在我可以在我的机器上打开控制台,通过ssh连接到VPS并运行脚本 – 我可以在控制台中实时查看脚本正在做什么(处理了多less数据,还剩多less等等)这工作。
我怎么能做类似的,但没有我的本地机器的依赖关系 :
我认为这个screen对你来说是一个理想的解决scheme。 它是如何工作的 – 你连接到你的VPS,键入screen ,然后运行脚本并从shell分离(或者closuresterminal窗口,或者按ctrl+a然后按ctrl+d )
您的脚本(和shell)将继续在后台运行。 您可以通过inputscreen -ls来查看screen编号。 要恢复会话并查看脚本的进度/结果,请使用screen -ls获取屏幕编号,然后使用screen -r <screen number>连接到screen -r <screen number> 。 就是这样。 恢复后,可以再次以相同的方式分离。
您可以使用apt-get install screen于Debian的发行版的apt-get install screen以及基于RedHat的发行版的yum install screen安装屏幕在VPS上apt-get install screen 。
您也可以在后台运行脚本,并在需要时访问输出。 我的testing脚本将会非常简单:
root@jump:~# cat test.sh #!/bin/bash for ((i=0; i<=99999; i+=1)); do echo $i sleep 1 done
它只是打印一个数字秒。 要在后台运行它,请在以下位置使用:
root@jump:~# at now warning: commands will be executed using /bin/sh at> /root/test.sh at> <EOT>
注意:EOT是用Control&D完成的。 之后,让脚本运行,断开与服务器的连接。 当你想看到输出时,连接并find进程的PID:
root@jump:~# ps aux | grep test root 6312 0.0 2.1 18048 2836 ? SN 13:08 0:00 /bin/bash /root/test.sh
并获得输出。 将6312replace为进程的PID:
root@jump:~# tail -f /proc/6312/fd/1 137 138 139 140 141 ^C
fd / 1 = stdout,fd / 2 = stderr