Estou usando o CentOS 7. Estou tentando capturar o "PID mestre" de um processo em uma variável de script. Este é o meu script
#!/bin/sh
set -e
PID="$APP_ROOT/shared/pids/puma.pid"
echo "before ..."
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
echo "after ..."
xxx
No entanto, a palavra "depois de ..." nunca é impressa. Há algo sobre esta linha
MASTER_PID=`pgrep -f '^([^ ]*/)?puma '`
o que está fazendo com que as coisas se comportem mal, especialmente se não houver nenhum processo puma em execução. Alguém sabe uma maneira de reescrever o acima para que eu possa capturar meu mestre PID ou pelo menos permitir que a execução passe para a próxima linha se ela não existir?
set -e
Saia imediatamente se um comando sair com um status diferente de zero.Como
pgrep
falha quando não há correspondênciaPID
, você não pode executar aecho "after"
instrução.Eu acho que remover
set -e
deve resolver seu problema.Se você quiser manter o
set -e
, precisará evitar que o pgrep falhe, por: