Estou procurando uma maneira confiável de testar se postfix
está sendo executado dentro de um script bash.
Minha primeira tentativa foi simplesmente tentar pidof postfix
, o que não funciona.
Então eu tentei obter o postfix status
:
POSTFIX_LOCATION=/var/packages/MailServer/target/sbin/postfix # location of postfix
result=`$POSTFIX_LOCATION status`
if [ -z $result ]; then
echo "Error: No status output from postfix"
elif [[ "$result" == *"is running"* ]]; then
echo "postfix is running!"
else echo "postfix is not running!"
fi
Mas mesmo que o status seja relatado ao console, a result
variável permanece vazia. Esta é a saída do console:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
Finalmente encontrei uma maneira de testar se o postfix está sendo executado, obtendo o nome do processo PID: 11996
, que é "master". Então o seguinte faz o trabalho:
pidof master
Mas isso não é muito detalhado e não tenho certeza se essa é uma maneira confiável de testar se postfix
está sendo executada.
Então, minhas perguntas são:
- Como posso obter a saída de
postfix status
dentro de um script bash? - Algo que estou fazendo de errado aí? - Existe uma maneira melhor e confiável de testar se
postfix
está sendo executado dentro de um script bash?
2>&1
mas o resultado permanece vazio. Infelizmente, pgrep
não existe opção porque não está disponível no sistema (uma estação de disco Synology com DSM 5.1).
ps aux | grep [p]ostfix
?
ps
parece funcionar. No sistema DSM ps
não aceita nenhum parâmetro que não seja w
. Mas simplesmente ligar ps | grep [p]ostfix
funciona.
status
saídas parastderr
? Tente adicionar2>&1
aostatus
comando. Também você pode usarpgrep postfix