
pacman -Sy
起動時に一度実行されるRefreshPacman.serviceというサービスファイルがあります。ただし、After=network-online.target
VPN以外のルーターへの接続のみが考慮されるため、パックマンはミラーに接続できません。最初はパックマンを使用しrefreshPacman.timer
てから60秒待ってこの問題を解決しようとしましたが、これはラップトップがnetwork-online.target
ログイン時間を超えた後(私にとっては遅すぎます)、パックマンが更新されたか、何らかの理由で更新失敗の種類を忘れた場合に発生します。
以前のサービスファイルを修正してより良いソリューションを作成しようとしましたが、systemdは成功または放棄する前に何度もサービスをロードしようとしました。サービスが機能できなくなった後、現在は次の状態です。
[Unit]
Description=refreshes pacman's database
Wants=network-online.target
Wants=mullvad-daemon.service
After=network-online.target
After=mullvad-daemon.service
StartLimitIntervalSec=180s
StartLimitBurst=3
[Service]
Type=oneshot
ExecStart=/usr/bin/pacman -Sy
RemainAfterExit=true
StandardOutput=journal
Restart=on-failure
RestartSec=60s
[Install]
WantedBy=multi-user.target
私が理解したのは、次のようなものでなければなりません。
1. run the `ExecStart` once, (fail)
2. wait `RestartSec` seconds, (maby fail?)
3. repeat step 2 `StartLimitBurst` number of times
しかし、両方によれば、journalctl -u refreshPacman.service -b
リフレッシュ/var/log/pacman.log
コマンドは放棄する前に一度だけ実行されます。内容を更新した後、サービスを無効にして再度有効にしたことを確認しましたが(systemdが私が指しているシンボルを編集したファイルが好きではない場合)、それを機能させることはできません。私はsystemdが一般的に動作する方法についての私の理解は依然として非常に限られているので、一般的に失敗または再起動がどのように機能するかを誤解しているかどうかはわかりません。
編集する
私は別のサービスファイルで遊んでいますが、何らかの理由で時間が次のように更新されました。
# nothing changed here
StartLimitIntervalSec=120s
StartLimitBurst=12
# nothing changed here
RestartSec=10s
サービスが正しく機能するようにしてください。私のテストであまりにも肥大化したタイマーを使用しているので、ログファイルを開くとまだ読み込まれていないようです。
編集2
回答を選択できないので、この質問を閉じる方法がわかりません。
答え1
systemd(おそらく)操作を再開するのに時間がかかりすぎます(質問を閉じるための答え)