通过 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对此问题的评论

相关内容