2012-04-16 3 views
0

У меня есть сценарий bash, который должен проверять исполняемый экземпляр программы, и если его выполнение не выполняется, выполните команду (эхо для целей тестирования). Проблема в том, что bash не выполняет команду, даже если она работает, когда я копирую/вставляю команду непосредственно в командную строку. Я предполагаю, что моя проблема проста и вызвана моей наивностью с языком сценария.Bash Script не выполняет команду

линия в вопросе:

ps -ef | grep -v grep | grep $SCRIPT > /dev/null || echo "`date` - $0 : $SCRIPT stopped. Restarting..." 

Если я вставить его в командной строке она отлично работает, но когда я бегу мой сценарий ничего не происходит. Предложения?

EDIT: Я считаю, что я решил проблему. Сценарий, который выполняется для проверки queue_reader.sh сценария, я сдуру по имени check_queue_reader.sh «поэтому команда ps -ef находила сам предотвращая || от исполнения.

+0

Обеспечить больше кода в контексте пожалуйста. – Cfreak

+2

вы уверены, '$ SCRIPT' устанавливается в одно и то же в сценарии bash и on командной строки? – jwodder

+0

Там действительно не так много. У меня есть сценарий, который должен быть запущен, и собирался отбросить его в задание crontab, чтобы он проверял и перезапускал процесс, если это необходимо. Единственный оставшийся мой скрипт прямо сейчас - это переменные, которые не будут предоставлять какой-либо контекст ситуации. – Grambot

ответ

0

См редактирования на исходном сообщении.

сценария я бег был назван» check_queue_reader.sh»и с помощью Grep для поиска ps -ef для„queue_reader.sh“. Это вызвало сценарий, чтобы найти себя таким образом, не чек, когда он попал в ||