linux shell 之 crontab(定時任務)詳解


1、定義:

  crontab命令常見於Unix和類Unix的操作系統之中,用於設置周期性被執行的指令。該命令從標准輸入設備讀取指令,並將其存放於“crontab”文件中,以供之后讀取和執行。該詞來源於希臘語 chronos(χρνο),原意是時間。常,crontab儲存的指令被守護進程激活, crond常常在后台運行,每一分鍾檢查是否有預定的作業需要執行。這類作業一般稱為cron jobs。

 


 

2、安裝(默認自帶crontab)

  假如執行crontab報下面的錯誤即需要安裝一下。

-bash: crontab: command not found

 

1). 確認crontab是否安裝:

  執行 crontab 命令如果報 command not found,就表明沒有安裝

2). 安裝 crontab

  執行 yum install -y vixie-cron

3). 確認是否安裝成功:

  執行 crontab -l

4). 看是否設置了開機自動啟動

  chkconfig --list crond

5). 啟動crontab


  service crond start

 


 

3、語法使用

使用權限:
   root用戶crontab文件的所有者
語法:
  crontab [-e [UserName]|-l [UserName]|-r [UserName]|-v [UserName]|File ]
說明:
  crontab 是用來讓使用者在固定時間或固定間隔執行程序之用,換句話說,也就是類似使用者的時程表。-u user 是指設定指定 user 的時程表,這個前提是你必須要有其權限(比如說是 root)才能夠指定他人的時程表。如果不使用 -u user 的話,就是表示設定自己的時程表。
參數:
-e [UserName]: 執行文字編輯器來設定時程表,內定的文字編輯器是 VI,如果你想用別的文字編輯器,則請先設定 VISUAL 環境變數來指定使用那個文字編輯器(比如說 setenv VISUAL joe)
-r [UserName]: 刪除目前的時程表
-l [UserName]: 列出目前的時程表
-v [UserName]:列出用戶cron作業的狀態

 

eg:查看當前用戶的時程表

crontab -l

 

 


 

4、謄寫shell(.sh)腳本

  下面給出幾個通過ftp上傳和下載的例子,mgetget的區別在於多個文件和一個文件的區別,mget可以獲得多個文件,get只能獲取一個,put和mput一樣。

  1). ftp自動登錄批量下載文件。

#####從ftp服務器上的/home/data 到 本地的/home/databackup####

#!/bin/bash
ftp -n<<!   
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
mget *
close
bye
!

 

 

  2). ftp自動登錄上傳文件。

####本地的/home/databackup to ftp服務器上的/home/data####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
hash
cd /home/data
lcd /home/databackup
prompt
mput *
close
bye
!

 

 

  3). ftp自動登錄下載單個文件。

####ftp服務器上下載/home/data/a.sh to local /home/databackup####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
get a.sh a.sh
close
bye
!

 

 

  4). ftp自動登錄上傳單個文件。

####把本地/home/databachup/a.sh up ftp /home/databackup 下####
#!/bin/bash
ftp -n<<!
open 192.168.1.171
user guest 123456
binary
cd /home/data
lcd /home/databackup
prompt
put a.sh a.sh
close
bye
!

 

  ps:上面shell各個字段意義可以查看 http://www.cnblogs.com/0201zcr/p/4737508.html

 


 

4、將shell腳本放到crontab中定時運行

時程表的格式如下:
f1 f2 f3 f4 f5 program
其中 f1 是表示分鍾,f2 表示小時,f3 表示一個月份中的第幾日,f4 表示月份,f5 表示一個星期中的第幾天。program 表示要執行的程式。

  

  通過執行下面的語句,即可進入類似於vi的文本編輯器界面,我們可以通過在上面謄寫上面那種時程表定時調用某個腳本。

crontab -e

 

 

  eg:每個5分鍾執行一次腳本

第一種寫法是*/5,這種寫法有的系統會不支持
*/5 * * * * /xxx/task.sh
第二種寫法比較繁瑣,但所有系統都支持:
0,5,10,15,20,25,30,35,40,45,50,55 * * * * /xx/task.sh

 

列出crontab文件

  為了列出crontab文件,可以用:
  $crontab -l
 
編輯crontab文件
 
  如果希望添加、刪除或編輯crontab文件中的條目,而EDITOR環境變量又設置為vi,那么就可以用vi來編輯crontab文件,相應的命令為:
  $ crontab -e
  可以像使用vi編輯其他任何文件那樣修改crontab文件並退出。
 
刪除crontab文件
  為了刪除crontab文件,可以用:
  $ crontab -r
 
注釋crontab文件
  如果不希望刪除寫好的crontab文件,在該crontab文件前添加 #將該文件注釋掉。

 

  致謝:感謝您的耐心閱讀!

 


免責聲明!

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



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