Я просто переключился на сервер Ubuntu 14.04 с 11,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 серверах это работало. Каждый раз, когда я уничтожил aserver, система перезагрузит. Но на 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 - то, потому что она пытается послать мне по электронной почте, и она не может, но это не должно предотвращать перезагрузку.
Я попытался выполнить команду за пределами крона, и это работает просто великолепно. Я использую прямой путь так, чтобы не должна была быть проблема. Я также попытался добавить "sh" перед командой. appmon.log ничего не показывает. Я попытался поместить другие команды в файл, и они работают просто великолепно.
Я понял это! Проблемой была проблема пути для перезагрузки. Я должен был поместить "sudo/sbin/reboot теперь" в arewerunning.sh. Я читал о проблемах пути для других команд, но не помещал два и два вместе, что перезагрузка была также командой, в путь которой, возможно, вмешались.