[rpi4, wifi, ubuntu 22.04] pi4 wifi 끈길때, 재시작, 재부팅 스크립트
원인
- 이번에 250GB SSD 를 장착한 이후로, wifi 끈김 현상이 발생합니다. (특히, 영상파일을 다운로드 할때)
- 우분투 서버버전이라 wifi 가 안되면, 재부팅 해야 하므로, 매우 불편합니다.
ssd 장착시
- usb3 포트에 연결하려고 했으나, 불가능 하네요. 구글에서 찾아보니, usb3 포트를 사용할 경우엔 wifi 5G 를 이용해야 한다고 합니다.
- usb2 포트에서는 잘 연결됩니다.
솔루션
- 와이파이 연결 끈길시, 재부팅 하거나, wifi를 재시작 하는 스크립트를 만들어서 crontab으로 실행하려고 합니다.
아래는 wifi 를 재시작 하는 스크립트 입니다.
ping -c2 8.8.8.8 > /dev/null
if [ $? != 0 ]
then
echo "No network connection, restarting wlan0 - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> wifi.txt 2>&1
ip link set wlan0 down
sleep 10
ip link set wlan0 up
fi
아래 내용으로 업데이트 했습니다.
#!/bin/bash
wget -q --spider https://google.com
if [ $? != 0 ]
then
sudo echo "No network connection, restarting wlan0 - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> /vo2/docker/script/wifi.txt 2>&1
sudo ip link set dev wlan0 down
sleep 120
sudo netplan generate
sudo netplan apply
sudo systemctl restart systemd-networkd
fi
아래는 재부팅 하는 스크립트 입니다.
ping -c4 8.8.8.8 > /dev/null
if [ $? != 0 ]
then
echo "No network connection, reboot - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> wifi.txt 2>&1
sudo /sbin/shutdown -r now
fi
아래 내용으로 업데이트 했습니다.
#!/bin/bash
wget -q --spider https://google.com
if [ $? != 0 ]
then
sudo echo "No network connection, reboot - $(date +%Y)-$(date +%m)-$(date +%d) $(date +%H):$(date +%M):$(date +%S)" >> /vo2/docker/script/wifi.txt 2>&1
sudo shutdown --reboot 1 #System rebooting in 1 minute
sleep 120
fi
*** if [$? != 0] 의 뜻,
- $? ; 리눅스 명령어, 앞 명령의 결과 변수, 0 이면 정상
- != ; 같지 않다. 반대는 =
즉, if [$? != 0] 는 "위 실행문이 정상이 아니라면" 이라는 뜻 입니다.
추가사항
- sleep 120 을 준 이유는, wifi 재시작 또는 시스템 리부팅 과정에서 다른 작업과 충돌을 방지하기 위함입니다.
- 위 스크립트를 crontab 에 실행을 시켰습니다. 처음에는 10분 간격으로 했으나, 이것도 서로 충돌이 발생합니다.
그래서, 충분한 시간 간격으로 실행되도록 변경했습니다. (각 20분 간격)
56 * * * * /vo2/docker/script/wifi.sh #wifi 재부팅은 매시간 56분에 실행
16 * * * * /vo2/docker/script/wifi.sh #wifi 재부팅은 매시간 16분에 실행
36 * * * * /vo2/docker/script/wifi2.sh #시스템 재부팅은 매시간 36분에 실행