簡介
crond是linux下用來週期性的執行某種任務或等待處理某些事件的一個守護進程,與windows下的計劃任務類似,當安裝完成操作系統後,默認會安裝此服務工具,並且會自動啓動crond進程,crond進程每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務。
如何使用
- 首先查看幫助
[root@dmp004 orderreport]# crontab -h
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
-s (selinux context)
通過usage可以看到使用格式如下:
crontab [-u user] [ -e | -l | -r ] file
-u後邊跟用戶名
-e 代表編輯定時任務列表
-l 列出用戶定時任務
file爲定義定時任務的文件
其他參數一目瞭然,其中file的格式很重要
minute hour day month week command
文件中共包含六個字段,前五個字段爲時間,最後一個字段爲要執行的命令。
minute 表示分鐘,可以是0-59
hour 表示小時,可以是0-23
day 表示天,可以是1-31
month表示月,可以是1-12
week 表示周幾,可以是0-7
command代表要執行的命令,可以是linux命令,也可以是shell腳本
時間字段中:
星號* 代表任何時間
逗號, 比如hour是 “3,4,9” 代表3點、4點、9點都要執行
橫槓- 代表範圍 比如hour是“3-9”,代表3點至9點都要執行
斜線\/ 代表時間間隔 比如hour是 “0-23/2”,代表在0至23點之間,每兩個小時執行一次
常用
1.查看當前用戶下的定時任務
[root@dmp004 orderreport]# crontab -l
50 17 * * * /home/mofei/task/orderreport/start.sh
2.查看用戶root下的定時任務
[root@dmp004 orderreport]# crontab -u root -l
50 17 * * * /home/mofei/task/orderreport/start.sh
3.給root用戶添加定時任務
定義test.task,內容如下:
* * * * * echo 'this is a test'
添加到定時任務列表
[root@dmp004 orderreport]# crontab -u root test.task
[root@dmp004 orderreport]# crontab -u root -l
* * * * * echo 'this is a test'
4.刪除root的定時任務
[root@dmp004 orderreport]# crontab -u root -r
特別提示
當給非登錄用戶(比如:hdfs)添加任務時,最好先切換到hdfs,執行以下任務,避免因權限問題,導致任務未執行的問題
[root@dmp004 orderreport]# su hdfs
[hdfs@dmp004 orderreport]$ ./start.sh
[hdfs@dmp004 orderreport]$ ./start.sh: line 3: /home/mofei/task/orderreport/17-11-07.log: Permission denied