最初に望んでいたことを行うための実際的な答えは、シャットダウンプロセスを確認することです(例: ps aux | grep "shutdown -h" )。次に、コマンドライン引数と開始時刻を確認したい場合(たとえば、14:51 に開始された "shutdown -h +240" は、18:51 にシャットダウンされます)。
一般的なケースでは、システム全体の観点からこれを行う方法はありません。「シャットダウン」にはさまざまな方法があります。たとえば、シャットダウン時に悪い/危険な動作をしているプログラムをハードストップするために誰かがプラグを抜くことを決定したり、UPS が最初に SIGHUP を送信してから単に失敗したりする可能性があります。このようなシャットダウンは、システムのどこにも警告なしに突然発生する可能性があるため、SIGHUP 後に実行し続けても問題ないことを確認する方法はありません。
プロセスが SIGHUP を受信した場合、基本的には、より厄介なことがすぐに続くと想定する必要があります。何か特別なことをして、SIGHUP を部分的に無視したい場合は、a) シャットダウンを実行するプログラムと調整する必要があります。b) 他のシステムがシャットダウンを実行し、SIGHUP の直後にあなたを殺した場合に備える必要があります。ソフトウェアとデータは存続します。持っているデータをすべて書き出し、安全なアトミック更新を使用して追加専用ファイルにのみ書き込みを続けます。
あなたの場合、現在の解決策(すべてのSIGHUPをシャットダウンとして扱う)が正しい方法であるとほぼ確信しています。改善したい場合は、DBUSなどを介して通知する機能をシャットダウン プログラムに追加する必要があります。