사용자가 로그인할 때까지 재부팅 후 systemd 사용자 유닛이 시작되지 않습니다.

사용자가 로그인할 때까지 재부팅 후 systemd 사용자 유닛이 시작되지 않습니다.

시스템 사용자 단위가 활성화되어 있고 매일 특정 시간에 실행되는 타이머가 있습니다. 내가 겪고 있는 문제는 서버가 다시 시작되면(언제 일어날지 알 수 없음) 서비스 실행이 중지되고 결국 프로세스가 한동안 실행되지 않는 것을 확인하고 로그인한다는 것입니다. 로그인하고 실행을 시작하면 시작됩니다.

서버가 다시 시작될 때 타이머/서비스를 자동으로 재개하여 무작위 프로세스 중단을 방지하려면 어떻게 해야 합니까?

서비스 파일

[Unit]
Description=daily process update
AssertHost=ai1

[Service]
WorkingDirectory=/st2/process
ExecStart=/home/user/.venv/env/bin/python main.py --update_data

[Install]
WantedBy=default.target

타이머 파일

[Unit]
Description=run process update daily
AssertHost=myserver

[Timer]
OnCalendar=*-*-* 14:20:00
Persistent=true

[Install]
WantedBy=timers.target

다음 스크립트를 사용하여 설치

        # systemd does not support symlinks across partitions, copy service and timer to user dir
        # enable timer which calls service by the same name
        # https://askubuntu.com/questions/1083537/how-do-i-properly-install-a-systemd-timer-and-service
        cp ./stock-update.service /home/user/.config/systemd/user/process-update.service
        cp ./stock-update.timer /home/user/.config/systemd/user/process-update.timer
        systemctl --user disable process-update.timer
        systemctl --user daemon-reload
        systemctl --user enable --now process-update.timer

답변1

활성화할 수 있습니다.오래 끄는loginctl enable-linger $USER사용자로 실행하여 시스템 사용자 인스턴스를 가져옵니다.

관련 정보