2014-11-11 3 views
0

. Мы запускаем инструмент на другом компьютере, вызывая скрипт оболочки для его запуска, сценарий находится в фоновом режиме с помощью «nohup scriptname» по некоторым причинам, t знает, что скрипт прекращается через некоторое время, я хочу, чтобы скрипт продолжал проверять, остановлен ли сценарий и запускает его снова.Проверьте, запущен ли скрипт nohup или запущен

У меня очень мало знаний по сценарию оболочки, но внезапно это требование появилось, и я искал в google, но не получил правильного ответа, пожалуйста, помогите.

+1

Можете ли вы быть более p произносите и дайте фрагмент. Как вы подключаете и запускаете скрипт на удаленных компьютерах? –

+0

не стоит беспокоиться, считайте это так же просто, как скрипт работает в моей Linux-системе, я просто хочу проверить, все ли работает, или запустить его снова, если нет. –

ответ

1

Это простое и эффективное решение.

Во-первых, сценарий, который должен быть запущен снова, давайте назовем его bar.sh:

#! /bin/bash 

echo "bar is living" 
sleep 5 
echo "bar is dying" 
exit 

Во-вторых, сценарий, который работает bar.sh и наблюдает за его смерть, называется foo.sh:

#! /bin/bash 

while true ; do 

    echo "Running bar ..." 
    ./bar.sh & 

    echo "Waiting bar's termination" 
    wait 
done 

Теперь просто введите терминал:

$ chmod +x foo.sh bar.sh 
$ ./foo.sh 
+0

очень спасибо и +1 для этого примера, могу ли я запустить его с помощью nohup слишком –

+0

будет ли это также работать, если bar.sh был прерван abnormaly –

+0

Да; он сохранится до конца вашего терминала, и выход будет сохранен в файле или отправлен вам по электронной почте системой. –

Смежные вопросы