首先,我搜索了过去与 crontab 相关的帖子,但没有找到任何指向我可能遇到的问题的线索,因此如果这个问题已经解决,请原谅。另外,如果以下内容过于冗长,请原谅。
操作系统:Ubuntu 18.04.4
我创建了一个脚本 (inetavail.sh),希望每分钟启动一次,以确定我的 ISP 是否存在服务漏洞(我最近接听了多次 Zoom 电话,由于互联网中断而被踢出)。以下是我的脚本内容(使用 hping3):
#!/bin/bash
# Sample Output:
# 06/26/2020, 13:15, Online
# or
# 06/26/2020, 13:15, Offline
dt=`date +'%m/%d/%Y, %H:%M'`
err=$(hping3 www.google.com -c 1 -S -p 80 2>&1 >/dev/null)
echo $err|awk -v dt="$dt" '{for(i=1;i<=NF;i++)if($i~/%/)print ($i=="100%")? dt", Offline" : dt", Online"}'
exit
我的 crontab 条目如下:
* * * * * /home/lava/.util/inetavail/inetavail.sh >> /home/lava/.util/inetavail/inetavail.csv
一旦我有了输出文件(csv),我就会有另一个脚本生成一个 gnuplot 图(当调用时)来以图形方式表示互联网服务中的差距。
从命令行执行脚本(/home/lava/.util/inetavail/inetavail.sh >> /home/lava/.util/inetavail/inetavail.csv)成功,但通过 cron 执行时,我没有得到任何输出。
有人知道问题可能是什么吗?为了能够以我本人(非 root)身份执行 hping3,我必须在安装 hping3 后执行以下命令:
sudo setcap cap_net_raw+ep /usr/sbin/hping3
从 cron 执行时,hping3 是否可能无法执行(具有 open_sockraw 操作权限)?我尝试以 root cron 运行相同的脚本,但没有成功。
感谢您的建议。
特克斯