Cron 正在运行但 CMD 不起作用

Cron 正在运行但 CMD 不起作用

我刚刚从 11.04 服务器切换到 Ubuntu 14.04 服务器。在 /var/spool/cron/crontabs/root 中,我有以下行:

* * * * * /root/arewerunning.sh > /root/appmon.log

arewerunning.sh 如下所示:

#!/bin/sh

if P=$(pgrep aserver)
then
  echo  " "
else
  echo "aserver has stopped. System Will reboot"
sudo reboot now
fi

在 11.04 服务器上,此方法有效。每当我关闭服务器时,系统都会重新启动。但在 14.04 上,命令似乎正在运行,但系统不会重新启动。cron.log 如下所示:

(root) CMD (/root/arewerunning.sh > /root/appmon.log)

当进程还没有被终止时:

(root) CMD (/root/arewerunning.sh > /root/appmon.log)
(CRON) info (No MTA installed, discarding output)

当进程被终止时。我知道 MTA 线路是因为它试图给我发电子邮件但发不出来,但这不应该阻止重新启动。

我尝试在 cron 之外运行该命令,它运行良好。我使用的是直接路径,所以这应该不是问题。我还尝试在命令前面添加“sh”。appmon.log 没有显示任何内容。我尝试将其他命令放入文件中,它们运行良好。

答案1

我找到了!问题出在重启的路径问题上。我不得不在 arewerunning.sh 中输入“sudo /sbin/reboot now”。我读过有关其他命令的路径问题的文章,但没有想到重启也是一个路径可能被篡改的命令。

相关内容