Estoy buscando una forma confiable de probar si se postfix
está ejecutando desde un script bash.
Mi primer intento fue simplemente intentarlo pidof postfix
, lo que no funciona.
Entonces traté de obtener el 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
Pero a pesar de que el estado se informa a la consola, la result
variable permanece vacía. Esta es la salida de la consola:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
Finalmente encontré una forma de probar si postfix se está ejecutando obteniendo el nombre del proceso PID: 11996
, que es "maestro". Por lo que el siguiente hace el trabajo:
pidof master
Pero esto no es muy detallado y no estoy seguro de si es una forma confiable de probar si se postfix
está ejecutando.
Entonces mis preguntas son:
- ¿Cómo puedo obtener la salida
postfix status
desde dentro de un script bash? - ¿Hay algo que esté haciendo mal allí? - ¿Hay alguna forma mejor y confiable de probar si se
postfix
está ejecutando desde un script bash?
2>&1
pero el resultado permanece vacío. Lamentablemente, pgrep
no hay opción porque no está disponible en el sistema (una estación de disco Synology con DSM 5.1).
ps aux | grep [p]ostfix
?
ps
parece funcionar. En el sistema DSM ps
no acepta ningún parámetro que no sea otro w
. Pero simplemente llamar ps | grep [p]ostfix
funciona.
status
salidas astderr
? Intenta agregar2>&1
astatus
-command. También puedes usarpgrep postfix