在启动时运行无限循环

Dew*_*oel 3 startup ping

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

while true; do my-command-here; sleep 600; done
Run Code Online (Sandbox Code Playgroud)

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

一些帮助将不胜感激。我正在使用 Ubuntu 12.04.5

roa*_*ima 8

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

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

*/10 * * * * /path/to/my-command-here
Run Code Online (Sandbox Code Playgroud)

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

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


gol*_*cks 6

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

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

(while true
    do my-command-here
    sleep 600
done) &
Run Code Online (Sandbox Code Playgroud)

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

如果您遇到问题,请查看此有关调试的问答rc.local