習慣了使用 windows 的計劃任務,使用 linux 中的 crontab 管理定時任務時很不適應。
所以把基本的用法總結如下。
每分鐘輸出一次當前的時間,輸出到用戶家目錄下的 time.log 文件中。
$ crontab -e * * * * * echo `date` >> /home/xxx/time.log
crontab 程序的路徑為 /usr/bin/crontab。
每個用戶的定時任務可以在 /var/spool/cron/crontabs/ 目錄下查詢到。
需要使用root權限才能進入這個目錄。每個以用戶名命名的文件中記錄著該用戶的定時任務。
注意,不要使用 vi 直接編輯這些文件。
cron 運行的每一項工作都會被紀錄到 /var/log/cron 這個登錄檔中,但是 Ubuntu 默認關閉了cron 的 log。
打開的方式為:打開 rsyslog 服務的配置文件
$ sudo vim /etc/rsyslog.d/50-default.conf
將下面一行中前面的注釋符去掉
cron.* /var/log/cron.log
重啟 rsyslog
$ sudo service rsyslog restart
現在就可以看到 /var/log/cron 文件了,查看該文件是解決定時任務出錯的重要途徑。
如果不想讓某個用戶運行定時任務,直接把他的賬號寫入到 /etc/cron.deny 文件中即可。注意,一行一個賬號。
當然你也可以使用 /etc/cron.allow 文件來顯式的指定可以運行定時任務的用戶的賬號,並且 /etc/cron.allow 比 /etc/cron.deny 的優先級要高。
但感覺有點亂,倒不如只使用其中的一個。
-u :只有 root 才有權限執行這個任務,也就是幫其他使用者創建/移除 crontab 定時任務
-e :編輯 crontab 的內容
-l :顯示 crontab 的內容
-r :移除所有 crontab 的內容,若僅要移除某一項,請用 -e 編輯
分鐘 小時 日期 月份 周 命令
數字范圍 0-59 0-23 1-31 1-12 0-7 echo "hello" >> abc.log
特殊字符的含義
*(星號) 代表任何時刻都接受。
,(逗號) 代表分隔時段的意思。
-(減號) 代表一段時間范圍內。
/n(斜線) 那個 n 代表數字,每隔 n 單位間隔。
Case1: 每年的五月一日 10:5 執行一次
5 10 1 5 * command
Case2: 每天的三點,六點各執行一次
0 3,6 * * * command #注意這裡使用了逗號
Case3: 每天的8:20, 9:20,10:20,11:20各執行一次
20 8-11 * * * command #注意這裡使用了減號
Case4: 每五分鐘執行一次
*/5 * * * * command #注意這裡使用了/n
Case5: 每周一十點執行一次
* 10 * * 1 command
crontab -e 是用來設置用戶級別的定時任務的。如果要設置系統級別的定時任務該怎麼辦呢?
答案是直接使用 root 權限編輯系統級別定時任務的配置文件: /etc/crontab。
比如直接用 vim 打開編輯:
http://xxx/Linuxjc/1157598.html TechArticle