Не работает cron в Ubuntu?

Недавно была проблема. После переноса сайта, который крутился на сервере с FreeBSD, на сервер под Ubuntu. И задания в cron были перенесены тоже полностью. Скрипты, которые должен был исполнять cron отвечали за рассылку почты подписчикам. И чтобы не повалить ничего отправлялись партиями по несколько штук раз в минуту. Но они не работали. Я, признаться, не спец по Linux и в причинах разбирался долго. Вот так выглядело задание в кроне:

*/1   *   *   *   *     root    ~/сам_скрипт/

На первый взгляд все довольно логично. Выполнять раз в минуту от пользователя root такой-то скрипт. Неразбериха была в том, что запущенный не из крона, скрипт срабатывал и рассылал сообщения. Сами задания на сервере с фрибздёй работают нормально. Моему неопытному взгляду предстала картина из которой я поспешил сделать неверный вывод о неработающем кроне и начал искать пути решения. Дебаг в виде заведомо рабочих команд, типа:

 */1   *   *   *   *     root    touch ~/test.sh/

ни к чему не приводил.  Потратил я времени довольно много на поиски проблемы. Когда по всем запросам в гугле выдача состояла из посещенных ссылок я начал стучаться в аськи к знакомым с проблемой. На первый взгляд строка выглядит правильно и логично, что подтверждали и все знакомые. Но спасибо Артуру! Он пригляделся и посоветовал протестить без указания, от чьего имени запускать скрипт. То есть задача в кроне стала выглядеть вот так:

*/1   *   *   *   *     ~/сам_скрипт/

Признаться, положительного результата я не ждал и уже, в общем, отчаялся. Какова была моя радость, когда создался тестовый файлик (тестил я еще с функцией touch). Оказалось, что виной всему было отсутствие опыта и невнимательность к мелочам. Да, на фрибсд команда срабатывала корректно. Да, сама по себе она выглядела нормально. Да, встречалось подобное и на форумах. Но незнание таких мелочей, что для Ubuntu не нужно указывать имя пользователя, от кого исполнять команду отняло немало времени!

Собственно, мораль сей басни следующая:»Если что-то не работает, даже если кажется, что должно работать, думай о мелочах и отличиях места, где не работает, от места, где работало. Особенно, если приходится копировать, а не писать свое!»

 

{ Оставить комментарий }

  1. Дмитрий

    У меня сейчас такая же ерунда, скрипт твиттера не работает из крона, но прекрасно пашет из адресной строки. различия в том, что переменная $_SERVER['DOCUMENT_ROOT'] в нем выдает разные пути, если читать ее кроном и вызывать из адресной строки браузера. Может, кому пригодится