alibek Опубликовано 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"). Однажды у меня уже было такое странное поведение, причиной которого оказалось отсутствие свободного места на диске. Но в этом раз я свободное места проверил, его много. Что еще тут может быть? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 20 сентября, 2018 · Жалоба FreeBSD ? Попробуйте без 2>&1 Не помню, что конкретно, но у sh какие-то заморочки с этим бывают. #echo "bla-bla" >> /tmp/bla-bla.txt 2>&1 Неоднозначное перенаправление вывода. В bash такое прокатывает без проблем. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
st_re Опубликовано 20 сентября, 2018 · Жалоба 2 часа назад, alibek сказал: 5 * * * * user cd /extra/jobs/bm_paygate && ./payments_registry.sh >> output.log 2>&1 на почту юзеру user чтото прилетает ? по идее туда должен свалиться stderr от вашего скрипта при таком наборе перенаправлений. Ну или перенесите 2>&1 до >> output Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Ivan_83 Опубликовано 20 сентября, 2018 · Жалоба Крон вроде как работает от обрезанного окружения, там многих переменных окружения нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 20 сентября, 2018 · Жалоба 1 час назад, st_re сказал: на почту юзеру user чтото прилетает ? по идее туда должен свалиться stderr от вашего скрипта при таком наборе перенаправлений. Ну или перенесите 2>&1 до >> output Да это sh то ли не умеет/не знает, то ли синтаксис 2>&1 другой. echo "bla-bla" 2>&1 >> /tmp/bla-bla.txt Неоднозначное перенаправление вывода. P.S. Походу не умеет, совсем не умеет Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
TheUser Опубликовано 20 сентября, 2018 · Жалоба cd в некоторых системах не является отдельной командой и выполняется оболочкой. Поэтому в ряде случаев при выполнении через cron нужно писать что-то вроде bash -c "cd /qwe/asd ; ./zxc" Может быть у автора та же проблема? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 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"). Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 20 сентября, 2018 · Жалоба Тьфу ты. Кончилось место на диске. Глаз замылился, был уверен, что /extra/jobs это симлинк на отдельный раздел, а оказалось, что нет. Так что никаких загадок, причина та же, что в прошлый раз. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
AlKov Опубликовано 20 сентября, 2018 · Жалоба 10 минут назад, alibek сказал: Тьфу ты. Кончилось место на диске. Глаз замылился, был уверен, что /extra/jobs это симлинк на отдельный раздел, а оказалось, что нет. Так что никаких загадок, причина та же, что в прошлый раз. Га-га-га! Я пАдстАлом.. :-) Развел диспут, а дело было как всегда, не в бабине.. P.S. Но то, что написал про sh, действительности соответствует на все 100%. Сам с этим безуспешно пытался бороться.. Отчего и так упрямо "наезжал на оппонентов". :-) По-видимому, у Вас sh -это симлинк на bash. "Чистый sh" точно не умеет - проверял на фре, где bash не установлен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 20 сентября, 2018 · Жалоба Что бы не зависеть от версий шелла или системДы, не проще ли в самом скрипте указывать и шелл, какой использовать, и вывод, куда редиректить? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
alibek Опубликовано 20 сентября, 2018 · Жалоба А чем бы это помогло? Тут причина в невнимательности, я ошибочно посчитал, что свободное место на диске есть. Я вначале забыл указать, что этот скрипт более года нормально работал, так что проблема точно не в особенностях крона или шелла. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vop Опубликовано 20 сентября, 2018 · Жалоба Конкретно в данном случае нет - не помогло. Но в будущем, в разных случаях, например, когда будете переползать с крона на системд, очень даже поможет не переписывать кучу своих скриптов. :) Не мешает вырабатывать стиль написания скриптов и программ, дабы избавить себя от множества проблем в будущем. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...