2016-06-28 59 views
0

下面的shell函數以編程方式創建一個CRON條目。避免通過特定腳本創建重複的CRON條目

function create_cron(){ 
    echo "" 
    echo "Create CRON entry" 
    #write out current crontab 
    crontab -l > allcrons 
    #echo new cron into cron file 
    echo "0 1 * * * python /opt/EO/Ava/utils/xtr_test_aggregation.py" >> allcrons 
    display_all_crons allcrons 
    #install new cron file 
    crontab allcrons 
    rm allcrons 
} 

如果腳本運行兩次,上述功能的唯一問題是重複創建CRON條目的可能性。只有當它不存在時,我纔想創建一個CRON作業。請注意,如果有重複的條目已經存在,我想將它們留在那裏。我只關心這個腳本專門創建的重複條目。

+1

然後用grep搜索這個確切的行crontab中,不添加它如果grep返回結果。 –

+1

通過在命令中附加'#XTR_TEST_ENTRY'之類的東西,可以更輕鬆,更健壯地進行查詢。然後,即使時間已更改或管理員用python2.7替換了'python',您也可以輕鬆識別該條目。 –

回答

2

你需要考慮的crontab,並檢查您的條目已存在,如果它不只有你添加:

function create_cron(){ 
    echo "" 
    echo "Create CRON entry" 
    new_entry="0 1 * * * python /opt/EO/Ava/utils/xtr_test_aggregation.py" 
    if ! crontab -l | fgrep -q "$new_entry"; then 
     #write out current crontab 
     crontab -l > allcrons 
     #echo new cron into cron file 
     echo "$new_entry" >> allcrons 
     display_all_crons allcrons 
     #install new cron file 
     crontab allcrons 
     rm allcrons 
    fi 
}