Arch-Linux
由 Udev 規則啟動的應用程序在 4 秒後關閉
文件
/etc/udev/rules.d/90-test.rules
:ACTION=="add", SUBSYSTEM=="usb", ENV{DISPLAY}=":0", ENV{HOME}="/home/user", RUN+="/etc/udev/rules.d/test.sh"
文件
/etc/udev/rules.d/test.sh
:#!/usr/bin/env bash /usr/bin/kcalc &
當我插入 USB 設備時,kcalc 會按預期啟動(2 次,因為規則很簡單)。但 4 到 5 秒後,kcalc 再次關閉。我也嘗試過,
nohup
但沒有成功。其他應用程序(例如konsole
和)也是如此kate
。當我不在後台執行 kcalc (no
&
) 時,它不會關閉,但似乎進一步的處理被阻止了。只有在我關閉 kcalc 後,設備通知程序才會通知我。我不喜歡這個解決方案,因為它會影響系統的其他部分。那麼為什麼應用程序會關閉,我該如何防止呢?
來自udev 手冊頁
udev 不適合啟動守護程序或其他長時間執行的程序;事件處理完成後,分叉的程序,無論是否分離,都將被無條件終止。
因此,最好的方法是使用
udev
觸發systemd
最終啟動腳本的服務,如RUN{program}="/bin/systemctl start my_service.service"
您必須在其中編寫適當的
.service
文件。