$ 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: