看板 Linux 關於我們 聯絡資訊
感謝各位幫忙 完整版如下 System>Scheduled Tasks 每分鐘執行一次 */1 * * * * sh /root/wifi_watchdog.sh EX: https://i.imgur.com/z5FI6sF.png 要把wifi_watchdog.sh放到/roor下面 #==================以下為wifi_watchdog.sh=================== #!/bin/sh DATE=`date +%Y-%m-%d-%H:%M:%S` #find the error message dmesg|grep rt2x00queue_write_tx_frame>>/tmp/log.txt #check the size if the log file size=`du -a /tmp/log.txt|awk '{print $1}'` if [ "$size" -gt "0" ]; then echo $DATE Router reboot >>/root/wifi_watchdog.log reboot fi #=========================================================== 這樣就會每分鐘跑一次,只要抓到rt2x00queue_write_tx_frame錯誤 /tmp/log.txt 容量就會變大 然後,紀錄重啟時間點,重啟路由器 ※ 引述《HiJimmy (嗨 吉米)》之銘言: : 大家好~~ : 目前有一台MTK路由器 : 因為驅動的問題,無線都會不定時出錯 : 出錯就要重開才會正常 : 所以我想要用定時檢查 : 目前卡在條件判斷式的寫法 : cron 排程 : 1 0 0 0 0 /root/wifi_watchdog.sh : 剛剛發現排程錯了 應該是 : */1 * * * * /root/wifi_watchdog.sh 一分鐘一次 : 批次檔 : #!/bin/sh : #擷取網卡錯誤紀錄 : dmesg|grep rt2x00queue_write_tx_frame>>/tmp/log.txt : #檢查檔案大小 : if [ du -a /tmp/log.txt>0]; then : reboot : fi : 卡在檢查完大小,我不知道那個數字要比對大於零的寫法 : 目前這樣寫是過不了 : 有大於零代表出錯 : 我只要抓到有大於零就要重開機 : 這樣要如何撰寫 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.165.16.71 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1523685803.A.92E.html
HiJimmy: 現在會自動重啟了@@,不過,連到的設備有問題之後,Y 04/14 14:27
HiJimmy: 得等到每一分鐘的檢查,也就是最長的時間是59秒加上 04/14 14:28
HiJimmy: 開機時間,不過如果範圍內有另一台漫遊設備會自己連到 04/14 14:28
HiJimmy: 另外一台 04/14 14:28
asilzheng: 覺得59秒太長可在shell加上while/sleep將檢查時間縮短 04/14 15:49
kenduest: * * * * * 就可以了,*/1 * * * * 這個 /1 多餘的 04/14 21:00
HamalAri: 是說為什麼要生 log 檔呢? 04/15 00:14
HamalAri: if dmesg|grep rt2x00...; then reboot ;fi 04/15 00:14
我的想法是因為算檔案大小比較方便 如果有辦法用grep抓到然後檢查到有 重開這樣也行 但是我還是卡在判斷式,不太熟指令 只有重開機的LOG是我故意加的
kenduest: grep "xxxxxx" && reboot 應該就可以了 04/15 00:16
我再試試看 把他並進去 ※ 編輯: HiJimmy (1.170.220.111), 04/15/2018 12:04:30
HiJimmy: 昨天到現在重開四次了~~ 04/15 16:10