シャットダウン中にvmware.serviceがハングする

シャットダウン中にvmware.serviceがハングする

Arch Linuxでは、一部のシステムアップデート(残念ながらどのアップデートであるかは不明)のため、シャットダウンvmware.service/再起動中に中断されます。

systemctl stop vmware.serviceサービスが実行されている間にサービスを手動で停止すると(たとえば、Gnome端末で)、gdm.serviceサービスが迅速に停止し、期待どおりにすぐに終了することがわかりました。 Googleを試してみると、Fedora 21にも同様の問題があることがわかり、あるユーザーは問題を解決するためにlightdmに切り替えました。 lightdmに切り替えたくないので、systemdにvmware.service停止前に停止するように指示する方法があるかどうか疑問に思いますgdm.service。または誰かが解決策がある場合...

答え1

もちろん方法があります。単一トランザクション内で有効/無効にしたときに、特定の相互順序に従う単位ペア間のいわゆるsystemd「順序依存」の指定をサポートします。systemd

~からシステムユニット(5):

=前、=後

スペースで区切られた単位名のリスト。ハイブ間の依存関係を注文します。 foo.serviceデバイスにBefore = bar.service設定が含まれていて、両方のデバイスが起動している場合、foo.serviceが起動するまでbar.serviceの起動が遅れます。 <...>順次依存関係を持つ2つのデバイスがシャットダウンすると、開始順序は逆になります。つまり、あるデバイスが別のデバイスにAfter =を設定した場合、両方のデバイスがシャットダウンすると、前者は後者の前に停止します。 <...>

vmware.serviceしたがって、停止する前に無効(停止)を試みます。上記に基づいて、gdm.serviceユニットにソート依存関係を追加することでこれを達成できます。After=gdm.servicevmware.service

セル全体をにコピーしたくない場合は、/etc/systemd/system次のメカニズムを使用できます。一時挿入(「例2」を参照)必須/etc/systemd/system/vmware.service.d/<some name>.confディレクティブとセクションヘッダのみを含むファイルを作成する必要があります。

[Unit]
After=gdm.service

これが完了したら、ユニットをsystemctl daemon-reload再読み込みするコマンドを実行します。systemd終了時に新しい依存関係リストが適用されます。

関連情報