Форум обсуждения систем  

Вернуться   Форум обсуждения систем "Умный дом", проектов Ардуино, OpenWRT и других DIY устройств > Форум умного дома > Сделай сам > OpenWRT/LEDE

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.08.2017, 21:49   #1
Tohin
Moderator
 
Регистрация: 20.07.2014
Адрес: МСК
Сообщений: 991
Вес репутации: 1031
Tohin is a jewel in the roughTohin is a jewel in the roughTohin is a jewel in the rough
По умолчанию

А есть уверенность, что в случае зависания роутера скрипт вообще стартует?
Может стоит добавить в начало скрипта touch /path/to/usb/imworking
и проверить наличие файла после ребута.
Ну и соответственно искать, что именно происходит при зависании, записывая (в файл на флешке) выхлопы команд.

Сложный вариант: Распаять Uart и смотреть, во время зависания, что именно там происходит.
Tohin вне форума   Ответить с цитированием
Старый 17.08.2017, 22:44   #2
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Tohin Посмотреть сообщение
А есть уверенность, что в случае зависания роутера скрипт вообще стартует?
Может стоит добавить в начало скрипта touch /path/to/usb/imworking
и проверить наличие файла после ребута.
Ну и соответственно искать, что именно происходит при зависании, записывая (в файл на флешке) выхлопы команд.

Сложный вариант: Распаять Uart и смотреть, во время зависания, что именно там происходит.
вот добавил , если флэшка отвалит (файл FILE=/www/my.db, в который все время пишется перестанет изменятся в течение более 600 сек):
PHP код:
#!/bin/sh
#

# which file to check
FILE=/www/my.db
# time limit in seconds
TLIMIT=600

# main
CURRENT="$(date +%s)"
FILEMOD="$(stat ${FILE} -c %Y)"
TDIFF="$(echo ${CURRENT}-${FILEMOD} | bc)"

# comparison
if [[ ${TDIFF} -gt ${TLIMIT} ]]
  
then
{
date >> /www/log.log
echo "File ${FILE} was last modified more than ${TLIMIT} seconds ago." >> /www/log.log

  
echo > /sys/class/gpio/gpio8/value
  sleep 5
  
echo > /sys/class/gpio/gpio8/value
  sleep 5
  reboot 
&&  exit
}

  else
        echo 
'ok'
fi 
и еще через пару минут , то же по крону , если сеть отвалит дополнил:
PHP код:
#! /bin/sh
# Checks if the wifi conn is up.  If not, it tries to restart
# the wifi.  If that fails, then reboot.

if (! ping -c 3 ya.ru >/dev/nill 2>&1)

        
then
                
{
date >> /www/log.log
echo "lost connect">> /www/log.log

                
echo > /sys/class/gpio/gpio8/value
                sleep 5
                
echo > /sys/class/gpio/gpio8/value
                sleep 5
                reboot 
&&  exit
                }
        else
                echo 
'ping ok'


fi 
А это я не понял :
touch /path/to/usb/imworking Это ...Устанавливает дату последнего изменения и доступа к файлу? А какого файла после ребута? Самого скрипта? или FILE=/www/my.db?
Думаю, если флэшка отвалится, все равно ничего не запишем никуда .

Последний раз редактировалось to_; 17.08.2017 в 22:53.
to_ вне форума   Ответить с цитированием
Старый 17.08.2017, 22:21   #3
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию

Tohin
Ну не знаю
У меня скрипт в таком исполнении срабатывает каждый день(бывало и не по разу) - уже год или более того.
Цикл сумерки переход с дня на ночь и наоборот, reboot - "сбрасывает мыло" с камеры.
Собственно, когда тему по motion запилил с тех пор точно...
Зависит от сферы использования, можно и добавить..
__________________
Читаю ваши мысли по аватару ...

Последний раз редактировалось sunny; 17.08.2017 в 22:24.
sunny вне форума   Ответить с цитированием
Старый 18.08.2017, 17:07   #4
Dioptimizer
Senior Member
 
Регистрация: 17.02.2013
Адрес: Харьков
Сообщений: 235
Вес репутации: 690
Dioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond reputeDioptimizer has a reputation beyond repute
По умолчанию

Хорошим тоном будет выгружать драйвер USB, а не отрезать питание через GPIO.
Лучше отрезать питание будет последним этапом.
Еще использовать команду sync перед выгрузкой драйвера желательно если есть флешки или HDD.

Последний раз редактировалось Dioptimizer; 18.08.2017 в 17:12.
Dioptimizer вне форума   Ответить с цитированием
Старый 18.08.2017, 17:48   #5
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от Dioptimizer Посмотреть сообщение
Хорошим тоном будет выгружать драйвер USB, а не отрезать питание через GPIO.
Лучше отрезать питание будет последним этапом.
Еще использовать команду sync перед выгрузкой драйвера желательно если есть флешки или HDD.
По моему это как раз не верно. Во первых - какой sync если нет sda1? Во вторых - чего выгружать драйвер , если нет устройств USB , а дальше будет перезагрузка с отключением питания?
Я могу понять , в случае если все устройства USB работают, это справедливо, но тогда зачем что-то перегружать? Весь сыр-бор как раз из-за того, что устройства USB отваливаются иногда и overley "открывает" FS ROM роутера. Кстати в приведенной команде reboot -n -f как раз -n говорит о том что синхронизацию делать не надо, иначе в моей ситуации роутер не перегружается.

Последний раз редактировалось to_; 18.08.2017 в 17:52.
to_ вне форума   Ответить с цитированием
Старый 31.08.2017, 20:43   #6
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Опять возвращаюсь к теме зависания. Пожалуйста подскажите!
В общем выше описанные мытарства не привели к решению проблемы. Видимо что то другое. По порядку:
Все работает некоторое время стабильно (3-6 дней), потом роутер становится недоступен, но продолжает пинговаться. Залогинится не получается - говорит пароль не верный. Через http отвечает следующее:

Цитата:
http://192.168.2.110
Unable to launch the requested CGI program:
/www/cgi-bin/modules/manmod/index.cgi: Input/output error


http://192.168.2.110/phpliteadmin.php
Unable to launch the requested CGI program:
/usr/bin/php-cgi: Input/output error
Это что PHP отехал?
После передергивания питания все продолжает работать нормально.

Последний раз редактировалось to_; 31.08.2017 в 20:48.
to_ вне форума   Ответить с цитированием
Старый 31.08.2017, 20:54   #7
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию

to_
Начните писать логи, там все будет сразу станет ясно
Можно на яндекс диск сохранять...
===
Имхо памяти роутеру не хватает - вот и виснет..
Как вариант апгрейд железа или перенос корня на флешку.
__________________
Читаю ваши мысли по аватару ...
sunny вне форума   Ответить с цитированием
Старый 31.08.2017, 21:13   #8
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Цитата:
Сообщение от sunny Посмотреть сообщение
to_
Начните писать логи, там все будет сразу станет ясно
Можно на яндекс диск сохранять...
===
Имхо памяти роутеру не хватает - вот и виснет..
Как вариант апгрейд железа или перенос корня на флешку.
Спасибо за оперативность!
Ок. Логи чего? Если не трудно , пожалуйста напишите пример, как. Я не шибко пока разбираюсь.

Оverley ведь в корень монтируется:
Цитата:
root@CyberWrt:~# mount
rootfs on / type rootfs (rw)
/dev/root on /rom type squashfs (ro,relatime)
proc on /proc type proc (rw,noatime)
sysfs on /sys type sysfs (rw,noatime)
tmpfs on /tmp type tmpfs (rw,nosuid,nodev,noatime)
/dev/sda1 on /overlay type ext4 (rw,relatime,data=ordered)
overlayfs:/overlay on / type overlayfs (rw,noatime,lowerdir=/,upperdir=/overlay)
tmpfs on /dev type tmpfs (rw,relatime,size=512k,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
debugfs on /sys/kernel/debug type debugfs (rw,noatime)
Или я не понимаю?

И памяти хватает, проверяю каждый день
Цитата:
root@CyberWrt:~# free
total used free shared buffers
Mem: 28940 23732 5208 0 5232
-/+ buffers: 18500 10440
Swap: 0 0 0

Последний раз редактировалось to_; 31.08.2017 в 21:16.
to_ вне форума   Ответить с цитированием
Старый 31.08.2017, 21:44   #9
sunny
Senior Member
 
Аватар для sunny
 
Регистрация: 22.10.2015
Адрес: Там где сосны и песок
Сообщений: 1,534
Вес репутации: 1601
sunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to allsunny is a name known to all
По умолчанию

Ставите/собраете davfs.
Настраиваете его:
Код:
echo "https://webdav.yandex.ru никнейм пароль" >> /etc/davfs2/secrets
chmod 0600 /etc/davfs2/secrets
yes | mount.davfs https://webdav.yandex.ru /mnt/yandex
Пишете скрипт log:

Код:
#!/bin/sh

logread > /yandex/log/$(date +%H)-00
Прописываете его выполнение в cron - каждый час/полчаса/10минут:
1 * * * * /usr/bin/log
===
Overlay(это часть) и корень(это все) - это разные вещи..
Здесь все есть:
https://wiki.openwrt.org/ru/doc/howto/extroot
От этого поста:
http://cyber-place.ru/showpost.php?p...&postcount=278
===
Некоторые программы при выполнении пишут данные в overlay, чем меньше оперативки - тем активнее данный процесс.
При любом сбое (у меня было так) идет переполнение overlay - в итоге вы получаете описанный вами результат.
Вычислил опытным путем - досконально обосновать не могу
Но это слабое железо и нехватка памяти...
__________________
Читаю ваши мысли по аватару ...

Последний раз редактировалось sunny; 31.08.2017 в 21:50.
sunny вне форума   Ответить с цитированием
Старый 31.08.2017, 22:02   #10
to_
Member
 
Регистрация: 04.01.2014
Сообщений: 81
Вес репутации: 0
to_ is an unknown quantity at this point
По умолчанию

Вот спасибо, буду изучать!
to_ вне форума   Ответить с цитированием
Ответ


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 17:55. Часовой пояс GMT +3.


Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot
Яндекс.Метрика