网络启动后运行 GUI 应用程序

网络启动后运行 GUI 应用程序

我需要在启动时自动启动 GUI 应用程序,但是在网络启动后,正确的方法是什么?我的操作系统是带有 LXDE 的 Lubuntu。我尝试了不同的方法,例如 crontab、rc.local 和 autostart,但没有成功。

答案1

如果您知道如何为 LXDE 放置启动脚本(请参阅文档),您始终可以构建自定义脚本:

until ip link show $interface | grep -F -q "state UP"; do
    sleep 10 # wait every ten second
done
# interface is up, now start program
exec bla

解释:

  • ip link show $interface打印一行包含接口状态的行(在本例中enp0s25):

    3: enp0s25: mtu 1500 qdisc fq_codel 状态 UP 模式 DEFAULT 组默认 qlen 1000

  • grep -F -q "state UP"检查输出是否包含行state UP.如果是,则返回成功(退出代码 0),否则返回失败(退出代码 1)。

  • until … do; sleep 10; done执行sleep 10直到命令成功,即直到ip显示state UP。只要接口没有up,等待10秒再检查。

  • 当接口启动时,循环结束并执行以下脚本。

这当然是“忙等待”,不是一个理想的解决方案,但总是有效的。 (或者,如果您想确保真正的互联网连接,请使用ping -W 2 -c 1 google.com >& /dev/null代替。)ip … | grep

如果您使用某些网络管理器,请检查其文档是否可以添加在建立网络连接时执行的脚本。但是,这可能仅适用于 root 访问,这会使在 X 会话中启动程序变得复杂。

相关内容