Имеется скрипт, мониторящий в бесконечном цикле php-процессы. Следит за их памятью, убивает\запускает. Свои действия пишет в лог-файл. Так вот столкнулся с такой проблемой: после команды запуска php-скрипта прекращается любая запись в лог.
Хотя сам скрипт благополучно висит дальше в памяти, выполняет свою работу, но молчит как партизан. Строка "starting new server.." будет последней в логе. Если запускать php-процессы не требуется, то он будет успешно писать в лог все, что нужно.
Помоему последним амперсандом & Вы отправляете процесс на задний фон и управляющий скрипт просто дальше не идет.
Привели бы весь скрипт, а то гадание получается.
У тебя второй процесс в бекграунде, попробуй первый (т.е. твой скрипт) вывести в фореграунд - вызвать.
По пункту 1. Нормально формирует имя файла, создает и пишет в него. Ведь даже без переделоок путей в абсолютные - он пишет логи в этот файл, начинает писать. Ровно до момента вызова внешнего php скрипта. После вызова - молчит (но работает дальше).
По пункту 2. Как вывести в фореграунд? Просто с консоли его вызвать? Или вызвать его самого в скрипте? Но тогда рекурсия какая-то безумная получается. Или я неправильно понял?
1. ИМХО, не нравится мне logfile="log/controller"_`date +%F`.log - есть предположение, что он путь к файлу не находит, вот и не пишет туда. Попробуй абсолютный путь прописать для экперима. 2. php -q /home/kadabrik/webroot/test/index.php server_start=request_start >> /dev/null & У тебя второй процесс в бекграунде, попробуй первый (т.е. твой скрипт) вывести в фореграунд - вызвать.
По пункту 1. Нормально формирует имя файла, создает и пишет в него. Ведь даже без переделоок путей в абсолютные - он пишет логи в этот файл, начинает писать. Ровно до момента вызова внешнего php скрипта. После вызова - молчит (но работает дальше). По пункту 2. Как вывести в фореграунд? Просто с консоли его вызвать? Или вызвать его самого в скрипте? Но тогда рекурсия какая-то безумная получается. Или я неправильно понял?
По пункту 1. Что будет после вывода echo "$PWD" > 1.txt
Boboms - огромное спасибо. Как я мог не увидеть этой очевидной причины раньше? После запуска php-скрипта путь в $logfile указывался относительно php скрипта))) Указал полный путь к папке логов - все работает как часы, никакой больше мистики.
Boboms - огромное спасибо. Как я мог не увидеть этой очевидной причины раньше? После запуска php-скрипта путь в $logfile указывался относительно php скрипта))) Указал полный путь к папке логов - все работает как часы, никакой больше мистики.
Да я сам просто с похожим позавчера трахался. Благо коньяк был хороший По аналогии, так сказать.
Да я сам просто с похожим позавчера трахался. Благо коньяк был хороший По аналогии, так сказать.
[quote]
Что то мне и коньяк не помогает в таких случаях!)))
Ну вот теперь я совсем озадачен. Насколько велика разница в sh-скриптах для Linux и FreeBSD? Перебрались на хостинг с FreeBSD и скрипты перестали работать. По логам как-то не могу понять что там происходит.. то скрипт не видит запущенные процессы, не убивает их, запускает новые. То видит и работает. Мистика.
Какие основные различия с скриптингах? Или где можно почитать насчет этого?
Ну вот теперь я совсем озадачен. Насколько велика разница в sh-скриптах для Linux и FreeBSD? Перебрались на хостинг с FreeBSD и скрипты перестали работать. По логам как-то не могу понять что там происходит.. то скрипт не видит запущенные процессы, не убивает их, запускает новые. То видит и работает. Мистика.
Какие основные различия с скриптингах? Или где можно почитать насчет этого?
Если вы и там, и там используете bash и установили GNU'тые версии sed и прочего, то разницы никакой. Но проблема в том, что по-умолчанию там вовсе не баш и совершенно другие версии утилит.
При запуске вручную через ssh выводит в файл file.log - PID процесса и строчку test. При запуске этого скрипта через крон (от имени того же самого пользователя) с параметрами test.sh > /dev/null 2>&1 в логфайле получаю следующее:
Terminated
test
Что это за Terminated? В чем тут проблема? Отчасти из-за таких вещей на Freebsd у меня некорректно работают вышеупомянутые скрипты. Причем только если их вешать на крон. В ручном режиме через ssh все работает чудесно. Куда копать?
Вот нашел в чем проблема: при выводе "ps ax" - через крон результаты в строках обрезаются после 80 символов. Через консоль не обрезаются и все работает. Пробовал в линуксе через крон - тоже не обрезаются. Неужели это такая фича FreeBSD? Никак ее обойти нельзя?