Bash 脚本不能作为 cron 工作

Cod*_*ner 4 linux unix 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 
Run Code Online (Sandbox Code Playgroud)

当我从 shell 执行它时它运行良好。

但是当我将它添加到 cron 选项卡时,什么也没有发生。

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

tail /var/log/cron 
Run Code Online (Sandbox Code Playgroud)

显示命令已执行。

但什么也没有发生。我已经为 capture.sh 设置了“all”的可执行权限,并为 /root/captures 目录设置了“all”的写权限。

提前致谢

Pau*_*ock 30

您的PATH变量可能不是您期望它在 cron 中的内容。

使用脚本中每个可执行文件的完整路径,或在 crontab 或脚本中手动设置路径。

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

   -a  <capture autostop condition>
       duration:value Stop writing to a capture file after value seconds
       have elapsed.
Run Code Online (Sandbox Code Playgroud)

也#2:添加一个shebang行(#!

  • 这是什么...我什至不... (13认同)