문서 /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가 예상대로 시작됩니다(규칙이 간단하기 때문에 두 번). 하지만 4~5초가 지나면 kcalc가 다시 닫힙니다. 나는 또한 nohup
이것을 시도했지만 성공하지 못했습니다. 및 와 같은 다른 응용 프로그램에서도 konsole
동일한 현상이 발생합니다 kate
.
kcalc를 백그라운드에서 실행하지 않으면( no &
) 종료되지는 않지만 추가 처리가 차단되는 것 같습니다. 장치 알리미는 kcalc를 끄는 경우에만 알림을 보냅니다. 이 솔루션은 시스템의 다른 부분에 영향을 미치기 때문에 마음에 들지 않습니다.
그러면 앱이 닫히는 이유와 이를 방지하는 방법은 무엇입니까?
답변1
~에서udev 맨페이지
데몬이나 기타 장기 실행 프로세스를 시작하는 것은 udev에 적합하지 않습니다. 분리 여부에 관계없이 분기된 프로세스는 이벤트 처리가 완료된 후 무조건 종료됩니다.
따라서 가장 좋은 방법은 아래와 같이 최종 시작 스크립트를 udev
트리거하는 서비스를 사용하는 것입니다.systemd
RUN{program}="/bin/systemctl start my_service.service"
.service
그 안에 적절한 파일을 작성해야 합니다 .