远程连续运行作业

远程连续运行作业

我是 Linux 新手,我可能会问一个相当基本的问题。如何在 Linux 上运行连续程序?

基本上,我有一个程序可以不断检查网站上的内容。该计划将执行几天。我在希望运行此程序的计算机上没有管理权限,也没有对此计算机的独占访问权限,这意味着其他用户可以物理登录。此外,除非发生不可预见的灾难,否则计算机将在我的程序的整个运行期间一直运行。

我知道我可以通过 SSH 连接到机器并运行该程序。然而,这是不可取的,因为我需要第二台机器来完成它(这违背了我正在做的事情的目的),更不用说超时问题了。

有没有一种方法可以让我在计算机上远程运行我的程序,而无需在启动后建立某种连接?

答案1

如果它是需要定期发生的事情,请使用cron(例如,您需要每小时检查一次网站,或每天一次,或比该频率更高或更低,但仍然不是任意定义的)。

但是...您可能想稍后运行命令而不是现在,为此,您想要使用at守护进程,它允许您在稍后的日期/时间运行一次命令(比如现在是 5 点,您想回家,但最好有 4 小时的进程)半夜运行,并且不会再次发生)。

我会说nohup,已经提到过,如果您想立即运行它但不想稍后重新连接到该会话来检查它,screen请使用它。 /用于稍后检查。tmuxnohupscreentmux

答案2

你需要做两件事:

  1. 使用 运行命令nohup。这会阻止远程计算机在您断开连接时终止命令
  2. &通过附加.在后台运行该命令。这并不是绝对必要的,但会让您返回到 shell,而不是阻塞命令,以便您可以正常断开连接或执行其他操作

所以对于命令command

nohup command &

答案3

nohup如果您可以运行程序而无需与它交互,那么这绝对是正确的方法:例如,如果它将所有输出和错误消息写入您稍后可以访问的文件中。检查nohup.out文件以查看程序在运行时留下的任何错误消息(感谢您的更正,迈克尔!)

如果您需要在程序运行时与其交互,GNU 屏幕可能是更好的方法。它可以让您创建一个虚拟终端,即使在您注销后,只要没有人关闭计算机,该终端以及您在其中启动的任何程序仍然保持运行。这是一个教程我在使用中发现。

相关内容