systemdサービスは 'tail'を使用してコンソールに出力できません。

systemdサービスは 'tail'を使用してコンソールに出力できません。

私のsystemdサービス(systemd 249.11-0ubuntu3.12)を正しく構成できません。tailコンソールに出力されるプロセスを開始する必要があります。 UbuntuはProxmox VMとして実行されます。

起動時にサービスが開始されますが、有用な出力なしで終了します。

× watchbackup.service - Startup Applications
     Loaded: loaded (/etc/systemd/system/watchbackup.service; enabled; vendor preset: enabled)
     Active: failed (Result: exit-code) since Fri 2024-03-01 21:47:01 CET; 27s ago
    Process: 939 ExecStart=/opt/backup-proxmox/tools/watchbackup.sh (code=exited, status=1/FAILURE)
   Main PID: 939 (code=exited, status=1/FAILURE)

サービスを再起動すると手動、期待どおりに動作します。シェルスクリプトが実行されました(tailサービス単位ファイルのコマンドに直接入力できませんでしたExecStart):

#!/bin/sh
sleep 5
ls -la  /net/var/archiv-1/log/ > /tmp/foo
echo tty1 > /dev/tty1
echo tty0 > /dev/tty0
echo console > /dev/console
tail -f /net/var/archiv-1/log/backup.log 

スリープモードが正常に遅延し、ファイルが期待どおりに存在し(/net/var/archiv-1NFSがマウントされているにもかかわらず)、3つのエコーがすべてコンソールに表示されます。ただし、tailすぐに終了してください。

前回試行したサービス単位ファイルは次のとおりです。

[Unit]
Description=Startup Applications
After=network.target
After=net-var-archiv\x2d1.mount
After=net-var-archiv\x2d1.service

[Service]
WorkingDirectory=/opt/backup-proxmox
ExecStart=/opt/backup-proxmox/tools/watchbackup.sh
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Type=simple
StandardOutput=tty
StandardError=tty
TTYPath=/dev/tty1

[Install]
WantedBy=multi-user.target

tail起動時にサービスが開始されてもサービスを手動で再起動できる場合は、ファイルが利用できない理由を確認する方法についての提案がありますか?

答え1

デフォルトのSystemDログの使用

tail使用。 。 。代わりにjournalctl -f -u watchbackup.service

尾が許可されない理由はわかりませんが、修正のみがあります。理由がわかったら、より具体的な回答を追加する予定ですが、systemdがinitシステムでライブで実行されている間、tailがライブ書き込みを監視できないという事実と関連があると考えられます。

関連情報