怎樣在 CentOS 設置定時任務 crontab

最近更新時間 2020-11-24 17:46:45

cron是一款類Unix的操作系統下的基於時間的任務管理系統。用户們可以通過 cron 在固定時間、日期、間隔下,運行定期任務(可以是命令和腳本)。cron常用於運維和管理。cron該詞來源於希臘語chronos(χρόνος),原意是時間。

定時任務格式

定時任務格式如下所示,最小時間單位為1分鐘,可以使用月份(jan,feb,mar,apr ...)、星期(sun,mon,tue,wed,thu,fri,sat)的英文簡稱表示。

# Example of job definition:
# .---------------- 分鐘 (0 - 59)
# |  .------------- 小時 (0 - 23)
# |  |  .---------- 日期 (1 - 31)
# |  |  |  .------- 月份 (1 - 12)
# |  |  |  |  .---- 星期 (0 - 6) (0表示週日)
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

可以使用下面的命令編輯和查看定時任務。

編輯定時任務
vi /etc/crontab
編輯定時任務
crontab -e
查看定時任務
crontab -l
刪除定時任務
crontab -r

常用案例

每分鐘執行一次 echo 命令。

* * * * * echo hello world

每分5分鐘執行一次備份命令,使用 nohup,不打印日誌。

*/5 * * * * nohup backup > /dev/null 2>&1 &

* 和 0 表示不同的意義,連接符 / 表示時間間隔,如下所示:

表示10點到11點,每分鐘執行一次
* 10 * * * echo hello world
表示10:00執行一次命令
0 10 * * * echo hello world
表示10點到11點,每5分鐘執行一次
*/5 10 * * * echo hello world

每天6點10分執行一次備份。

10 6 * * * backup

每月1號和15號全量備份。

0 0 1,15 * * backup_all

每天 6-10 點的第10、15、30分鐘執行 Docker 中的PHP腳本。

10,15,30 6-10 * * * docker exec `docker ps | grep '9000/tcp' |awk '{print $1}'` php /path/index.php > /dev/null 2>&1

注意事項

  • 可以通過 user 參數指定執行的用户。
  • 命令中最好使用絕對路徑。
  • 可在 /var/log/cron 中查看執行日誌。
rss_feed