내 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가 마운트되었음에도 불구하고) 세 개의 에코가 모두 콘솔에 표시됩니다. 그러나 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이 라이브 쓰기를 모니터링할 수 없다는 사실과 관련이 있는 것으로 생각됩니다.