LINUX.ORG.RU

[shell] детектор запущенности программы


0

0

Надо что бы в памяти постоянно висел скрипт, проверяющий запущена ли определенная программа и если она не запущена, то что бы он ее запускал. Навоял нечто такое:

#!/bin/bash

while true
do
    PID=$(pidof программа)
    if [[ -z $PID ]]; then
          программа
    fi
done
Проблема в том, что этот скрипт загружает процессор на 100%. Как этого избежать?


> детектор запущенности программы

Я уж подумал, что речь идет о скрипте, определяющем, насколько запущен исходный код программы (позабыт - позаброшен). Даже интересно стало. А тут...

oami ★★ ()
Ответ на: комментарий от oami

Ну для opensource проектов как правило доступна дата последнего изменения/обновления кода. Если прошло месяца 3 - считай программу заброшенной

amomymous ★★★ ()

>Навоял

загружает процессор на 100%

айлолд, «навоял»

anonymous_sapiens ★★★★★ ()

Забудь про /etc/inittab. Это решение для красноглазых админов, которые не понимают, что задачи лучше решать без рутовых прав, и туда как правило прописывают системные задачи. Ты нормально написал, добавь только sleep, как писали и все будет хорошо.

Pantserovik ()

как вариант:
crontab -e
* * * * * DISPLAY=:0.0 /bin/bash -c 'pidof программа || программа'

будет тебе каждую минуту запускать

xydo ★★ ()
Ответ на: комментарий от Pantserovik

открою тайну, su не обязательно запускает программы от рута, можно указывать любого пользователя. это к твоему высеру про «рутовые права». а изобретать велосипеды, вместо того, чтобы воспользоваться уже существующими решениями на основе init или того-же cron - голимое пионерство

ananas ★★★★★ ()
Ответ на: комментарий от ananas

Открою тебе тайну, чтоб пользоваться cron достаточно обычных прав. Читай маны. Это первое.
Второе, cron не подходит здесь, ибо в случае если программа упадет, она может быть запущена почти через минуту.
Третье - init для системных программа, как тебе уже было сказано.
Четвертное - линукс ты нихрена не знаешь.

Pantserovik ()

А он может запускать программу, если это требует прав рута?

Dmitry_Sokolowsky ★★★★★ ()

проще всего не отсоединять программу от терминала, ну и внутрь шеловского цикла поместить...

psv1967 ★★★★★ ()
Ответ на: комментарий от Pantserovik

> Четвертное - линукс ты нихрена не знаешь.

Ай, смеюс, анонимус обозвал ananas'а ламером.

AnDoR ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.