ワンタイムシステムデバイスとルートコマンドラインの違いは何ですか?

ワンタイムシステムデバイスとルートコマンドラインの違いは何ですか?

私の設定には、eximコマンドラインを介してローカルユーザーにメールを送信するスクリプトが含まれています。スクリプトはルートと呼ばれます(現実はもちろんより複雑ですが、これは最小限の作業例のようです)。

/home/jens/send_mail:
#!/bin/sh
cat /home/jens/testmail | /usr/bin/exim -bm jens

ルートシェルでこのスクリプトを実行すると、正常に動作します。メールが正常に配信されました。

これで、このスクリプトを自動化してsystemdサービスから呼び出そうとします。

/etc/systemd/system/send_mail.service:
[Unit]
Description=Send mail to jens

[Service]
Type=oneshot
ExecStart=/home/jens/send_mail

[Install]
WantedBy=multi-user.target

実行はsystemctl start send_mail.serviceメッセージを転送しませんが、後で転送するためにeximキューに入れます。実際の設定では、その行が読んでいることがわかりました。

... exim[275968]: 2020-07-16 23:09:40 1jwB8O-0019n4-Lj failed to write to main log: length=91 result=-1 errno=9 (Bad file descriptor)
... exim[275968]: write failed on panic log: length=116 result=-1 errno=9 (Bad file descriptor)

私の日記帳に。私が知る限り、私のルートシェルにはexim関連の環境変数はありません。このように他の行動が現れるのはなぜでしょうか。

私はArch Linuxでexim 4.94を使用しています。詳細が必要な場合はお問い合わせください。

ベストアンサー1

send_mailこの問題は、実行が完了するとすぐに作成された exim プロセスを終了する systemd が原因で発生したようです。

この問題は、終了時に適切な時間待つsend_mailか、KillModesystemdデバイスのオプションをまたはprocessに設定することでnone解決できます(マニュアルではこれを行わないことをお勧めします)。

源泉:

  1. https://systemd-devel.freedesktop.narkive.com/nV1QMO8j/exim4-only-queues-mails-sent-by-systemd-service
  2. https://www.freedesktop.org/software/systemd/man/systemd.kill.html

おすすめ記事