Apenas uma instância

Quer que um processo seja executado para sempre e apenas uma vez?
Basta usar meu script bash simples e aproveitar 🙂

#!/bin/bash
while [ 1 ]; do
pcount
=`ps -ef | grep NAME_OF_YOUR_PROCESS | awk '{print $2}' | wc -l`
if [ "$pcount" != "2" ]; then
echo
"Killing all NAME_OF_YOUR_PROCESS processes"
ps
-ef | grep NAME_OF_YOUR_PROCESS | awk '{print $2}' | xargs kill -9
COMMAND_TO_START_YOUR_PROCESS
&
fi;
sleep
1;
done;

claro que você tem que substituir

NAME_OF_YOUR_PROCESS

com o nome do processo que pode ter apenas uma instância (o nome mostrado em ps -ef ou ps-aux)

e

COMMAND_TO_START_YOUR_PROCESS

com o comando com o qual você inicia seu processo

você está se perguntando por que eu escrevi:

if [ "$pcount" != "2" ]; then

grep => 1 processo
seu processo => ​​1 processo
seu
processo segunda instância => 1 processo e assim por diante …

então se você tiver dois processos você terá grep e seu processo, então está tudo bem …
se você tiver uma instância você só tem grep … então você tem que iniciar seu processo novamente
se você tiver mais de duas instâncias que você tem grep e seu processo foram iniciados mais de uma vez, então você deve matar todas as instâncias do seu processo e reiniciá-lo para que você tenha apenas uma instância …

você tem que executar meu script de shell com:

filename &

onde nome do arquivo é o nome com quem você salvou o arquivo

exemplo para noip

#!/bin/bash
while [ 1 ]; do
no_ip_cnt
=`ps -ef | grep noip2-i686 | awk '{print $2}' | wc -l`
if [ "$no_ip_cnt" != "2" ]; then
echo
"Killing all noip processes"
ps
-ef | grep noip2-i686 | awk '{print $2}' | xargs kill -9
/path/to/noip/noip-i686 &
fi;
sleep
1;
done;