linux 定時任務


習慣了使用 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 的優先級要高。

但感覺有點亂,倒不如只使用其中的一個。

crontab 命令

-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 打開編輯:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM