Чтобы обеспечить как можно более долгое функционирование императивных программ (даже после сбоя или перезагрузки сервера), можно создать простой bash-скрипт, который будет проверять, работают ли программы, и запустит их в случае необходимости. Чтобы скрипт работал на регулярной основе, можно использовать cron для составления графика запуска скрипта, что гарантирует перезапуск программы в случае ее падения.
Bash-скрипт
Итак, первый шаг – создание самого скрипта. Существует целый ряд программ, таких как Upstart, Supervisor и Monit, которые могут запускать и мониторить приложения на виртуальных частных серверах; bash-скрипт выполняет только запуск программ. Ниже приведен пример сценария, который запускает Apache, в случае если приложение выключено.
nano launch.sh
#!/bin/sh
ps auxw | grep apache2 | grep -v grep > /dev/null
if [ $? != 0 ] then
/etc/init.d/apache2 start > /dev/null
fi
После сохранения скрипта нужно дать ему права на выполнение, чтобы иметь возможность запускать его.
Автоматический запуск программ и скриптов при помощи скрипта rc.local после включении Raspberry Pi
chmod +x launch.sh
Apache можно заменить любым необходимым приложением. При необходимости установить скрипт для нескольких приложений, нужно создать новый скрипт для каждого приложения и поместить скрипты в отдельную строку cron-файла.
Установка Cron
После создания скрипта нужно установить график его запуска. Утилита cron позволяет установить интервалы выполнения скрипта. Для начала откройте cron-файл:
Cron предоставляет подробную информацию работе системы расписаний в начале файла.
Определив необходимую частоту запуска скрипта, внесите ее в соответствующую строку. Самый короткий интервал запуска скрипта в cron – 1 минута. Чтобы установить данный интервал, используйте следующий шаблон:
Для запуска скрипта каждые 5 минут используйте шаблон:
Установка простого скрипта обеспечит запуск программы после ее падения по любой причине. Это дает гарантию того, что максимальное время, на протяжении которого программа будет отключена – это интервал времени, указанный в конфигурациях cron.
Если серверу нужна программа, работающая более тщательно, можно установить одну из нескольких программ мониторинга сервера (Supervisor, Upstart, or Monit)
Источник: www.8host.com
Проверка работы и перезапуск программы через VBS скрипт
Если нужно реализовать проверку работы программы и её перезапуск через VBS скрипт, то вы по нужному адресу. Делается это следующим скриптом:
Set objWMIService = GetObject(«winmgmts:\.rootcimv2») Do Running = False Set colItems = objWMIService.ExecQuery(«Select * from Win32_Process») For Each objItem in colItems If objItem.Name = «Notepad.exe» Then Running = True Exit For End If Next If Not Running Then CreateObject(«WScript.Shell»).Run «Notepad.exe», 1, True End If WScript.Sleep 30000 Loop
Разберем наиболее важные части скрипта. Одна из самых первых строчек в скрипте устанавливает значение переменной Running в значение False — дальше станет понятно зачем.
Как сделать автозапуск программ на Python по расписанию
В строчке If objItem.Name = «Notepad.exe» Then задается имя процесса, который нужно найти в списке процессов на компьютере (именно на компьютере, а не у пользователя!). Затем, если он найден, то строчка Running = True устанавливает переменную Running в значение True. Если же не запущен, то ничего не делается, так как переменная Running уже установлена в значение False.
После этого, если значение Running равно False (строчка If Not Running Then), то происходит запуск нужного исполняемого файла (CreateObject(«WScript.Shell»).Run «Notepad.exe», 1, True). Затем команд WScript.Sleep 30000 в скрипте указывает приостановить работу скрипта на 30000 миллисекунд (на 30 секунд, но время в vbs скрипте задается именно в миллисекундах). Затем строчка Loop приказывает начать выполнение цикла по новой — с команды Do.
Была ли эта статья Вам полезна?
Что в статье не так? Пожалуйста, помогите нам её улучшить!
Источник: pc.ru
Bash скрипт для Linux который перезапускает программу/службу автоматически через заданное время?
Имеется Ubuntu Server 16.04 LTS 64 бит.
Есть программа (сервер) .x86_64 которая имеет проблему «зависания» через некоторое время, и поэтому нужен bash скрипт который будет автоматически через заданное ему время перезапускать программу.
Если есть какие то решения то буду рад услышать.
- Вопрос задан более трёх лет назад
- 3308 просмотров
Комментировать
Решения вопроса 0
Ответы на вопрос 5
Любые ответы на любые вопросы
Либо исправить быдлокод,
Либо засунуть его в systemd а в cron положить вызов systemctl restart [имя куска быдлокода]
Ответ написан более трёх лет назад
Комментировать
Нравится 5 Комментировать
на треть я прав
nano /usr/local/bin/killproc.sh
туда
#!/bin/bash PROCFOLDER=»/bin/» #папка процесса PROCNAME=»Thunar»; #имя процесса kill `ps aux | grep $PROCNAME| tail -n2 | head -n1 |awk ` $PROCFOLDER$PROCNAME
chmod +x /usr/local/bin/killproc.sh nano /etc/crontab
а туда
*/10 * * * * root /usr/local/bin/killproc.sh
Чтоб каждые 10 минут дергался.
Но сдается мне, что у вас не процесс, а демон, поэтому тупо можно в кронтаб прописать service httpd restart например
Источник: qna.habr.com