假設今天在架設一台伺服器運作使用時,但很怕資料庫或程式被誤刪等狀況,這時候就需要做好系統備份,排程就可以在特定時間內做備份的動作,但這類的動作基本上會在夜間時段作執行。

參數

  • -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