GNU/Linux >> Tutoriels Linux >  >> Linux

Le script shell se bloque sur la commande de messagerie ?

Je constate qu'un appel à la commande mail provoque la suspension d'un script sans erreur. Pour fermer le script, je dois ctrl-c ou émettre une commande kill sur l'identifiant du processus.

La section pertinente du script est ci-dessous :

EMAIL_TO="[email protected]"

if [ -f /www/archives/pdf/pdf_201207021048.tar ]; then
    echo "file exists"
else
    echo "file does not exist"
fi

echo "sending mail next..."

mail -s "pdfbackup" "$EMAIL_TO"

echo "mail sent?"

Lors de l'exécution, je vois le texte "envoi de courrier suivant ..." et rien de plus. Il ne revient jamais à l'invite.

Je peux voir que le script est toujours en mémoire avec ps -ax | grep monscript.sh.

J'ai essayé d'utiliser des guillemets autour du sujet et de l'e-mail, et encore sans. Le même résultat est produit dans les deux sens.

Qu'est-ce que je fais de mal ?

Réponse acceptée :

Le mail le programme s'attend à ce que l'utilisateur tape le message sur son entrée standard (terminé par EOF (Ctrl-D )). Vous ne redirigez pas stdin, le programme attend une entrée. Vous pouvez soit rediriger depuis /dev/null (pour un message vide), à ​​partir d'un fichier prêt à l'emploi, ou à partir d'un tube, par exemple :

echo Hi, just sending you a message | mail -s "pdfbackup" "$EMAIL_TO"

ou

mail -s "pdfbackup" "$EMAIL_TO" < /dev/null

Ces deux éléments devraient résoudre le problème.


Linux
  1. Comment passer un argument de ligne de commande dans un script shell ?

  2. Envoi de courrier HTML à l'aide d'un script shell

  3. Vérifier la connectivité de la base de données à l'aide du script Shell

  4. Envoi d'un mail à partir d'un script shell Linux

  5. Itérer sur la variable $ PATH à l'aide d'un script shell

Comprendre facilement les commandes Shell à l'aide du script "Explain Shell" sous Linux

Comment exécuter une commande / un script Linux Shell en arrière-plan

Comment stocker une commande Linux en tant que variable dans un script shell

Interface de commandes

Comment exécuter une commande dans un script shell ?

Bibliothèque de sortie de script shell coloré