다른 애플리케이션을 기반으로 애플리케이션 시작 및 종료

다른 애플리케이션을 기반으로 애플리케이션 시작 및 종료

저는 Ubuntu 20.04를 사용하고 있으며 Quodlibet(음악 앱)과 conky를 동시에 시작하기 위한 bash 스크립트를 찾고 있습니다.편집: 아이디어는 .desktop 실행기에서 sh 스크립트를 사용하는 것입니다.

  1. Quodlibet 시작
  2. 2초 후에 conky 시작
  3. 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

관련 정보