Linux 定時任務詳解

来源:http://www.cnblogs.com/limonyun/archive/2017/10/13/7659350.html
-Advertisement-
Play Games

fileclear.sh task.crontab task.null.crontab是一個沒有內容的空文件 開啟定時任務 停止定時任務 crontab [-u username] [-l|-e|-r] 參數: -u: 只有root才能進行這個任務,也即幫其他用戶新建/刪除crontab工作調度; ...


fileclear.sh

複製代碼
tamcdir=${HOME}/ora/user_projects/domains/tamc
cd ${tamcdir}
echo rm -f `ls heapdump*.phd`
rm -f heapdump*.phd
echo rm -f `ls javacore*.txt`
rm -f javacore*.txt
echo rm -f `ls Snap*.trc`
rm -f Snap*.trc
cd bin
echo cp /dev/null nuhup.out
cp /dev/null nuhup.out
cd ${tamcdir}/pxbak
echo rm -rf `ls 20*`
rm -rf 20*
cd ${tamcdir}/webapps/tamcx/fileLoad
echo rm -f `find /weblogic/ora/user_projects/domains/tamc/webapps/tamcx/fileLoad/ -mtime +1`
find /weblogic/ora/user_projects/domains/tamc/webapps/tamcx/fileLoad/ -mtime +1 -exec rm -f {} \;
複製代碼

task.crontab

#web服務端日誌、臨時文件清理
10 1 * * * ksh $HOME/tools/clearweblogic.sh >>/weblogic/ora/user_projects/domains/tamc/webapps/tamcx/log/crontab.log 2>>/weblogic/ora/user_projects/domains/tamc/webapps/tamcx/log/crontab.log

 

task.null.crontab是一個沒有內容的空文件

開啟定時任務 

crontab /weblogic/tools/task.crontab

停止定時任務

crontab /weblogic/tools/task.null.crontab

 

crontab [-u username] [-l|-e|-r]

參數:

-u: 只有root才能進行這個任務,也即幫其他用戶新建/刪除crontab工作調度;

-e: 編輯crontab 的工作內容;

-l: 查閱crontab的工作內容;

-r: 刪除所有的crontab的工作內容,若僅要刪除一項,請用-e去編輯。

 

範例一:用dmtsai的身份在每天的12:00發信給自己

crontab -e

#此時會進入vi的編輯界面讓你編輯工作。註意到,每項工作都是一行。

0    12   *   *   *   mail dmtsai -s "at 12:00" < /home/dmtsai/.bashrc
#分  時   日   月  周  |《==============命令行=======================》|

 

代表意義 分鐘 小時 日期 月份 命令
數字範圍 0~59 0~23 1~31 1~12 0~7 就命令啊

周的數字為0或7時,都代表“星期天”的意思。另外,還有一些輔助的字元,大概有下麵這些:

特殊字元   代表意義
*(星號) 代表任何時刻都接受的意思。舉例來說,範例一內那個日、月、周都是*,就代表著不論何月、何日的禮拜幾的12:00都執行後續命令的意思。
,(逗號)

代表分隔時段的意思。舉例來說,如果要執行的工作是3:00與6:00時,就會是:

0 3,6 * * * command

時間還是有五列,不過第二列是 3,6 ,代表3與6都適用

-(減號)

 代表一段時間範圍內,舉例來說,8點到12點之間的每小時的20分都進行一項工作:

20 8-12 * * * command

仔細看到第二列變成8-12.代表 8,9,10,11,12 都適用的意思

/n(斜線)

 那個n代表數字,即是每隔n單位間隔的意思,例如每五分鐘進行一次,則:

*/5 * * * * command

用*與/5來搭配,也可以寫成0-59/5,意思相同

 

為當前用戶創建cron服務

1.  鍵入 crontab  -e 編輯crontab服務文件

      例如 文件內容如下:

*/2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 

     保存文件並並退出

 */2 * * * * /bin/sh /home/admin/jiaoben/buy/deleteFile.sh

    */2 * * * * 通過這段欄位可以設定什麼時候執行腳本

      /bin/sh /home/admin/jiaoben/buy/deleteFile.sh 這一欄位可以設定你要執行的腳本,這裡要註意一下bin/sh 是指運行  腳本的命令  後面一段時指腳本存放的路徑

 

2. 查看該用戶下的crontab服務是否創建成功, 用 crontab  -l 命令  

 

3. 啟動crontab服務 

      一般啟動服務用  /sbin/service crond start 若是根用戶的cron服務可以用 sudo service crond start, 這裡還是要註意  下 不同版本linux系統啟動的服務的命令也不同 ,像我的虛擬機里只需用 sudo service cron restart 即可,若是在根用下直接鍵入service cron start就能啟動服務

 

4. 查看服務是否已經運行用 ps -ax | grep cron 

5. crontab命令

      cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

      crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數  
  crontab -l //列出某個用戶cron服務的詳細內容
  crontab -r //刪除沒個用戶的cron服務
  crontab -e //編輯某個用戶的cron服務
  比如說root查看自己的cron設置:crontab -u root -l
  再例如,root想刪除fred的cron設置:crontab -u fred -r
  在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e
  進入vi編輯模式,編輯的內容一定要符合下麵的格式:*/1 * * * * ls >> /tmp/ls.txt
        任務調度的crond常駐命令
        crond 是linux用來定期執行程式的命令。當安裝完成操作系統之後,預設便會啟動此  

       任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工

       作便會自動執行該工作。

 

6. crontab命令選項:

     -u指定一個用戶

     -l列出某個用戶的任務計劃

     -r刪除某個用戶的任務

     -e編輯某個用戶的任務

7. cron文件語法:

      分     小時    日       月       星期     命令

      0-59   0-23   1-31   1-12     0-6     command     (取值範圍,0表示周日一般一行對應一個任務)

     記住幾個特殊符號的含義:

         “*”代表取值範圍內的數字,
         “/”代表”每”,
         “-”代表從某個數字到某個數字,
         “,”分開幾個離散的數字

8. 任務調度設置文件的寫法
      可用crontab -e命令來編輯,編輯的是/var/spool/cron下對應用戶的cron文件,也可以直接修改/etc/crontab文件
     具體格式如下:
      Minute Hour Day Month Dayofweek   command
      分鐘     小時   天     月       天每星期       命令
     每個欄位代表的含義如下:
     Minute             每個小時的第幾分鐘執行該任務
     Hour               每天的第幾個小時執行該任務
     Day                 每月的第幾天執行該任務
     Month             每年的第幾個月執行該任務
     DayOfWeek     每周的第幾天執行該任務
     Command       指定要執行的程式
     在這些欄位里,除了“Command”是每次都必須指定的欄位以外,其它欄位皆為可選

    欄位,可視需要決定。對於不指定的欄位,要用“*”來填補其位置。
    舉例如下:   

 

複製代碼
5      *       *         *     *     ls             指定每小時的第5分鐘執行一次ls命令
30     5       *         *     *     ls             指定每天的 5:30 執行ls命令 
30 7 8 * * ls 指定每月8號的7:30分執行ls命令 30 5 8 6 * ls 指定每年的6月8日5:30執行ls命令
30 6 * * 0 ls 指定每星期日的6:30執行ls命令[註:0表示星期天,1表示星期1, 以此類推,
                                     也可以用英文來表示,sun表示星期天,mon表示星期一等。] 30 3 10,20 * * ls 每月10號及20號的3:30執行ls命令[註:“,”用來連接多個不連續的時段] 25 8-11 * * * ls 每天8-11點的第25分鐘執行ls命令[註:“-”用來連接連續的時段] */15 * * * * ls 每15分鐘執行一次ls命令 [即每個小時的第0 15 30 45 60分鐘執行ls命令 ] 30 6 */10 * * ls 每個月中,每隔10天6:30執行一次ls命令[即每月的1、11、21、31日是的6:30執行一次ls 命令。 ] 每天7:50以root 身份執行/etc/cron.daily目錄中的所有可執行文件 50 7 * * * root run-parts /etc/cron.daily [ 註:run-parts參數表示,執行後面目錄中的所有可執行文件。 ]
複製代碼

 

9. 新增調度任務

     新增調度任務可用兩種方法:
       1)、在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。
        2)、直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務。

10. 查看調度任務
        crontab -l //列出當前的所有調度任務
        crontab -l -u jp   //列出用戶jp的所有調度任務

11. 刪除任務調度工作
         crontab -r   //刪除所有任務調度工作

12. 任務調度執行結果的轉向
       例1:每天5:30執行ls命令,並把結果輸出到/jp/test文件中
            30 5 * * * ls >/jp/test 2>&1
            註:2>&1 表示執行結果及錯誤信息。
      編輯/etc/crontab 文件配置cron  

     cron服務每分鐘不僅要讀一次/var/spool/cron內的所有文件,還需要讀一次 /etc/crontab,因此我們配置這個文件也能運用cron服務做一些事情。用crontab配置是針對某個用戶的,而編輯/etc/crontab是針對系統的任務。此文件的文件格式是:  

  SHELL=/bin/bash  

  PATH=/sbin:/bin:/usr/sbin:/usr/bin 

  MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號  

  HOME=/ //使用者運行的路徑,這裡是根目錄  
  # run-parts  

01   *   *   *   *     root run-parts /etc/cron.hourly         //每小時執行/etc/cron.hourly內的腳本  
02   4   *   *   *     root run-parts /etc/cron.daily           //每天執行/etc/cron.daily內的腳本  
22   4   *   *   0     root run-parts /etc/cron.weekly         //每星期執行 /etc/cron.weekly內的腳本  
42   4   1   *   *     root run-parts /etc/cron.monthly       //每月去執行/etc/cron.monthly內的腳本  


  大家註意”run-parts”這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名了

    例如:

     1) 在命令行輸入: crontab -e 然後添加相應的任務,wq存檔退出。

      2)直接編輯/etc/crontab 文件,即vi /etc/crontab,添加相應的任務

11 2 21 10 * rm -rf /mnt/fb  

在UNIX下怎樣實現和Windows下“計劃任務”一樣的功能
$crontab -e 編輯腳本
$crontab -l 察看腳本  
用$crontab -e 編輯腳本,加入下列行
:分 小時 星期 月 命令  
Linux下crontab命令的用法
任務調度的crond常駐命令
crond 是linux用來定期執行程式的命令。當安裝完成操作系統之後,預設便會啟動此任務調度命令。crond命令每分鍾會定期檢查是否有要執行的工作,如果有要執行的工作便會自動執行該工作。而linux任務調度的工作主要分為以下兩類:
1、系統執行的工作:系統周期性所要執行的工作,如備份系統數據、清理緩存
2、個人執行的工作:某個用戶定期要做的工作,例如每隔10分鐘檢查郵件伺服器是否有新信,這些工作可由每個用戶自行設置
3、Crontab是UNIX系統下的定時任務觸發器,其使用者的許可權記載在下列兩個文件中:文件含義
/etc/cron.deny 該文件中所列的用戶不允許使用Crontab命令
/etc/cron.allow 該文件中所列的用戶允許使用Crontab命令
/var/spool/cron/ 是所有用戶的crontab文件
/var/spool/cron/crontabs

4、Crontab命令的格式為:crontab –l|-r|-e|-i [username],

其參數含義如表一: 參數名稱   含義    示例
-l 顯示用戶的Crontab文件的內容
crontabl –l 

-i 刪除用戶的Crontab文件前給提示
crontabl -ri 

-r 
從Crontab目錄中刪除用戶的Crontab文件

crontabl -r 
-e 

編輯用戶的Crontab文件
crontabl -e 

5、用戶所建立的Crontab文件存於/var/spool/cron中,其文件名與用戶名一致。它的格式共分為六段,前五段為時間設定段,第六段為所要執行的命令段,格式如下:* * * * * 
其時間段的含義如表二: 段        含義        取值範圍
第一段   代表分鐘        0—59 
第二段   代表小時        0—23 
第三段   代表日期        1—31 
第四段   代表月份        1—12 
第五段   代表星期幾   0代表星期日
名稱 : crontab 
使用許可權 : 所有使用者
使用方式 : 
crontab [ -u user ] file 
crontab [ -u user ] { -l | -r | -e } 
說明 : 
crontab 是用來讓使用者在固定時間或固定間隔執行程式之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其許可權(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。
餐數 : 
-e : 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe) 

-r : 刪除目前的時程表
-l : 列出目前的時程表
時程表的格式如下 : 
f1 f2 f3 f4 f5 program 
其中 f1 是表示分鐘,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。
當 f1 為 * 時表示每分鐘都要執行 program,f2 為 * 時表示每小時都要執行程式,其餘類推
當 f1 為 a-b 時表示從第 a 分鐘到第 b 分鐘這段時間內要執行,f2 為 a-b 時表示從第 a 到第 b 小時都要執行,其餘類推
當 f1 為 */n 時表示每 n 分鐘個時間間隔執行一次,f2 為 */n 表示每 n 小時個時間間隔執行一次,其餘類推
當 f1 為 a, b, c,... 時表示第 a, b, c,... 分鐘要執行,f2 為 a, b, c,... 時表示第 a, b, c...個小時要執行,其餘類推

使用者也可以將所有的設定先存放在檔案 file 中,用 crontab file 的方式來設定時程表。 例子 : 
每月每天每小時的第 0 分鐘執行一次 /bin/ls : 

0    7    *    *    *    /bin/ls 

在 12 月內, 每天的早上 6 點到 12 點中,每隔 20 分鐘執行一次 /usr/bin/backup : 

0  6-12/3  *  12  *  /usr/bin/backup 

周一到周五每天下午 5:00 寄一封信給 [email protected]

0  17  *  *  1-5  mail -s "hi" [email protected]   /dev/null 2>&1

 即可

例:如果用戶的Crontab文件的內容是:29 19 * * * echo its dinner time,則系統每天的19:29顯示‘its dinner time’
示例(創建一個cron全過程,每分鐘都會在test.txt里輸入當前時間): 
1.     以普通用戶登錄linux系統(我用的是CentOS4.1) 
2.     $crontab –e
說明:系統預設的編輯器是VIM,如果不是請加上以下shell:
$EDITOR=vi
$export EDITOR 
3.     輸入”*/1 * * * * date >> $HOME/test.txt”,save and exit VIM 
4.     $su root 
5.     $cd /etc/init.d 
6.     ./crond restart 

下麵看看看幾個具體的例子:

複製代碼
0   */2  *    *   *   /sbin/service httpd restart   意思是每兩個小時重啟一次apache 
50  7    *    *   *   /sbin/service sshd start   意思是每天7:50開啟ssh服務
50  22   *    *   *   /sbin/service sshd stop   意思是每天22:50關閉ssh服務
0   0    1,15  *   *   fsck /home   每月1號和15號檢查/home 磁碟
1   *    *    *   *   /home/bruce/backup   每小時的第一分執行 /home/bruce/backup這個文件
00  03   *    *  1-5  find /home "*.xxx" -mtime +4 -exec rm {} \;   每周一至周五3點鐘,在目錄/home中,查找文件名為*.xxx的文件,並刪除4天前的文件。
30  6    */10  *   *   ls   意思是每月的1、11、21、31日是的6:30執行一次ls命令
複製代碼

 

linux平臺上如果需要實現任務調度功能可以編寫cron腳本來實現。

以某一頻率執行任務

linux預設會啟動crond進程,crond進程不需要用戶啟動、關閉。
crond進程負責讀取調度任務並執行,用戶只需要將相應的調度腳本寫入cron的調度配置文件中。
cron的調度文件有以下幾個:

1.   crontab 

2.   cron.d 

3.   cron.daily 

4.   cron.hourly 

5.   cron.monthly 

6.   cron.weekly 

如果用的任務不是以hourly monthly weekly方式執行,則可以將相應的crontab寫入到crontab 或cron.d目錄中。

示例:
每隔一分鐘執行一次腳本 /opt/bin/test-cron.sh 
可以在cron.d新建腳本 echo-date.sh 
內容為

*/1  *  *  *  *  root /opt/bin/test-cron.sh

 

在指定的時間運行任務

也可以通過at命令來控制在指定的時間運行任務

如:

at -f test-cron.sh -v 10:25 
其中-f 指定腳本文件, -v 指定運行時間

quote:ea946d690b="lophyxp"]首先用
contab -l &gt;contabs.tmp
導出contab的配置。
然後編輯contabs.tmp文件。以一下格式添加一行:
分鐘 小時 天 月 星期 命令
比如
10 3 * * 0,6 hello
就是每周六、周日的3點10分執行hello程式。
15 4 * * 4-6 hello
就是從周四到周六的4點15點執行hello程式。
然後用
contab contabs.tmp
命令導入新的配置。
一般不建議直接修改/etc/下的相關配置文件。

啟動cron進程的方法:/etc/init.d/crond start
開機就啟動cron進程的設置命令:chkconfig --add crond

方法二:

把cron加入到啟動腳本中:

# rc-update add vixie-cron default

crontab -l #查看你的任務

crontab-e#編輯你的任務

crontab-r#刪除用戶的crontab的內容

實例講解二:

系統cron設定:/etc/crontab
    通過 /etc/crontab 文件,可以設定系統定期執行的任務,當然,要想編輯這個文件,得有root許可權

0   7  *  *   *    root    mpg123 ~/wakeup.mp3 

分 時 日 月 周

示例:

0   4   *   *   0  root  emerge --sync && emerge -uD world              #每周日凌晨4點,更新系統
0   2   1   *   *  root   rm -f /tmp/*                                    #每月1號凌晨2點,清理/tmp下的文件
0   8   6   5   *  root  mail robin < /home/galeki/happy.txt             #每年5月6日給robin發信祝他生日快樂

假如,我想每隔2分鐘就要執行某個命令,或者我想在每天的6點、12點、18點執行命令,諸如此類的周期,可以通過 “ / ” 和 “ , ” 來設置:

*/2  *      *  *  *  root      ...............      #每兩分鐘就執行........ 
0    6,12,18  *  *  *  root      ...............      #每天6點、12點、18點執行........

每兩個小時

0  */2  *  *  *  echo "have a break now." >&gt; /tmp/test.txt

晚上11點到早上8點之間每兩個小時,早上八點

0  23-7/2,8  *  *  *  echo "have a good dream:)" &gt;&gt; /tmp/test.txt

每個月的4號與每個禮拜的禮拜一到禮拜三的早上11點

0  11  4  *  1-3  command line

1月1日早上4點

0  4 1 1 * command line

 

  linux下定時執行任務的方法 

LINUX中你應該先輸入crontab -e,然後就會有個vi編輯界面,再輸入0 3 * * 1 /clearigame2內容到裡面 :wq 保存退出。

 

LINUX中,周期執行的任務一般由cron這個守護進程來處理[ps -ef|grep cron]。cron讀取一個或多個配置文件,這些配置文件中包含了命令行及其調用時間。

cron的配置文件稱為“crontab”,是“cron table”的簡寫。

一、cron在3個地方查找配置文件:
1、/var/spool/cron/ 這個目錄下存放的是每個用戶包括root的crontab任務,每個任務以創建者的名字命名,比如tom建的crontab任務對應的文件就是/var/spool/cron/tom。
一般一個用戶最多只有一個crontab文件。

二、/etc/crontab 這個文件負責安排由系統管理員制定的維護系統以及其他任務的crontab。

三、/etc/cron.d/ 這個目錄用來存放任何要執行的crontab文件或腳本。

四、許可權
crontab許可權問題到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下: 
1、如果兩個文件都不存在,則只有root用戶才能使用crontab命令。 
2、如果cron.allow存在但cron.deny不存在,則只有列在cron.allow文件里的用戶才能使用crontab命令,如果root用戶也不在裡面,則root用戶也不能使用crontab。 
3、如果cron.allow不存在, cron.deny存在,則只有列在cron.deny文件裡面的用戶不能使用crontab命令,其它用戶都能使用。 
4、如果兩個文件都存在,則列在cron.allow文件中而且沒有列在cron.deny中的用戶可以使用crontab,如果兩個文件中都有同一個用戶,
以cron.allow文件裡面是否有該用戶為準,如果cron.allow中有該用戶,則可以使用crontab命令。

 

五、cron服務
  cron是一個linux下 的定時執行工具,可以在無需人工干預的情況下運行作業。
  /sbin/service crond start    //啟動服務
  /sbin/service crond stop     //關閉服務
  /sbin/service crond restart  //重啟服務
  /sbin/service crond reload   //重新載入配置
  /sbin/service crond status   //查看服務狀態 

在crontab文件中如何輸入需要執行的命令和時間。該文件中每行都包括六個域,其中前五個域是指定命令被執行的時間,最後一個域是要被執行的命令。
    每個域之間使用空格或者製表符分隔。格式如下: 
  minute hour day-of-month month-of-year day-of-week commands 
    合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) commands(代表要執行的腳本)
    除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值範圍內的數字,"/"代表每的意思,"/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。

幾個例子: 
每天早上6點 

0  6  *  *  *  echo "Good morning." >> /tmp/test.txt //註意單純echo,從屏幕上看不到任何輸出,因為cron把任何輸出都email到root的信箱了。

每兩個小時 

0  */2  *  *  *  echo "Have a break now." >> /tmp/test.txt  

晚上11點到早上8點之間每兩個小時和早上八點 

0  23-7/2,8  *  *  *  echo "Have a good dream" >> /tmp/test.txt

每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點 

0  11  4  *  1-3  command line

1月1日早上4點 
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出現錯誤,或者有數據輸出,數據作為郵件發給這個帳號 HOME=/ 

每小時執行/etc/cron.hourly內的腳本

01  *  *  *  *  root run-parts /etc/cron.hourly

每天執行/etc/cron.daily內的腳本

02  4  *  *  *  root run-parts /etc/cron.daily 

每星期執行/etc/cron.weekly內的腳本

22  4  *  *  0  root run-parts /etc/cron.weekly 

每月去執行/etc/cron.monthly內的腳本 

42  4  1  *  *  root run-parts /etc/cron.monthly 

註意: "run-parts"這個參數了,如果去掉這個參數的話,後面就可以寫要運行的某個腳本名,而不是文件夾名。   
每天的下午4點、5點、6點的5 min、15 min、25 min、35 min、45 min、55 min時執行命令。 

5,15,25,35,45,55  16,17,18  *  *  *  command

每周一,三,五的下午3:00系統進入維護狀態,重新啟動系統。

00  15  *  *  1,3,5  shutdown -r +5

每小時的10分,40分執行用戶目錄下的innd/bbslin這個指令: 

10,40  *  *  *  *  innd/bbslink 

每小時的1分執行用戶目錄下的bin/account這個指令: 

1  *  *  *  *  bin/account

每天早晨三點二十分執行用戶目錄下如下所示的兩個指令(每個指令以;分隔): 

20  3  *  *  *  (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st) 

每年的一月和四月,4號到9號的3點12分和3點55分執行/bin/rm -f expire.1st這個指令,並把結果添加在mm.txt這個文件之後(mm.txt文件位於用戶自己的目錄位置)。 

12,55  3  4-9  1,4  *  /bin/rm -f expire.1st$#@62;$#@62;mm.txt 

at命令實現定時任務
  假如我們只是想要讓特定任務運行一次,那麼,這時候就要用到at監控程式了。
    at類似列印進程,會把任務放到/var/spool/at目錄中,到指定時間運行它 。at命令相當於另一個shell,運行at time命令時,它發送一個個命令,可以輸入任意命令或者程式。

    at命令執行流程如下

  # at 2:05 tomorrow

  at>/home/kyle/do_job

  at> Ctrl+D

  AT Time中的時間表示方法

  -----------------------------------------------------------------------

  時 間 例子 說明

  -----------------------------------------------------------------------

  Minute    at now + 5 minutes   任務在5分鐘後運行

  Hour      at now + 1 hour      任務在1小時後運行

  Days      at now + 3 days      任務在3天後運行

  Weeks     at now + 2 weeks     任務在兩周後運行

  Fixed     at midnight          任務在午夜運行

  Fixed     at 10:30pm           任務在晚上10點30分

  註意:linux預設為不啟動,而ubuntu預設為啟動的。檢查是否啟動,用service atd檢查語法,用service atd status檢查atd的狀態,用service atd start啟動atd服務。

  查看at執行的具體內容:一般位於/var/spool/at目錄下麵, 用vi打開,在最後一部分就是你的執行程式



參數詳解
-V : 印出版本編號 
-q : 使用指定的佇列(Queue)來儲存,at 的資料是存放在所謂的 queue 中,使用者可以同時使用多個 queue,而 queue 的編號為 a, b, c... z 以及 A, B, ... Z 共 52 個 
-m : 即使程式/指令執行完成後沒有輸出結果, 也要寄封信給使用者 
-f file : 讀入預先寫好的命令檔。使用者不一定要使用交談模式來輸入,可以先將所有的指定先寫入檔案後再一次讀入 
網路應用


-l : 列出所有的指定 (使用者也可以直接使用 atq 而不用 at -l) 
-d : 刪除指定 (使用者也可以直接使用 atrm 而不用 at -d) 
-v : 列出所有已經完成但尚未刪除的指定 

刪除任務
atrm 2


三天後的下午 5 點鍾執行 /bin/ls : 
at 5pm 3 days /bin/ls 

三個星期後的下午 5 點鍾執行 /bin/ls : 
at 5pm 2 weeks /bin/ls 

明天的 17:20 執行 /bin/date : 
at 17:20 tomorrow /bin/date 

1999 年的最後一天的最後一分鐘印出 the end of world ! 
at 23:59 12/31/1999 echo the end of world !

 

cron是一個linux下的定時執行工具,可以在無需人工干預的情況下運行作業。由於Cron 是Linux的內置服務,但它不自動起來,可以用以下的方法啟動、關閉這個服務:

/sbin/service crond start //啟動服務

  /sbin/service crond stop //關閉服務

  /sbin/service crond restart //重啟服務

  /sbin/service crond reload //重新載入配置

 

 

  你也可以將這個服務在系統啟動的時候自動啟動:

 

  在/etc/rc.d/rc.local這個腳本的末尾加上:

  /sbin/service crond start

 

  現在Cron這個服務已經在進程裡面了,我們就可以用這個服務了

 

-------------------------------------

 

 

Linux下定時備份mysql為例說明下

寫一個簡單的mysql備份shell腳本

vi

#!/bin/sh
da=`date +%Y%m%d%H%M%S`
mysqldump -u root -pdongjj --all-database>/root/mysqlbakup/$da

保存為 mysqlbak.sh

然後crontab-e

 0 3 * * * /root/mysqlbak.sh 

保存退出

 

相關命令----------------

crontab file [-u user]-用指定的文件替代目前的crontab。 
crontab-[-u user]-用標準輸入替代目前的crontab. 
crontab-1[user]-列出用戶目前的crontab. 
crontab-e[user]-編輯用戶目前的crontab. 
crontab-d[user]-刪除用戶目前的crontab. 
crontab-c dir- 指定crontab的目錄。 
crontab文件的格式:M H D m d cmd. 
M: 分鐘(0-59)。 
H:小時(0-23)。 
D:天(1-31)。 
m: 月(1-12)。 
d: 一星期內的天(0~6,0 表示星期天)
   除了數字還有幾個個特殊的符號就是"*"、"/"和"-"、",",*代表所有的取值範圍內的數字,"/"代表每的意思,"*/5"表示每5個單位,"-"代表從某個數字到某個數字,","分開幾個離散的數字。

 

 

每次編輯完某個用戶的cron設置後,cron自動在/var/spool/cron下生成一個與此用戶同名的文件,此用戶的cron信息都記錄在這 個文件中,這個文件是不可以直接編輯的,只可以用crontab -e 來編輯。cron啟動後每過一份鐘讀一次這個文件,檢查是否要執行裡面的命令。因此此文件修改後不需要重新啟動cron服務。

查看crontab 執行的日誌,可以在/var/log/cron* 查看,或者 0 3 * * * /root/mysqlbak.sh >/var/log/mysqlbak.log 2>&1 把日誌定向出來查看。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 相信有很多鞋童和我一個樣是一枚Linux碼農(我現在還是嵌入式方向). 做Linux開發勢必需要一個Linux環境, 大多數開發者會首先選擇一個Linux發行版, 其中Ubuntu LTS版本應該是選取最多的一個了, 原因也很簡單, 該發行版簡單易用的同時足夠穩定和普及. 選擇完發行版就要選擇怎麼安 ...
  • Shell是系統的用戶界面,提供了用戶與內核進行交互操作的一種介面。它接收用戶輸入的命令並把它送入內核去執行。實際上Shell是一個命令解釋器,它解釋由用戶輸入的命令並且把它們送到內核。 1 、Shell中的特殊符號 1.1 $ 美元符號。用來表示變數的值。如變數NAME的值為Mike,則使用$NA ...
  • 下圖是從測試拷64位windbg抓的dump文件拖到32位windbg查看線程堆棧信息的效果。 那麼我們載入一下wow64exts模塊,因為需要這個模塊幫助把64位的dump,轉換成32位的dump。命令就是.load wow64exts 再次輸入!sw 。這樣就可以像在32位模式下分析dump一樣 ...
  • 1.查看系統是否已經安裝git git --version 2.CentOS7 yum 安裝git yum install git ...
  • 1》Subversion版本控制簡介: Subversion(SVN)是一款自由開放的版本控制軟體,可以管理文件,文件夾以及記錄他們的修改狀況,常用來幫助我們管理軟體開發的源代碼或是公司手冊文檔。SVN通過將文檔導入至版本庫中進行管理,版本庫類似於文件伺服器,但比文件伺服器更強大的是,它可以記錄用戶 ...
  • 更新時間: Linux Usage 緣起:最近將系統更換為Linux,雖然之前有用過,但只是當作嘗試,未當為主系統,這次下定決心以它為主系統,懶得去糾結使用win的一種不道德感及不爽感,游戲及娛樂與人與己無益,放棄 https://mirrors.tuna.tsinghua.edu.cn/linux ...
  • 一.背景: arm linux的內核版本是3.13.0 二.準備工作 添加alsa驅動到內核中,也就是在編譯內核的時候加入以下選項: 接下來就重新編譯內核即可 三.交叉編譯alsa-lib和alsa-utils (alsa-utils是一系列的音頻設備控制工具,而alsa-lib是alsa-util ...
  • MongoDB資料庫基本用法 用戶相關 1、添加一個用戶 2、資料庫認證、安全模式 db.auth("userName", "123123"); 3、顯示當前所有用戶 show users; 4、刪除用戶 db.removeUser("userName"); show dbs:顯示資料庫列表 sho ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...