루트 cron을 통해 다른 사용자 디스플레이에서 GUI 응용 프로그램 시작

루트 cron을 통해 다른 사용자 디스플레이에서 GUI 응용 프로그램 시작

시스템 부팅 시 cron을 통해 VPN 터널 연결을 자동화하려고 합니다.
루트 cron에 의해 트리거되는 bash 스크립트가 있습니다 sudo crontab -e(다른 명령에는 권한 상승이 필요하기 때문입니다).

piactl(cli)을 사용하면 괜찮을 텐데, 연결하려고 하면 클라이언트를 시작해야 한다는 메시지가 나오므로...
제가 수행하고 싶은 단계 중 하나는 GUI 응용 프로그램(pia)을 시작하는 것입니다. -client) 루트가 아닌 사용자가 표시됩니다.

다음 명령은 터미널에서 직접 작동합니다.

sudo su
runuser -l $username -c 'DISPLAY=:0 /opt/piavpn/bin/pia-client &> /dev/null &'

그러나 그것을 스크립트에 넣으면 작동하지 않습니다.
스크립트는 실행 가능 chmod +x /path/to/script.sh하며 동일한 스크립트의 다른 명령이 작동합니다.

누구든지 여기에 해결책이 있습니까?

답변1

불과 며칠 전에 이미 정확한 질문을 했기 때문에 당황스럽습니다. 깨닫지도 못했다...

해결책은 명령이 cron의 PATH.
코드를 다음으로 변경했습니다.

sudo su
/sbin/runuser -l $username -c 'DISPLAY=:0 /opt/piavpn/bin/pia-client &> /dev/null &'

출처/신용:이 질문에 대한 @steeldriver의 의견

관련 정보