我有一个通过我的 Ubuntu 服务器上的终端窗口 (Win10 putty.exe) 运行一整夜的 Perl 脚本。与许多家庭网络一样,我偶尔会失去互联网连接,这会破坏我的连接和脚本。
通过 cron 运行另一个 Perl 脚本(检查我的脚本是否正在运行),我可以重新启动 Perl 脚本。
但是它在没有窗口的情况下运行。
有没有一种方法可以让我在进入 Ubuntu 时打开一个终端窗口,显示正在运行的 Perl 脚本的输出?
谢谢你。
我有一个通过我的 Ubuntu 服务器上的终端窗口 (Win10 putty.exe) 运行一整夜的 Perl 脚本。与许多家庭网络一样,我偶尔会失去互联网连接,这会破坏我的连接和脚本。
通过 cron 运行另一个 Perl 脚本(检查我的脚本是否正在运行),我可以重新启动 Perl 脚本。
但是它在没有窗口的情况下运行。
有没有一种方法可以让我在进入 Ubuntu 时打开一个终端窗口,显示正在运行的 Perl 脚本的输出?
谢谢你。
您可以将 cron 脚本的输出重定向到文件 >> /path/filename.log
或者使用 screen 启动脚本: screen -Sdm perl /path/to/script.pl
在 中运行脚本
screen
,即。在你启动脚本之前,输入screen
(如果你得到“command not found”,你需要先安装screen
包)。它只会显示系统提示,就好像什么都没有改变一样,但是从现在起,您就有了一个虚拟终端,可以在失去连接的情况下幸存下来。即使您断开连接,脚本也会继续在该终端中运行。当您失去连接时,在重新连接到您的服务器后,键入
screen -ls
. 这将列出您的screen
会话。输出可能如下所示:(“myserver”和“myuser”将分别是您的实际主机名和用户名)。如果您看到如上的“已分离”,则表示服务器正确地注意到连接丢失并且会话已正确断开。在这种情况下,您可以使用以下命令重新附加到该会话:
当然,数字 19923 是
screen
您从screen -ls
命令中获得的进程的 PID。但是,可能是服务器没有注意到断开连接,您的
screen
会话仍然“附加”到不再存在的会话。在这种情况下,您需要先断开screen
会话,然后再重新连接,您可以通过另外指定-d
参数来执行此操作:这是运行程序的常用且事实上的标准解决方案,应防止意外关闭终端会话并继续运行,即使发生这种情况。
当您的脚本完成并返回操作系统时,
exit
在操作系统提示符下键入的第一个命令将终止screen
并让您返回到常规终端会话(您将看到一条消息“屏幕正在终止”)。第二个exit
命令将使您注销。