저는 Ubuntu 20.04를 사용하고 있으며 Quodlibet(음악 앱)과 conky를 동시에 시작하기 위한 bash 스크립트를 찾고 있습니다.편집: 아이디어는 .desktop 실행기에서 sh 스크립트를 사용하는 것입니다.
- Quodlibet 시작
- 2초 후에 conky 시작
- Quodlibet이 닫혀 있으면 conky를 닫으세요.
몇 가지 테스트를 했지만 Quodlibet의 끝을 인식하지 못했기 때문에 아래 스크립트가 작동하지 않을 것이라고 생각합니다. Quodlibet을 닫아도 Conky는 계속 실행 중입니다.
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT
quodlibet &
sleep 2 &&
conky &
wait
편집: 독립형 .sh 솔루션
@berndbausch에게 감사드립니다.
#!/bin/bash
quodlibet & QUODPID=$!
sleep 3 &&
conky & CONKYPID=$!
wait $QUODPID
kill $CONKYPID
편집: 사용자 정의 실행기 사용
@xhienne이 답변에서 설명했듯이 exec=setsid /path/to/script.sh
.desktop 파일과 스크립트에서 사용하면 잘 작동합니다.
답변1
하위 프로세스가 아닌 현재 쉘에서 Quodlibet을 시작하십시오.
#!/bin/bash
trap "exit" INT TERM ERR
trap "kill 0" EXIT
(sleep 2 && conky) &
quodlibet
.desktop
[업데이트] 그래픽 환경의 파일에서 이 스크립트를 실행하고 싶다고 말씀하셨습니다 . @fra-san은 이런 방식으로 실행되는 모든 프로세스가 상위 프로세스의 프로세스 그룹을 상속할 수 있으므로 kill 0
해당 실행 프로그램 프로세스와 (아마도) 시작된 모든 프로세스를 종료할 수 있다는 사실을 깨닫게 해주었습니다 . 이것은 확실히 당신이 원하는 것이 아닙니다.
해결책은 setsid
새 프로세스 그룹이 전용으로 생성되도록 스크립트를 시작하는 것입니다.
setsid /path/to/script.sh