linux - BASH - 如何在网络接口(interface)启动并可访问互联网时执行少量应用程序?

标签 linux bash google-chrome ubuntu vnc

我有以下脚本,它在系统启动时通过/etc/init.d/service 运行。但是在系统启动时,有时路由器的 DHCP ip 无效,因此它显示空页面或无效页面。如果 chromium-browser 确实可以 ping 8.8.8.8 或类似版本,我该如何执行它?

这样它就不会显示无效页面并且不需要人工参与键盘刷新页面或手动重启脚本?

#!/bin/bash
export DISPLAY=:0.0
pgrep -f chromium-browser | xargs kill
pgrep -f x11vnc | xargs kill
sudo -u user1 chromium-browser "https://stackoverflow.com/questions" &
sudo -u user1 x11vnc -forever -passwd 1234 &

最佳答案

您可以在脚本本身中添加一个计时器:

while ! ping -c 1 8.8.8.8 | grep '1 received'
do
    :
done

如果你想确保它不会永远运行:

timeout=600 # seconds
start_time="$(date +%s)"
end_time="$(($start_time + $timeout))"
while ...
    if [ "$(date +%s)" -gt "$end_time" ]
    then
        echo "$0 timed out" >&2
        exit 1
    fi
    ...
done

关于linux - BASH - 如何在网络接口(interface)启动并可访问互联网时执行少量应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25957185/

相关文章:

linux - 删除 linux 目录中的所有文件夹和文件,除了一个文件夹和该文件夹中的所有内容

python - 具有多个参数的 Bash 脚本

Android:设备屏幕不会与最新的 android 系统 WEBVIEW 超时

javascript - 如何使用 Tampermonkey 脚本跟踪网站的传出请求及其响应?

python - 将整数从列表解析为软件命令行

linux - 在第三个目录的两个文件之间创建符号链接(symbolic link)

linux - 在 GNU/Linux 中删除 header

forms - Chrome、Safari 和 Opera 不记得简单形式的密码

linux - 高通量查看和选择照片

php - 何时更喜欢 XAMPP 而不是 Linux、Apache、MySQL 和 PHP 的完整安装