測試網站:https://crontab.guru/(可以看到設定好後的各個執行時間點,大愛)
相關文件:
- /var/spool/cron/ 目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名
- /etc/crontab 這個文件負責調度各種管理和維護任務。
- /etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。
- 我們還可以把腳本放在/etc/cron.hourly、/etc/cron.daily、/etc/cron.weekly、/etc/cron.monthly目錄中,讓它每小時/天/星期、月執行一次。
- 日誌:/var/log/cron
基本的語法:
* * * * * command
minute hour day month week command
分 時 天 月 星期 命令
特殊字符:
星號(*):代表所有可能的值,例如month字段如果是星號,則表示在滿足其它字段的制約條件後每月都執行該命令操作。
逗號(,):可以用逗號隔開的值指定一個列表範圍,例如,“1,2,5,7,8,9”。
中槓(-):可以用整數之間的中槓表示一個整數範圍,例如“2-6”表示“2,3,4,5,6”。
正斜線(/):可以用正斜線指定時間的間隔頻率,例如“0-23/2”表示每兩小時執行一次。同時正斜線可以和星號一起使用,例如*/10,如果用在minute字段,表示每十分鐘執行一次。
例:
分 時 天 月 星期 命令
* * * * * 每分鐘執行一次
3 * * * * 每小時的第3分鐘執行一次
*/5 * * * * 每5分鐘執行一次 (會在5-10-15…執行,而不是剛創建好就執行)
1 */2 * * * 每隔2小時執行一次,24:01 2:01 4:01 ...執行
0 17 */2 * * 每隔2天執行一次,1號17點,3號17點,5號17點 ...執行
注:
* */1 * * * 並不是每小時執行一次,而是每分鐘執行一次;
* */2 * * * 是開啓定時任務後的2小時0、1…59分鐘,4小時0、1…59分鐘,6小時…執行一次
問題:使用crontab -e更新後,第一次執行時間會不會改變?
任務時間格式定好後什麼時候執行就已經定死了,所以也就和更不更新/var/spool/cron/root文件沒有關係了
運行腳本
command可以是一個腳本sh文件
sh文件包含了一系列操作
如:每隔1小時執行save_user.sh,並且日誌導出到crontab_save_user.log文件中
0 */1 * * * /home/justaman/python/crontab_task/save_user.sh >> /home/justaman/python/log/crontab_save_user.log 2>&1
save_user.sh如下:
#!/bin/bash
echo "----------開始----------"# 啓動虛擬環境
source /home/justaman/python/python_virtual/rss/bin/activate# 切換到程序運行目錄
cd /home/justaman/python/code/rss/save_data/cnblog/get_user# 執行程序
/home/justaman/python/python_virtual/rss/bin/python3 user.py
注意:如果是用python腳本寫入定時任務時,任務字符串後面必須加換行符"\n",否則不會執行
編輯/查看定時任務
crontab –e 編輯定時任務,包含了各個定時任務
crontab –l 列出所有的定時任務
crontab –r 刪除當前用戶的定時任務
crontab服務啓動與關閉
/etc/init.d/crond start
/etc/init.d/crond stop
/etc/init.d/crond restart
參照:https://www.cnblogs.com/erbing/p/10019172.html