[Ubuntu] 設定 crontab 定時將網卡重啟,避開網路突然斷線的怪問題
在家工作 (WFH) 已經有好一陣子了,
平常會透過 VPN 連回公司的 Ubuntu 機器做事,
不過有個困擾是,那台 Ubuntu 機器不定時會網路斷線,
頻率大約是幾天到兩三週會發生一次。
一旦斷線之後,自然就沒辦法連上去,也沒辦法遠端重新啟動它…
當然最好的方法,是去找出問題的原因。
但因此這個問題發生的時間太沒規律,
除非是問題發生後,就衝去公司 debug,不然應該很難找到原因…
但因為每次問題發生,都只能找在公司的同事幫忙重開電腦,
有點困擾,有沒有好一點的方法呢?
今天同事說他幫我重開網路就好了,給了我一點靈感~
我可以在 crontab 裡面加一個定時工作,
讓它每天凌晨都重開網路一次,這樣應該會改善?
至少如果網路問題再發生,期待到凌晨時就會自動修復這樣…
馬上來編輯 crontab~
因為只有 root 才能開關網路,所以是編輯 root 的 crontab:
sudo crontab -e
內容的話,我目前是這樣寫,
在凌晨三點的時候,執行 ifconfig eno1 down
和 ifconfig eno1 up
,
將我主要的那張網卡關閉並重啟,
同時把 log 寫到 /tmp 目錄去,方便有需要時可以查看:
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed 0 3 * * * ifconfig eno1 down > /tmp/ifconfig_eno1.txt 2>&1; ifconfig eno1 up >> /tmp/ifconfig_eno1.txt 2>&1
先來測試一下… 修改 crontab 時間,讓它在下一分鐘 (測試時間是 10:05) 就執行,
然後在 Ubuntu 上一直 ping Google DNS 8.8.4.4…
果真在我設定的 10:05 時,網路斷了數秒 (因為此時在關閉與重啟網卡),
接著網路就回復了:
$ ping 8.8.4.4 | while read pong; do echo "$(date): $pong"; done Tue 09 Aug 2022 10:04:57 AM CST: 64 bytes from 8.8.4.4: icmp_seq=20 ttl=109 time=16.8 ms Tue 09 Aug 2022 10:04:58 AM CST: 64 bytes from 8.8.4.4: icmp_seq=21 ttl=109 time=16.8 ms Tue 09 Aug 2022 10:04:59 AM CST: 64 bytes from 8.8.4.4: icmp_seq=22 ttl=109 time=16.8 ms Tue 09 Aug 2022 10:05:00 AM CST: 64 bytes from 8.8.4.4: icmp_seq=23 ttl=109 time=16.9 ms Tue 09 Aug 2022 10:05:03 AM CST: 64 bytes from 8.8.4.4: icmp_seq=26 ttl=109 time=16.8 ms Tue 09 Aug 2022 10:05:04 AM CST: 64 bytes from 8.8.4.4: icmp_seq=27 ttl=109 time=16.8 ms Tue 09 Aug 2022 10:05:05 AM CST: 64 bytes from 8.8.4.4: icmp_seq=28 ttl=109 time=16.9 ms
測試完成之後,就可以改回原本的凌晨三點,讓它每天都重啟網路一次,
希望這樣之後可以比較正常囉~
參考資料:Ubuntu Enable and Disable the Network Interface
(本頁面已被瀏覽過 645 次)