GNU/Linux >> Belajar Linux >  >> Linux

Script Shell Hang Pada Perintah Mail?

Saya menemukan bahwa panggilan ke perintah email menyebabkan skrip ditangguhkan tanpa kesalahan. Untuk menutup skrip saya harus ctrl-c atau mengeluarkan perintah kill pada id proses.

Bagian yang sesuai dari skrip di bawah ini:

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?"

Saat menjalankan ini, saya melihat teks "mengirim email berikutnya ..." dan tidak lebih. Itu tidak pernah kembali ke prompt.

Saya dapat melihat skrip masih dalam memori dengan ps -ax | grep myscript.sh.

Saya sudah mencoba menggunakan kutipan di sekitar subjek dan email, dan sekali lagi tanpa. Hasil yang sama dihasilkan dengan cara apa pun.

Apa yang saya lakukan salah?

Jawaban yang Diterima:

mail program mengharapkan pengguna untuk mengetik pesan pada input standarnya (dihentikan oleh EOF (Ctrl-D )). Anda tidak mengarahkan stdin, program sedang menunggu input. Anda dapat mengalihkan dari /dev/null (untuk pesan kosong), dari file kaleng, atau dari pipa, misalnya:

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

atau

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

Kedua hal ini harus menyelesaikan masalah.


Linux
  1. Perilaku Tak Terduga Dari Skrip Shell?

  2. Script Shell Dengan Fungsi Dan Parameter Sebagai Variabel?

  3. Mengirim email HTML menggunakan skrip shell

  1. Periksa konektivitas basis data menggunakan skrip Shell

  2. Mengirim email dari skrip shell linux

  3. Otomatisasi mysql_secure_installation dengan perintah gema melalui skrip shell

  1. Bagaimana Cara Melewati Argumen Baris Perintah Menjadi Skrip Shell?

  2. Bagaimana Mengenalinya Jika Output Dari Perintah Atau Skrip Shell Adalah Stdout Atau Stderr?

  3. Ulangi variabel $PATH menggunakan skrip Shell