我是 Linux 新手,我可能会问一个相当基本的问题。如何在 Linux 上运行连续程序?
基本上,我有一个程序可以不断检查网站上的内容。该计划将执行几天。我在希望运行此程序的计算机上没有管理权限,也没有对此计算机的独占访问权限,这意味着其他用户可以物理登录。此外,除非发生不可预见的灾难,否则计算机将在我的程序的整个运行期间一直运行。
我知道我可以通过 SSH 连接到机器并运行该程序。然而,这是不可取的,因为我需要第二台机器来完成它(这违背了我正在做的事情的目的),更不用说超时问题了。
有没有一种方法可以让我在计算机上远程运行我的程序,而无需在启动后建立某种连接?
答案1
如果它是需要定期发生的事情,请使用cron
(例如,您需要每小时检查一次网站,或每天一次,或比该频率更高或更低,但仍然不是任意定义的)。
但是...您可能想稍后运行命令而不是现在,为此,您想要使用at
守护进程,它允许您在稍后的日期/时间运行一次命令(比如现在是 5 点,您想回家,但最好有 4 小时的进程)半夜运行,并且不会再次发生)。
我会说nohup
,已经提到过,如果您想立即运行它但不想稍后重新连接到该会话来检查它,screen
请使用它。 /用于稍后检查。tmux
nohup
screen
tmux
答案2
你需要做两件事:
- 使用 运行命令
nohup
。这会阻止远程计算机在您断开连接时终止命令 &
通过附加.在后台运行该命令。这并不是绝对必要的,但会让您返回到 shell,而不是阻塞命令,以便您可以正常断开连接或执行其他操作
所以对于命令command
:
nohup command &