Primeiro, um script de shell não pode impedir que algum processo (em segundo plano) termine se o SO decidir eliminá-lo ou se o processo morrer. Com isto dito, aqui está uma sugestão sobre como reiniciar um serviço. É grosseiro, mas simples.
Crie um arquivo "semaphore" e use-o para quebrar um loop permanente que reinicia algum trabalho.
#!/bin/sh
function run {
local t='mktemp /tmp/service.XXX'
touch $t
while [ -f $t ]; do
# restart a job here, e.g
nc -l -p 4444 & pid=$!
echo $pid > $t
wait $pid
done
}
function stop {
local pf='ls /tmp/service.*| wc -l'
if [ $pf -gt 1 ]; then
echo why are there several pid files?
elsif [ $pf -lt 1 ];
echo nothing to stop
else
pid='cat /tmp/service.*'
rm -f /tmp/service.*
kill $pid
fi
}
Apresente o arquivo no seu shell e execute as funções. O script pode conter erros, mas a ideia deve ser utilizável.