Проблема с cron

D
На сайте с 28.06.2008
Offline
1101
426

Есть root доступ к серверу. На сервере есть говнопанель и в ней несколько юзеров.

В папке /var/spool/cron/crontabs я вижу файлы крон этих юзеров.

А мне нужно запустить крон от рута.  зашел через crontab -e cоздал файл с названием root прописал команду, корректно пересохранил, и нифига! 

В сис логе вижу что команда выполняется, но эффекта нет.  Как так?

если тут же выполнить эту команду просто в консоле от рута - все работает

Это просто запуск пхп скрипта


Евгений Крупченко
На сайте с 27.09.2003
Offline
178
#1

если выполняется, то выполняется... надо проблему искать не в кроне.

возможно php скрипт заканчивается какой-то ошибкой - потому и нет "эффекта".

можно пропробовать вручную:

заходим в /etc/cron.d и создаем там файл с любым именем.

в первой строке пишем MAILTO=[ящик куда пойдет письмо в случае чего]

дальше:

* * * * * root [путь к php] [путь к скрипту]

периодичность запуска естественно ставим какую нужно.

если скрипт закончится с ошибкой, на ящик придет все что он там написал.


проблема еще можеть быть в самой строке запуска. например пишете просто php. у вас работает, но у крона может не работать, лучше писать полный абсолютный путь.

также и со скриптом самим. вы его может запускаете из его папки и внутри скрипта используются относительные пути. а потом из под крона оно может оказаться что запускается из другой папки - опять же, лучше использовать абсолютные пути. или вверху скрипта задать какой-то ROOT='путь' и дальше в скрипте использовать не относительные пути, а ROOT плюс что там нужно...


короче надо смотреть вживую, без этого можно лишь догадываться что там у вас не срабатывает.

baas
На сайте с 17.09.2012
Offline
161
#2
Возможно нужно указать полные пути к командам в скрипте который запускается по крону.
Настройка BSD систем. (https://www.fryaha.ru) Знание сила, незнание Рабочая сила!
D
На сайте с 28.06.2008
Offline
1101
#3

прописал в конце команды вывод в лог

* * * * * /usr/bin/php /var/www/export.php >/var/log.log 2>&1

в логе пусто

просто запуск из консоли  /usr/bin/php /var/www/export.php  вызывает нормальное срабатывание скрипта


В сис логе

Aug 12 20:24:01 dedic1676fas CRON[769]: (root) CMD ( /usr/bin/php /var/www/export.php )  // не работает

Aug 12 20:24:01 dedic1676fas CRON[770]: (fastuser) CMD (/usr/bin/php /var/www/fastuser/data/www/wa.php)  //работает

Aug 12 20:24:01 dedic1676fas CRON[771]: (fastuser) CMD (/usr/bin/php /var/www/fastuser/data/www/co.php)   //работает

D
На сайте с 28.06.2008
Offline
1101
#4
ПРоблема решена - все это время нужный файл создавался в папке /root а не там, где я его ждал...
baas
На сайте с 17.09.2012
Offline
161
#5
Dram #:
ПРоблема решена - все это время нужный файл создавался в папке /root а не там, где я его ждал...

А как вы его создавали или чем?

Евгений Крупченко
На сайте с 27.09.2003
Offline
178
#6

да просто в скрипте используются относительные пути скорей всего.

вот и выходит, что если по обычному запускать, из его же папки, то все в норме.

но крон запускает этот скрипт находясь в /root - домашнем каталоге юзера root


короче не в кроне дело, а в скрипте самом

либо править все на абсолютные пути, либо можно попробовать в самом верху добавить:

chdir(pathinfo($_SERVER['SCRIPT_FILENAME'],PATHINFO_DIRNAME));

т.е. определить полный путь к скрипту, взять из него имя каталога и перейти в него. дальше уже можно относительными путями оперировать.

FoxCloud
На сайте с 08.11.2016
Online
57
#7
дравствуйте!
Чтобы достичь результат в выполнении скрипта через крон, в вашем случае поможет следующее:

1. Важно! Убедитесь, php обработчик скрипта указан через абсолютный путь. К примеру: /usr/bin/php или /opt/php71/bin/php
2. Убедитесь, что у вас есть end-of-file (EOF) символ.
Для этого:
- crontab -e
- Нажмите кнопку "Insert", спуститесь в самый конец файла и переведите строку (Enter). Файл сохраните: wq!

Также это можно сделать через:
vi /var/spool/cron/crontabs/root

Желаем вам победить проблему!
FoxCloud ( http://ru.foxcloud.net/ )размещение в Европе / Америке / России. Серверы для любого проекта.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий