[Ubuntu] 設定 crontab 定時將網卡重啟,避開網路突然斷線的怪問題

[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

(本頁面已被瀏覽過 54 次)

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料