我自己在 Linux Mint 上工作,拥有具有 root ssh 访问权限的远程 Ubuntu VPS 服务器。我在服务器上有脚本,可以进行长时间的数据处理(数小时或数天的处理)。
现在我可以在我的机器上打开控制台,通过 ssh 连接到 VPS 并运行脚本 - 我可以在控制台中实时查看脚本在做什么(处理了多少数据,还剩多少等等在我的控制台屏幕上定期刷新) -这行得通。
我怎样才能做类似的事情,但不依赖我的本地机器:
- 连接到服务器并运行脚本
- 断开连接并离开服务器以完成他的长时间处理工作,而我可以重新启动本地计算机或将其关闭而不会影响启动的服务器脚本执行。
- 有可能稍后再次连接并查看进程的当前状态(它实时向我显示的相同数据)而不会中断进程。
我认为这
screen
对您来说是一个理想的解决方案。它是如何工作的 - 你连接到你的 VPS,输入,然后screen
运行你的脚本并从 shell 中分离(关闭你的终端窗口,或者按下)ctrl+a
ctrl+d
您的脚本(和 shell)将继续在后台运行。
screen
您可以通过键入来查看号码screen -ls
。要恢复会话并查看脚本的进度/结果,请使用 获取屏幕编号,screen -ls
然后使用screen -r <screen number>
. 就是这样。恢复后,您可以再次以相同方式分离。您可以在您的 VPS 上
apt-get install screen
为基于 Debian 的发行版和yum install screen
基于 RedHat 的发行版安装 screen。您还可以在后台运行脚本并在需要时访问输出。我的测试脚本将相当简单:
它每秒只打印一个数字。要在后台运行它,请在以下位置使用:
注意:EOT 是通过 Control&D 完成的。之后,让脚本运行,断开与服务器的连接。当你想看到输出时,连接并找到进程的PID:
并获得输出。将 6312 替换为您的进程的 PID:
fd/1 = 标准输出,fd/2 = 标准错误