Estoy buscando una forma confiable de probar si se postfixestá 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 resultvariable 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 postfixestá ejecutando.
Entonces mis preguntas son:
- ¿Cómo puedo obtener la salida
postfix statusdesde dentro de un script bash? - ¿Hay algo que esté haciendo mal allí? - ¿Hay alguna forma mejor y confiable de probar si se
postfixestá ejecutando desde un script bash?
2>&1pero el resultado permanece vacío. Lamentablemente, pgrepno 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?
psparece funcionar. En el sistema DSM psno acepta ningún parámetro que no sea otro w. Pero simplemente llamar ps | grep [p]ostfixfunciona.
statussalidas astderr? Intenta agregar2>&1astatus-command. También puedes usarpgrep postfix