透過 root cron 在其他使用者顯示器上啟動 GUI 應用程式

透過 root cron 在其他使用者顯示器上啟動 GUI 應用程式

我正在嘗試在系統啟動時透過 cron 自動連接 VPN 隧道。
我有一個由 root cron 觸發的 bash 腳本sudo crontab -e(因為其他一些命令需要提升)。

我可以使用 piactl (cli),但是當嘗試連接時,我收到一條訊息,指出需要啟動客戶端,所以...
我想要執行的步驟之一是啟動 GUI 應用程式 (pia -client)在我的非root 使用者顯示幕上。

以下命令直接從終端運行:

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對此問題的評論

相關內容