ユーザー入力を待っている間にシステムサービスを一時停止するには? [閉鎖]

ユーザー入力を待っている間にシステムサービスを一時停止するには? [閉鎖]

読み取りと休止(使用openvt -w)の両方が実行されますが(read -pメッセージが表示されます)、開始を一時停止することはできません。

私はオプションの組み合わせを試しました/etc/systemd/system/<service>

Type=oneshot
TimeoutSec=5000
StandardInput=tty

このユースケースは、サービススクリプトの実行が停止した後にのみGUIをロードします。 GUIがロードされる前に、sshfs(複数のユーザーとホスト名オプションを含む)を/ homeとしてマウントし、/ homeをローカルパーティション(デフォルト)に「固定」する必要があります。

ベストアンサー1

「一時停止後の起動」はsystemdでは正しく機能しません。 systemd は複数のサービスを並列に実行します。

ただし、サービスに「依存関係」を追加した場合は、デフォルトで「開始を一時停止する必要がある」ポイントを指定してサービスを待つ必要があります。

上記のユースケースの場合は、以下を追加してください/etc/systemd/system/<service>

[Unit]
Description=commands to run before GUI loads
Before=display-manager.service

これは強制display-manager.service的に待機します<service>。私<service>の場合ユーザー入力(接続されていない読者の場合)効果的に「開始を一時停止」します。

以下は、懐疑的な意見を表現した他のコメントの意見です。

この種のユースケースがあります。つまり、暗号化されたパーティションのロックを解除することです。 systemdのバグ(bugs.freedesktop.org/show_bug.cgi?id=88483)のため、デフォルトのsystemdメカニズムを使用して起動中に暗号化されたマルチデバイスBtrfs配列のロックを解除できません。数時間この回答を試した後は、自分のサービスファイルに必要な部分がないため、独自のシステムサービスファイルを作成する必要があります。ありがとうございます。

おすすめ記事