繁体   English   中英

我的crond工作未按预期进行,为什么?

[英]My crond job doesn't work as expected, why?

我创建了一个Shell脚本来检查tomcat实例的状态。 如果实例尚未启动,请启动它:

if [ `ps -ef | grep 'travelco' | grep -v grep | wc -l` -eq 0 ];then
sudo /home/q/tools/bin/restart_tomcat.sh /home/www/travelco/
else
  echo 'travelco started'
fi

然后,我对该脚本进行了测试,效果很好。 但是,当我将其添加为基本作业后,此脚本无法按预期工作。 我使用了crontab -e ,并添加了

*/1 * * * * /home/yuliang.jin/travelcoCheck.sh

之后,即使我可以在crontab日志中看到执行的脚本( sudo tail -f /var/log/cron ),tomcat实例也没有启动。 为什么?

您的脚本中有一个sudo ,但是您确定当前用户有权执行/home/q/tools/bin/restart_tomcat.sh而不进行密码身份验证吗?

您应该将脚本添加到/etc/sudoers以允许当前用户无需密码即可执行脚本,或者您可以sudo crontab -e以root身份运行脚本(如果您使用脚本,请不要忘记删除sudo这样做)。

  1. 如果还有其他选择,请不要在cron作业中使用sudo。

  2. travelcoCheck.sh将与grep travelco匹配,并且不会被grep -v grep取消,因此wc -l始终至少为1。 因此restart_tomcat.sh将不会运行。

(作为附带说明:您的ps解析堆栈是否被ps捕获是一种黑暗的艺术,充满了极端情况和竞赛条件,通常很难正常工作。像这样的东西就是dbus发明的原因。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM