2016-06-28 63 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 
}