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


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Таймер на повторный запуск скрипта  (Прочитано 1993 раз)

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

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Ubuntu Server. Есть скрипт на bash. Хотелось бы при неудачном завершении, повторно запустить его через несколько минут.
Как это можно сделать наиболее "элегантно"?
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн Morisson

  • СуперМодератор
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 362
    • Просмотр профиля

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #2 : 04 Ноября 2024, 15:31:07 »
Т.е. после запуска скрипта, при ошибке выполнения... в самом скрипте мне нужно будет выяснить текущее время, сформировать конфиг для запуска таймера, запустить его.
А в случае успешного выполнения, нужно будет удалять конфиг. Так?

Да... выглядит вполне просто.
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн Morisson

  • СуперМодератор
  • Заслуженный пользователь
  • Активист
  • *
  • Сообщений: 362
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #3 : 04 Ноября 2024, 16:46:38 »
Нет, там маны, как пользоваться systemd. Нужно сделать сервис с запуском скрипта. Там есть разные опции. В том числе перезапуск после аварии. Также можно сделать таймер, который будет смотреть и перезапускать скрипт.
Ознакомьтесь внимательнее, там вся необходимая инфа есть. Это инфа с ArchWiki. Там есть на русском. На английском более информативно

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #4 : 04 Ноября 2024, 17:04:22 »
Я читал про таймеры. Не понимаю, как отслеживать аварию в моём случае?

Пользователь добавил сообщение 04 Ноября 2024, 17:28:30:
И не понимаю... Условия запуска таймера такие:

OnActiveSec=
OnBootSec=
OnStartupSec=
OnUnitActiveSec=
OnUnitInactiveSec=
OnCalendar=

Где здесь условие срабатывания по "аварии"?
« Последнее редактирование: 04 Ноября 2024, 17:28:30 от Measurer »
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #5 : 04 Ноября 2024, 17:45:26 »
по "аварии" таймер не нужен.
в самом сервисе:

[Service]
Restart=on-failure
RestartSec=60
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #6 : 05 Ноября 2024, 04:55:31 »
Типа... в скрипте, в случае удачного завершения - exit 0
А в случае ошибки - exit 1
Так?
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #7 : 05 Ноября 2024, 14:31:48 »
в скрипте, в случае удачного завершения - exit 0
Если вам это действительно надо.
Можно и не указывать. Команды сами возвращают код завершения.

true ; echo $?
0

false ; echo $?
1
« Последнее редактирование: 05 Ноября 2024, 14:33:51 от ALiEN »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #8 : 05 Ноября 2024, 17:49:50 »
В смысле... "Команды сами возвращают код завершения"?
У меня - СКРИПТ, который там сам анализирует результат определённых действий и после этого пишет в лог, отсылает алярмы и т.д.
После завершения работы скрипта, переменная $? никак не будет содержать результат той операции, которая "не прошла" по мнению скрипта.

Пользователь добавил сообщение 05 Ноября 2024, 17:53:05:
Конкретизирую вопрос: я правильно понимаю, что "exit 0" и "exit 1" дадут понять таймерам systemd, с ошибкой или нет завершилось действие? И надо или не надо перезапускать скрипт?
« Последнее редактирование: 05 Ноября 2024, 17:53:05 от Measurer »
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #9 : 05 Ноября 2024, 18:29:48 »
У меня - СКРИПТ
А, пропустил этот момент. Ну да, пишите.

После завершения работы скрипта, переменная $? никак не будет содержать результат той операции, которая "не прошла" по мнению скрипта.
set -e
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #10 : 05 Ноября 2024, 19:10:17 »
Так мне НЕ НУЖНО, чтобы мой скрипт завершался при получении ошибки. Мне нужно, чтобы после ошибки, он "сообщил" об ошибке и перезапустился через N минут.
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #11 : 05 Ноября 2024, 19:29:23 »
Жесть какая.
Ну суммируйте коды завершения команд, в конце скрипта подставьте в exit
(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 06 Ноября 2024, 02:26:04 от ALiEN »
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

Оффлайн Measurer

  • Автор темы
  • Участник
  • *
  • Сообщений: 101
  • Измеритель верёвочками
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #12 : 06 Ноября 2024, 07:14:00 »
Так я ведь и писал до этого... Я правильно понимаю, что условие - Restart=on-failure сработает, если exit с ненулевым кодом?
IBM ThinkPad T60/ Intel Core  Duo T7200 2,00 GHz/ 4 Gb DDR2 SDRAM/ ATI Mobility Radeon X1400/ SSD Kingston 512 Gb/ DVD/CD-RW/ Wi-Fi, Bluetooth + Ubuntu Desktop 20.04

Оффлайн ALiEN

  • Администратор
  • Старожил
  • *
  • Сообщений: 7810
  • We were here
    • Просмотр профиля
Re: Таймер на повторный запуск скрипта
« Ответ #13 : 06 Ноября 2024, 13:12:20 »
условие - Restart=on-failure сработает, если exit с ненулевым кодом?
Да.
🖥 AsRock B550M Pro4 :: AMD Ryzen 5 3600 :: 16 GB DDR4 :: AMD Radeon RX 6600 :: XFCE
💻 ACER 5750G :: Intel Core i5-2450M :: 6 GB DDR3 :: GeForce GT 630M :: XFCE

 

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