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

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

一、定義:html

  crontab命令常見於Unix和類Unix的操做系統之中,用於設置週期性被執行的指令。該命令從標準輸入設備讀取指令,並將其存放於「crontab」文件中,以供以後讀取和執行。該詞來源於希臘語 chronos(χρνο),原意是時間。常,crontab儲存的指令被守護進程激活, crond經常在後臺運行,每一分鐘檢查是否有預約的做業須要執行。這類做業通常稱爲cron jobs。linux

 


 

二、安裝(默認自帶crontab)shell

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

-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編輯器

 


 

三、語法使用post

使用權限:
   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:查看當前用戶的時程表url

crontab -l

 

 


 

四、謄寫shell(.sh)腳本spa

  下面給出幾個經過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

 


 

四、將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文件前添加 #將該文件註釋掉。

 

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

相關文章
相關標籤/搜索