1. cron定時任務
linux 中用於定時執行某些特定能操作, 如定時備份文件, 定時更新/刪除文件, 都會使用到定時任務.
- cron 是服務命令 crond 是用來執行執行服務的守護進程, crond 每分鐘會檢查是否有需要執行的任務.
- crontab 則是crond 定時檢查的文件, 所有的定時任務都是寫在了 crontab 文件中,
2. crontab 文件格式
# 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
---------------------
# Example of job definition:
# .---------------- 分鐘, 設置每小時的第N分鐘
# | .------------- 第 N 小時
# | | .---------- 第 N 天
# | | | .------- 第 N 月
# | | | | .---- 每週的 第N天
# | | | | |
# * * * * * [用戶名] 需要執行的命令
## 上面的時間中
# *: 表示所有, 例如 * 1 * * * 表示每天的第一個小時 的每一分鐘
# ,: 分割可以指定多個如 1 1,2,3,4 * * * : 表示每天的1,2,3,4 小時的第一分鐘執行
# -: 指定範圍, 如: 1 1 * * 1-5 : 表示每週1-5 的1點1分執行
# /: 指定間隔, 如 0 0 /5 * * : 表示每個5天 的零點執行1次
3. crontab 命令操作
-
命令格式
crontab [-u user] file
-
常用選項
-e: 編輯有個用戶的crontab , 如果不指定crontab 則編輯當前用戶的 crontab
-l: 顯示某個用戶的 crontab
-r: 刪除某個用戶的 crontab , 用戶的crontab 存儲在 /var/spool/cron 目錄中, 建議禁止使用該選項, 而是使用 crontab -e 之後從內部編輯刪除.
-i: 刪除時會讓用戶確認
4. 示例
- 每分鐘執行一次命令
[root@node10009 ~]# crontab -l
* * * * * echo "hello world" > /root/1.txt
[root@node10009 ~]# ls
a anaconda-ks.cfg
[root@node10009 ~]# date
Thu Nov 22 17:14:45 CST 2018
[root@node10009 ~]# date
Thu Nov 22 17:15:22 CST 2018
[root@node10009 ~]# ls
1.txt a anaconda-ks.cfg
[root@node10009 ~]# cat 1.txt
hello world
[root@node10009 ~]#
5. 常用設置
0 3 * * * command # 每天凌晨3點執行, 常用於備份,更新
0 9-18 * * 1-5 command # 每週1 到週五 的 9點到下午6點 的小時執行一次
END