現在のシェルのすべての祖先が死んだ直後に実行されるシェルスクリプトでタスクをスケジュールする方法は?

現在のシェルのすべての祖先が死んだ直後に実行されるシェルスクリプトでタスクをスケジュールする方法は?

ソフトウェアアップデート用のopkgパッケージを作成しています。

このパッケージはインストール後に再起動する必要があり、次の再起動後にいくつかのタスクを実行する必要があります。

postinstスクリプトにshutdown -h nowを追加しました。

これにより、opkg list-installed がインストールされているパッケージをリストしないように、opkg システムはパッケージ情報を記録しません。

だから私が解決したいのは、OPKGパッケージのpostinstスクリプトで終了/再開を確実にスケジュールする方法です。

しかし、基本的な質問は、現在のシェルのすべての祖先が死んだ直後に実行されますが、それ以前には実行されていないシェルスクリプトでタスクをスケジュールする方法です。

引用:postinstスクリプトとopkgパッケージ管理システムとは何ですか?

ベストアンサー1

問題は明確に定義されていません。子プロセスから親プロセスまでプロセスチェーンをたどると、最終的にプロセス1(init)に達します。死ぬとシステムが再起動するという意味です。

コンピュータの再起動は通常、アップグレードの一部として実行されません。管理者だけが再起動しても安全な時期を知ることができるからです。アップグレード中に再起動することは絶対に安全ではありません。 (はい、Windowsはこれを行い、やってはいけないことの輝く例です。多くのWindowsユーザーは、強制アップグレードによって再起動が発生し、仕事を失った恐ろしい話をしています。)

アップグレードに参加する人がいる場合は、できるだけ早く再起動するようにメッセージを管理者に表示します。

アップグレードが無人で実行される場合は、自動アップグレードシステムが再起動するようにスケジュールします。ただあなたのサーバーでフェイルオーバーを有効にした場合、または組み込みデバイスによって制御される生産ラインが停止しているため、特定の時間に安全に再起動したい場合は、特定の状況を知るためにシステムをアップグレードしてください。アップグレードシステムが実行され、opkgアップグレードが必要かどうかを確認します。たとえば、/reboot_neededファイルが存在する場合は再起動できます(安全な場合)。

おすすめ記事