- 작성시간 : 2020/04/02 20:54
- 퍼머링크 : mcchae.egloos.com/11355114
- 덧글수 : 0
데비안과 우분투는 모두 거의 유사한 구조를 가집니다.
데몬 서비스를 하려면
[Unit]
Description=Comvoy Service
After=multi-user.target
Conflicts=getty@tty1.service
[Service]
Type=simple
ExecStart=/opt/bin/myexe
StandardInput=tty-force
[Install]
WantedBy=multi-user.target
위와 같은 서비스를 이용할 my.service 파일을 만들어
/lib/systemd/system 에 넣어두고
systemctl daemon-reload
systemctl enable my.service
systemctl start my.service
라고 주면 해당 서비스 프로그램이 데몬으로 돌게 됩니다.
그런데 데스크탑 리눅스가 돌고 있다 가정하고,
해당 데스크탑 사용자 (uid 1000 인 사용자)의 창으로
특정 X 응용 프로그램을 띄우게 하고 싶은 경우가 생겼습니다.
몇 가지 시행착오를 거친 이후, 다음과 같이 호출하면 되었습니다.
Python 프로그램 코드로 기술해 보았습니다.
user = pwd.getpwuid(1000).pw_name
cmd = f'sudo -u {user} -H XAUTHORITY=/home/{user}/.Xauthority ' \
f'DISPLAY=:0 ' \
f'/usr/bin/xclock ' \
f'> /dev/null 2>/dev/null &'
os.system(cmd)
해당 사용자로 띄우기 위하여
sudo -u 사용자로 띄우는데 환경변수는 이어받고 -H,
XAUTHORITY 와 DISPLAY 환경변수를 지정한 다음,
해당 X 응용프로그램을 띄우면 서비스에서도 잘 떴습니다.
어느 분께는 도움이 되셨기를 ..
덧글