systemd
Cronが設定できるように、デバイスが失敗したときに電子メールで通知を受け取るように設定しようとしています。フォローするArch Linux Wikiガイド。
だから私は次の場所にsendmail
シェルスクリプトを設定しました/usr/local/bin/systemd-email
。
#!/bin/bash
/usr/bin/sendmail -t <<ERRMAIL
To: $1
From: systemd <root@$HOSTNAME>
Subject: $2
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
$(systemctl status --full "$2")
ERRMAIL
その後、次の場所にsystemdサービスを設定しました。/etc/systemd/system/[email protected]
[Unit]
Description=status email for %I to user1
[Service]
Type=oneshot
ExecStart=/usr/local/bin/systemd-email [email protected] %i
User=nobody
Group=systemd-journal
ただし、この設定をテストして実行すると、次のエラーメッセージが表示されます。systemctl start [email protected]
[email protected] - status email for dbus to user1
Loaded: loaded (/etc/systemd/system/[email protected]; static; vendor preset: disabled)
Active: failed (Result: exit-code) since Sun 2015-06-14 10:19:36 MDT; 20min ago
Process: 31229 ExecStart=/usr/local/bin/systemd-email [email protected] %i (code=exited, status=1/FAILURE)
Main PID: 31229 (code=exited, status=1/FAILURE)
Jun 14 10:19:36 sindhu systemd[1]: Starting status email for dbus to user1...
Jun 14 10:19:36 sindhu sSMTP[31230]: /etc/ssmtp/ssmtp.conf not found
Jun 14 10:19:36 sindhu sSMTP[31230]: Unable to locate mailhub
Jun 14 10:19:36 sindhu systemd-email[31229]: sendmail: Cannot open mailhub:25
Jun 14 10:19:36 sindhu systemd[1]: [email protected]: main pro...RE
Jun 14 10:19:36 sindhu systemd[1]: Failed to start status email for dbus to ...1.
Jun 14 10:19:36 sindhu systemd[1]: Unit [email protected] ente...1.
Jun 14 10:19:36 sindhu systemd[1]: [email protected] failed.
Hint: Some lines were ellipsized, use -l to show in full.
ただし、/etc/ssmtp/ssmtp.conf
実際には存在し、正しく構成されているため(SSMTPが設定されている)、次のように実行すると:
echo -e "To: [email protected]\nFrom: [email protected]\nSubject: Hello Notification\n\n Hello, this is a test"|ssmtp [email protected]
予想通り/予想通りメールが届きました。
同様に、シェルスクリプトを実行すると電子メールも受信されます。systemd-email [email protected] dbus
したがって、すべてのsystemd
外部部分が機能しているようです。したがって、systemd
私が知る限り、内部的な部分があるようです。しかし、それが何であるか、どのように修正できるかわかりません。
答え1
このスレッドは私と同様の問題を解決しました。デフォルトでは、systemdはメールを送信する前にメールを送信する必要がある子プロセスを終了します。解決策は/etc/mail.rcに "set sendwait"を追加することでしたが、私の設定はあなたが説明したものとは少し異なりました。