簡體   English   中英

如何在移除設備時啟動 systemd 用戶服務,並在插入設備時停止它

[英]How to start systemd user service when device is removed, and stop it when device is inserted

Systemd 允許使用 SYSTEMD_USER_WANTS 環境和 StopWhenUnneeded 選項從 udev 規則啟動/停止服務。 但是,插入設備時將啟動服務,並在移除設備時停止服務。 我需要的是反之亦然:

  1. 移除設備后啟動服務
  2. 插入設備時停止服務

由於它是用戶服務,從 udev 規則運行 'systemctl start/stop...' 失敗。

這個問題的 udev 規則是

..., ACTION=="add", RUN+="/usr/bin/su USER -c 'systemctl --user stop my-service'"
..., ACTION=="remove", RUN+="/usr/bin/su USER -c 'systemctl --user stop my-service'"

重點是:

  1. 而不是SYSTEMD_WANTS / SYSTEMD_USER_WANTS ,應該使用 systemctl 啟動/停止服務,因為啟動/停止與設備添加/刪除不匹配。
  2. 要從其他用戶啟動/停止服務su + systemctl --user使用。
  3. 程序傳遞到RUN udev 密鑰應該來自/usr/lib/udev或必須使用絕對傳遞( man udev )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM