我想在启动时运行一个命令,每 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
。