![ユーザー入力を待っている間にシステムサービスを一時停止するには? [閉鎖]](https://linux33.com/image/76891/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E5%85%A5%E5%8A%9B%E3%82%92%E5%BE%85%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E9%96%93%E3%81%AB%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9%E3%82%92%E4%B8%80%E6%99%82%E5%81%9C%E6%AD%A2%E3%81%99%E3%82%8B%E3%81%AB%E3%81%AF%EF%BC%9F%20%5B%E9%96%89%E9%8E%96%5D.png)
読み取りと休止(使用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配列のロックを解除できません。数時間この回答を試した後は、自分のサービスファイルに必要な部分がないため、独自のシステムサービスファイルを作成する必要があります。ありがとうございます。