2013-01-22 85 views
11

我正在嘗試查找已創建的cronjob,以確保該腳本不會重複相同的cronjob。使用crontab搜索cronjob -l

我一直在嘗試使用這些方針的東西,但沒有多少運氣:

if ! crontab -l | xargs grep -l '/var/www/arix/update.php'; then 
    echo "Cronjob already exists" 
else 
    echo "Cronjob doesn't exist" 
fi 
+0

執行這些行後發生了什麼? –

+0

你不需要xargs。你爲什麼要'grep -l'?也許只是「如果! crontab -l | grep -q'....';那麼'應該工作。最後,爲了調試情況,執行內部元素,然後追加下一個部分,即'crontab -l'(是否產生您期望的輸出?),然後執行'crontab -l | ...'。祝你好運。 – shellter

回答

22

/var/spool/cron/crontabs是crontab文件通常的父目錄。例如,有那些有用戶名的文件 - root是根crontab。系統中的每個用戶都有可能使用crontab -e並創建他/她自己的crontab。

以root身份,您可以:

cd /var/spool/cron/crontabs 
grep 'search string' * 

此命令(作爲root)會告訴你什麼用戶的crontab有串。如果存在。

如果你不確定crontabs是什麼東西,你會這樣做的。crontab -l只給出你crontab中的東西,當前登錄的用戶。如果你確定這是最好的檢查地點:

crontab -l | grep -q 'search string' && echo 'entry exists' || echo 'entry does not exist' 
+1

它的工作!謝謝。我改變了程序,看起來如下,並按需要工作。如果! crontab -l | grep -q'/var/www/arix/update1.php';然後回聲「Cronjob不存在」 – user0000001

+3

這工作完美!謝謝!! – ChrisPrime

+0

Thanks @ user0000001,這是格式化它的一種有用方法。 – Noumenon