여러 스크립트(시간, 배터리, 볼륨 등)의 출력을 파이프하는 상태 표시줄(lemonbar)이 있습니다. 이러한 스크립트와 상태 표시줄 자체는 단일 bash 스크립트에서 실행됩니다 statusbar
. 프로세스가 종료 되면 statusbar
다음과 같이 하위 프로세스를 종료하여 자체적으로 정리됩니다.
trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT
터미널을 호출 statusbar
한 다음 SIGTERM 신호를 사용하여 종료하면 모두 정상적으로 작동합니다.
그러나 다음과 같이 파일을 시작하면 statusbar
스크립트가 더 이상 자체적으로 정리될 수 없습니다. 그 이유는 스크립트와 동일한 프로세스 그룹에 있고 다른 모든 프로세스가 그곳에서 시작되기 때문입니다. 나는 이것을 통해 이것을 찾았습니다..xinitrc
statusbar &
statusbar
.xinitrc
이것답변.
문제는: statusbar
프로세스와 모든 자식을 자체 프로세스 그룹에 넣어 .xinitrc
자체적으로 깔끔하게 정리할 수 있습니까? 아니면 모든 아이들을 죽이는 다른 방법이 있을까요 statusbar
?
추신: 상태 표시줄을 완전히 없애고 싶은 것이 일반적이지 않다는 것을 알고 있습니다. 하지만 쉽게 다시 시작하고 결국 X를 종료하지 않고도 색상 테마를 동적으로 변경할 수 있도록 만들고 싶습니다.
답변1
setsid
(패키지의 일부 util-linux
)를 사용하여 .xinitrc
새 세션에서 스크립트를 시작해 볼 수 있습니다 .
setsid statusbar
하지만 여전히 신호를 받을 수 있나요?