启动时运行无限循环

启动时运行无限循环

我想在启动时运行一个命令,每 10 分钟 ping 一次某个地址并将结果写入文件。我现在已经弄清楚如何进行 ping 和文件写入以及 10 分钟的间隔:

while true; do my-command-here; sleep 600; done

我的问题是,我可以把它放进去/etc/init.d/rc.local还是应该把它放进去/etc/rc.local或完全放在其他地方?我特别担心,因为它是一个无限循环,所以我不确定是否可以将其放入这些启动脚本之一中。

一些帮助将不胜感激。我使用的是 Ubuntu 12.04.5

答案1

这并不是真正的无限循环;而是无限循环。这是一项需要每十分钟运行一次的任务。因此,任务可以进入任务调度程序cron

运行命令crontab -e并将这一行添加到文件底部:

*/10 * * * * /path/to/my-command-here

确保它my-command-here是可执行脚本 ( chmod u+x my-command-here),并且其第一行以#!和 脚本解释器的名称开头(通常为#!/bin/bash)。

模式中的每个条目*/10 * * * *映射到分钟 (0-59)、小时 (0-23)、日 (1-31)、月 (1-12) 和星期几 (0-6,其中 0=星期日) 。

答案2

我可以把它放在 /etc/init.d/rc.local 中还是应该把它放在 /etc/rc.local 或其他地方?

如果将其放入rc.local,则应将其放入子 shell 中并将其分叉到后台。最后一行rc.local应该是exit 0,并且它不会阻塞,即任何前台活动都应该简短。

(while true
    do my-command-here
    sleep 600
done) &

( )其放入子 shell 中并将&其置于后台。

如果您遇到问题,检查这个问答关于调试rc.local

相关内容