Debian プロビジョニング中にバックグラウンド再起動をスケジュールする

Debian プロビジョニング中にバックグラウンド再起動をスケジュールする

ダウンロードに問題がある場合は、インストールが中断されないように(現場の誰かが手動でシステムを再起動する必要があるため)、Debianプロビジョニングで30分の再起動タイマーを予約したいと思います。

ネットワークからイメージインストールを起動しています。

以下は機能しません(バックグラウンドで実行されず、フォアグラウンドで実行されます)。

d-i preseed/early_command string reboot -d 1800 &
d-i preseed/early_command string sh -c 'reboot -d 1800 &' ;

犯人はlog-outputここで使うプログラムだと思います。https://salsa.debian.org/installer-team/preseed/-/blob/master/preseed_command#L16

計画された再起動を実行する他の方法はありますか?追加のソフトウェアをインストールする必要がない場合は本当に良いと思います(やはりネットワークの問題...)

ベストアンサー1

編集する

screenDebianのインストーラ環境で使用できることに気づきました。いいえUbuntuで利用可能)。したがって、このコードスニペットと同様のプリセット設定を使用できます。

d-i preseed/early_command string \
  screen -dmS reboot /sbin/reboot -d 60

オリジナル投稿

もう少し詳しく調べた後、必要なことを正確に実行するには、バックグラウンドで実行され正しく実行されるデーモンプロセスを作成する必要があると思います/sbin/reboot。これを使用して、コンパイルされearly_commandたデーモンをダウンロードして実行できます。

私は次のプリセットスニペットをテストすることから始めました。 Ubuntu 20.04では希望の方法で動作しますが、いいえDebian Busterで作業する(経験どおり)。

d-i preseed/early_command string \
  /sbin/reboot -d 60 &

両方のインストーラのシェルでテストしたところ、log-outputDebianが異なる動作をする理由がわかりました。

私はlog-output.cそれを見つけたパッチ済み「ワーカープロセスが標準ファイル記述子の接続を完全に切断しないデーモンを起動した場合」を処理します。 Ubuntuにはまだこのパッチがありますが、Debianは復元したそのために発生したエラーが原因です。

インストーラ環境は非常に小さいです。nohup、、、screenまたはstart-stop-daemonバックグラウンドプロセスの代替として使用することはできません。それで、正しくバックグラウンドで実行し、必要なコマンドを実行できる実行ファイルが必要だと思います。

リンク

おすすめ記事