Shell 如何将cron作业设置为每5秒运行一次url

Shell 如何将cron作业设置为每5秒运行一次url,shell,cron,Shell,Cron,我需要每5秒获取一个url。我读了很多关于它的文章,但我没有找到答案 当我阅读时,我必须编写一个shell脚本,在该shell脚本中,我需要编写some命令,并使用sleep5从crob作业调用该脚本 不幸的是,我不知道如何制作这个shell脚本,也不知道要在里面写些什么 我需要建议编写shell脚本,以及如何从crontab调用它。下面是我写的crontab: * * * * * curl http://mysite/key 开始使用如下所示的BASH脚本进行试验: #!/bin/bash

我需要每5秒获取一个url。我读了很多关于它的文章,但我没有找到答案

当我阅读时,我必须编写一个shell脚本,在该shell脚本中,我需要编写some命令,并使用sleep5从crob作业调用该脚本

不幸的是,我不知道如何制作这个shell脚本,也不知道要在里面写些什么

我需要建议编写shell脚本,以及如何从crontab调用它。下面是我写的crontab:

* * * * * curl http://mysite/key

开始使用如下所示的BASH脚本进行试验:

#!/bin/bash
while true; do <here go your commands>; sleep 5; done
#/bin/bash
虽然真实;做睡眠5;完成
然后,使用
crontab-e
界面将cron作业设置为仅启动一次

警告:正如和的评论中所提到的,如果使用无限循环,您应该非常小心,避免从crontab重新启动您的进程。学习以避免任何陷阱。

另请参见

您可以每分钟运行一次cron作业,然后让该脚本(大约)执行一分钟,例如

for i in $(seq 11); do curl http://mysite/key; sleep 5; done
(这是
bash
)在本例中,我使用了11次迭代

或者,此基于时间的解决方案:

t=$(date +"%s"); t=$(($t+60)); while [[ $(date +"%s") -lt $t ]]; do curl http://mysite/key; sleep 5; done

请更正您的输入错误和拼写,然后将您已经尝试过的内容格式化为代码,这将使您的文章更易于阅读。您可以从这里尝试了解cron:如果从cronjob运行此脚本,问题是每分钟都会实例化一个脚本实例,并且每个脚本都将永远运行(
while true
…)以大量同时运行的脚本结束。还是我错了?@Alexander:如果只有一个cron作业条目添加到
crontab-e
以启动bash脚本,我认为脚本没有机会启动多次(即每分钟一次)。实际上,唯一的风险是,如果第二天没有手动终止bash进程,cronjob将生成它的另一个实例(如果cron计划设置为每天运行1次)。您不能假设下一个cronjob将终止前一个实例。这里和讨论这个问题时都有很多问题,通常可以使用某种锁文件来解决。但从这个意义上讲,目前的解决方案并不可靠。有关可以使用nohup的启动脚本,请参阅。这允许您关闭控制台而不终止脚本。但是,如果您需要脚本一直运行,那么如果脚本失败或者有人杀死它,您仍然需要其他守护进程来重新启动脚本。为此,您可以使用systemd或demonize工具,具体取决于您使用的发行版。@fedorqui:谢谢您的评论。事实上,如果启动一个包含有限循环的脚本,OP应该非常小心,避免多次重新启动流程。如果您允许,我会在答案中发布您的链接。