Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Прошу помощи: скрипт с бесконечным циклом и условием  (Прочитано 880 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kofesutra

  • Автор темы
  • Активист
  • *
  • Сообщений: 308
    • Просмотр профиля
Здравствуйте, коллеги!
Прошу помочь со скриптом: он должен периодически проверять количество запущенных процессов по имени и, в случае если количество процессов от нуля до двух вызывать скрипт завершения процессов и запуска их заново.
Вот такой срабатывает только один раз, и не срабатывает при последующих проверках.
Где что подправить, чтобы условие проверялось в бесконечном цикле?
Кстати, если запустить этот скрипт дважды, то они работают как надо О_о
#!/bin/bash

while :
 do
 
# получим количество запущенных процессов по имени
z=$(pgrep -c tester64)

# если количество процессов от 0 до 2
   if [ "$z" -eq 0 ] || [ "$z" -eq 1 ] || [ "$z" -eq 2 ]
     then

# то вызываем скрипт завершения и запускаем заново

  /home/olja/Scripts/POL_Kill.sh MQ_MT5_x64;
  sleep 2;
  /home/olja/Scripts/Metatester_start.sh;
  sleep 10s;
  fi

done

Оффлайн RingOV

  • Активист
  • *
  • Сообщений: 761
    • Просмотр профиля

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
kofesutra, А если больше 2?
Ну и чисто технически [ $(pgrep -c tester64) -le 2 ]вполне себе заменит Ваш «ужос»
« Последнее редактирование: 12 Март 2017, 19:15:44 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Цитировать
  /home/olja/Scripts/POL_Kill.sh MQ_MT5_x64;
а открыть папка ненужно?
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн kofesutra

  • Автор темы
  • Активист
  • *
  • Сообщений: 308
    • Просмотр профиля
kofesutra, А если больше 2?
Ну и чисто технически [ $(pgrep -c tester64) -le 2 ]вполне себе заменит Ваш «ужос»
Если процессов больше двух, то значит всё работает как надо. Их должно быть три.
За конструкцию вместо моего ужаса - спасибо! Я ведь не настоящий сварщик :)

Цитата: victor00000

а открыть папка ненужно?

Нет, к этой части претензий нет, всё срабатывает.

Засада в том, что цикл выходит не бесконечный. Если он сработает один раз (то есть убъёт и запустит), то дальнейшие сбои нужных процессов не обрабатывает.
« Последнее редактирование: 12 Март 2017, 19:43:28 от kofesutra »

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
kofesutra,
#!/bin/bash

while :
do
# количество запущенных процессов по имени
z=$(pgrep -c tester64)

# если количество не равно 3
if [ $z != 3 ]
then
# то вызываем скрипт завершения и запускаем заново
/home/olja/Scripts/POL_Kill.sh MQ_MT5_x64 &
sleep 3
/home/olja/Scripts/Metatester_start.sh &
sleep 10
fi

# Задержка цикла
sleep 5
done
« Последнее редактирование: 14 Март 2017, 17:32:40 от renzrv »

Оффлайн victor00000

  • Забанен
  • Старожил
  • *
  • Сообщений: 15570
  • Глухонемой (Deaf)
    • Просмотр профиля
Цитировать
# получим количество запущенных процессов по имени
z=$(pgrep -c tester64)

# если количество процессов от 0 до 2
   if [ "$z" -eq 0 ] || [ "$z" -eq 1 ] || [ "$z" -eq 2 ]

не '$2', а '$?'.
?
Нельзя друзья, дулу - AnrDaemon видите?
~.o

Оффлайн Azure

  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 6015
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
$z-ge 0
z это выхлоп grep -c и не может быть отрицательным.
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн ReNzRv

  • Старожил
  • *
  • Сообщений: 2628
    • Просмотр профиля
не может быть отрицательным
Спс, понятно. По условию ТС:
Если процессов больше двух, то значит всё работает как надо. Их должно быть три.
Заменил на:
if [ $z != 3 ]

Оффлайн kofesutra

  • Автор темы
  • Активист
  • *
  • Сообщений: 308
    • Просмотр профиля
Ребята, всем спасибо!

renzrv, Вам огромная благодарность! Потестировал пару дней Ваш вариант - замечательно работает!
Я, правда, не догоняю смысл изменений, но это моя проблема ;)

 

Страница сгенерирована за 0.103 секунд. Запросов: 22.