Linux

Bash 腳本不能作為 cron 作業

  • May 10, 2014

我有以下shell腳本

$cat capture.sh 
TIME=$(date +"%H-%M-%d-%m-%y") 
IP="203.208.198.29" 
PREFIX=$TIME$IP 
tshark  -f "udp" -i eth0 -w /root/captures/$PREFIX.cap& 
pid=$! 
sleep 2m 
kill $pid 

當我從 shell 執行它時它執行良好。

但是當我將它添加到 cron 選項卡時,什麼也沒有發生。

我的 crontab 條目:1 */2 * 2 3,4,5 sh /root/capture.sh

tail /var/log/cron 

顯示命令已執行。

但什麼也沒發生。我已經為 capture.sh 設置了“all”的可執行權限,並為 /root/captures 目錄設置了“all”的寫入權限。

提前致謝

您的PATH變數可能不是您期望它在 cron 中的值。

使用腳本中每個執行檔的完整路徑,或在 crontab 或腳本中手動設置路徑。

此外,停止您的更好方法tshark是使用內置功能:

  -a  <capture autostop condition>
      duration:value Stop writing to a capture file after value seconds
      have elapsed.

另外 #2:添加一個 shebang 行 ( #!)

cron 將限制 cron 作業使用的路徑。嘗試 /usr/sbin/tshark 而不是 tshark。您可以通過以下方式查看 tshark 的位置which tshark

引用自:https://serverfault.com/questions/355944