[linux] 定時任務crontab

測試網站: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

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章