Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > *NIX системы: Общие вопросы > Великий CRON , проблемы с ним ...


Автор: nIkTo 19.7.2007, 00:38
Люди помогите понять что происходит, я мозг себе сломал :
вобщем есть php скрипт, например (упрощенный вариант):
Код

<? echo "It's works\n"; ?>

выполним его через консоль:
Код

[tools@tt test]$ php 1.php
It's works
[tools@tt test]$

теперь выполним так:
Код

[tools@tt test]$ php 1.php > log.txt
[tools@tt test]$ ls -l log.txt
-rw-rw-r--  1 tools tools 11 Jul 18 23:11 log.txt
[tools@tt test]$

что и следовало ожидать, пока всё логично, идём дальше, попробуем поставить выполнение этого скрипта на CRON
Код

[tools@tt test]$ cat > cron
SHELL=/bin/bash
MAILTO=tools
0-59 * * * * cd /home/tools/public_html/test/; php 1.php > /home/tools/public_html/test/log.txt
[tools@tt test]$ crontab cron
[tools@tt test]$ crontab -l
SHELL=/bin/bash
MAILTO=tools
0-59 * * * * cd /home/tools/public_html/test/; php 1.php > /home/tools/public_html/test/log.txt
[tools@tt test]$ 

все ок, задание добавилось в крон, теперь каждую минуту будет запускаться :
cd /home/tools/public_html/test/; php 1.php > /home/tools/public_html/test/log.txt
следовательно в скором времяни мы должны увидеть в файле /home/tools/public_html/test/log.txt следущую фразу "It's works", но что мы видим через некоторое время появляется файл log.txt, листинг:
Код

[tools@tt test]$ ls -l log.txt
-rw-rw-r--  1 tools tools 0 Jul 18 23:23 log.txt
[tools@tt test]$

но почему он не содержит в себе информации ? ведь при выполнении php 1.php > /home/tools/public_html/test/log.txt фраза "It's works" выводимая 1.php должна перенаправляться в файл log.txt .....
Собственно вопрос куда пропала строка которая должна быть перенаправлена в log.txt ?

ЗЫ таже операция проделаная с 1.pl (Perl скриптом) завершилась удачей, тоесть из крона строка "It's works" так же писалась в log.txt

Автор: JackYF 19.7.2007, 01:39
nIkTo, во-первых, покажи на всякий случай, что ты делал с 1.pl и что записалось в кронтаб, на всякий случай.

Во-вторых, попробуй прописать полный путь на php: /usb/bin/php или где он там у тебя стоит.

Автор: bilbobagginz 19.7.2007, 21:39
nIkTo, во первых, если вы хотите сказать "оно работает", то нужно писАть "it works".
А "It's works", это больше похоже на "работы оного".   т.е.,  
во-первых, нужно прочитать мануал английского. 

во вторых, в строке таблицы крон обычно пишется 1 команда, которая пишет на stdout.
все перенаправления обычно "обволакивают" каким-то скриптом, который называют каким-то смысловым именем. напр. update_log.sh или obnovim_dnevnik.sh.  a внутри скрипта делают все эти cd; /blablabla/script > /blablabla/log.txt

в третьих, так как этот скрипт скорее всего должен создавать файлы читабельные пользователем веб-сервера, лучше всего использовать системный файл /etc/crontab, а не таблицу пользователя web-сервера. этому пользователю (в системах дебиан его называют www-data) лучше вообще не давать создавать свою таблицу крон от греха подальше.

почитайте мануал крона или статью в нашем форуме там это все обсосано до косточек.

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

удачи.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)