LINUX.ORG.RU

cront + sh + mono

 , ,


0

1

Есть приложение на С#. Для запуска использую скрипт: *run.sh

-------------------

#!/bin/sh

y=`eval ps ax | grep -v grep | grep PROGA | awk '{ print $1 }'`

if [$y]

then

echo «PROGA is working»

else

echo «Try start PROGA»

exec `/usr/bin/screen -dmS PROGA mono proga.exe`

fi

exit 0

-------------------

При запуске скрипта вручную все срабатывает как надо

добавляю запись в cron через crontab -e

*/5 * * * /var/proga/run.sh > /dev/null

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



Последнее исправление: vik_orel (всего исправлений: 2)

y=`eval ps ax | grep -v grep | grep PROGA | awk '{ print $1 }'`
if [$y]

АААААА!!!

if pgrep PROGA; then
...

не происходит

ls -l /var/proga/run.sh

Gotf ★★★
()
Ответ на: комментарий от Gotf

разницу вижу, да, одну звезду пропустил здесь, а в кроне */5 * * * *

а права у proga.exe какие должны быть, может в этом дело

vik_orel
() автор топика
Ответ на: комментарий от vik_orel

Проверяй вот это «/usr/bin/mono /path/to/proga.exe» или ты что-то недоговариваешь.

В консоле из которой ты запускаешь mono proga.exe, что выдает echo $DISPLAY ???

И что выдает ps -ef | grep mono ???

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от vik_orel

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

sdio ★★★★★
()
Ответ на: комментарий от sdio

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

vik_orel
() автор топика

блин, да добавьте уже-ж в FAQ

у кого развит эпистолярный навык, напишите - чем блин отличается запуск скрипта из интерактивного шела юзера и неинтерактивного по крону. Заодно и как добавлять запись в крон; и как отлаживать крон-скрипты :-)

а то у меня получатся только предлоги, @#$ и ссылки на RTFM

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

MKuznetsov ★★★★★
()

Добавь перевод строки в конце последней строки crontab

anonymous
()
Ответ на: комментарий от vik_orel

Поделился бы знаниями

быстрая выборка из запроса: http://google.com?q=cron++site:linux.org.ru даёт темы идентичные твоей:

а если добавить выборку из stackoverflow !! ;-)

вкратце : скрипт при исполнении из cron,at,batch получает другие переменные окружения (в частности PATH,LD_LIBRARY_PATH,UMASK) и текущий каталог + пониженный приоритет и могут быть подрезаны лимиты.

поэтому в задания крон указывать указывать ПОЛНЫЕ пути до всех команд (можно кроме находящихся в /bin), а в скрипте (или запускаемой) программе - первым делом настроить окружение (сменить рабочий каталог, установить env);

если собираешься нечто запускать по cron, то сначала проверь её работоспособность через at и nohup; На новой системе или свежем хостинге нелишне разок запланировать вывод set,ulimits,locale чтобы изучить типичное окружение ваших заданий.

MKuznetsov ★★★★★
()
Ответ на: комментарий от vik_orel

Давай-ка разберемся: PATH, при полных путях к файлам, роли не играет.

cd /var/proga : я просил запустить /usr/bin/screen -dmS PROGA /usr/bin/mono /var/proga/proga.exe Ты запускал ее находясь в /var/proga или находясь в произвольной директории? Если только в /var/proga, то ССЗБ

sdio ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.