crontab,想说爱你不easy

悲剧的背景

跑自己主动化脚本的机器连不上toastserver了,

仅仅能自己写个脚本每天跑了。

当然要放在crontab里了。

5 3 * * * sh ~/nosecron.sh

更悲剧的结果

第二天过来一看结果,FAIL了大半。

烦燥的分析

非常多都是由于:

catch_pkts.append(pkt.getlayer(IP).build())

AttributeError: 'NoneType' object has no attribute 'build'


然后在log的最前面有一句:

WARNING: Failed to execute tcpdump. Check it is installed and
in the PATH


手动运行tcpdump, OK

手动运行了nosecron.sh, OK

在nosecron.sh里加了句echo $PATH, 放在crontab里再跑下,竟然仅仅有:

/usr/sbin:/usr/bin

高速的解决

在nosecron.sh最前面 加上

export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

巧妙的解决

在crontab里:

5 3 * * * su - root -c "sh /root/nosecron.sh"

一劳永逸的解决

在crontab里最前面加上:

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

可惜不知道为什么不生效。

上一篇:Java设计模式汇总


下一篇:EL表达式总结