Linux:crontab命令學習


 

         之前聽說過這個命令,但沒有研究過;最近因為業務需要,要做系統自動定時執行腳本任務,於是進行了以下測試:

1.crontab基礎知識

[root@rac2 sbin]# service crond start ---查看crontab服務是否啟動
Starting crond: cannot start crond: crond is already runnin[FAILED]
[root@rac2 sbin]# ps -ef|grep crond ---查看crontab進程
root      2959     1  0 21:47 ?        00:00:00 crond
root      3509  3457  0 21:51 pts/1    00:00:00 grep crond
[root@rac2 sbin]# crontab --help ---查看使用幫助
crontab: invalid option -- -
crontab: usage error: unrecognized option
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)
[root@rac2 sbin]# crontab -u root -l ---查看root用戶當前是否有自動執行計划
no crontab for root
[root@rac2 sbin]# crontab -l
no crontab for root

 

2.編寫一個自己的自動定時執行計划

[root@rac2 sbin]# crontab -e
no crontab for root - using an empty one
crontab: no changes made to crontab

 看別人這樣就可以進入vi界面編寫計划,我編寫后,但提示  no changes made to crontab。

[root@rac2 sbin]# crontab -l
no crontab for root

查看一下,依然還是沒有。應該是編輯失敗了,不知道為什么?

 

突然想到,可以這樣試試:

[root@rac2 sbin]# crontab -u root -e
no crontab for root - using an empty one
crontab: installing new crontab

在彈出的vi界面 編寫了:* */1 * * * echo "Have a good dream" >> /tmp/test.txt 

-------意思是每各一分鍾,向 /tmp/test.txt 文件里面插入一條“Have a good dream” 信息。

-------注:/tmp/test.txt 這個test.txt 是會自動生成的。

這次提示:crontab: installing new crontab,應該是ok了。

[root@rac2 sbin]# crontab -l

* */1 * * * echo "Have a good dream" >> /tmp/test.txt 
[root@rac2 sbin]# 

自動定時腳本編輯成功了。

 

檢查一下/tmp/test.txt,執行結果也正確。

[root@rac2 ~]# cd /tmp
[root@rac2 tmp]# ls
gconfd-root     keyring-NcCgMA  keyring-YCitrn  virtual-root.2D8HSv  virtual-root.i8tzq0
keyring-fbdP86  keyring-UJUfuW  mapping-root    virtual-root.DKtizo  virtual-root.ppMHJx
keyring-jq9tuZ  keyring-WoIlNb  test.txt        virtual-root.GQc6wM  virtual-root.vDHQoi
[root@rac2 tmp]# tail -f test.txt
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream
Have a good dream

 

3.crontab語法介紹

      /etc/crontab文件語法如下:

      Minute     Hour   Day    Month  Dayofweek      command
      分鍾         小時     天        月         天每星期           命令

每個字段代表的含義如下:
• Minute             每個小時的第幾分鍾執行該任務
• Hour               每天的第幾個小時執行該任務
• Day                 每月的第幾天執行該任務
• Month             每年的第幾個月執行該任務
• DayOfWeek     每周的第幾天執行該任務
• Command       指定要執行的程序

在這些字段里,除了“Command”是每次都必須指定的字段以外,其它字段皆為可選字段,可視需要決定。對於不指定的字段,要用“*”來填補其位置。
同時,cron支持類似正則表達式的書寫,支持如下幾個特殊符號定義:

• "*"代表取值范圍內的數字,
• "/"代表"每",
• "-"代表從某個數字到某個數字,
• ","分開幾個離散的數字

 

例子:

0       6       *          *     *    echo "Good morning." >> /tmp/test.txt     每天早上6點 
5       *       *          *     *     ls             指定每小時的第5分鍾執行一次ls命令
30     5       *          *     *     ls             指定每天的 5:30 執行ls命令
30     7       8          *     *     ls             指定每月8號的7:30分執行ls命令
 
 
30 3 * * 1,4,7 reboot   每周的1,4,7的凌晨3點半重啟服務器  

17 5 * * 0 /etc/cleanup > /dev/null   每周星期日5:17清除系統上的某些日志文件

0 2 * 1 * rm -rf /usr/userbk*.log   每月1日2:00刪除/usr/userbk下的日志文件

 


免責聲明!

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



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