Como saber se um script já está em execução [duplicado]

0

Eu quero saber de dentro do script se esse script já está em execução. Um olhar regular em ps não vai cortá-lo como ele recebe diferentes argumentos em ordem diferente ..

Portanto, a função deve ser:

check_already_running(){
    if [ 'ps -ef| grep $script_name_with_arguments | wc -l ' -gt 1 ]
    then
      echo "already running"
      exit 1
    else
      echo "ok"
    fi
}

Por exemplo, vamos supor que eu executei ./test.sh -a 2 -c 4 , então:

server:/tmp >./test.sh
ok
server:/tmp >./test.sh -a
ok
server:/tmp >./test.sh -a 2 -c 4
already running
server:/tmp >./test.sh -a 2   -c 4
already running
server:/tmp >./test.sh -c 4 -a 2
already running

Eu estou supondo que os últimos 2 exemplos tornam muito mais difícil e mais longo verificar, então se você puder fornecer 2 opções - uma que seja suficiente para o comando exacto em execução e a outra se o usuário enviar os mesmos argumentos mas com diferentes ordem / espaçamento extra.

    
por Nir 06.11.2018 / 09:44

0 respostas