Aponte e clique no script bash do Ubuntu 16.04 aleatoriamente alterna o comportamento de saída

1

Eu escrevi e testei o seguinte ponto e clique no script bash do Ubuntu 16.04 com o propósito de matar completamente um processo RecorderManager.exe mono-serviço literalmente matando o id do processo retornado pelo pgrep seguido pela exclusão do arquivo de bloqueio.

#!/bin/bash
PID=$(exec pgrep -lx "Recorder Manage")
echo $PID
NUMBER=$(echo $PID | tr -dc '0-9')
echo $NUMBER
kill -9 $NUMBER
rm /tmp/My_Recorder.exe.lock

Depois de testá-lo muitas vezes, eu encontrei este script bash se comporta de forma aleatória, alternando entre: Às vezes ele produz "Killed!", Outras vezes gera "10931 My_Recorder.exe" seguido por 10931.

Por que esse comportamento aleatório ocorre e como podemos corrigi-lo?

    
por Frank 30.05.2016 / 17:55

1 resposta

2

Qual é o nome do script em si? Corresponde ao padrão Recorder Manage ? Se assim for, o pgrep está encontrando o script em si, além do processo que você está procurando, o que irá torná-lo efetivamente uma porcaria a respeito de qual será listado primeiro.

Além disso, não use kill -9 a menos que seja absolutamente necessário; basta usar kill para enviar SIGTERM em vez de SIGKILL , o que permitirá que o processo morto seja limpo após ele mesmo, incluindo seus próprios arquivos PID.

    
por 31.05.2016 / 07:02