script termina

1
# Check if VPNC is already running, otherwise start it
if ( ps -ef | grep -v grep | grep -v vpnc_ondemand | grep -v less | grep vpnc > /dev/null ) ; then
    echo "Shell script is already running then dont run this script and terminate the script".

exit                
else 

echo "run the other part of script "

Eu quero que, se esse processo já estiver sendo executado, todo o script seja encerrado e não execute mais parte do script.

Ou este código que eu já escrevi irá executar o que estou procurando

    
por kunal 17.06.2014 / 08:45

2 respostas

2

Se você precisar desse tipo de gerenciamento de supervisão, eu procuraria o Upstart. Crie um novo arquivo executando sudoedit /etc/init/vpnc.conf e copie algo como o seguinte:

start on (started networking)
respawn
exec /usr/sbin/vpnc --no-detach

E, em seguida, apenas sudo start vpnc para iniciá-lo pela primeira vez (e será iniciado automaticamente depois disso). O Upstart rastreará o processo pelo seu PID. Não é necessário scripthackery.

    
por Oli 18.06.2014 / 13:16
0

Usando a sugestão de @muru, aqui está um script bash que faz o que você quer:

#!/usr/bin/env bash

process='vpnc$'

if pgrep $process > /dev/null; then # Here we are using the fact that if pgrep returns 0, the process is running
    echo "Shell script is already running then dont run this script and terminate the script".
    exit 1 # A number different of zero is good to point out that something went wrong
else
    echo "run the other part of script "
fi

Mas a resposta do @Oli é mais adequada para o que você pergunta parece ser intencional (gerenciamento de programas em um servidor).

    
por aderubaru 21.06.2014 / 17:00