私の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-1
NFSがマウントされているにもかかわらず)、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がライブ書き込みを監視できないという事実と関連があると考えられます。