Неточны ли датчики температуры процессоров Ryzen?

Вы имеете в виду что-то настолько простое, как это?:

while :; do
   ping -c 1 -w 3 8.8.8.8; echo $? > /tmp/ping.status
   sleep 1
done

Это будет записывать статус выхода pingв /tmp/ping.statusодин раз в секунду. Затем в другом скрипте у вас может быть что-то вроде:

pingFailed=$(cat /tmp/ping.status)
if [ $pingFailed -ne 0 ]; then
    echo "No connection"
else
    echo "Connected!"
fi

Так что да, вы могли бы сделать это. Тем не менее, это действительно плохой метод проверки вашего соединения. Очевидно, здесь есть условия для гонки. То, что соединение было активным во время выполнения первого цикла, не означает, что оно активно и сейчас. Что еще более важно, если вы читаете файл ping.statusв начале скрипта, это не означает, что соединение останется в его конце. Кроме того, вы засоряете сеть и процессор непрерывными запросами. Это действительно не очень элегантно.

Более быстрый и простой способ проверки работоспособности соединения (по крайней мере в Linux )— это просмотр /sys/class/net/$NIC/link_mode, где $NIC— имя вашей сетевой карты. Например, в моей системе:

## Wireless connection up
$ cat /sys/class/net/wlp3s0/link_mode 
1
## Wireless connection down
$ cat /sys/class/net/wlp3s0/link_mode 
0

Вы можете написать функцию, которая проверяет это:

isLinkDown(){
    return $(cat /sys/class/net/wlp3s0/link_mode)
}

И вы можете использовать его в своих скриптах вот так:

if isLinkDown; then 
    echo Link Down
else
    echo Link Up
0
07.08.2020, 17:03
0 ответов

Теги

Похожие вопросы