Это не вопрос оболочки, потому что подход тот же, какой бы оболочкой вы не пользовались.
Я думаю, что самым чистым решением является наличие «сторожевого таймера», который проверяет выполняемые процессы (используя ps
) и, при необходимости, запускает новый или убивает ненужный.
Один из способов, который я использовал в аналогичной ситуации, - написать задание cron, которое регулярно (скажем: каждые 5 минут) запускает сторожевой таймер и позволяет ему выполнять свою работу.
Если такой интервал слишком длинный для вашего случая (т. Е. Если вам нужно проверять его чаще, чем каждую минуту), вы можете запустить сторожевой таймер непрерывно в цикле. Тем не менее, вам понадобится работа cron, которая время от времени контролирует сторожевое устройство - на случай, если сторожевые таймеры умрут. В этом случае вы можете использовать его как daemon.