パックマンが実行されているときにシャットダウンを無効にできますか?

パックマンが実行されているときにシャットダウンを無効にできますか?

Arch Linuxを使用した最後のアップデート中に、pacman -Syuアップデートがバックグラウンドで実行され、パッケージをインストールしていることを忘れていたため、ラップトップを終了しました。

pacman -Syuその後、Arch Linuxを起動できなくなり、別のノートブックを使用して起動可能なUSBを作成し、chrootを使用して再起動してArch Linuxのインストールを修復するための時間のかかるプロセスを経なければなりませんでした。

システムアップデートの実行中に誤ってラップトップをシャットダウンした後に同様の問題が発生したことがあるため、シャットダウンプロセスを開始しようとしたときにパックマンが実行中であるという警告を表示する方法があるかどうか疑問に思います。

私は一般的なKDEプラズマ「終了」メカニズムを使用してコンピュータをシャットダウンしました。

編集する

アイデアとして説明されているように、パックマンが実行されているかどうかを最初に確認するスクリプトを書くことができると思いました。ここ, pacman が実行されていない場合は、表示された kde shutdown コマンドを呼び出します。ここ

今はLinuxボックスにアクセスできないので試してみることはできませんが、今夜試してみましょう。

答え1

私はこの問題に対するシステムレベルの解決策を見つけ、どんな種類の電源管理も防ぎました。私はsystemdの電源が切れるのを防ぐ2つのパックマンフックを作成しました(参照:https://askubuntu.com/a/858617)。

まず、ターゲットをマスクすることです。

/etc/pacman.d/hooks/00-prevent-interruption-pre.hook

[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Masking systemd targets to prevent interruption...
When = PreTransaction
Exec = /usr/bin/systemctl --runtime mask halt.target poweroff.target reboot.target kexec.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target sleep.target
Depends = systemd

2番目は、他のすべてのフックが実行された後に再発見することです。

/etc/pacman.d/hooks/99-prevent-interruption-post.hook

[Trigger]
Operation = Install
Operation = Upgrade
Operation = Remove
Type = Package
Target = *

[Action]
Description = Unmasking systemd targets to reenable power management...
When = PostTransaction
Exec = /usr/bin/systemctl --runtime unmask halt.target poweroff.target reboot.target kexec.target suspend.target hibernate.target hybrid-sleep.target suspend-then-hibernate.target sleep.target
Depends = systemd

ログアウトはブロックされません。pacmanただし、正常に実行されるまでシャットダウン機能は無効になります。したがって、パックマンを実行し続けるには、ターミナルtmuxアプリケーションが閉じられたときに中断されるのを防ぐために、パックマンをターミナルマルチプレクサ(pacmanなど)に配置することをお勧めします。

関連情報