Linux
Bash 腳本不能作為 cron 作業
我有以下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