2017-08-08 59 views
0

我已經安排了一些cronjob。將cronjob添加到crontab而不刪除現有的cronjobs

當我做crontab -e我會找到現有的cronjobs。

* * * * * #Runs every minute 
30 * * * * #Runs at 30 minutes past the hour 
45 6 * * * #Runs at 6:45 am every day 
45 18 * * * #Runs at 6:45 pm every day 
00 1 * * 0 #Runs at 1:00 am every Sunday 
00 1 * * 7 #Runs at 1:00 am every Sunday 

現在我想添加其他cronjob,但沒有做手工crontab -e。並安排工作。

我在文件中有cronjob。我做了象下面這樣:

crontab /home/$USER/new_cronjob 

當我不喜歡所有的現有作業上述被刪除,僅new_cronjob被添加

* * * * * #Runs every minute 
30 * * * * #Runs at 30 minutes past the hour 
45 6 * * * #Runs at 6:45 am every day 
45 18 * * * #Runs at 6:45 pm every day 
00 1 * * 0 #Runs at 1:00 am every Sunday 
00 1 * * 7 #Runs at 1:00 am every Sunday 
* * * * * /home/$USER/new_cronjob 

我的結果,當我做crontab /home/$USER/new_cronjob

* * * * * /home/$USER/new_cronjob 

什麼是實現我想要的正確方法?

回答

2

您可以創建一個臨時文件的所有cron作業:

crontab -l > /tmp/temp_crontab 
cat /home/$USER/new_cronjob >> /tmp/temp_crontab 
crontab /tmp/temp_crontab 
1

您可以通過管道兩老的crontab和文件的內容附加到現有的crontab來crontab -,像這樣:

{ crontab -l; cat /home/$USER/new_cronjob; } | crontab - 

{ ... }是組多個命令。 我們在這裏對兩個命令進行分組,以便我們可以將兩者的完整輸出連接在一起。

+0

我得到'{:命令未找到。 '錯誤 –

+0

@New_learner我不知道你是怎麼做到的。但是,我給出的示例行中的所有標點符號和所有空格都很重要。你確定你複製粘貼正確嗎? – janos

+0

我試過了你給的命令 '{crontab -l; cat/home/$ USER/new_cronjob; } | crontab -' 我得到下面的錯誤 '{:Command not found。 45 5 * * * /home/$USER/new_cronjob.sh }:未找到命令.' –

0

除了標準的做法證明@janos's answer防止重複條目你還需要重寫的crontab前grep -v出來:

{ 
    line="* * * * * /home/$USER/new_cronjob" 
    crontab -l | grep -Fv "$line" 
    echo "$line" 
} 2>/dev/null | crontab -