número de execuções do script [duplicado]

1

Eu estou tentando encontrar o número de execuções de um script, mas é sempre 2, mesmo que apenas uma seja executada.

sh 11.sh
1
 11.sh already running,exiting..

aqui é o código.

ps -ef | grep -v grep | grep -c "$0"
if [[ 'ps -ef | grep -v grep | grep -c "$0"' -gt "1" ]]; then
            'echo " $0 already running,exiting.."'
fi
    
por Vijay 22.10.2017 / 22:51

2 respostas

1

Usando o pgrep ...

#!/bin/bash

PNAME=$(basename "$0")

COUNT=$(pgrep -c -x  $PNAME)

(( COUNT > 1 ))  &&  echo "$0 already running, exiting..."                                                           
    
por 23.10.2017 / 06:46
1

Considerando apenas uma única instância de 11.sh em execução e recebendo 11.sh :

n='ps -ef | grep -wc "$0"' n=$((n-2))
echo $n
[ $n -gt "1" ] &&  echo " $0 already running,exiting.."

Executando sh 11.sh de saídas:

 1

Os backticks e o grep adicionam mais duas linhas ps . Como sabemos que o número é 2 , basta subtrair n-2 para obter o número correto.

    
por 23.10.2017 / 00:17