Crontab 的使用
$ cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
根据输出可知,该命令分三部分,
身份期中以什么身份运行脚本,可通过 $ sudo crontab -u user001 -e
上述命令将以 也可以直接编辑 1 1 * * * user001 user001 /data/home/user001/test.sh
job 的管理
循环周期5 个
所以如下格式:
表示 “12 月 11 日的 5:30” 打印 “hello”。 特殊符号
|
Entry | Description | Equivalent to |
---|---|---|
@yearly (or @annually) |
每年一月午夜 | 0 0 1 1 * |
@monthly |
每月首日午夜 | 0 0 1 * * |
@weekly |
每周天午夜 | 0 0 * * 0 |
@daily (or @midnight) |
每天午夜 | 0 0 * * * |
@hourly |
每小时 | 0 * * * * |
@reboot |
重启时 | N/A |
示例:重启后启动 redis
@reboot /usr/local/bin/redis-server /path/to/redis.conf
一些示例
每分钟打印日期到指定文件,
-
crontab -e
打开 job 编辑界面 - 输入
*/1 * * * * date >> /data/home/wayongliu/foo.txt
然后:wq
保存退出 -
tail -f
/data/home/wayongliu/foo.txt` 查看结果
实现每隔多少秒执行
因为能设置的最小时间单位为分,需要设置每隔多少秒执行时,就需要变通来实现。
借助 sleep,可不用 crontab, 比如每 5 秒:
#!/bin/bash
while true
do
/home/user/myscript.sh
sleep 5
done
也可以 sleep 与 crontab 结合来用,考虑到每 5 秒,一分钟内即执行 12 次,可以设置 12 个 job:
* * * * * /home/user/myscript.sh
* * * * * sleep 5; /home/user/myscript.sh
* * * * * sleep 10; /home/user/myscript.sh
* * * * * sleep 15; /home/user/myscript.sh
* * * * * sleep 20; /home/user/myscript.sh
* * * * * sleep 25; /home/user/myscript.sh
* * * * * sleep 30; /home/user/myscript.sh
* * * * * sleep 35; /home/user/myscript.sh
* * * * * sleep 40; /home/user/myscript.sh
* * * * * sleep 45; /home/user/myscript.sh
* * * * * sleep 50; /home/user/myscript.sh
* * * * * sleep 55; /home/user/myscript.sh
其中第一个任务会在每分钟开始时执行,
第二个也是每分钟开始执行,不过会 sleep 5s,所以实际是每分钟每 5s 的时候执行,
后面的任务类似,从而达到了需要的效果。
相关资源
The text was updated successfully, but these errors were encountered: