GNU/Linux >> Linux の 問題 >  >> Linux

systemd サービス ファイルで、USB の準備ができた後はどうすればいいですか?

これまで解決したことはありませんが、「パスベースのアクティベーション」に適しているようです。

サービス ファイルに "After=" 句を含める代わりに、.path を作成します。 man systemd.path で説明されているファイル .

/dev/bus/usb の下で適切なファイルを見つけます または /sys/bus/usb 、その存在は「USB が稼働中」であることを示します。次に systemd を持っています .path を使用してファイル パスを監視する 作成するファイル。 .path ファイルは .service を有効にします ファイルが存在する場合。


私なら、systemd デバイス ユニットを作成します。 udev ルールを使用します。例:create /etc/udev/rules.d/20-usb-bus.rules と:

KERNEL=="usb[1-2]", TAG+="systemd"

次回の起動時 (または udev ルールのリロード時) に、システム デバイス ユニットが作成されます:

# systemctl status dev-bus-usb-001-001.device
● dev-bus-usb-001-001.device - 2.0 root hub
...
# systemctl status dev-bus-usb-002-001.device
● dev-bus-usb-002-001.device - 3.0 root hub
...

以下を追加することで、USB バスの準備が整った後にサービスを開始できるようになりました:

[Unit]
...
After=dev-bus-usb-001-001.device dev-bus-usb-002-001.device

あなたのsystemdサービスに。


Linux
  1. Rm後にXfsデータを回復する方法は?

  2. ケイトがクラッシュした後に回復する方法は?

  3. 自動マウント後、アクセス後にSystemdサービスを実行しますか?

  1. systemd サービスの出力をファイルにリダイレクトする方法

  2. systemd サービスを停止する方法

  3. ユーザーのログイン後に systemd サービスを開始し、ユーザーのログアウト前に停止する方法

  1. systemd サービス ログをファイルにリダイレクトする

  2. systemd のインストール後、システムが SSH を拒否し、「起動中」のままになる

  3. Systemd ユニット ファイル - WantedBy 以降