crontab中的ss

时间:6年前   阅读:5978

使用crontab对服务器上的运行情况进行信息收集和监控,检测端口是否正常监听用到ss命令:

ret=`ss -nlp | grep xxxx`
if [ "$ret" = "" ]; then
    xxx
fi

crontab的标准输出日志中,发现无论是否正常监听端口,ret的值总是空。手动执行脚本,ret的信息就正常。奇了怪哉。

在脚本中加上调试信息: set -x,同时将错误信息也输出到log中:* * * * * ~/foo.sh > ~/foo.log 2>&1。等新log生成,发现问题:“ss: command not found”。OK,cron执行任务时找不到ss命令。

继续跟踪为何ss命令不能在crontab中使用:which ss查看ss的路径,定位ss在/usr/sbin目录内;接着在crontab中打印PATH信息,输出为:“/usr/bin:/bin”。于是真相大白:ss确实不在crontab执行时的路径下。

问题的修复也很简单:export PATH=/usr/sbin:$PATH,将这个命令放置在ss的命令之前。

顺带一提,在/etc/crontab文件,/usr/sbin目录已经被包含在执行时的路径内:PATH=/sbin:/bin:/usr/sbin:/usr/bin。

本站声明:网站内容来源于网络,如有侵权,请联系我们https://www.qiquanji.com,我们将及时处理。

微信扫码关注

更新实时通知

上一篇:50ETF期权、期货、股票有什么区别?

下一篇:50etf期权保证金计算方法是什么?

网友评论

请先 登录 再评论,若不是会员请先 注册