ユーザーがログインするまで、再起動後に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ユーザーとして実行してシステムユーザーインスタンスを取得します。

関連情報