Linux 定时任务crontab实现秒级定时以及@reboot的一些问题
Linux自带的crontab定时任务服务还是比较强大的,通过该服务结合脚本可以实现很多功能,实乃运维工作的一大神器。
首先明确一点,定时任务自然需要有任务,任务分为脚本任务和系统自带命令。
如果有这样一个脚本任务,仅仅需要开机后运行一次,那么,crontab结合@reboot是一个不错的选项。如果是系统自带命令任务,@reboot不一定会执行,由于系统开机初始化,很有可能系统自带命令运行环境并不满足,但crontab已经开始执行@reboot,从而造成命令运行失败。
@reboot的使用方法如下:
crontab -e -u root,这时候打开了一个文本编辑窗口,输入如下内容
@reboot /bin/bash/脚本路径和脚本名称
保存后关闭,重启机器会自动执行一次脚本。
重启后,会在/root 目录下生成一个 名为 hello.txt 的文件。建议要执行的任务最好是脚本,本例使用的是touch命令,可能别的命令就不一定会成功了。
因此,如果有一些服务没有写进systemd守护的自启进程,可以使用此方法来进行代替,比如,weblogic服务只编写有启动脚本,这个时候将该服务的启动脚本利用@reboot 就可以做成自启服务了。
秒级定时任务的实现是利用sleep 刷新时间后,会执行后续命令的方式来实现。详情见下面。
*/1 * * * * /bin/date >>/tmp/date.txt */1 * * * * sleep 5 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 10 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 15 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 20 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 25 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 30 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 35 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 40 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 45 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 50 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 55 ; /bin/date >>/tmp/date.txt */1 * * * * sleep 25 ; /bin/date >>/tmp/date.txt */1 * * * * /bin/date >>/tmp/date.txt */1 * * * * sleep 10 ; /bin/date >>/root/date.txt */1 * * * * sleep 20 ; /bin/date >>/root/date.txt */1 * * * * sleep 30 ; /bin/date >>/root/date.txt */1 * * * * sleep 40 ; /bin/date >>/root/date.txt */1 * * * * sleep 50 ; /bin/date >>/root/date.txt #两个任务,第一个任务是每隔五秒将当前时间写入 /tmp/date.txt,第二个任务是每隔10秒将当前时间写入 #/root/date.txt文件,tail -f /tmp/date.txt 可以实时的看到任务的执行。 #如果是别的任务,将命令根据实际情况替换即可。