Jump to content

Recommended Posts

Posted

Есть такой 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").

 

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

Но в этом раз я свободное места проверил, его много.

Что еще тут может быть?

Posted

FreeBSD ?

Попробуйте без  2>&1

Не помню, что конкретно, но у sh какие-то заморочки с этим бывают.

 

#echo "bla-bla" >> /tmp/bla-bla.txt 2>&1
Неоднозначное перенаправление вывода.

В bash такое прокатывает без проблем.

Posted
2 часа назад, alibek сказал:

 


5    *      *   *   *  user   cd /extra/jobs/bm_paygate  && ./payments_registry.sh >> output.log 2>&1

 

на почту юзеру user чтото прилетает ? по идее туда должен свалиться stderr от вашего скрипта при таком наборе перенаправлений. Ну или перенесите 2>&1 до >> output

 

 

 

Posted
1 час назад, st_re сказал:

на почту юзеру user чтото прилетает ? по идее туда должен свалиться stderr от вашего скрипта при таком наборе перенаправлений. Ну или перенесите 2>&1 до >> output

 

 

 

Да это sh то ли не умеет/не знает, то ли синтаксис 2>&1 другой. 

echo "bla-bla" 2>&1 >> /tmp/bla-bla.txt
Неоднозначное перенаправление вывода.

P.S. Походу не умеетсовсем не умеет

Posted

cd в некоторых системах не является отдельной командой и выполняется оболочкой. Поэтому в ряде случаев при выполнении через cron нужно писать что-то вроде bash -c "cd /qwe/asd ; ./zxc"

Может быть у автора та же проблема?

Posted
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").

 

Posted

Тьфу ты.

Кончилось место на диске.

Глаз замылился, был уверен, что /extra/jobs это симлинк на отдельный раздел, а оказалось, что нет.

Так что никаких загадок, причина та же, что в прошлый раз.

Posted
10 минут назад, alibek сказал:

Тьфу ты.

Кончилось место на диске.

Глаз замылился, был уверен, что /extra/jobs это симлинк на отдельный раздел, а оказалось, что нет.

Так что никаких загадок, причина та же, что в прошлый раз.

Га-га-га! Я пАдстАлом.. :-)

Развел диспут, а дело было как всегда, не в бабине..

 

P.S. Но то, что написал про sh, действительности соответствует на все 100%. 

Сам с этим безуспешно пытался бороться.. Отчего и так упрямо "наезжал на оппонентов". :-)

По-видимому, у Вас sh -это симлинк на bash. "Чистый sh" точно не умеет - проверял на фре, где bash не установлен.

Posted

Что бы не зависеть от версий шелла или системДы, не проще ли в самом скрипте указывать и шелл, какой использовать, и вывод, куда редиректить?

Posted

А чем бы это помогло?

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

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

Posted

Конкретно в данном случае нет - не помогло. Но в будущем, в разных случаях, например, когда будете переползать с крона на системд, очень даже поможет не переписывать кучу своих скриптов. :) Не мешает вырабатывать стиль написания скриптов и программ, дабы избавить себя от множества проблем в будущем.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...
На сайте используются файлы cookie и сервисы аналитики для корректной работы форума и улучшения качества обслуживания. Продолжая использовать сайт, вы соглашаетесь с использованием файлов cookie и с Политикой конфиденциальности.