Udev 규칙에 의해 시작된 애플리케이션은 4초 후에 닫힙니다.

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가 예상대로 시작됩니다(규칙이 간단하기 때문에 두 번). 하지만 4~5초가 지나면 kcalc가 다시 닫힙니다. 나는 또한 nohup이것을 시도했지만 성공하지 못했습니다. 및 와 같은 다른 응용 프로그램에서도 konsole동일한 현상이 발생합니다 kate.

kcalc를 백그라운드에서 실행하지 않으면( no &) 종료되지는 않지만 추가 처리가 차단되는 것 같습니다. 장치 알리미는 kcalc를 끄는 경우에만 알림을 보냅니다. 이 솔루션은 시스템의 다른 부분에 영향을 미치기 때문에 마음에 들지 않습니다.

그러면 앱이 닫히는 이유와 이를 방지하는 방법은 무엇입니까?

답변1

~에서udev 맨페이지

데몬이나 기타 장기 실행 프로세스를 시작하는 것은 udev에 적합하지 않습니다. 분리 여부에 관계없이 분기된 프로세스는 이벤트 처리가 완료된 후 무조건 종료됩니다.

따라서 가장 좋은 방법은 아래와 같이 최종 시작 스크립트를 udev트리거하는 서비스를 사용하는 것입니다.systemd

RUN{program}="/bin/systemctl start my_service.service"

.service그 안에 적절한 파일을 작성해야 합니다 .

관련 정보