.xinitrc에서 새 프로세스 그룹을 시작합니다.

.xinitrc에서 새 프로세스 그룹을 시작합니다.

여러 스크립트(시간, 배터리, 볼륨 등)의 출력을 파이프하는 상태 표시줄(lemonbar)이 있습니다. 이러한 스크립트와 상태 표시줄 자체는 단일 bash 스크립트에서 실행됩니다 statusbar. 프로세스가 종료 되면 statusbar다음과 같이 하위 프로세스를 종료하여 자체적으로 정리됩니다.

trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXIT

터미널을 호출 statusbar한 다음 SIGTERM 신호를 사용하여 종료하면 모두 정상적으로 작동합니다.

그러나 다음과 같이 파일을 시작하면 statusbar스크립트가 더 이상 자체적으로 정리될 수 없습니다. 그 이유는 스크립트와 동일한 프로세스 그룹에 있고 다른 모든 프로세스가 그곳에서 시작되기 때문입니다. 나는 이것을 통해 이것을 찾았습니다..xinitrcstatusbar &statusbar.xinitrc이것답변.

문제는: statusbar프로세스와 모든 자식을 자체 프로세스 그룹에 넣어 .xinitrc자체적으로 깔끔하게 정리할 수 있습니까? 아니면 모든 아이들을 죽이는 다른 방법이 있을까요 statusbar?

추신: 상태 표시줄을 완전히 없애고 싶은 것이 일반적이지 않다는 것을 알고 있습니다. 하지만 쉽게 다시 시작하고 결국 X를 종료하지 않고도 색상 테마를 동적으로 변경할 수 있도록 만들고 싶습니다.

답변1

setsid(패키지의 일부 util-linux)를 사용하여 .xinitrc새 세션에서 스크립트를 시작해 볼 수 있습니다 .

setsid statusbar

하지만 여전히 신호를 받을 수 있나요?

관련 정보