728x90
반응형
먼저 해당 GUI 창을 띄울 세션 PID를 알아야 한다.
아래는 PID가 2309일 경우를 전제하였을 경우의 예시이다.
export DISPLAY=$(cat /proc/2309/environ | tr '\0' '\n' | grep DISPLAY | cut -d '=' -f2-)
export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/2309/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS | cut -d '=' -f2-)
세션 PID를 모를 경우 검색해야 하는데 gnome-shell이나 gnome-session이라는 이름을 사용할 경우
보통 pidof 명령어를 사용하여 아래처럼 알아 낼 수 있다.
pidof gnome-shell
pidof gnome-session
위의 경우 PID를 간단하게 알아 낼 수 있지만 여러 세션이 떠 있을 경우 구별하기가 어렵거나 자동 스크립트화가 곤란하다.
이럴 경우 아래와 같이 ps 명령을 고려해 볼 수 있다.
echo $(ps -ux | grep bin/gnome-shell | awk 'NR == 1{print $2}')
echo $(ps -ux | grep bin/gnome-session | awk 'NR == 1{print $2}')
위의 설명을 잠깐 해 보면,
grep은 gnome-shell이나 gnome-session을 포함한 문자열을 선택하도록 한다.
awk는 검색된 문자열들 중에서 1번째 줄만 선택하고 2번째 열을 선택하도록 해 준다.
결과적으로 gnome-shell이나 gnome-session을 포함한 PID를 자동으로 추출한다.
완전히 자동화된 PID 추출을 위해서는 해당 시스템이 gnome-shell 혹은 gnome-session을 사용하는지
판단하도록 스크립트를 작성하면 좋은 데 이건 생략한다.
위의 내용을 종합하여 만든 스크립트는 아래와 같다.
export DISPLAY=$(cat /proc/$(ps -ux | grep bin/gnome-shell | awk 'NR == 1{print $2}')/environ | tr '\0' '\n' | grep DISPLAY | cut -d '=' -f2-)
export DBUS_SESSION_BUS_ADDRESS=$(cat /proc/$(ps -ux | grep bin/gnome-shell | awk 'NR == 1{print $2}')/environ | tr '\0' '\n' | grep DBUS_SESSION_BUS_ADDRESS | cut -d '=' -f2-)
이제 완료되었으니 현재 터미널에서 GUI 관련 App을 실행할 경우 해당하는 그래픽 GUI 세션에서 결과 창이 뜨는 것을 볼 수 있다.
필자가 사용한 명령은 아래 2가지 이다.
gnome-terminal
jtop
PS) 위의 쉘스크립트는 bash 기반에서 테스트 하였음으로 다른 쉘을 사용할 경우 결과가 차이날 수 있다.
728x90
'기술자료 > Shell Script' 카테고리의 다른 글
쉘 스크립트 느낌표 사용 방법 Bang Exclamation mark shell script (0) | 2021.06.29 |
---|---|
2차원 배열 쉘 스크립트 shell script programming 2D 2 Dimensional Array (0) | 2021.06.25 |