Добрый день/вечер/утро (выбрать нужное) всем!
Достала беда с Cron: на одном из серверов имеет наглость не работать!
История: есть два новых сервера HP, абсолютно одинаковы по железу, за исключением того, что на одном рейд-масив, а на втором нет.
На обоих установлена Ubuntu server 12.04 c одного диска. На обоих самба, апач, вирт.машины (KVM). На первом еще джаббер и бинд крутятся. Почтовика нет нигде.
По большому счету все, но.....
На первом сервере Cron пашет как миленький, а на втором (crontab -e из под рута) не хочет выводить даже тестовое
* * * * * echo "Hello!"
На законный вопрос: "- а что же в логах?" дословный ответ:
CRON info (no MTA installed, discarding output)
Вроде напрашивается вывод поставить почтовик, однако после установки оного (перепробовал несколько, последний postfix), в лучшем случае отправляется юзеру письмо с Hello!.
В сислоге имеем: (root) CMD (echo "Hello!"), в почте Hello!.
Пришло на ум сравнить конфиги Cron на обоих серверах.
После удаления Anacron на втором сервере (на первом его не было), конфиги стали как две капли воды (сравнивал каждый файл с помощью diff), кроме лишнего файла mdadm в /etc/cron.daily на первом сервере.
А воз и ныне там...
Проверял права на сrontab и прочие в /etc/cron.d - владелец - root rw-r--r--.
У скриптов в /etc/cron.daily, cron.hourly, cron.monthly, cron.weekly владелец - root rwxr-xr-x.
Что дальше делать - ума не приложу
Прошу совета и помощи, если кто может.
Пользователь решил продолжить мысль 27 Сентября 2013, 12:43:04:
Вот что обнаружил: если в теле скрипта имеется любая команда ввод-вывода тогда все операции выполняются каким-то непонятным образом с выводом результатов программы на почту рута, но реально в системе никаких изменений не производится
Как оказалось это правило действует и для первого сервера!
Другие же команды например архивирование, создание файлов и т.п. выполняется кроном безупречно на обоих серверах.
В конце концов нашел на этом же форуме (
https://forum.ubuntu.ru/index.php?topic=218416.0):
Грабли, на которые можно наткнуться при работе с кроном:
1. Интерпретатор. Скрипт должен начинаться с
#!/bin/bash
2. Права. На исполнение. Я ставил 755
3. В конце скрипта должна быть пустая строка
4. Полные пути ко всем командам в скрипте - у крона окружение отличается от пользовательского
(будет работать в консоли, а при запуске кроном - нет)
Спасла последняя строчка.
После добавления "/sbin/" перед "route" скрипт заработал:
#!/bin/bash
MAIN=X.X.X.X
SECOND=Y.Y.Y.Y
# Проверяем, пингуется ли основной шлюз.
if fping -c3 $MAIN; then
/sbin/route del default
/sbin/route add default gw $MAIN
exit0
else
if if fping -c3 $SECOND; then
/sbin/route del default
/sbin/route add default gw $SECOND
exit0
else
exit0
fi
fi
Вывод: имело место непонимание и незнание того, как работает Cron.