Je cherche un moyen fiable de tester si postfix
s'exécute depuis l'intérieur d'un script bash.
Ma première tentative a été simplement d'essayer pidof postfix
, ce qui ne fonctionne pas.
Ensuite, j'ai essayé d'obtenir 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
Mais même si l'état est signalé à la console, la result
variable reste vide. Voici la sortie de la console:
postfix/postfix-script: the Postfix mail system is running: PID: 11996
Error: No status output from postfix
J'ai finalement trouvé un moyen de tester si postfix est en cours d'exécution en obtenant le nom du processus PID: 11996
, qui est "master". Donc , ce qui suit fait le travail:
pidof master
Mais ce n'est pas très détaillé et je ne sais pas si c'est un moyen fiable de tester s'il postfix
fonctionne.
Mes questions sont donc:
- Comment puis-je obtenir la sortie de l'
postfix status
intérieur d'un script bash? - Quelque chose que je fais mal là-bas? - Existe-t-il un moyen plus fiable de tester si
postfix
s'exécute depuis l'intérieur d'un script bash?
2>&1
mais le résultat reste vide. Malheureusement, il pgrep
n'y a pas d'option car il n'est pas disponible sur le système (une station de disque Synology avec DSM 5.1).
ps aux | grep [p]ostfix
?
ps
semble fonctionner. Sur le système DSM, ps
aucun autre paramètre n'est accepté w
. Mais simplement appeler ps | grep [p]ostfix
fonctionne.
status
Sorties possibles versstderr
? Essayez d'ajouter2>&1
à lastatus
commande. Vous pouvez également utiliserpgrep postfix