Как программно запустить и контролировать работоспособность нескольких версий одного

kolchakA
На сайте с 19.06.2010
Offline
224
603

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

1. Как из скрипта (который вызывается кроном) запустить несколько версий другого скрипта (при этом не дожидаясь их окончания)?

2. Как (при следующих запусках кроном главного скрипта) проверить работает ли в данный момент каждая из запущенных версий? (чтобы в случае необходимости перезапустить).

Автоматизация для SEO : подключение API, пайпланы из нескольких сервисов, AI генерация контента
temmokan
На сайте с 18.08.2008
Offline
131
#1
kolchakA:
Возникла следующая задача: запускать по крону несколько версий одного скрипта, длительность работы каждой из которых от нескольких часов до нескольких суток. Насколько я знаю, на многих серваках часто бывает такое, что из-за нестабильности работы скрипт иногда просто прекращает работу. В связи с этим у меня 2 вопроса:

1. Как из скрипта (который вызывается кроном) запустить несколько версий другого скрипта (при этом не дожидаясь их окончания)?
2. Как (при следующих запусках кроном главного скрипта) проверить работает ли в данный момент каждая из запущенных версий? (чтобы в случае необходимости перезапустить).

Если речь о PHP, то shell_exec()/exec():

$pid = shell_exec("nohup $cmdline");

...

if (exec("ps -p $pid -o comm=") != '') {
// process still running
}

При условии, что обе этих функции разрешены. Можно полученный $pid сохранять в файле, например, а при запуске крона считывать сохранённые pid и проверять их существование.

kolchakA
На сайте с 19.06.2010
Offline
224
#2
temmokan:
Если речь о PHP, то shell_exec()/exec():
$pid = shell_exec("nohup $cmdline");

...

if (exec("ps -p $pid -o comm=") != '') {
// process still running
}

При условии, что обе этих функции разрешены. Можно полученный $pid сохранять в файле, например, а при запуске крона считывать сохранённые pid и проверять их существование.

да, это наверное то что надо!

temmokan
На сайте с 18.08.2008
Offline
131
#3
kolchakA:
да, это наверное то что надо!

Отлично. Забыл добавить: указанная строка для '"ps" выдаёт имя команды с данным pid - убедитесь при проверке, что это именно та команда, которую вы запускали.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий