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?
status
salidas astderr
? Intenta agregar2>&1
astatus
-command. También puedes usarpgrep postfix
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 DSMps
no acepta ningún parámetro que no sea otrow
. Pero simplemente llamarps | grep [p]ostfix
funciona.Respuestas:
Debian o Ubuntu
fuente
Para verificar si Postfix se está ejecutando o no:
Para iniciar el Postfix:
Para detener el postfix:
fuente
postfix start
sin un mensaje de error, pero cuandopostfix status
escribo dice "el sistema de correo Postfix no se está ejecutando". Supongo que está fallando silenciosamente.Una forma confiable de probar si postfix se está ejecutando:
Una alternativa que esencialmente hace lo mismo:
Razonamiento
Después de investigar un poco más, resultó que las pruebas
ps | grep [p]ostfix
no son confiables para verificar si postfix se está ejecutando.Parece que la razón por la
/var/packages/MailServer/target/sbin/postfix status
que no genera nada útil es porquepostfix
usa elpostlog
binario interno para la salida. El código relevante se puede encontrar en el script bash/var/packages/MailServer/target/libexec/postfix-script
:Verificar el código de salida de
postfix status
sí funciona bien, por otro lado. El binariopostfix-script
realmente llama al detrás de escenapostfix
y no se puede llamar directamente. Pero afortunadamente el script también incluye el código para probar si sepostfix
está ejecutando:La variable
$daemon_directory
se establece mediante elpostfix
binario que llama . En mi sistema se resuelve/var/packages/MailServer/target/libexec/
.fuente
After doing some more research
¿Podrías respaldar tus afirmaciones aportando pruebas?