Estou verificando por meio de um script bash se um processo está sendo executado com base no PID armazenado em um arquivo. Recebo o erro mostrado acima quando o arquivo não existe, pois o comando está tentando acessar o arquivo e verifico se o PID está realmente lá, portanto é normal, mas eu gostaria de evitá-lo, se possível.
Existe tal maneira?
O comando que estou usando pode ser encontrado abaixo.
se matar -0 $ (cat "$ pid_file")
Agradeço antecipadamente.
\n
no final desse arquivo.cat "$pid_file" | head -n 1 | tr -d "\n"
pgrep
? verifique o-F
interruptor.Respostas:
[[ -f "$pid_file ]] && (cat "$pid_file" | head -n 1 | tr -d "\n")
Este comando retornará um status diferente de zero. Se você deseja um "sempre retorne zero" (sacrificando a legibilidade):
[[ ! -f "$pid_file ]] || (cat "$pid_file" | head -n 1 | tr -d "\n")
fonte
Você precisa de uma condição para verificar se o arquivo existe e, se não desejar ver erros ao tentar
kill
um PID que não existe mais, redirecione-ostderr
para/dev/null
. Você vai acabar com algo como:Isso armazenará
1
um pid existente e0
um inexistente. Você pode usar a variável em uma comparação, como:Ou apenas imprima seu resultado:
Não
cat
. Miau!fonte
sed
... Mesmo baixo, há uma probabilidade de que este PID antes ou depois será usado de novo ...Ou, você pode apenas usar
pgrep
:fonte