假設今天在架設一台伺服器運作使用時,但很怕資料庫或程式被誤刪等狀況,這時候就需要做好系統備份,排程就可以在特定時間內做備份的動作,但這類的動作基本上會在夜間時段作執行。
參數
-u
編輯(user)其他使用者的排程內容。只有 root
權限才可以使用。
-l
列出(list)排程。
-e
編輯(edit)排程。
-r
刪除(remove)排程。
檢視排程
檢視當前使用者正在執行的排程
每一個使用者用戶,都有自己的排程管理,所以要查看自己定義的排程,就可以透過以下指令。
1
| [root@localhost ~]# crontab -l
|
系統使用者檢視特定使用者排程
1
| [root@localhost ~]# crontab -u [使用者帳戶] -l
|
編輯排程
編輯當前使用者的排程
進入排程內容,編輯跟 vi
的方式差不多。
1
| [root@localhost ~]# crontab -e
|
系統管理者編輯特定使用者排程
編輯特定使用者排程內容,跟檢視特定使用者排程一樣。
1
| [root@localhost ~]# crontab -u [使用者帳戶] -e
|
刪除排程
刪除當前使用者的所有排程
1
| [root@localhost ~]# crontab -r
|
系統管理者刪除特定使用者所有排程
1
| [root@localhost ~]# crontab -u [使用者帳戶] -r
|
排程服務讀取設定檔
排程服務會讀取排程的設定檔 /etc/crontab
,檔案內容分為「環境設定」與「排程工作」。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| [root@localhost ~]# cat /etc/crontab
# 環境設定 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root
# 排程工作 # 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
|
環境設定
依照CentOS7 的環境設定,預設都會以 bash
的 shell。
MAILTO 則是會將執行排程工作的輸出訊息以郵件方式寄給使用者。
排程時間
欄位編號 |
說明 |
可設定值 |
1 |
分鐘 |
0分 到 59分 |
2 |
小時 |
凌晨 0時 到 23時 |
3 |
日期 |
每月1日 到 31日 |
4 |
月份 |
1月 到 12月,可用英文簡稱,例如:Jan、Feb… |
5 |
星期 |
0 到 7,0,7 都代表星期日,可用英文簡稱,例如:Mon |
6 |
使用者帳號 |
依照哪個使用設定的排程去執行該排程 |
7 |
排程工作指令 |
自行定義排程指令 |
特殊符號
特殊符號 |
說明 |
* |
任意時間 |
, |
分隔不同時間點 |
- |
時間區間 |
/n |
每隔n單位執行 |
特殊排程時間
設定值 |
排程時程 |
備註 |
@reboot |
每次重新開機就執行 |
|
@yearly |
每年1日執行 |
0 0 1 1 * |
@annually |
同上 |
0 0 1 1 * |
@monthly |
每月一號零時零分執行 |
0 0 1 * * |
@weekly |
每週星期天零時零分執行 |
0 0 * * 0 |
@daily |
每天零時零分執行 |
0 0 * * * |
@midnight |
同上 |
0 0 * * * |
@hourly |
每小時零分執行 |
0 * * * * |
自行定義排程時間
設定值 |
排程時程 |
備註 |
01 * * * * |
每小時的第1分鐘執行 |
|
00 04 * * * |
每天凌晨04點00執行 |
|
00 01 * * 1 |
每個禮拜星期一的凌晨01點00執行 |
|
00 01 * * Mon |
同上 |
|
30 08 15 * * |
每個月的15日08點30分執行 |
|
01 * 4 May * |
每年五月4日每小時的第一分鐘執行 |
|
*/10 * * * * |
每10分鐘執行一次 |
|
00 10-15 * * * |
每天從早上10點到下午15點,整點執行一次 |
|
00,30 * * * * |
每小時的00分及30分各執行一次 |
|
範例操作
每天凌晨1點、下午13點執行一次備份
1
| 0 1,13 * * * /home/web/crontab/backup.sh
|
每30分鐘執行一次。
1
| */30 * * * * /home/web/crontab/calculation.sh
|
使用特殊排程時間,每天0時0分進行備份
1
| @daily /home/web/crontab/backup.sh
|
標籤: w3HexSchool
LINUX