Linux 如何有效地监控Raspberry Pi上的以太网何时插拔?

Linux 如何有效地监控Raspberry Pi上的以太网何时插拔?,linux,bash,raspberry-pi,hardware,Linux,Bash,Raspberry Pi,Hardware,我的最终目标是创建一个在启动时运行的脚本,在插入以太网电缆时关闭wifi,反之亦然。这是我迄今为止创建的脚本: #!/bin/bash File=/sys/class/net/eth0/carrier function toggle { if grep -q 1 "$File"; then echo "Yes" else echo "No" fi } toggle # Once on

我的最终目标是创建一个在启动时运行的脚本,在插入以太网电缆时关闭wifi,反之亦然。这是我迄今为止创建的脚本:

#!/bin/bash
File=/sys/class/net/eth0/carrier
function toggle {
        if grep -q 1 "$File"; then
                echo "Yes"
        else
                echo "No"
        fi
}

toggle # Once on startup
while inotifywait -q $File; do
        toggle
done
我已经确认,插入和拔出以太网电缆确实会改变
/sys/class/net/eth0/carrier
,但由于某些原因,在更新时绝对不会发生任何变化。通过将文件更改为主目录中名为“test.txt”的临时文件,我测试了该命令是否检测到任何更改。每当我访问该文件、更改其内容等时,脚本都会如期继续。我尝试通过执行
echo'1'>test.txt来覆盖该文件,这很有效。删除文件会导致错误和脚本终止,但至少它注册了响应

我可以将脚本设置为每秒执行一次,但如果可能的话,我希望避免这种情况。

根据和,
inotify
可能不适用于
/sys
文件

另一种方法是使用
ip监视器
并检查
状态向上
状态向下
字符串:

ip monitor link dev eth0 | awk '/state DOWN/{print "No"} /state UP/{print "Yes"}'
根据和,
inotify
可能无法处理
/sys
文件

另一种方法是使用
ip监视器
并检查
状态向上
状态向下
字符串:

ip monitor link dev eth0 | awk '/state DOWN/{print "No"} /state UP/{print "Yes"}'

您是否尝试过
函数切换(){
?我怀疑
inotifywait
仅适用于普通文件和目录,而不适用于您从中读取时基本上自动生成的设备文件。您是否尝试过
函数切换(){
?我怀疑
inotifywait
只在普通文件和目录上工作,而不在设备文件上工作,这些文件在您读取时基本上会自动生成。感谢您的洞察力。我尝试运行了您给我的命令,但在插入/拔出以太网电缆时没有发生任何事情。我尝试更改了这两种情况从“打印”到“回声”,但仍然没有。尝试以sudo的身份运行;仍然没有。感谢您的洞察力。我尝试运行您给我的命令,但在插入/拔下以太网电缆时没有发生任何情况。我尝试将两个出现的“打印”更改为“回声”,但仍然没有任何结果。尝试以sudo的身份运行;仍然没有任何结果。