alibek Posted September 20, 2018 Есть такой bash-скрипт: #!/bin/sh echo "Check payments registry, `date`..." cd /data/sites/paygate/job /usr/bin/php -q registry.php Запускается кроном, примерно так (строчка из кронтаба): 5 * * * * user cd /extra/jobs/bm_paygate && ./payments_registry.sh >> output.log 2>&1 Крон задачу запускает, в логах запись есть: Sep 20 07:05:01 srv-svc03 /USR/SBIN/CRON[8422]: (user) CMD ( cd /extra/jobs/bm_paygate && ./payments_registry.sh >> output.log 2>&1) Но скрипт не работает, в output.log ничего не добавляется. Если файл output.log удалить, то после срабатывания крона появляется пустой файл output.log (нулевой длины). Самое интересное и непонятное. Захожу на сервер под пользователем user. Выполняю команду cd /extra/jobs/bm_paygate — успешно. Выполняю команду ./payments_registry.sh — успешно, выводится текст "Check payments registry", затем php-скрипт выполняется и выводит какой-то текст. Выполняю команду ./payments_registry.sh >> output.log 2>&1 — проблема повторяется, скрипт не работает, в output.log вывода нет (даже "Check payments registry"). Однажды у меня уже было такое странное поведение, причиной которого оказалось отсутствие свободного места на диске. Но в этом раз я свободное места проверил, его много. Что еще тут может быть? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted September 20, 2018 FreeBSD ? Попробуйте без 2>&1 Не помню, что конкретно, но у sh какие-то заморочки с этим бывают. #echo "bla-bla" >> /tmp/bla-bla.txt 2>&1 Неоднозначное перенаправление вывода. В bash такое прокатывает без проблем. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
st_re Posted September 20, 2018 2 часа назад, alibek сказал: 5 * * * * user cd /extra/jobs/bm_paygate && ./payments_registry.sh >> output.log 2>&1 на почту юзеру user чтото прилетает ? по идее туда должен свалиться stderr от вашего скрипта при таком наборе перенаправлений. Ну или перенесите 2>&1 до >> output Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Ivan_83 Posted September 20, 2018 Крон вроде как работает от обрезанного окружения, там многих переменных окружения нет. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted September 20, 2018 1 час назад, st_re сказал: на почту юзеру user чтото прилетает ? по идее туда должен свалиться stderr от вашего скрипта при таком наборе перенаправлений. Ну или перенесите 2>&1 до >> output Да это sh то ли не умеет/не знает, то ли синтаксис 2>&1 другой. echo "bla-bla" 2>&1 >> /tmp/bla-bla.txt Неоднозначное перенаправление вывода. P.S. Походу не умеет, совсем не умеет Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
TheUser Posted September 20, 2018 cd в некоторых системах не является отдельной командой и выполняется оболочкой. Поэтому в ряде случаев при выполнении через cron нужно писать что-то вроде bash -c "cd /qwe/asd ; ./zxc" Может быть у автора та же проблема? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted September 20, 2018 11 минут назад, TheUser сказал: cd в некоторых системах не является отдельной командой и выполняется оболочкой. Поэтому в ряде случаев при выполнении через cron нужно писать что-то вроде bash -c "cd /qwe/asd ; ./zxc" Может быть у автора та же проблема? Эх.. Диагональное чтение детектед.. 4 часа назад, alibek сказал: Выполняю команду ./payments_registry.sh — успешно, выводится текст "Check payments registry", затем php-скрипт выполняется и выводит какой-то текст. Выполняю команду ./payments_registry.sh >> output.log 2>&1 — проблема повторяется, скрипт не работает, в output.log вывода нет (даже "Check payments registry"). Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted September 20, 2018 Тьфу ты. Кончилось место на диске. Глаз замылился, был уверен, что /extra/jobs это симлинк на отдельный раздел, а оказалось, что нет. Так что никаких загадок, причина та же, что в прошлый раз. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
AlKov Posted September 20, 2018 10 минут назад, alibek сказал: Тьфу ты. Кончилось место на диске. Глаз замылился, был уверен, что /extra/jobs это симлинк на отдельный раздел, а оказалось, что нет. Так что никаких загадок, причина та же, что в прошлый раз. Га-га-га! Я пАдстАлом.. :-) Развел диспут, а дело было как всегда, не в бабине.. P.S. Но то, что написал про sh, действительности соответствует на все 100%. Сам с этим безуспешно пытался бороться.. Отчего и так упрямо "наезжал на оппонентов". :-) По-видимому, у Вас sh -это симлинк на bash. "Чистый sh" точно не умеет - проверял на фре, где bash не установлен. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted September 20, 2018 Что бы не зависеть от версий шелла или системДы, не проще ли в самом скрипте указывать и шелл, какой использовать, и вывод, куда редиректить? Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
alibek Posted September 20, 2018 А чем бы это помогло? Тут причина в невнимательности, я ошибочно посчитал, что свободное место на диске есть. Я вначале забыл указать, что этот скрипт более года нормально работал, так что проблема точно не в особенностях крона или шелла. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
vop Posted September 20, 2018 Конкретно в данном случае нет - не помогло. Но в будущем, в разных случаях, например, когда будете переползать с крона на системд, очень даже поможет не переписывать кучу своих скриптов. :) Не мешает вырабатывать стиль написания скриптов и программ, дабы избавить себя от множества проблем в будущем. Вставить ник Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...