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

관련 정보