PDA

Bekijk de volledige versie : Правильное выключение роутера



Power
02-02-2008, 08:53
Посмотрел я на рекомендации по перезагрузке роутера в теме "Установка программ для чайника" и решил написать свою версию pre-shutdown. Теперь выкладываю её (и кое-что ещё) на суд общественности.
Сразу отмечу, что писалось и тестировалось на wl-500gp с прошивкой 1.9.2.7-10, но по идее должно работать и на остальном. За основу взяты скрипты из вышеупомянутой темы.

1. Собственно, pre-shutdown. При написании использовались некоторые идеи отсюда (http://wl500g.info/showpost.php?p=134183&postcount=37), отсюда (http://wl500g.info/showpost.php?p=144446&postcount=44) и из стартовых скриптов "большого" линукса. В скрипте используются только те возможности, которые доступны в роутере без установки каких-либо пакетов. Скрипт получился большой, но зато он сделает своё дело в подавляющем большинстве случаев.
Сразу опишу нерешённые проблемы (они также перечислены в начале скрипта на ломаном английском):

Перекрывающиеся монтирования.
Если вы смонтируете одну ФС на, например, папку "/path/to/dir", а затем другую ФС на ту же "/path/to/dir" либо выше, на "/path/to" или "/path" (спрятав тем самым первую ФС из области видимости), то `fuser -m "/path/to/dir"` не сможет найти открытые файлы на первой ФС (значит, нет гарантий, что мы сможем её перемонтировать на чтение). Можно было бы использовать имя устройства вместо точки монтирования, но fuser из busybox не понимает этого. Можно, правда, установить пакет "psmisc", fuser оттуда поймёт имя устройства и покажет на нужные процессы (скрипт для этого нужно будет править).
Но тут есть вторая часть проблемы: вызов `mount -o remount,ro ...` не сможет перемонтировать первую ФС, какие бы комбинации "имя устройства"+"точка монтирования" ему ни передавали.
Решением может быть отмонтирование второй ФС с последующими манипуляциями над первой либо просто отказ от таких конфигураций.
Необычные имена swap-файлов.
Если вы создадите и без внесения в fstab подключите swap-файл (не раздел), имя которого содержит перевод строки (да, такое возможно), то скрипт не сможет отключить такой файл и, соответственно, не сможет перемонтировать на чтение ФС с этим файлом.
Решение: отмонтировать такой файл вручную (внести явную команду в скрипт) либо опять же отказаться от использования таких имён.
(не описана в скрипте)
Может так сложиться, что какой-то процесс откроет файл на запись на интересующем нас разделе уже после того, как скрипт завершит убиение процессов, использующих раздел. Против этого трудно придумать что-то гарантированно работающее.

Примерная логика работы скрипта:

Остановка сервисов: если существует исполняемый файл "/opt/etc/init.d/rc.unslung", он вызывается с параметром "stop".
Сброс буферов (вызов sync).
Отправка сигнала TERM процессам, имеющим открытые файлы на интересующих нас разделах, и ожидание их завершения, но не дольше указанного времени (задаётся в начале скрипта, по умолчанию 20 секунд). Стоит отметить, что по уму надо бы завершать только те процессы, которые имеют открытые на запись файлы, но fuser такой информации не даёт.
Если на предыдущем шаге остались живые процессы, то список составляется заново и на этот раз отправляется сигнал KILL (опять же с ожиданием завершения, по умолчанию 5 секунд).
Отключение свопа (swapoff -a и прохождение по файлу "/proc/swaps").
Перемонтирование интересующих нас ФС на чтение.

В скрипте есть зависимость от файла "/usr/local/sbin/signal_and_wait.inc.sh" (описан ниже).
Что можно настроить в скрипте:

Таймаут ожидания (в секундах) после отправки сигналов TERM и KILL, соответственно


terminate_timeout="20"
kill_timeout="5"

Какие файловые системы нас интересуют (для перемонтирования на чтение), это регулярное выражение awk


filesystems_regexp='/^(ext3|vfat)$/'

Если у вас в качестве корневой ФС используется какой-то раздел с внешнего носителя (смонтированный на запись), то имеет смысл исключить его, а то скрипт попытается убить почти все процессы, а с разделом уже разбираться отдельно


filesystems_regexp='/^(ext3|vfat)$/ && $2 != "/"'


2. Файл signal_and_wait.inc.sh. Он не исполняемый, включается в другие скрипты. Содержит одну функцию, signal_and_wait, которая посылает указанный сигнал указанным процессам и ожидает их завершения указанное время :)

3. Стартовый скрипт S99rtorrent (для тех, у кого используется rtorrent). Улучшенный скрипт, взятый из темы про установку для чайников. Суть в том, что он теперь гарантированно останавливает rtorrent. Он посылает процессу последовательно 3 сигнала и после каждого ждёт завершения процесса в течение указанного времени (аналогично pre-shutdown). Сигналы: INT (нормальное завершение), TERM (быстрое завершение, без отсылки статистики на трекеры), KILL (немедленное убийство процесса). Таймаут ожидания после каждого из сигналов задаётся в начале скрипта:


interrupt_timeout="10"
terminate_timeout="120"
kill_timeout="5"

В этом скрипте тоже используется файл "/usr/local/sbin/signal_and_wait.inc.sh".

Несколько слов по конфигурации.

Если вы используете rtorrent (настройка S99rtorrent):
а) если вам нужно, чтобы он успел отослать статистику на трекеры, установите побольше interrupt_timeout (скажем, 5 минут = 300 секунд), но имейте в виду, если у вас pptp/pppoe/l2tp, то это соединение отключится до запуска pre-shutdown (если вы дали команду reboot/halt), так что никакая статистика уже не отправится;
б) если статистика вам не так важна, но важно, чтоб rtorrent завершился точно по своей воле, установите небольшой interrupt_timeout (секунд 5-10), но побольше terminate_timeout (опять же, скажем, 300 секунд);
в) если просто хотите быстрого завершения работы, неважно, в каком состоянии окажутся закачки (вас не пугает перехеширование при старте), то установите interrupt_timeout и terminate_timeout по минимуму (секунд 5), а уж KILL в конце его прибьёт.

Если вы помимо этого используете любые другие программы или тот же rtorrent, но не с моим S99rtorrent (настройка pre-shutdown):
а) если вам нужно дать программам больше времени на добровольное завершение, увеличьте terminate_timeout (сколько вам не жалко ждать);
б) если вам дорого время и вы не хотите ждать, пока все процессы завершат свои дела, поставьте terminate_timeout небольшим (да хоть 0), можете при этом увеличить kill_timeout до 10, но вряд ли это необходимо.

Сами скрипты - в приложенном архиве. Пути, куда их класть:
/usr/local/sbin/pre-shutdown
/usr/local/sbin/signal_and_wait.inc.sh
/opt/etc/init.d/S99rtorrent

Update: обновил S99rtorrent:
при старте не создаётся окно screen с шеллом. Бонус: при завершении торрента screen сам выходит;
при старте stdout команд тоже пишется в лог;
при завершении, если дело доходит до сигнала KILL, удаляется файл rtorrent.lock

Lupo_Alberto
02-02-2008, 08:53
Как правильно включать-выключать роутер (в моём случае wl500gP)?
Что-то мне подсказывает, что выдёргивать блок питания из розетки, это неправильное решение :)

Mairone
03-02-2008, 21:41
Как правильно включать-выключать роутер (в моём случае wl500gP)?
Что-то мне подсказывает, что выдёргивать блок питания из розетки, это неправильное решение :)

Я год выдергиваю - все норм
пьфу-пьфу-пьфу

но у меня нет фтп (навешенных флешек и HDD)

Oleg
03-02-2008, 21:54
Правильно хотя бы сказать halt, а ещё лучше в pre-shutdown добавить отомонтирование флешек. :) Можно на кнопку ez-setup это повесить.

Хотя, если флешек нет, то можете смело выдёргивать.

angel_il
03-02-2008, 22:36
дико извиняюсь а зачем в прешутдаун размонтирование, оно же и так автоматом запустится?

al37919
03-02-2008, 23:51
наивная душа... Я ж здесь (http://wl500g.info/showpost.php?p=75378&postcount=1) наглядный тест показывал --- если вручную не размонтировать, то ни хрена clean ф.с. при старте не получишь.

djet
04-02-2008, 00:19
Словил такой глюк: железка перестала реагировать на reboot, halt и kill -9, в логах - тишина.. Размонтировал всё и выключил по питанию.

angel_il
04-02-2008, 07:38
djet: один раз была такая фигня, не помню как достиг такого просветления, после того как всетаки обесточил и включил, прифшлось перезаливать flash. незнаю что было, но мне не понравилось :)

angel_il
04-02-2008, 07:41
наивная душа... Я ж здесь (http://wl500g.info/showpost.php?p=75378&postcount=1) наглядный тест показывал --- если вручную не размонтировать, то ни хрена clean ф.с. при старте не получишь.

ок. подключу скрипт для размнтирования.

dmig
04-02-2008, 11:51
наивная душа... Я ж здесь (http://wl500g.info/showpost.php?p=75378&postcount=1) наглядный тест показывал --- если вручную не размонтировать, то ни хрена clean ф.с. при старте не получишь.

именно поэтому я использую pre-mount для форсированной проверки диска при подключении :)

Lupo_Alberto
05-02-2008, 08:14
Правильно хотя бы сказать halt, а ещё лучше в pre-shutdown добавить отомонтирование флешек. :) Можно на кнопку ez-setup это повесить.

Хотя, если флешек нет, то можете смело выдёргивать.
А если не флэшка, а жёсткий диск в USB-box?
После halt есть какая-либо возможность включить роутер кроме как передёргивания блока питания?

al37919
05-02-2008, 08:34
А если не флэшка, а жёсткий диск в USB-box?
аналогично

После halt есть какая-либо возможность включить роутер кроме как передёргивания блока питания?
нет. Если только роутер не поддерживает WOL, а он его не поддерживает ( http://wl500g.info/showthread.php?t=4594 ).

Contemplator
05-02-2008, 16:58
Уточните пожалуйста, если я говорю halt, pre-shutdown отработает и после этого наступит полный halt?

Oleg
05-02-2008, 17:18
Да, так и будет.

Vofik
14-02-2008, 19:01
Есть ли команда в нашем роуте типа shutdown (я не про pre-shutdown, а про прогу, которая бы полностью всё KILL) как на компе?:confused:

Lupo_Alberto
14-02-2008, 19:20
А чем не нравится halt?
Не проверял, но и shutdown -h now должно сработать :)

Raven
14-02-2008, 23:51
Не проверял, но и shutdown -h now должно сработать :)

У меня на WL-500gP со свежей прошивкой такого (shutdown) нет. Только halt работает.

Lupo_Alberto
15-02-2008, 08:51
Точно нет :eek:

al37919
15-02-2008, 09:52
вообще то, shutdown служит для вежливого планового завершения работы многопользовательской ОС --- не мгновенного, а, скажем, через сутки с периодической рассылкой предупреждений всем залоггеным юзерам о времени Х, когда произойдет перезагрузка. Потом вызывается тот же halt или reboot. Вы уверены, что Вам на Вашем роутере такая фича нужна???

snusmumric
15-02-2008, 15:40
А у меня есть такой вопрос? а можно так сделать чтоб он сам ребутился например каждые 12 часов ?
Wl-500gp

al37919
15-02-2008, 16:45
можно.
Настраиваем cron или crond и прописываем в crontab:
* */12 * * * root /sbin/reboot

snusmumric
15-02-2008, 17:23
можно.
Настраиваем cron или crond и прописываем в crontab:
* */12 * * * root /sbin/reboot

спс большое

joka
04-06-2008, 21:16
Что может произойти с hdd ,если роутер просто выключить?
Насколько это не правильно? Если правильно,то что нужно сделать, кроме команды "halt", размонтирование там, или еще что нибудь, как это сделать грамотно. Если можно,ответьте поподробней,и с примерами и объяснениями,для начинающих.
Спасибо.

axa
05-06-2008, 05:36
http://wl500g.info/showthread.php?t=12806&highlight=%F0%E0%E7%EC%EE%ED%F2%E8%F0%EE%E2%E0%ED% E8%E5

joka
05-06-2008, 14:38
Правильно хотя бы сказать halt, а ещё лучше в pre-shutdown добавить отомонтирование флешек. Можно на кнопку ez-setup это повесить.


Разжуйте пожалуйста про скрипт размонтирования,как он должен выглядеть,где находиться,сопутствующие настройки.Возможные добаления в него,при установке других пакетов.Как проверить правильность его работы.Подводные камни.Вобщем так,что бы было понятно новичкам.Если можно,опишите как повесить его на кнопку.
Как после этого необходимо выключать роутер правильно,что бы не запортить ф.с.,данные на диске,да и сам HDD.
Спасибо.

Kolandr
05-06-2008, 15:50
в /usr/local/sbin лежит файл
pre-shutdown , у меня он выглядит так: ( вначале идет вырубание rtorrent'a )
если у вас точки монтирования отличаются, то в разделе umount the disk пропишите свои.

#!/bin/sh

/bin/kill -INT $(/bin/pidof rtorrent) &
# Then I wait for 10 seconds to be sure it died
# gracefully. The rtorrent docs say it dies in 5,
# I just wanna make extra sure.
/bin/sleep 6

if [ -n "`lsof -t /tmp/harddisk`" ]; then
lsof -t /tmp/harddisk |sort -n | xargs kill -9
fi
sleep 1;
if [ -n "`lsof -t /opt`" ]; then
lsof -t /opt |sort -n | xargs kill -9
fi
sleep 2;

# umount the disk
/bin/umount /opt
/bin/umount /tmp/harddisk
# turn swap off
swapoff /dev/discs/disc0/part1
после изменения pre-shutdown не забудьте выполнить команду
flashfs save && flashfs commit && flashfs enable && reboot
чтобы сохранить изменения и перезагрузить роутер.

joka
05-06-2008, 22:09
в /usr/local/sbin лежит файл
pre-shutdown , у меня он выглядит так: ( вначале идет вырубание rtorrent'a )
если у вас точки монтирования отличаются, то в разделе umount the disk пропишите свои.

#!/bin/sh

/bin/kill -INT $(/bin/pidof rtorrent) &
# Then I wait for 10 seconds to be sure it died
# gracefully. The rtorrent docs say it dies in 5,
# I just wanna make extra sure.
/bin/sleep 6

if [ -n "`lsof -t /tmp/harddisk`" ]; then
lsof -t /tmp/harddisk |sort -n | xargs kill -9
fi
sleep 1;
if [ -n "`lsof -t /opt`" ]; then
lsof -t /opt |sort -n | xargs kill -9
fi
sleep 2;

# umount the disk
/bin/umount /opt
/bin/umount /tmp/harddisk
# turn swap off
swapoff /dev/discs/disc0/part1
после изменения pre-shutdown не забудьте выполнить команду
flashfs save && flashfs commit && flashfs enable && reboot
чтобы сохранить изменения и перезагрузить роутер.

1.Я так монимаю,что если точки монтирования отличаются,то их надо надо поменять во всем скрипте?
2.Файл должен быть исполняемым?Ссылки на него должны быть где нибудь?Или его надо запускать руками,перед каждым выключением?
3.После этого можно просто выключать роутер,или все же вначале сделать halt?
4.Какие еще программы должны быть упомянуты в этом скрипте,которые нужно отдельно останавливать ,как на Вашем примере торент? Строки для них будут отличаться только названием программы?
Спасибо.

Kolandr
05-06-2008, 22:44
1.Я так монимаю,что если точки монтирования отличаются,то их надо надо поменять во всем скрипте?
2.Файл должен быть исполняемым?Ссылки на него должны быть где нибудь?Или его надо запускать руками,перед каждым выключением?
3.После этого можно просто выключать роутер,или все же вначале сделать halt?
4.Какие еще программы должны быть упомянуты в этом скрипте,которые нужно отдельно останавливать ,как на Вашем примере торент? Строки для них будут отличаться только названием программы?
Спасибо.
1. Да, во всем.
2. Странно, что у вас нет этого файла, ssh настраивали?
http://wl500g.info/showpost.php?p=19984&postcount=2 пункт 4).
3. Лучше через halt, т.к. именно после этого отработает pre-shutdown. если выдернуть из сети - то ничего не размонтируется.
4. у меня больше никаких нет - торрент отдельно отключается , чтобы была возможность осуществить задержку. а то он не сразу завершает свой процесс.
остальные, которые используют /tmp/harddisk - просто перебираются по очереди и прибиваются.

pro100Man
05-06-2008, 23:16
А если просто дать команду halt, то есть шансы, что при включении все нормально смонтируется, и будет работать? :rolleyes:

vectorm
06-06-2008, 10:09
А если просто дать команду halt, то есть шансы, что при включении все нормально смонтируется, и будет работать? :rolleyes:
Если все работает после перезагрузки, то и после halt и передергивания питания все поднимется.
halt - одна из стадий reboot.

joka
07-06-2008, 13:57
подскажите пожалуйста,как должен выглядеть файл pre-shutdown,если у меня такое монтирование:

[root@wl500gp root]$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 3072 3072 0 100% /
/dev/discs/disc0/part2 988244 16432 921612 2% /opt
/dev/discs/disc0/part3 152349444 131228 150670436 0% /opt/data

Спасибо.

ZooY
08-06-2008, 11:33
Подскажите как программно перегрузить роутер. Тоесть есть ли в админке роутера кнопка "Restart" или что нидь похожее. Щас чтобы перегрузиться приходиться менять имя пользователя, при этом железка перегружается.

Vofik
08-06-2008, 11:38
заходи через "черный ход" (если не знаешь - юзай советы начинающим (FAQ)) и там комманду restart вводи... если не устраивает - зайди в любую страничку настройки сети - нажми Finish и затем рестарт...

ABATAPA
08-06-2008, 11:39
Подскажите как программно перегрузить роутер. Тоесть есть ли в админке роутера кнопка "Restart" или что нидь похожее. Щас чтобы перегрузиться приходиться менять имя пользователя, при этом железка перегружается.

Чтобы не перезаписывать каждый раз nvram:
1. Через Web - "System Command" -> введите 'reboot'
2. Через telnet/ssh - тоже 'reboot'

ABATAPA
08-06-2008, 11:41
заходи через "черный ход" (если не знаешь - юзай советы начинающим (FAQ)) и там комманду restart вводи...

Юноша, Вы рановато начали советовать другим.
Нет команды 'restart', есть 'reboot'.

И удалите вашу "подпись" - она в 10 раз больше того, что Вы пишете.

Vofik
08-06-2008, 12:21
Ой, точняк - накосячил((( Вечно я эти 2 комманды путаю... (я просто сделал даже себе на ротере скрипт-файл restart, а нем комманда reboot, чтобы при любой комманде срабатывало)...

Cd_spb
18-08-2008, 10:45
подскажите пожалуйста,как должен выглядеть файл pre-shutdown,если у меня такое монтирование:

Спасибо.


#!/bin/sh

/bin/kill -INT $(/bin/pidof rtorrent) &
# Then I wait for 10 seconds to be sure it died
# gracefully. The rtorrent docs say it dies in 5,
# I just wanna make extra sure.
/bin/sleep 6

if [ -n "`lsof -t /opt/data`" ]; then
lsof -t /opt/data |sort -n | xargs kill -9
fi
sleep 1;
if [ -n "`lsof -t /opt`" ]; then
lsof -t /opt |sort -n | xargs kill -9
fi
sleep 2;

# umount the disk
/bin/umount /opt
/bin/umount /opt/data
# turn swap off
swapoff /dev/discs/disc0/part1
попробуйте так.

serji
16-09-2008, 20:27
в телнете делаю


flashfs save && flashfs commit && flashfs enable && reboot


приходит ответ


tar: Removing leading '/' from member names
tmp/local/
tmp/local/etc/
tmp/local/etc/dropbear/
tmp/local/etc/dropbear/dropbear_rsa_host_key
tmp/local/etc/dropbear/dropbear_dss_host_key
tmp/local/sbin/
tmp/local/sbin/pre-shutdown
tmp/local/sbin/post-mount
tmp/local/sbin/post-firewall
tmp/local/sbin/post-boot
tmp/local/root/
tmp/local/root/.mc/
tmp/local/root/.mc/Tree
tmp/local/root/.mc/filepos
tmp/local/root/.mc/ini
tmp/local/root/.mc/history
tmp/local/root/.mc/cedit/
tmp/local/root/.mc/cedit/cooledit.macros
-rw-r--r-- 1 admin root 3374 Sep 16 22:21 /tmp/flash.tar.gz
Check saved image and type "/sbin/flashfs commit" to commit changes
.
Committed.
[admin@W500 root]$


а девайс не перегружается!
делаю


reboot

а девайс не перегружается!
на вебморде делаю


apply+finish

а девайс не перегружается!!!!
админский пaроль не меняется, пинги не пропадают...
как его перегрузть?

спустя 15 минут...
сохранил cfg & tar.gz
нажал фактори ресторе.... ничего не произошло...
варварски передернул power
роутер загрузился дефаулт, putty не работает
в вебе втянул флеш и конфиг
в putty reboot не работает!

KPAHTbl
13-10-2008, 09:40
Настроил доступ кроутеру по ssh из интернет, пашёл как включить удалённо включить компьютеры в локальной сети, открыл доступ к компам по RDP. За всё это огромное спасибо этому форуму!
Но сегодня случилось неприятность. С работы подключился к роутеру по ssh, включил домашний комп, стал ставить на нём софтину и комп завис.
Хотел перезагрузить удалённо комп, не нашёл никакой команды акромя halt, вбил команду halt --help в программе putty (надеялся это мне справку покажеет :) ) и роутер благополучно выключился.
Теперь вопросы:
1. Как удалённо включить роутер?
2. Как удалённо перезагрузить компьютер?

sauron093
13-10-2008, 10:31
1. Как удалённо включить роутер?
2. Как удалённо перезагрузить компьютер?

1 - никак, только передергиванием питалова
2 - если завис - то нажатием на ресет

GUID
22-10-2008, 09:09
[почти не в тему]
как корректно ВЫКЛЮЧИТЬ wl-500g Premium ?

что-то не нашел ни в руководстве, ни на форуме. При "передергивании питания" сердце кровью обливается... или я не прав - на самом деле так и надо делать?

EugeenB
22-10-2008, 09:20
[почти не в тему]
как корректно ВЫКЛЮЧИТЬ wl-500g Premium ?

что-то не нашел ни в руководстве, ни на форуме. При "передергивании питания" сердце кровью обливается... или я не прав - на самом деле так и надо делать?Команда halt.
Ещё можно написать скрипт pwrdn.sh вначале останавливающий процессы, потом киляющий упрямые процессы, потом отмонтирующий носители и в конце делающий halt.

GUID
22-10-2008, 09:38
Команда halt.
она-то и была "подозреваемым №1" (поэтому и написал в этот пост).

Если я правильно понял, то способов всего три:
1. Ужасный - выдернуть шнур.
2. Терпимый - halt (т.к. "выполняется запись кэшируемых данных на диск" http://www.intuit.ru/department/os/ossolaris/9/5.html)
3. Нормальный - самописный скрипт.

EugeenB
22-10-2008, 09:54
Если я правильно понял, то способов всего три:
1. Ужасный - выдернуть шнур.
2. Терпимый - halt (т.к. "выполняется запись кэшируемых данных на диск" http://www.intuit.ru/department/os/ossolaris/9/5.html)
3. Нормальный - самописный скрипт.Хальт и есть нормальный. Самописный скрипт - это для любителей-самоделкиных. Или таких зануд, как я.

kir-g
22-10-2008, 09:56
она-то и была "подозреваемым №1" (поэтому и написал в этот пост).

Если я правильно понял, то способов всего три:
1. Ужасный - выдернуть шнур.
2. Терпимый - halt (т.к. "выполняется запись кэшируемых данных на диск" http://www.intuit.ru/department/os/ossolaris/9/5.html)
3. Нормальный - самописный скрипт.
Почитайте вот эту тему:
http://wl500g.info/showthread.php?t=12221&highlight=pre-shutdown

GUID
22-10-2008, 10:08
Почитайте вот эту тему:
http://wl500g.info/showthread.php?t=12221&highlight=pre-shutdown
Спасибо. Кажется понятно куда копать... будем разбираться...

GUID
22-10-2008, 15:05
Или таких зануд, как я.
с Вашего разрешения я тоже позанудствую (ниже рекомендованной темы про скрипты еще не успел прочитать):

Хальт и есть нормальный.
хальт прибивает все процессы максимально быстро + "ждет" завершения записи на диск (это особенность solaris или во всех *nix-системах?), так? Что в этом нормального? Как "человек испорченный windows" я прекрасно помню, что terminate_процесс - это самый гнусный способ (даже под nt).

azhur
22-10-2008, 16:51
Чтобы прибивать процессы как вам надо и нравится, пишется скрипт pre-shutdown (завершения работы которого ждет halt), линк на тему с подробностями - парой постов выше.
И килять процессы можно с разными сигналами.
Например если килять рторрент с сигналом -INT, то он корректно отключается от клиентов и трекеров, так в доке по крайней мере заявлено.

A.K.
22-10-2008, 18:41
Дайте немного позлорадствовать :)
Мне эта тема напоминает то, как некоторые виндо-юзеры "корректно" извлекают флешку из компа (что то вроде прицелится мышкой в трее - безопасное извлечение чего то там - выбрать нужный пункт - нажать на него - подождать - безопасно извлечь =) )
Я вообще не церемонюсь с такими вещами, в том числе и с рутером: из розетки куда как проще и быстрее это сделать. Уже на протяжении почти года каждый день так делаю, а что поделать если комп выключен, не включать же его только для того чтобы выключить роутер %)
извиняюсь за оффтопик =)

Tresh
22-10-2008, 19:01
У вас видимо ничего никогда не ггорел дефетный южный мост от усб
на ezsetup назначить выключение устройства и делов

GUID
22-10-2008, 19:36
Спасибо.

скрипт pre-shutdown (завершения работы которого ждет halt)
данное поведение это особенность прошивки Олега, так? (например здесь (http://linux.about.com/library/cmd/blcmdl8_halt.htm) об этом ни слова).
а откуда Вы об этом узнали? (я думаю, что там еще очень много интересного для меня :rolleyes: )

GUID
22-10-2008, 19:50
Дайте немного позлорадствовать :)
всегда пожалуйста, только сомневаюсь, что у Вас это удачно получилось...

Мне эта тема напоминает то, как некоторые виндо-юзеры "корректно" извлекают флешку из компа
Току совершено все равно кто рядом с ним: виндо-юзер, никс-хакер или бушмен => вреда от обесточивания устройства при размыкании контактов еще ничему не было.


(что то вроде прицелится мышкой в трее - безопасное извлечение чего то там - выбрать нужный пункт - нажать на него - подождать - безопасно извлечь =) )
Мне казалось, что в *nix флеш-драйв тоже является "блочным устройством" и буфера записи еще не отменили (может я не прав)...
В винде есть настройка, которая позволяет "не прицеливаться", а просто дергать, но тогда естественно чтение/запись будут медленней.

Я вообще не церемонюсь с такими вещами, в том числе и с рутером: из розетки куда как проще и быстрее это сделать.
Поздравляю - Вы не одиноки. Asus придежвается такого же мнения.

что поделать если комп выключен, не включать же его только для того чтобы выключить роутер
согласен, трабл. но, мне кажется, что это единичные случаи...

EugeenB
23-10-2008, 15:32
Мне эта тема напоминает то, как некоторые виндо-юзеры "корректно" извлекают флешку из компа (что то вроде прицелится мышкой в трее - безопасное извлечение чего то там - выбрать нужный пункт - нажать на него - подождать - безопасно извлечь =) )Ни чего смешного. Только так и надо делать: под МастДай - безопасное извлечение, а под Линукс - обязательный umount перед извлечением. Иначе - прощай свежезаписанные данные, а в особо несчастных случаях - и вся файловая система на флешке. Даже если отключить буферирование флешки, не все флешки имеют лампочку, показывающую, что запись еще идёт, и можно вытянуть "впроцессе".

Я вообще не церемонюсь с такими вещами,Эт Вы такой храбрый до первого серьёзного попадалова.

в том числе и с рутером: из розетки куда как проще и быстрее это сделать.Если роутер "голый" - без обвеса, то только это нормально: корневая файловая система - r/o, на данные в ramfs - наплевать. Единственный страх, не нарваться на момент записи роутером в nvram.

lagshmi
23-10-2008, 16:21
кстати форс анмаунт как то может плохо сказаться на файловой системе диска? и как демонтировать совп?

A.K.
24-10-2008, 14:00
Ни чего смешного. Только так и надо делать: под МастДай - безопасное извлечение, а под Линукс - обязательный umount перед извлечением. Иначе - прощай свежезаписанные данные, а в особо несчастных случаях - и вся файловая система на флешке. Даже если отключить буферирование флешки, не все флешки имеют лампочку, показывающую, что запись еще идёт, и можно вытянуть "впроцессе".
Эт Вы такой храбрый до первого серьёзного попадалова.
Если роутер "голый" - без обвеса, то только это нормально: корневая файловая система - r/o, на данные в ramfs - наплевать. Единственный страх, не нарваться на момент записи роутером в nvram.

2 GUID & EugeenB
Уважаемые не надо быть семи пядей во лбу, что бы не догадаться глянуть на лампочку флешки, перед тем как ее выдернуть. На то эти лампочки и существуют, чтоб контролить запись (в т.ч. и отложенную) у кого ее нет - сочувствую. Думаю не только вы одни такие умные, что не выдергиваете флехи, во время записи на нее.
2) на счет ФС: год простояла - пока ничего не случилось, к чему бы это? Да и у меня там не так много стоит, точнее почти ничего и не стоит, и даже если она полетит, да и хрен с ней, отформатить и установить что мне надо - не долго, гораздо меньше трудозатрат, нежели включать комп, чтобы выключить роутер. Естественно все вышеописанное сугубо ИМХО и не вижу смысла на эту тему вообще спорить, я всего лишь посмеялся, не надо так близко и буквально принимать все к сердцу - душевное здоровье, оно это самое, дороже :)

flood -off

Rung
24-10-2008, 16:08
...
2. Как удалённо перезагрузить компьютер?

как вариант, использовать управляемый ИБП (APC Back-UPS HS 500VA 230V - http://market.yandex.ru/model.xml?hid=91082&modelid=982406)

Управление через Ethernet, позволяет включать, выключать и перегружать подключенные эл.приборы(компьютеры и т.д.).
Выход 220V - 4 розетки, 3 из которых управляемые.

GUID
25-10-2008, 22:10
как вариант, использовать управляемый ИБП (APC Back-UPS HS 500VA 230V - http://market.yandex.ru/model.xml?hid=91082&modelid=982406)
самое нетривиальное решение! :)
мне к сожалению не подходит:
- не решает моей проблемы (корректного завершения работы);
- покупать UPS, для функций вкл/выкл мне кажется большим расточительством: дорогое и недолго живущее (2-3 года, даже если не испльзовать)...

DarthSemafor
09-11-2008, 21:36
Как halt повесить на ez-setup, чтобы кнопкой роутер выключать?:)

Serhio_61
09-11-2008, 21:47
Как-то так:
если файл еще не существует,то создать,сделав исполняемым:


touch /usr/local/sbin/ez-setup && chmod +x /usr/local/sbin/ez-setup
открыть его(/usr/local/sbin/ez-setup) и вписать :


#!/bin/sh
halt
в) сохранить изменения:

flashfs save && flashfs commit && flashfs enable

DarthSemafor
11-11-2008, 23:31
Спасибо, работает:)

SannyRu
30-11-2008, 13:34
Доброго времени суток.

Интересует вопрос безопасности внешнего HDD, подключенного к рутеру Asus500gP. Обязательно ли перед каждым разрывом сеанса HDD и рутера делать umount? Я о таких сеансах:
- програмный рестар рутера;
- железный рестарт рутера;
- обесточивание рутера и/или внешнего жесткого диска.

Известны ли случаи на практики, когда при таких ситуациях файловая система HDD херилась?

DafT
30-11-2008, 13:44
ну если с харда производиться только чтение и он на дополнительном питании от БП то с ним врят ли что случиться =)

sapsan
05-12-2008, 22:25
Думаю добавить в начало такие строки:

/bin/kill -INT $(/bin/pidof curl)
/bin/kill -INT $(/bin/pidof wget)
/bin/kill -INT $(/bin/pidof axel)
или ещё что-то?
Например остановить cron чтобы он чего не успел запустить? :rolleyes:

Задался таким вопросом так как диски даже после команде reboot монтируются с восстановлением журналов :(

Мой pre-shutdown:

#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 10s
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
mount -oremount,ro $i
done
swapoff -a
sleep 1s


Спасибо.

vectorm
07-12-2008, 11:49
Думаю добавить в начало такие строки:

/bin/kill -INT $(/bin/pidof curl)
/bin/kill -INT $(/bin/pidof wget)
/bin/kill -INT $(/bin/pidof axel)
или ещё что-то?
Например остановить cron чтобы он чего не успел запустить? :rolleyes:

Задался таким вопросом так как диски даже после команде reboot монтируются с восстановлением журналов :(

Мой pre-shutdown:

#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 10s
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
mount -oremount,ro $i
done
swapoff -a
sleep 1s


Спасибо.
В моей инструкции был косяк, правильно так:

#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 10s
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
mount -o remount,ro $i
done
swapoff -a
sleep 1s
А консольные качалки сами прекрасно киляются при шатдауне.

sapsan
07-12-2008, 23:43
В моей инструкции был косяк, правильно так:
офтоп: "Мы в ответе за тех, кого приручили" :)

А консольные качалки сами прекрасно киляются при шатдауне.
Спасибо. Буду наблюдать.;)

kefirux
08-12-2008, 13:47
здравствуйте, гуру сетевых технологий :)
иногда требуется перезагрузка роутера (например когда он не видит принтер или интернет барахлит).
но вот заходить по телнету, вводить логин и пароль и т.п. это каждый раз
надоедает. надо бы написать bat файл чтобы он автоматически коннектился как админ к роутеру и перезагружал его.

также так как имеется веб интерфейс, то может это возможно сделать через негоже?

Owl
08-12-2008, 13:50
putty + ssh с авторизацией без пароля (по ключам) + remote command: "reboot; exit"

:p

P.S. А вообще это ахтунг постоянно его перегружать.

kefirux
08-12-2008, 14:07
putty + ssh с авторизацией без пароля (по ключам) + remote command: "reboot; exit"

:p

P.S. А вообще это ахтунг постоянно его перегружать.

видимо винда такого не предусматривает изначально(
так. putty скачал и вроде разобрался что там к чему.
но вот как там обмениваться ключами и по умолчанию логин вводить
пока не понятно. а вот ssh по умолчанию в винде вобще есть?
мне кроме putty ещё что-нибудь нужно?

потом я так понял загружать putty из командной строки с параметрами
remote command: "reboot; exit" ?

(ну не так часто его перезагружаю, максимум 2 раза в месяц,
но в любом случае я загнался изучением возможностей командной строки
и автоматизации некоторых процессов в системе, поэтому любая информация будет полезна)

Owl
08-12-2008, 14:43
Тут все описано много раз.

1. настраиваете на роутере dropbear (описано в установке с нуля)
2. делает авторизацию без пароля по ключам (поиск)
3. в putty делаете соединение и в настройках ему пишете remote command

P.S. Если всего 2 раза в месяц - неужели так сложно 2 раза в месяц пароль набрать?

kefirux
08-12-2008, 14:50
Тут все описано много раз.

1. настраиваете на роутере dropbear (описано в установке с нуля)
2. делает авторизацию без пароля по ключам (поиск)
3. в putty делаете соединение и в настройках ему пишете remote command

P.S. Если всего 2 раза в месяц - неужели так сложно 2 раза в месяц пароль набрать?

спасибо
дело в самой идее :-)
зато теперь я знаю как это делать, может пригодится ещё для чего

al37919
08-12-2008, 14:59
http://wl500g.info/showthread.php?t=12357

s_mart
08-12-2008, 17:20
нашел на длинковском форуме

TSE - Telnet Script Executor. Программа - исполнитель telnet сценариев предназначена для автоматизации рутинных процедур по обслуживанию оборудования и программного обеспечения, сбора статистической информации и прочих работ которые могут делаться при помощи программы/протокола telnet. При необходимости программу TSE можно использовать и для доступа к другим сервисам рассчитанным на символьный обмен. Программа является бесплатной (freeware) и поставляется с исходными текстами (на C++). Программа тестировалась в работе под ОС MS Windows 95, 98, NT 4.0. Последнюю версию программы можно скачать по адресу http://home.onego.ru/~loft/_tse.exe С автором программы можно связаться по E-mail: Loft@onego.ru
............
В качестве примера приведен сценарий с именем ciscorld который перезагружает маршрутизатор Cisco Systems. Используется он следующим образом:
tse.exe router user userpass enpass <ciscorld
Где:
router - имя или IP-адрес маршрутизатора
user - имя пользователя для доступа к консоли маршрутизатора
userpass - пароль для доступа к консоли
enpass - пароль для доступа в режим enable

kefirux
09-12-2008, 00:03
http://wl500g.info/showthread.php?t=12357
спасибо)
я как раз с этой темы и делал. правда ничего не получилось :(
всё равно пускает только с паролем

kefirux
09-12-2008, 00:04
нашел на длинковском форуме
вот это круто) спасибо :)
всё работает

Zyxmon
09-12-2008, 08:40
Можно и в обычном telnet клиенте дать команду reboot.
Можно и в моей программе - http://wl500g.info/showthread.php?t=12831 на кнопку навесить reboot.

Vollsky
09-12-2008, 09:38
здравствуйте, гуру сетевых технологий :)
иногда требуется перезагрузка роутера (например когда он не видит принтер или интернет барахлит).
но вот заходить по телнету, вводить логин и пароль и т.п. это каждый раз
надоедает. надо бы написать bat файл чтобы он автоматически коннектился как админ к роутеру и перезагружал его.

также так как имеется веб интерфейс, то может это возможно сделать через негоже?

Если стоит HTTP сервер, то очень просто:

<?php
exec("reboot")
?>
Ну, а как исполнить эту команду - дело техники.

Alexander B.
09-12-2008, 10:57
Если стоит HTTP сервер, то очень просто:

<?php
exec("reboot")
?>
Ну, а как исполнить эту команду - дело техники.
Если HTTP-сервер поставлен и настроен с хотя бы минимальной мыслью о безопасности - прав должно не хватить на ребут. Не дело это - разрешать PHP от рута команды выполнять.

Vollsky
09-12-2008, 13:29
Если HTTP-сервер поставлен и настроен с хотя бы минимальной мыслью о безопасности - прав должно не хватить на ребут. Не дело это - разрешать PHP от рута команды выполнять.
Речь идет о возможности reboot_а без ввода паролей, а как обезопасить - это уже другой вопрос :) Возможностей тут тоже мноооого.

kefirux
09-12-2008, 13:59
Если стоит HTTP сервер, то очень просто:

<?php
exec("reboot")
?>
Ну, а как исполнить эту команду - дело техники.
суровые методы) но сервера не стоит, хотя может кто-то будет копаться на форуме с похожей проблемой но со своим сервером, и найдёт здесь ответ :)

kefirux
09-12-2008, 14:02
Можно и в обычном telnet клиенте дать команду reboot.
Можно и в моей программе - http://wl500g.info/showthread.php?t=12831 на кнопку навесить reboot.
а как возможно дать команду ребут в телнете без ввода пароля?
*программу сейчас затестим

Zyxmon
09-12-2008, 20:28
а как возможно дать команду ребут в телнете без ввода пароля?
*программу сейчас затестим
А где сказано, что без пароля. В программе пароль нужно ввести.

-=serg=-
09-12-2008, 21:04
спасибо)
я как раз с этой темы и делал. правда ничего не получилось :(
всё равно пускает только с паролем

Всё замечательно работает, почитайте настройки ещё раз. Правда ключ должен быть без ключевой фразы. В putty вводите все данные и сохраняете настройки, например под именем "reboot". Делаете ярлык следующего вида: C:\putty.exe -load "reboot" и всё будет работать в "один клик" без дополнительных телодвижений.:)

kefirux
10-12-2008, 08:19
Всё замечательно работает, почитайте настройки ещё раз. Правда ключ должен быть без ключевой фразы. В putty вводите все данные и сохраняете настройки, например под именем "reboot". Делаете ярлык следующего вида: C:\putty.exe -load "reboot" и всё будет работать в "один клик" без дополнительных телодвижений.:)
да, я тоже прочитал что с ключевой фразой плохо работает.
а вот за ключ командной строки спасибо :)

Vacheslav
10-12-2008, 08:19
1) создать фтп или самбу с возможностью записи туда.
2) на рутере в 5-и минутном кроне проверять наличие "магического" файла.
3) если файл есть, то ребут.

Таким образом льете на фтп или самбо-шару волшебный файл и ждете 5 минут...

Можно даже еще дальше пойти - в кроне проверять наличие текстового файла и выполнять его содержимое (указанные там команды)...

Для уменьшения показателей слабости информационной безопасности можно фиксировать содержимое волшебного файла секретным или зависимым ключом.

kefirux
10-12-2008, 13:06
1) создать фтп или самбу с возможностью записи туда.
2) на рутере в 5-и минутном кроне проверять наличие "магического" файла.
3) если файл есть, то ребут.

Таким образом льете на фтп или самбо-шару волшебный файл и ждете 5 минут...

Можно даже еще дальше пойти - в кроне проверять наличие текстового файла и выполнять его содержимое (указанные там команды)...

Для уменьшения показателей слабости информационной безопасности можно фиксировать содержимое волшебного файла секретным или зависимым ключом.

ого :eek: вот это наисуровейший метод) надо будет попробывать

sonic
10-12-2008, 20:05
запуск 1 кнопкой без ключей (http://wl500g.info/showpost.php?p=102849&postcount=65)
лично мне подошел этот вариант.

-=serg=-
10-12-2008, 20:14
kefirux
С ключевой фразой прекрасно работает и с ней более безопасно.;) Просто в вашем случае ключ должен быть без неё ичаче вам придется её вводить.

sonic
Тоже самое, что и мой вариант, но менее безопасен. Логин-пароль хранятся в открытом виде и кто то их может найти, ребенок или троян какой.:confused:

kefirux
10-12-2008, 20:52
запуск 1 кнопкой без ключей (http://wl500g.info/showpost.php?p=102849&postcount=65)
лично мне подошел этот вариант.
ругается на инвалидный порт (даже пробывал после ip вставить, но всё равно ругается)

kefirux
10-12-2008, 20:56
А где сказано, что без пароля. В программе пароль нужно ввести.

а не подскажите как запускать AsusMon через cmd.exe чтобы он сразу комманду вводил которая у меня заготовлена в этой программке? (комманда номер 1. имя Reboot)

Zyxmon
10-12-2008, 21:41
а не подскажите как запускать AsusMon через cmd.exe чтобы он сразу комманду вводил которая у меня заготовлена в этой программке? (комманда номер 1. имя Reboot)

AsusMon не поддерживает командную строку. Если разбираетесь в программировании, скачайте ZtnBatch (она с исходными кодами), немного подправьте код и используйте. Пока ZtnBatch не поддерживает Asus.

Через cmd.exe проще использовать putty.

Vacheslav
11-12-2008, 20:18
Собственно, скрипт, который кладется в /opt/etc/cron5.mins
В переменной CmdFile указывается путь и имя файла, куда будет вписана команда.
Собственно, скрипт читает из этого файла ОДНУ ПЕРВУЮ строчку и выполняет ее. Все :)

#!/bin/sh
CmdFile="/sambashare/kick.up"

if [ -r "$CmdFile" ]; then
read Cmd < $CmdFile;
eval $Cmd
fi

kefirux
12-12-2008, 00:50
Собственно, скрипт, который кладется в /opt/etc/cron5.mins
В переменной CmdFile указывается путь и имя файла, куда будет вписана команда.
Собственно, скрипт читает из этого файла ОДНУ ПЕРВУЮ строчку и выполняет ее. Все :)

#!/bin/sh
CmdFile="/sambashare/kick.up"

if [ -r "$CmdFile" ]; then
read Cmd < $CmdFile;
eval $Cmd
fi

ну ты крут) тут любой коннект по фтп подойдёт? а то я не совсем знаю что такое самба :o

Zyxmon
12-12-2008, 06:57
ну ты крут) тут любой коннект по фтп подойдёт? а то я не совсем знаю что такое самба :o
Samba - это общий доступ к файлам (в Windows).

Использовать cron + файл это из пушки по воробьям. Опять же файл нужно потом убить (если зашарена USB storage), а то будет все время перегружаться.

Написали же самый простой способ. Можно так:

putty.exe -ssh admin@192.168.1.1 -pw password -m script.txt
Вместо 192.168.1.1 - ip роутера,
вместо password - свой пароль,
в файле script.txt - команды, которые нужно выполнить (в данном случае reboot).

Может быть перегружать и не надо? А нужно соединение разорвать и создать заново?

Gobbledygook
14-12-2008, 14:26
Может быть перегружать и не надо? А нужно соединение разорвать и создать заново?
Тоже ищу простой способ переподключения.
Что нужно писать в script.txt, чтобы разорвать PPPoE-соединение и установить его снова? Перезагружать маршрутизатор не хочу.

dhcp_release
dhcp_renew
на двух строчках script.txt?
А как на локальном компьютере переподключить соединение типа Шлюз интернета? Так чтобы не вручную из значка подключения выбирать эту команду (в Windows), а делать это автоматом?

al37919
14-12-2008, 14:32
killall -HUP pppd

Zyxmon
14-12-2008, 15:17
killall -HUP pppd
В теме о "своей проге" дал такую ссылку - http://wl500g.info/showpost.php?p=60491&postcount=2

После killall, как мне писали, соединение само не поднимается. Нужна и команда для "поднятия".

al37919
14-12-2008, 15:33
killall -1 (-HUP) и killall -15 (-TERM) --- это как говорят в Одессе две большие разницы. В первом случае pppd не убивается, а ему посылается сигнал который вызывает переустановление соединения. См. man pppd. Во втором случае pppd завершается и требуется его повторный запуск.

Vacheslav
14-12-2008, 20:42
Чуть-чуть поправил скрипт, теперь он после отработки удаляет файл с командой.

#!/bin/sh
CmdFile="/opt/exchange/Logs/cmd.cmd"

if [ -r "$CmdFile" ]; then
read Cmd < $CmdFile;
eval $Cmd
rm $CmdFile
fi

Может кто-нибудь доработает, что бы он:
1) обрабатывал не только первую строку, но и остальные по порядку
2) нормально относился к виндовому окончанию строки
3) самостоятельно прибивал себя, если команда без выхода, например "top > /sambashare/top.txt"

FAVISE
03-01-2009, 08:27
Помогите пожалуйста составить pre-shutdown.
Монтирование такое:

[admin@WL-00221516E1BC root]$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/root 3072 3072 0 100% /
/dev/discs/disc0/part1 153834852 27482124 118538312 19% /tmp/mnt/disc0_1
/dev/discs/disc1/part1 1982064 355388 1525992 19% /tmp/mnt/disc1_1
/dev/scsi/host1/bus0/target0/lun0/part1 1982064 355388 1525992 19% /opt

sapsan
03-01-2009, 08:48
Помогите пожалуйста составить pre-shutdown.

Посмотри чуть выше пост от vectorm :)

Там указан правильный pre-shutdown для случая, когда у тебя всё, что подмонтировано, отформатировано в ext3.

FAVISE
03-01-2009, 19:55
спасибо,повесил на кнопку,все работает:)

Rucha
03-01-2009, 20:21
А у меня почему-то метод Serhio_61 ничего не дал. Жму красную кнопу - толку ноль. Ее надо долго жать или быстро?

Serhio_61
03-01-2009, 20:56
Ее надо долго жать или быстро?
2-4 секунды,пока не погаснет индикатор питания,потом можно отпускать...

Rucha
03-01-2009, 23:51
Спасибо, заработало!

RekoD
09-01-2009, 04:54
Тут мне один добрый человек подал идею сохранять дату+время в файле при перезагрузке/выключении.
Соответственно в pre-shutdown добавил кое-чего.
Если reboot/halt - всё ок - сохраняет.
Однако не будешь же каждый раз выключать через консоль...

А можно как-нибудь выключение на кнопку ezSetup повесить?

P.S. Также прочитал про страшные истории как портится раутер если питание вкл. и резко выкл. - это правда? а если просто в офисе свет моргнёт или кто-то случайно запнётся об провод питания - всё - раутеру "кирдык" чтоли?

ASM
09-01-2009, 12:48
Может, он же в первые секунды во флеш пишет, а если в этот момент дернуть может совсемм не то записать) Такие вещи нада на ИБП сажать:rolleyes:
А консоль.. на форуме были всякие асусмон мож поможет, или скриптик на ВБА (http://wl500g.info/showpost.php?p=41016&postcount=11)тоже был) я им и пользуюсь пока, правда чуть модифицированым (в оригинальном нету ребута:D)

Graftsman
26-02-2009, 12:55
В моей инструкции был косяк, правильно так:

#!/bin/sh
/opt/etc/init.d/rc.unslung stop
sleep 10s
for i in `cat /proc/mounts | awk '/ext3/{print($1)}'` ; do
mount -o remount,ro $i
done
swapoff -a
sleep 1s
А консольные качалки сами прекрасно киляются при шатдауне.

У меня в *pre-shutdown


#!bin/sh
/opt/etc/init.d/S99rtorrent stop

Затем выполнил:

touch /usr/local/sbin/ez-setup && chmod +x /usr/local/sbin/ez-setup

Прописал в *ez-setup:

#!/bin/sh
halt

Затем:

flashfs save && flashfs commit && flashfs enable
Этого достаточно? Держу EZ-Setup несколько секунд и лампочка Power тухнет.
В вашем коде мне много непонятно. Не могли бы прокомментировать?
Размонтирование диска желательная операция?
У меня по df:
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 3072 3072 0 100% /
/dev/root 3072 3072 0 100% /
/dev/discs/disc0/part2
307166008 158622488 132940392 55% /tmp/mnt/disc0_2
/dev/discs/disc0/part2
307166008 158622488 132940392 55% /opt

Настраивал по этой ветке http://wl500g.info/showthread.php?t=15266

theMIROn
26-02-2009, 13:13
еще варианты pre-shutdown

#!/bin/sh
/usr/bin/logger -t $(basename $0) "started [$@]"
/opt/etc/init.d/rc.unslung stop
sleep 5s
for i in `/usr/bin/awk '/ext3/{print($1)}' /proc/mounts` ; do
/bin/mount -o remount,ro $i
done
swapoff -a
sleep 1s
или

#!/bin/sh
/usr/bin/logger -t $(basename $0) "started [$@]"
/opt/etc/init.d/rc.unslung stop
sleep 5s
for i in `/usr/bin/awk '/ext3/{print($2)}' /proc/mounts` ; do
/bin/umount -r $i
done
swapoff -a
sleep 1s

Graftsman
26-02-2009, 14:53
еще варианты pre-shutdown
.........................
или
.........................

Не могли бы немного откомментировать. Что какая строчка делает.
Тогда и в FAQ можно было бы добавить. Всё-таки нужная функция.

al37919
26-02-2009, 17:15
раз уж опять вернулись к этой теме, то поделюсь текущей версией pre-shutdown, которой сам пользуюсь. Она слегка избыточна, но с задачей справляется:

#! /bin/sh

logger -t pre-shutdown "$* started."

/opt/etc/init.d/rc.unslung stop

sleep 10s

sync

for i in `cat /proc/mounts | sort -r | awk '/ext3/{print($1)}'`
do
[ -n "`/opt/sbin/lsof -t "$i"`" ] &&
/opt/sbin/lsof -t "$i" | sort -nr | xargs kill -9
sleep 2s
/bin/mount -oremount,ro $i
done

swapoff -a

sleep 1s

Перед rc.unslung stop нужно добавить отключение того, чего надо отключить в самом начале. Это все индивидуально --- у кого как настроено. Например, у меня есть скрипт типа watchdog в кроне, который надо прибивать в первую очередь, потом некоторые вещи запускаются не из rc.unslung, поэтому их тоже можно прибивать здесь.

rc.unslung stop останавливает процессы, запущенные стартовыми скриптами /opt/etc/init.d/SXX* по крайней мере те из них, которые написаны корректно, с точки зрения наличия функции stop.

sync сбрасывает на диск буфера дисков

И, наконец, последний цикл идет по списку смонтированных систем типа ext3 и для каждой сначала по списку процессов, которые открыли файлы на этих дисках [lsof] закрывает эти процессы, а потом перемонтирует файловую систему в состояние только для чтения.

lsof требует установки пакета lsof;
xargs живет в пакете findutils

По моим наблюдениям mount -o remount,ro работает надежнее, нежели umount

В результате --- как проверить, что у вас все ОК и за диск можно не опасаться:
1) выполняем этот файл вручную. После этого смотрим вывод mount. Все ext3 файловые системы должны иметь аттрибут ro
2) Если в pre-mount настроена проверка дисков с помощью e2fsck, то в syslog после перезагрузки должны быть примерно такие строки для всех проверяемых разделов:

... e2fsck: /dev/discs/disc0/part2: clean ...

Graftsman
02-03-2009, 10:38
[[Engineer@WL-500gP root]$
[Engineer@WL-500gP root]$ /opt/etc/init.d/rc.unslung stop
Starting web server: lighttpd
1970-01-01 04:13:22: (network.c.300) can't bind to port: 8081 Address already in use
Starting rtorrent: rtorrent.
[Engineer@WL-500gP root]$
[Engineer@WL-500gP root]$ sleep 10s
[Engineer@WL-500gP root]$
[Engineer@WL-500gP root]$ sync
[Engineer@WL-500gP root]$
[Engineer@WL-500gP root]$ for i in `cat /proc/mounts | sort -r | awk '/ext3/{print($1)}'`
> do
> [ -n "`/opt/sbin/lsof -t "$i"`" ] &&
> /opt/sbin/lsof -t "$i" | sort -nr | xargs kill -9
> sleep 2s
> /bin/mount -oremount,ro $i
> done
-sh: /opt/sbin/lsof: not found
mount: Mounting /dev/discs/disc0/part2 on /opt failed: Device or resource busy
-sh: /opt/sbin/lsof: not found
mount: Mounting /dev/discs/disc0/part2 on /opt failed: Device or resource busy
[Engineer@WL-500gP root]$
[Engineer@WL-500gP root]$ swapoff -a
swapoff: /etc/fstab: No such file or directory
[Engineer@WL-500gP root]$
[Engineer@WL-500gP root]$ sleep 1s
[Engineer@WL-500gP root]$

theMIROn
02-03-2009, 10:57
1. ipkg install lsof
2. создать /etc/fstab (поиск по форуму) или убрать
3. переделать скрипты запуска /opt/etc/init.d/rc.unslung, /opt/etc/init.d/S??lighttpd, /opt/etc/init.d/S??rtorrent, чтобы они понимали команду stop

vectorm
02-03-2009, 11:34
:) Это же запускать надо файлом, покомандное выполнение наполовину бессмысленно.
А почему на /opt/etc/init.d/rc.unslung stop выдает старт скриптов - надо смотреть Ваши скрипты запуска/останова.

muha
02-03-2009, 13:06
а откуда взять xargs?
его в IPKG пакете вроде нет


сорри, нашел уже... голову включать надо иногда :)

theMIROn
02-03-2009, 13:18
а откуда взять xargs?
его в IPKG пакете вроде нет
ipkg install findutils

AlekseyA
15-03-2009, 16:39
запустил из mc pre-shutdown, вот что выдает:

# ./pre-shutdown
Starting web server: lighttpd
2009-03-15 18:10:51: (network.c.300) can't bind to port: 8081 Address already in use
Starting rtorrent: rtorrent.
Killed
Killed
[admin@Router root]$ Killed
swapoff: /etc/fstab: No such file or directory

Что это - выделил красным и [admin@Router root]$ не появляется

У меня нет файла /etc/fstab монтирование идет через pre-mount, что нужно поменять?

Slader
25-04-2009, 15:33
Как организовать корректное выключение роутера? Допустим, на роутере запущен torrent клиент. Подключен внешний винт. Не заходить же в консоль... Тем более, как домашним это объяснить? :confused:

Решение 1. Не выключать!
Решение 2. Использовать ИБП. Тут возникает другой вопрос. Может ли роутер общаться с ИБП по USB? Какие ИБП (каких фирм) поддерживаются. Как все же подать на роутер сигнал, что пора закрывать торрент и отмонтировать винт.
Решение 3. Поставить внутрь аккумулятор. Но, кто поможет со схемой автоматического переключения на аккум при отсутсвии основного питания?

ЗЫ. Как у вас все это организовано?

m0xf
25-04-2009, 15:41
Рекомендую первый вариант, у него самая простая реализация :)

Serge_K
25-04-2009, 15:46
Как организовать корректное выключение роутера? Допустим, на роутере запущен torrent клиент. Подключен внешний винт. Не заходить же в консоль... Тем более, как домашним это объяснить? :confused:

Решение 1. Не выключать!
Решение 2. Использовать ИБП. Тут возникает другой вопрос. Может ли роутер общаться с ИБП по USB? Какие ИБП (каких фирм) поддерживаются. Как все же подать на роутер сигнал, что пора закрывать торрент и отмонтировать винт.
Решение 3. Поставить внутрь аккумулятор. Но, кто поможет со схемой автоматического переключения на аккум при отсутсвии основного питания?

ЗЫ. Как у вас все это организовано?

Решение 1 в общем-то само собой напрашивается - на то он и роутер.
Можно настроить корректное выключение красной кнопочкой сзади: поиск по "pre-shutdown" и "ez-setup".
Решение 2 - поиск по "nut"

GUID
25-04-2009, 18:07
Решение 2. Использовать ИБП
у меня встречный вопрос: а что Вы добъетесь с помощью ИБП?
(я вижу два варианта:
1. ИБП - "интеллектуальный" выключатель, который может сообщить роутеру, что пора выключаться.
2. ИБП имеет функцию включения по LAN, что вроде бы позволяет удаленно включать\выключать роутер... это конечно good, но его цена заоблачна....)
А сколько электроэнергии потребляет ИБП (в ждущем режиме)?

В общем, imho: ez-setup (о чем уже говорили) или не выключать...

GUID
25-04-2009, 18:11
перечитал Ваш пост и не понял, чего Вы хотите добиться:

Как организовать выключение роутера?
...
Решение 1. Не выключать!
Решение 2. Использовать ИБП.
Решение 3. Поставить внутрь аккумулятор.
Вам не качется, что решения Ваши решения прямо противополжны поставленной цели?

Slader
25-04-2009, 18:58
перечитал Ваш пост и не понял, чего Вы хотите добиться:

Вам не качется, что решения Ваши решения прямо противополжны поставленной цели?

Не кажется. Потому что не стоит выкидывать слова из контекста. Я в первом посте писал:

Как организовать корректное выключение роутера

Это значит, что я хочу найти способ выключать роутер так, чтобы не поверждалась ФС на подключенном винте. Соответственно ИБП и аккумулятор могут дать роутеру время на отмонтирование диска.

GUID
26-04-2009, 23:36
Это значит, что я хочу найти способ выключать роутер так, чтобы не поверждалась ФС на подключенном винте.
Уважаемый Serge_K Вам уже ответил. Я только немного разверну его ответ:
1."pre-shutdown" - в нем вы прописываете, что нужно сделать перед отключением питания (размонтировать диски, закрыть программы... etc)
2. Как "инициировать" выключение роутера (насколько я понимаю именно в этом вопрос). Я думаю, что вариантов не очень много:
- ez-setup - вы нажимаете кнопочку на роуторе ручками => запускается скрипт выключения.
- "заходим" на роутер через ssh (telnet) и даем команду на выключение. Тут можно упростить для домашних: ярлык для putty (ssh) в котором прописаны пароль админа и команда, т.е. нужно будет просто нажать на ярлык. (минус - пароль админа в командной строке).
- если на роутере есть веб-сервер, то наверное можно (на php) на одной из страниц сделать кнопочку "выкл".
- ИБП с сетевым интерфейсом (вкл/выкл по сети): ... стоит как два роутера...

(будем надеятся, что тему расскрыл... ;)
Если же у Вас проблема, того, что домашние зверски выдергивают роутер из розетки (на это косвенно указывает упоминание ИБП, аккумулятора) - то всех старше 8 лет - бить по рукам! "шутка" (с) "Кавказская пленница"

MrGalaxy
27-04-2009, 21:07
Дополню такой репликой:
раздел диска, где хранятся установленные пакеты (/opt), будет полезно куда-нибудь сохранить на всякий случай и при непредвиденном крахе этого диска потом легко восстановить.

И совсем уж размечтаюсь:
кнопку EZ-SETUP полезно перенести на переднюю панель, т.к. не все домочадцы смогут её найти где-то там сзади. :)

qnx4ever
07-05-2009, 10:33
Может кому пригодится.
Я долго мудрил с lsof и fuser -m для убивания процессов имеющие открытые файлы и в конце концов отказался от этой затеи по причине их странного подчас поведения. Приведённые ниже скрипты убивают все процессы с PID>50 в порядке убывания PID, сначала 15-ым сигналом, потом 9-ым.


[/tmp/local/sbin/killwait]
Script остановки процессов по списку PIDs, киляет 15-ым сигналом, потом ждёт завершения процессов но не более указанного времени, оставшиеся киляет 9-ым (намертво).
Пришлось мудрить с проверкой (а жив ли процесс) через proc, т.к. в ps отображаются уже мёртвые родительские процессы ожидающие кончины дочерних.
#!/bin/sh
#[/tmp/local/sbin/killwait]

[ $# -lt 2 ] && echo "Usage: killwait secs_to_wait_termination pid [pid .. pid]" && exit

wait_secs=$1
shift
pids=$*

#Prevent this script being stopped
trap - INT QUIT TSTP

#Send TERM signal to specified processes for closing
kill -15 $pids >/dev/null 2>&1

#Build test command expression for later pids alive checks
for pid in $pids
do
tst_expr="$tst_expr -e /proc/$pid/exe -o"
done

#Loop for $wait_secs seconds and at least one $pid alive
while [ $wait_secs -gt 0 -a \( $tst_expr ! 0 \) ]
do
wait_secs=$((wait_secs-1))
sleep 1
done

#Kill those processes which are still alive
kill -9 $pids >/dev/null 2>&1
#EOF


[/tmp/local/sbin/killallwait]
Script остановки процессов по списку имён процессов (по аналогии /sbin/killall), киляет 15-ым сигналом, потом ждёт завершения процессов но не более указанного времени, оставшиеся киляет 9-ым (намертво).
Пришлось мудрить с проверкой (а жив ли процесс) через proc, т.к. в ps отображаются уже мёртвые родительские процессы ожидающие кончины дочерних.

#!/bin/sh
#[/tmp/local/sbin/killallwait]

[ $# -lt 2 ] && echo "Usage: killallwait secs_to_wait_termination proc_name [proc_name .. proc_name]" && exit

wait_secs=$1
shift
procs=$*
pids=`pidof $procs`

#Prevent this script being stopped
trap - INT QUIT TSTP

#Exit if neither of given processes found
[ -n "$pids" ] && . killwait $wait_secs $pids
#EOF


[/tmp/local/sbin/pre-shutdown]
Ну и собственно говоря сам pre-shutdown script. Он слегка доработан с учётом того, что у меня / замонтирован RW на USB-HDD. Поэтому приходится чистить hosts и resolv.conf.
#!/bin/sh
#[/tmp/local/sbin/pre-shutdown]
fuser=/usr/bin/fuser
killall=/usr/bin/killall
killwait=/tmp/local/sbin/killwait
mount=/bin/mount
ps=/bin/ps
awk=/usr/bin/awk
sort=/usr/bin/sort
sync=/bin/sync
swapoff=/sbin/swapoff
LOG="/usr/bin/logger -t pre-shutdown"

#Prevent process being stopped
trap - INT QUIT TSTP

$LOG "Shutting down system"

#Hack to clean resolv.conf and hosts files to avoid data duplication
#/sbin/rc keep adding stuff into it at every startup
#critical only if you mount / on HDD
rm /tmp/resolv.conf /tmp/etc/hosts

$sync

#Get list of all process PIDs higher then 50 in descending order, skipping my own PID and parent PID
pids=$($ps | $sort -rn | $awk 'BEGIN {ORS=" "} {if ($1 > 50 && $1 !='$$' && $1 !='$PPID' && $1 != "PID") print $1}')

#Try to shutdown user processes, wait for 60 secs, then kill those left
$LOG "Killing processes" $pids
. $killwait 60 $pids

#Syslogd should be dead by now, report into syslog.log directly
echo "User processes killed, umounting FSes" >> /tmp/syslog.log

#Save syslog.log into backup file (usefull if your / mounted on HDD)
mv /tmp/syslog.log /tmp/syslog.$(date +%Y%m%d.%H%M%S)

#Disable all swaps, should be done before RO remount of all FSes as there might be swapfiles used on those filesystems.
$swapoff -a

#Remount all EXT3 mounted FSes into ReadOnly
for mnt in $($awk '/ext3/{print($1)}' /proc/mounts)
do
$mount -o remount,ro $mnt
done

#Remount / into ReadOnly (just extra cautios to be safe)
$mount -o remount,ro /
#EOF

alex7912
19-05-2009, 16:29
/tmp/local/sbin/killallwait - ошибка в названии.
Ничего не понял...
Вобщем ничего у меня не получилось.

alex7912
20-05-2009, 20:49
сделал как здесь в 37-ом посте. Но вот что странно. При запуске вручную pre-shutdown , mount показывает, что диски перемонтировались на ro (соот-но e2fsck clean). Но вот после reboot (а судя по задержке pre-mount срабатывает) e2fsck опять ругается на флешку

e2fsck: /dev/scsi/host0/bus0/target0/lun0/part2: recovering journal
с HDD на tmp/mnt таких проблем нет

al37919
20-05-2009, 21:52
возможно, имеет смысл прогнать на флешке e2fsck вручную

/opt на флешке?

alex7912
21-05-2009, 10:43
возможно, имеет смысл прогнать на флешке e2fsck вручную

/opt на флешке?

e2fsck /dev/scsi/host0/bus0/target0/lun0/part2 говорит сразу что clean
да.

/dev/root 3.0M 3.0M 0 100% /
tmpfs 14.7M 220.0K 14.5M 1% /tmp
/dev/scsi/host0/bus0/target0/lun0/part2
3.3G 229.9M 2.9G 7% /opt
/dev/scsi/host1/bus0/target0/lun0/part1
450.7G 412.5G 14.9G 97% /tmp/mnt


тупое добавление пустой команды mount (после ручного pre-shutdown я запускал для проверки mount) или увеличение последней паузы до 6s не помогло...

qnx4ever
04-06-2009, 07:02
/tmp/local/sbin/killallwait - ошибка в названии.
Ничего не понял...
Вобщем ничего у меня не получилось.

Чего у тебя не получилось ?
Так там же написано, какие скрипты нужно создать и что в них должно содержаться.
/tmp/local/sbin/killallwait тебе нужно создать. Не забудь сделать chmod u+x /tmp/local/sbin/*

Удачи

Break Action
14-06-2009, 00:54
Подскажите плз, при использовании комманды reboot, отрабатывает ли файл pre-shutdown?

Serge_K
14-06-2009, 04:56
Подскажите плз, при использовании комманды reboot, отрабатывает ли файл pre-shutdown?

Да. Равно как и при команде halt.

Break Action
14-06-2009, 11:10
Тогда у меня как то странно происходит, я срециально создал в pre-shutdown, создание тестового файла. И как результат он не создается вероятно и pre-shutdown не запускается.

PS: Все права на запуск установлены. Такая же картина наблюдается и с post-firewall

kodmis
14-06-2009, 11:23
Тогда у меня как то странно происходит, я срециально создал в pre-shutdown, создание тестового файла. И как результат он не создается вероятно и pre-shutdown не запускается.
...

А в каком каталоге pre-shutdown создает текстовый файл?

Break Action
14-06-2009, 11:50
Сорри, кажется нашел проблему, забыл проверить файлы на наличие ^M, в конце строк.
;)

zegna
11-08-2009, 19:41
если я удаленно захожу на веб-интерфейс роутера(wl520) и разрываю впн соединение руками, то будет ли реконнект в этом случае и если да, то через какое время?

vectorm
11-08-2009, 20:43
если я удаленно захожу на веб-интерфейс роутера(wl520) и разрываю впн соединение руками, то будет ли реконнект в этом случае и если да, то через какое время?
Не должно быть реконнекта - разрыв соединения же был ручной.

zegna
11-08-2009, 20:54
Не должно быть реконнекта - разрыв соединения же был ручной.
возможно ли удаленно ребутнуть устройство? прошивка официальная 2.0.0.8 не нашел в веб-интерфейсе такой возможности? может быть через телнет?

достаточно финиш нажать. тормознул я. всем спасибо

vectorm
11-08-2009, 21:05
возможно ли удаленно ребутнуть устройство? прошивка официальная 2.0.0.8 не нашел в веб-интерфейсе такой возможности? может быть через телнет?
В официальных прошивках телнета нет!
Если есть доступ к веб морде - в некоторых версиях официальной прошивки есть скрытая страница командной строки, можно там выполнить команду reboot, хотя, если веб морда доступна, то можно и обычным путем - через кнопки меню Apply ... Save & Reboot

air_sokol
04-09-2009, 21:02
Подскажите пожалуйста,если у меня ничего не навешанно,и роутер включен в сеть(адаптер) 3мес,чем это черевато,и стоит ли отключать его на ночь,или пусть себе светится?

Я как то выключал из сети,так настройки збились.

ПыСы:Ноуты,стац.комп.,ЙП камера....все на ночь выключается,светится только роутер.
Спасибо.

Lupo_Alberto
04-09-2009, 22:46
Я как то выключал из сети,так настройки збились.

Если вы имеете ввиду настройки, сделанные в консоли, вероятно, вы забыли про команды


flashfs save
flashfs commit
flashfs enable

air_sokol
09-09-2009, 12:46
Если вы имеете ввиду настройки, сделанные в консоли, вероятно, вы забыли про команды


flashfs save
flashfs commit
flashfs enable


Да нет,с этим все ОК,вопрос в том,стоит ли роутер выключать из сети на ночь (если его не используешь....все компы и т.д. выключены) роутер просто светится,поскольку включен в сеть.

Отсюда вопос....ничего страшного,что роутер всегда включен в сеть 220в,и не вытаскивается адаптер на протяжении 3-4 месяцев.

Возможно его вобще не выключать?
Какие проблемы могут быть?

Просто,купил,включил,настроил и забыл! Никогда не отключаю от сети 220в.

qnx4ever
09-09-2009, 16:03
Да нет,с этим все ОК,вопрос в том,стоит ли роутер выключать из сети на ночь (если его не используешь....все компы и т.д. выключены) роутер просто светится,поскольку включен в сеть.

Отсюда вопос....ничего страшного,что роутер всегда включен в сеть 220в,и не вытаскивается адаптер на протяжении 3-4 месяцев.

Возможно его вобще не выключать?
Какие проблемы могут быть?

Просто,купил,включил,настроил и забыл! Никогда не отключаю от сети 220в.

Рутера не выключают... судьба у них такая ;)
При работе полгода без перезагрузки рекоммендуется перезаписать flash перед ребутом. Сам на это натыкался, у Олега где-то про это было написано. Вообще думаю правилом хорошего тона должен быть еженедельный reboot по cron-у, т.к. иногда у торрентокачалок мозги съезжают.

Dimachos
10-09-2009, 17:40
доброго времени суток.
dlink320 перешитый в асус прошивкой WL500gpv2-1.9.2.7-d-r473.trx
usb hard (три раздела , как учили)

премаунт лежит здесь /usr/local/sbin/pre-mount
содержимое стандартное

#!/bin/sh

swapon -a

for i in `awk '/ext3/{print($1)}' /etc/fstab` ; do
if [ -b $i ] ; then
grep -q $i /proc/mounts || e2fsck -p $i 2>&1 | logger -t e2fsck
else
logger -t fstab "$i is not attached"
fi
done


скрипт выключение тоже стандартный , через /opt/etc/init.d/rc.unslung

Вопросы.
1. Как я понимаю syslog.log в моем случае находится в /tmp/syslog.log ? нашел командой ls перебирая все директории
2. Этот лог обязательно обнуляется после выключения питания? Как посмотреть что делается в процессе выполнения "выключательных" скриптов?
3. почему у меня скрипт подключения каждый раз проводит проверку разделов , хотя в логе e2fsck пишет что все в порядке без ошибок , но в скобочках говорит , что следущая проверка после следущей загрузки? Вроде бы писалось про определенное число монтирований , после которых проводится обязательная проверка.
4. самба запускается через 6 минут. это вызвано проверкой диска перед запуском?

qnx4ever
10-09-2009, 21:08
доброго времени суток.

Вопросы.
1. Как я понимаю syslog.log в моем случае находится в /tmp/syslog.log ? нашел командой ls перебирая все директории
2. Этот лог обязательно обнуляется после выключения питания? Как посмотреть что делается в процессе выполнения "выключательных" скриптов?
3. почему у меня скрипт подключения каждый раз проводит проверку разделов , хотя в логе e2fsck пишет что все в порядке без ошибок , но в скобочках говорит , что следущая проверка после следущей загрузки? Вроде бы писалось про определенное число монтирований , после которых проводится обязательная проверка.
4. самба запускается через 6 минут. это вызвано проверкой диска перед запуском?

2. Сохрани syslog.log на внешний винт в pre-shutdown. Смотри привем в моём посте выше по ветке.
3. man tune2fs.
tune2fs -i 0 -C 0 /dev//dev/scsi/host0/bus0/target0/lun0/part2
4. Хз... кинь вывод ps после запуска.

Dimachos
12-09-2009, 10:36
огромное спасибо! то , что нужно!
По поводу строчки

mv /tmp/syslog.log /tmp/syslog.$(date +%Y%m%d.%H%M%S)
красиво и элегантно. Странно , что не нашел в факе , вроде вещь нужная.
Вопрос. Если нет торрентокачалок , нужно ли делать убивательные скрипты?

qnx4ever
12-09-2009, 11:57
огромное спасибо! то , что нужно!
По поводу строчки

mv /tmp/syslog.log /tmp/syslog.$(date +%Y%m%d.%H%M%S)
красиво и элегантно. Странно , что не нашел в факе , вроде вещь нужная.
Вопрос. Если нет торрентокачалок , нужно ли делать убивательные скрипты?

Как иначе гарантировать что mount -oremount,ro / отработает ?
Попробуй вручную перемонтировать / в RO, увидишь сколько процессов тебе нужно будет пристрелить прежде чем сработает. Мне просто показалось что "убивательные скрипты" с задержками будут достаточно универсальным средством. Иначе можно было kill -9 по всем процессам сделать.

Dimachos
17-09-2009, 10:47
хотел глянуть в лог на предмет того , что там происходит при выключении. Глянул ls /tmp - только боевой syslog.log
Думал , что накосячил с прешатдауном. запустил mv руками , все отработалось , лог с расширением в виде даты в /tmp появился , но после перезагрузки в /tmp опять только боевой лог. Так и должно быть?

smi
17-09-2009, 11:28
Так и должно быть? Естественно так и должно быть, т.к. такая строчка не имеет смысла в pre-shutdown, если надо чтобы сохранялось, то мувить надо на внешний носитель, а не в /tmp!

qnx4ever
17-09-2009, 18:28
Естественно так и должно быть, т.к. такая строчка не имеет смысла в pre-shutdown, если надо чтобы сохранялось, то мувить надо на внешний носитель, а не в /tmp!

Зависит от того, где у тебя / хранится. У меня на внешнем носителе, соответственно можно. В стандартной настройке по FAQ, / монтируется в RamDisk, соответственно чистится при перезагрузке. Думаю можно в pre-shutdown переносить лог на внешний диск перед umount.

smi
17-09-2009, 21:40
Зависит от того, где у тебя / хранится. У меня на внешнем носителе, соответственно можно. У каждого свои причуды :eek:

В стандартной настройке по FAQ, / монтируется в RamDisk, соответственно чистится при перезагрузке. Думаю можно в pre-shutdown переносить лог на внешний диск перед umount. Интересно кому нужен такой левый pre-shutdown, раз нигде не сказано об особенностях насройки, для нормального его использования? Чтобы чайников в заблуждеие вводить? :mad:

MrGalaxy
18-09-2009, 11:01
А что такого. Я тоже в pre-shutdown засунул скрипт сохранения лога на hdd. Очень удобно, запас карман не тянет.

smi
18-09-2009, 11:44
А что такого. Я тоже в pre-shutdown засунул скрипт сохранения лога на hdd. Очень удобно, запас карман не тянет. В том, что в том pre-shutdown как-раз и нет никакого сохранения лога на внешний hdd, и то что у автора исходно, как оказалось, он сохраняется внешний hdd, но он об этом умолчал!

qnx4ever
18-09-2009, 14:42
У каждого свои причуды :eek:
Интересно кому нужен такой левый pre-shutdown, раз нигде не сказано об особенностях насройки, для нормального его использования? Чтобы чайников в заблуждеие вводить? :mad:

Что-то я уже потерялся. Может я не внимательно писал или кто-то не внимательно читал ?
Вот мои скрипты: http://wl500g.info/showpost.php?p=144446&postcount=44
Читаем внимательно комментарии
1. [/tmp/local/sbin/pre-shutdown] Ну и собственно говоря сам pre-shutdown script. Он слегка доработан с учётом того, что у меня / замонтирован RW на USB-HDD. Поэтому приходится чистить hosts и resolv.conf.
2. #Save syslog.log into backup file (usefull if your / mounted on HDD)
mv /tmp/syslog.log /tmp/syslog.$(date +%Y%m%d.%H%M%S)

Соответственно пункт 2 необходимо доработать в случае если / замонтирован в RAMFS

Dimachos
18-09-2009, 17:28
у меня юсб винчестер разбит на три части как учили . Как правильно написать mv чтобы скрипт откопировал лог в то место , где он не пропадет после перезагрузки? И что такое RW?

qnx4ever
18-09-2009, 18:48
у меня юсб винчестер разбит на три части как учили . Как правильно написать mv чтобы скрипт откопировал лог в то место , где он не пропадет после перезагрузки? И что такое RW?

Отвечаю попорядку.
Не заню как сейчас учат разбивать винты. У меня разбит на 3 партишина Swap, Root, Home.
Swap используется для Свопа
Root для /
Home для /home, где лежат торенты, бэкапы и прочее.
Соответственно у меня /tmp/syslog.log бэкапится в /tmp/syslog.{date+time}, тебе нужно бэкапить туда, куда замонтирован USB HDD, т.к. RAMFS куда замонтирован / и соответственно uгде лежит /tmp не сохраняется после перезагрузки.

RW=Read Write, ещё бывает RO=ReadOnly

Вставь в pre-shutdown перед umount
mv /tmp/syslog.log /{куда замонтирован USB HDD}/{куда складывать log бэкапы}/syslog.$(date +%Y%m%d.%H%M%S)

jav
15-11-2009, 20:37
Прикрепил комманду Halt к кнопке EZ-setup, как указано в этой теме.. Вроде работает, т.е. нажимаешь, держишь пару секунд и все светодиоды тухнут.
Больше ничего нигде не правил

А если нажать "eject" в Вэб интерфейсе, потом можно отключать питание?

Danya0w
17-11-2009, 00:18
Прикрепил комманду Halt к кнопке EZ-setup, как указано в этой теме.. Вроде работает, т.е. нажимаешь, держишь пару секунд и все светодиоды тухнут.
Больше ничего нигде не правил

А если нажать "eject" в Вэб интерфейсе, потом можно отключать питание?

я тоже всегда перед хальтом еджект делаю.
как бы его в пре-шутдаун добавить, чтобы ручками не возиться зазря?

MrGalaxy
17-11-2009, 05:26
я тоже всегда перед хальтом еджект делаю.
как бы его в пре-шутдаун добавить, чтобы ручками не возиться зазря?
В инструкции по настройке "с нуля" и в инструкции для дураков введён скрипт перемонтирования дисков на ro перед выключением.

Danya0w
18-11-2009, 02:34
В инструкции по настройке "с нуля" и в инструкции для дураков введён скрипт перемонтирования дисков на ro перед выключением.
это не то, в ро всеравно диск доступен, а EJECT реально скидывает флешку, но при загрузке recovery опять

MrGalaxy
18-11-2009, 05:35
Я спрашивал, почему вместо перемонтирования на ro не делается umount дискам. Мне толком тут на форуме не ответили. Вот думаю в pre-shutdown такой скрипт бросить.

qnx4ever
18-11-2009, 08:04
это не то, в ро всеравно диск доступен, а EJECT реально скидывает флешку, но при загрузке recovery опять

вы меня заинтреговали, пойду смотрет как он работает. В.любом случае если ест' открытые файлы,, их нужно закрыт.

al37919
18-11-2009, 09:16
Я спрашивал, почему вместо перемонтирования на ro не делается umount дискам. Мне толком тут на форуме не ответили. Вот думаю в pre-shutdown такой скрипт бросить.

есть такая утилита lsof называется. Доступна в optware. Она позволяет смотреть какие файлы на разделе открыты. ИМХО это основная причина невозможности umount

MrGalaxy
18-11-2009, 11:16
есть такая утилита lsof называется. Доступна в optware. Она позволяет смотреть какие файлы на разделе открыты. ИМХО это основная причина невозможности umount
Даже если применить лом в виде опции "-l"?

al37919
19-11-2009, 08:30
вы меня заинтреговали, пойду смотрет как он работает. В.любом случае если ест' открытые файлы,, их нужно закрыт.
eject выполняет /sbin/rmstorage

Dostoewskiy
09-02-2010, 17:18
помогите как руками промонтировать жесткий диск,дурак выключил роутер и все диск не монтируется,обидно опять форматировать диск чтоб он его увидел

Noobeum
09-02-2010, 17:54
помогите как руками промонтировать жесткий диск,дурак выключил роутер и все диск не монтируется,обидно опять форматировать диск чтоб он его увидел

mount /dev/disks/.... /tmp/harddisk123 (http://lmgtfy.com/?q=man+mount)

Power
10-02-2010, 01:38
Посмотрел я на рекомендации по перезагрузке роутера в теме "Установка программ для чайника" и решил написать свою версию pre-shutdown. Теперь выкладываю её (и кое-что ещё) на суд общественности.
Сразу отмечу, что писалось и тестировалось на wl-500gp с прошивкой 1.9.2.7-10, но по идее должно работать и на остальном. За основу взяты скрипты из вышеупомянутой темы.

1. Собственно, pre-shutdown. При написании использовались некоторые идеи отсюда (http://wl500g.info/showpost.php?p=134183&postcount=37), отсюда (http://wl500g.info/showpost.php?p=144446&postcount=44) и из стартовых скриптов "большого" линукса. В скрипте используются только те возможности, которые доступны в роутере без установки каких-либо пакетов. Скрипт получился большой, но зато он сделает своё дело в подавляющем большинстве случаев.
Сразу опишу нерешённые проблемы (они также перечислены в начале скрипта на ломаном английском):

Перекрывающиеся монтирования.
Если вы смонтируете одну ФС на, например, папку "/path/to/dir", а затем другую ФС на ту же "/path/to/dir" либо выше, на "/path/to" или "/path" (спрятав тем самым первую ФС из области видимости), то `fuser -m "/path/to/dir"` не сможет найти открытые файлы на первой ФС (значит, нет гарантий, что мы сможем её перемонтировать на чтение). Можно было бы использовать имя устройства вместо точки монтирования, но fuser из busybox не понимает этого. Можно, правда, установить пакет "psmisc", fuser оттуда поймёт имя устройства и покажет на нужные процессы (скрипт для этого нужно будет править).
Но тут есть вторая часть проблемы: вызов `mount -o remount,ro ...` не сможет перемонтировать первую ФС, какие бы комбинации "имя устройства"+"точка монтирования" ему ни передавали.
Решением может быть отмонтирование второй ФС с последующими манипуляциями над первой либо просто отказ от таких конфигураций.
Необычные имена swap-файлов.
Если вы создадите и без внесения в fstab подключите swap-файл (не раздел), имя которого содержит перевод строки (да, такое возможно), то скрипт не сможет отключить такой файл и, соответственно, не сможет перемонтировать на чтение ФС с этим файлом.
Решение: отмонтировать такой файл вручную (внести явную команду в скрипт) либо опять же отказаться от использования таких имён.
(не описана в скрипте)
Может так сложиться, что какой-то процесс откроет файл на запись на интересующем нас разделе уже после того, как скрипт завершит убиение процессов, использующих раздел. Против этого трудно придумать что-то гарантированно работающее.

Примерная логика работы скрипта:

Остановка сервисов: если существует исполняемый файл "/opt/etc/init.d/rc.unslung", он вызывается с параметром "stop".
Сброс буферов (вызов sync).
Отправка сигнала TERM процессам, имеющим открытые файлы на интересующих нас разделах, и ожидание их завершения, но не дольше указанного времени (задаётся в начале скрипта, по умолчанию 20 секунд). Стоит отметить, что по уму надо бы завершать только те процессы, которые имеют открытые на запись файлы, но fuser такой информации не даёт.
Если на предыдущем шаге остались живые процессы, то список составляется заново и на этот раз отправляется сигнал KILL (опять же с ожиданием завершения, по умолчанию 5 секунд).
Отключение свопа (swapoff -a и прохождение по файлу "/proc/swaps").
Перемонтирование интересующих нас ФС на чтение.

В скрипте есть зависимость от файла "/usr/local/sbin/signal_and_wait.inc.sh" (описан ниже).
Что можно настроить в скрипте:

Таймаут ожидания (в секундах) после отправки сигналов TERM и KILL, соответственно


terminate_timeout="20"
kill_timeout="5"

Какие файловые системы нас интересуют (для перемонтирования на чтение), это регулярное выражение awk


filesystems_regexp='/^(ext3|vfat)$/'

Если у вас в качестве корневой ФС используется какой-то раздел с внешнего носителя (смонтированный на запись), то имеет смысл исключить его, а то скрипт попытается убить почти все процессы, а с разделом уже разбираться отдельно


filesystems_regexp='/^(ext3|vfat)$/ && $2 != "/"'


2. Файл signal_and_wait.inc.sh. Он не исполняемый, включается в другие скрипты. Содержит одну функцию, signal_and_wait, которая посылает указанный сигнал указанным процессам и ожидает их завершения указанное время :)

3. Стартовый скрипт S99rtorrent (для тех, у кого используется rtorrent). Улучшенный скрипт, взятый из темы про установку для чайников. Суть в том, что он теперь гарантированно останавливает rtorrent. Он посылает процессу последовательно 3 сигнала и после каждого ждёт завершения процесса в течение указанного времени (аналогично pre-shutdown). Сигналы: INT (нормальное завершение), TERM (быстрое завершение, без отсылки статистики на трекеры), KILL (немедленное убийство процесса). Таймаут ожидания после каждого из сигналов задаётся в начале скрипта:


interrupt_timeout="10"
terminate_timeout="120"
kill_timeout="5"

В этом скрипте тоже используется файл "/usr/local/sbin/signal_and_wait.inc.sh".


Несколько слов по конфигурации.

Если вы используете rtorrent (настройка S99rtorrent):
а) если вам нужно, чтобы он успел отослать статистику на трекеры, установите побольше interrupt_timeout (скажем, 5 минут = 300 секунд), но имейте в виду, если у вас pptp/pppoe/l2tp, то это соединение отключится до запуска pre-shutdown (если вы дали команду reboot/halt), так что никакая статистика уже не отправится;
б) если статистика вам не так важна, но важно, чтоб rtorrent завершился точно по своей воле, установите небольшой interrupt_timeout (секунд 5-10), но побольше terminate_timeout (опять же, скажем, 300 секунд);
в) если просто хотите быстрого завершения работы, неважно, в каком состоянии окажутся закачки (вас не пугает перехеширование при старте), то установите interrupt_timeout и terminate_timeout по минимуму (секунд 5), а уж KILL в конце его прибьёт.

Если вы помимо этого используете любые другие программы или тот же rtorrent, но не с моим S99rtorrent (настройка pre-shutdown):
а) если вам нужно дать программам больше времени на добровольное завершение, увеличьте terminate_timeout (сколько вам не жалко ждать);
б) если вам дорого время и вы не хотите ждать, пока все процессы завершат свои дела, поставьте terminate_timeout небольшим (да хоть 0), можете при этом увеличить kill_timeout до 10, но вряд ли это необходимо.


Сами скрипты - в приложенном архиве. Пути, куда их класть:
/usr/local/sbin/pre-shutdown
/usr/local/sbin/signal_and_wait.inc.sh
/opt/etc/init.d/S99rtorrent


Update: обновил S99rtorrent:
при старте не создаётся окно screen с шеллом. Бонус: при завершении торрента screen сам выходит;
при старте stdout команд тоже пишется в лог;
при завершении, если дело доходит до сигнала KILL, удаляется файл rtorrent.lock

starix
11-02-2010, 17:20
а iptables -I INPUT -p udp --dport 6881 -j ACCEPT не надо делать?

valerakvb
11-02-2010, 17:23
а iptables -I INPUT -p udp --dport 6881 -j ACCEPT не надо делать?

Я об этом нигде не видел в форуме.

Power
11-02-2010, 17:28
а iptables -I INPUT -p udp --dport 6881 -j ACCEPT не надо делать?

Разумнее наоборот, в конфиге сделать


dht_port = 51778

Ведь udp как раз для этого и используется (порт уже открыт в post-firewall).

valerakvb
11-02-2010, 17:31
Разумнее наоборот, в конфиге сделать


dht_port = 51778

Ведь udp как раз для этого и используется (порт уже открыт в post-firewall).

Понял. Спасибо. Исправил.

Power
11-02-2010, 17:35
Версия 7.1 и reinstal 2.1 от 11.02.2010

- изменил /etc/fstab http://wl500g.info/showpost.php?p=183329&postcount=1940


Но вы не изменили pre-mount, а без этого смысла мало.

valerakvb
11-02-2010, 17:45
Но вы не изменили pre-mount, а без этого смысла мало.

Папка /tmp/mnt/disc0_3 создается сама системой.
Я устанавливал на чистую все.

Power
11-02-2010, 18:31
Папка /tmp/mnt/disc0_3 создается сама системой.
Я устанавливал на чистую все.

Хорошо, объясняю подробно, для чего это нужно.
Когда вы подключаете флешку/диск (или когда роутер загружается с уже подключенной), последовательность действий такова:
1) выполняется pre-mount;
2) если существует /etc/fstab, то выполняются "swapon -a" и "mount -a";
3) остальные разделы (не смонтированные в процессе "mount -a") монтируются на папки вида /tmp/mnt/discX_Y, при этом эти папки создаются системой;
4) ищется первая из папок /tmp/mnt/discX_Y. Если найдена, то на неё создаётся символическая ссылка /tmp/harddisk и по необходимости (пере)запускаются ftp, samba, nfs;
5) выполняется post-mount.

Так вот, "mount -a" пытается смонтировать все разделы, перечисленные в /etc/fstab (в том порядке, в котором они идут в файле). Но на этот момент папка /tmp/mnt/disc0_3 ещё не существует и монтирования раздела /dev/discs/disc0/part3 не происходит. Зато на следующем шаге (3) система создаёт эту папку и монтирует раздел, в чём можно убедиться, прочитав в логе "USB storage: ext3 fs at /dev/discs/disc0/part3 mounted to /tmp/mnt/disc0_3" (заметьте, при монтировании раздела /opt такой записи в логе не создаётся).

Итак, мы выяснили, что раздел part3 монтируется на шаге 3, а не 2. Почему это важно? Допустим, кто-то захочет продолжить настройку роутера за пределами этой инструкции. И захочет смонтировать, скажем, папку www с раздела part3 на /www. Для этого логично добавить в конец /etc/fstab строчку


/tmp/mnt/disc0_3/www /www none bind 0 0

Но монтирования не произойдёт, потому что папки /tmp/mnt/disc0_3 ещё нет на этом шаге (2).
Если бы папка /tmp/mnt/disc0_3 была создана до вызова "mount -a" (т.е. в скрипте pre-mount), то "mount -a" смог бы смонтировать /dev/discs/disc0/part3 на /tmp/mnt/disc0_3, а затем /tmp/mnt/disc0_3/www на /www и всем было бы счастье.

Говоря кратко, незачем делать "почти правильно", если можно сразу сделать правильно.

valerakvb
11-02-2010, 19:10
Хорошо, объясняю подробно, для чего это нужно.
Когда вы подключаете флешку/диск (или когда роутер загружается с уже подключенной), последовательность действий такова:
1) выполняется pre-mount;
2) если существует /etc/fstab, то выполняются "swapon -a" и "mount -a";
3) остальные разделы (не смонтированные в процессе "mount -a") монтируются на папки вида /tmp/mnt/discX_Y, при этом эти папки создаются системой;
4) ищется первая из папок /tmp/mnt/discX_Y. Если найдена, то на неё создаётся символическая ссылка /tmp/harddisk и по необходимости (пере)запускаются ftp, samba, nfs;
5) выполняется post-mount.

Так вот, "mount -a" пытается смонтировать все разделы, перечисленные в /etc/fstab (в том порядке, в котором они идут в файле). Но на этот момент папка /tmp/mnt/disc0_3 ещё не существует и монтирования раздела /dev/discs/disc0/part3 не происходит. Зато на следующем шаге (3) система создаёт эту папку и монтирует раздел, в чём можно убедиться, прочитав в логе "USB storage: ext3 fs at /dev/discs/disc0/part3 mounted to /tmp/mnt/disc0_3" (заметьте, при монтировании раздела /opt такой записи в логе не создаётся).

Итак, мы выяснили, что раздел part3 монтируется на шаге 3, а не 2. Почему это важно? Допустим, кто-то захочет продолжить настройку роутера за пределами этой инструкции. И захочет смонтировать, скажем, папку www с раздела part3 на /www. Для этого логично добавить в конец /etc/fstab строчку


/tmp/mnt/disc0_3/www /www none bind 0 0

Но монтирования не произойдёт, потому что папки /tmp/mnt/disc0_3 ещё нет на этом шаге (2).
Если бы папка /tmp/mnt/disc0_3 была создана до вызова "mount -a" (т.е. в скрипте pre-mount), то "mount -a" смог бы смонтировать /dev/discs/disc0/part3 на /tmp/mnt/disc0_3, а затем /tmp/mnt/disc0_3/www на /www и всем было бы счастье.

Говоря кратко, незачем делать "почти правильно", если можно сразу сделать правильно.

Большое спасибо за подробное объяснение. Добавил в pre-mount

mkdir -p /tmp/mnt/disc0_3
:D

ivantest
02-03-2010, 02:52
Все работало отлично. Что-то rtorrent заглючил и я решил перезагрузить роутер. Но оказалось вдруг, что роутер перестал реагировать на команды reboot и halt -p. То есть в ответ на эти команды вообще ничего не происходит.

mike345
18-03-2010, 16:00
А я так это сделал.
1.Берем программу TSE.exe отсюда http://home.onego.ru/~loft/_tse.exe
2.Ваяю файл скрипта reboot.txt


open 192.168.1.1
waitfor "login:"
transmit "admin^M"
waitfor "Password:"
transmit "admin^M"
waitfor "root]$"
transmit "reboot^M"

Можно вместо waitfor "root]$" поставить pause 5 что выдерживает 5 сек. паузу и совсем не важно какой символ выдает консоль.
3.Рисую батник например tse.bat


tse.exe <reboot.txt

4.Всё...
Вместо admin admin пишете свои заклинания...:)

Vacheslav
18-03-2010, 20:04
TSE - штука хорошая, но я не увидел поддержки SSH... Плохо смотрел?
Есть аналог: TeraTerm (http://ttssh2.sourceforge.jp/) - ssh имеет.

fps
18-03-2010, 21:24
В стандартном WEB интерфейсе маршрутизатора есть страничка "System command".
Если в ней выполнить команду reboot, то маршрутизатор перезагрузится.

http://192.168.1.1/apply.cgi?current_page=Main_AdmStatus_Content.asp&modified=0&action_mode=+Refresh+&SystemCmd=reboot

Можно на эту ссылку просто закладку в браузере положить и перезагружать маршрутизатор одним кликом,
или её можно в скрипте открывать, например, с помощью WinHttpRequest,
или её можно в батнике с помощью wget

Всё штатными средствами. В одну строку.
Ничего не надо ставить ни на PC ни на маршрутизатор.

bocman
19-03-2010, 10:18
все проще простого.
если настроен SSH, то качаем plink (одна из составных частей putty) и создаем bat-файл со следующим содержанием:


plink.exe -l <логин на роутере> -pw <пароль на роутере> -ssh -P <порт SSH> <ip-адрес роутера> reboot

Unlimited
19-03-2010, 13:58
все проще простого.
если настроен SSH, то качаем plink (одна из составных частей putty) и создаем bat-файл со следующим содержанием:


plink.exe -l <логин на роутере> -pw <пароль на роутере> -ssh -P <порт SSH> <ip-адрес роутера> reboot

А зачем bat файл? можно это все в ярлыке написать...

Goletsa
19-03-2010, 14:40
Как небезопасно, пароли в открытом виде хранить.
Я бы сделал с использованием пары ключей.
dropbeer умеет авторизовывать по ключам?

bocman
19-03-2010, 15:18
А зачем bat файл? можно это все в ярлыке написать...

можно и так...
кому-как удобнее:)

3cky
17-05-2010, 12:16
Всем привет.

Роутер wl500gp v1, прошита 1.9.2.7-d-r1555. Периодически отваливается USB-диск, соответственно, попытка удаленно перезагрузить роутер через reboot приводит к только появлению zombee-процессов без собственно самой перезагрузки, хотя доступ к устройству по telnet остается. Вопрос следующий - есть ли возможность удаленного "reset'а" устройства, то есть посылки ядру некоего сигнала немедленной перезагрузки? Идеально было бы использовать для этого стандартный механизм /proc/sysrq-trigger, но на текущей прошивке его поддержки, похоже, нет.

joohny
19-05-2010, 20:24
reboot в консоли не помогает????

ABATAPA
19-05-2010, 21:17
reboot в консоли не помогает????
Читайте внимательнее!
Человек пишет: "попытка удаленно перезагрузить роутер через reboot приводит к только появлению zombee-процессов без собственно самой перезагрузки,"

lucky:)
21-05-2010, 11:43
Power спасибо большое! Самый лучший вариант - нарушений в фаловых системах и рехешей торрентов никогда еще происходило. :cool:

Sergey1223
09-06-2010, 00:00
Стоит прошивка Олега 1.9.2.7-10.7 для WL500gpv2 на D-Link DIR-320. Требуется перезагружать роутер с компьютера с Windows. Понятно, что нужно заходить через SSH, и т.п. Но что именно нужно делать в SSH? Может, у кого-нибудь есть батник для Windows, который решает задачу перезагрузки? Буду признателен за строчку кода.

TReX
09-06-2010, 00:11
Стоит прошивка Олега 1.9.2.7-10.7 для WL500gpv2 на D-Link DIR-320. Требуется перезагружать роутер с компьютера с Windows. Понятно, что нужно заходить через SSH, и т.п. Но что именно нужно делать в SSH? Может, у кого-нибудь есть батник для Windows, который решает задачу перезагрузки? Буду признателен за строчку кода.

А поиск придумали для трусов? Тема обсуждалась, есть рабочие решения...

rss
09-06-2010, 10:12
Стоит прошивка Олега 1.9.2.7-10.7 для WL500gpv2 на D-Link DIR-320. Требуется перезагружать роутер с компьютера с Windows. Понятно, что нужно заходить через SSH, и т.п. Но что именно нужно делать в SSH? Может, у кого-нибудь есть батник для Windows, который решает задачу перезагрузки? Буду признателен за строчку кода.

Можно сделать виджет по аналогии с http://narod.ru/disk/19937857000/wl500g.yota.gadget.html

Используя функцию, возвращающую url:

function getCmdExecUrl( host, cmd )
{
return "http://" + host +
"/apply.cgi?current_page=syscmd_out.asp&action_mode=+Refresh+&SystemCmd=" + escape( cmd );
}можно запустить что угодно.

Pablo Escobar
09-06-2010, 10:44
Понятно, что нужно заходить через SSH, и т.п. Но что именно нужно делать в SSH?
нужно выпонить команду reboot

Gomezzz
16-07-2010, 12:48
Я вот тоже хочу повесить на кнопку EZ-Setup подготовку роутера к выключению. У меня D-Link DIR-320 c последней Олеговской прошивкой, но у меня не rtorrent, а Transmission.
Что мне в этом случае бы надо подправить?
Брать за основу это?
http://www.wl500g.info/showpost.php?p=134183&postcount=37
И извините чайника, а я могу вышеуказанный скрипт просто поместить в
/usr/local/sbin/ez-setup (ну, и, конечно, положить rc.unslung в /opt/etc/init.d/)
Или все сложнее? :confused:

Brati_Slava
10-11-2010, 08:24
Граждане, вопрос о выключении роутера стоит не особо остро но просит решения, так как инет не востребован сутками.
Разумеется не хочется выдергивать из розетки.
Подскажите непрограммисиу есть ли инструкция как правильно настроить putty или web-интрефейс для выключения роутера??

Asgard
10-11-2010, 10:54
Граждане, вопрос о выключении роутера стоит не особо остро но просит решения, так как инет не востребован сутками.
Разумеется не хочется выдергивать из розетки.
Подскажите непрограммисиу есть ли инструкция как правильно настроить putty или web-интрефейс для выключения роутера??

Через веб-морду: System Setup - System Command - halt

Brati_Slava
10-11-2010, 12:41
этого достаточно, kill-ом убивать никакие процессы больше не надо? а включать потом как , вытаскивать и вставлять питание ?

Asgard
10-11-2010, 13:24
этого достаточно, kill-ом убивать никакие процессы больше не надо? а включать потом как , вытаскивать и вставлять питание ?

Должна погаснуть лампочка Power.:)

Brati_Slava
10-11-2010, 13:32
прекрасно!!!! :)
осталось выяснить несколько моментов:
1 Включается он "руками" потом или тоже можно через WEB?
2 пройдет ли такая процедура по WIFI ??(хотя я так понимаю на WB интрфейс по барабану откуда залезать)
3 И теперь финал, наскоко нежелательно выключать его выдергиванием из розетки ???
просто бывает что все клиенты уже погашены включать комп для того чтобы выключить роутер неохота.

Omega
10-11-2010, 14:58
Граждане, вопрос о выключении роутера стоит не особо остро но просит решения,
так как инет не востребован сутками. Разумеется не хочется выдергивать из розетки.
Подскажите непрограммисиу есть ли инструкция как правильно настроить putty или
web-интрефейс для выключения роутера??

RTFM: :cool: http://wl500g.info/showpost.php?p=183239&postcount=83 ;)

Brati_Slava
10-11-2010, 15:08
Благодарю покорно.
Ох блин, разбираться теперь придется наверно до прихода Трансформеров.
Не лукавя думал что будет проще!

Brati_Slava
11-11-2010, 11:52
А возможно сделать что роутер выключался вместе с компьютером ?

vectorm
11-11-2010, 12:04
А возможно сделать что роутер выключался вместе с компьютером ?
Возможно.
http://tinyurl.com/3yg95et

Brati_Slava
11-11-2010, 12:20
спастись можно только погуглив?

vectorm
11-11-2010, 12:55
спастись можно только погуглив?
А Вы как хотели?
На форуме много частных решений под частные задачи - Ваши условия/требования могут отличаться - придется думать самому, а не ждать помощи от природы.
Решение кому нужно? ;)

Brati_Slava
11-11-2010, 13:06
имея удочку и речку в магазин за рыбой ни ногой (С)
токо я уверен, заданный вопрос не частного плана а общего.
из того что я нашел на форуме много чего мне непонятно, в большинстве случаев из за незнания Linux.

пс
гуглить умею

Pablo Escobar
11-11-2010, 13:49
пс
гуглить умею

вы бы еще вопросы научились корректно задавать, намекнули бы на ОС, хотя бы.

Сообщение от Brati_Slava
А возможно сделать что роутер выключался вместе с компьютером ?
да, можно. в OSX прикрутить отправку "halt" через ssh в скриптах выключения.
Ответил?

Brati_Slava
11-11-2010, 13:59
1 по поводу OS пардон, как то забыл что не все под Виндой
XP и Vista (пока живая)

2 ответил частично, ибо я не писал скриптов и не правил их никогда, ssh пользовался только один раз в жизни (дату не помню). Образование лежит в другой сфере. Необходим был бы мануал , но чую опять отправят гуглить

Pablo Escobar
11-11-2010, 14:31
1 по поводу OS пардон, как то забыл что не все под Виндой
XP и Vista (пока живая)


под винду видел на xbit на первых страницах в гугле

Brati_Slava
11-11-2010, 14:55
благодарю !!!!!

MMax
13-11-2010, 09:24
Не совсем по теме, но вопрос: "А зачем выключать рутер?" Электричества кушает мало, не гудит... Чтобы домочадцы не выключали, можно повесить в недоступном месте и забыть про него :-)

Brati_Slava
13-11-2010, 09:27
и электричество кушает и блок питания жжет. Так что потом ремонтировать надо. :)
Да и лишнее Радио в доме ни к чему когда им не пользуются

MMax
13-11-2010, 09:57
и электричество кушает и блок питания жжет. Так что потом ремонтировать надо. :)
Да и лишнее Радио в доме ни к чему когда им не пользуются

Согласен. Хотя я подошел к вопросу с другой стороны. Компьютерный БП с выведенным питанием для рутера и HDD, все висит под потолком в кладовке, подключено к ИБП. БП ремонтировать уже не надо :-)Электричество ест, но не разорительно. А радио в доме и без меня много. У меня вайфаи у каждого второго соседа. Так что моя сеть намного хуже не делает...

Dagon
22-11-2010, 21:39
Ситуация такая, все работало отлично до какого-то момента, но пишу я банальное

/opt/etc/init.d/rc.unslung stop

на что мне теперь выдает

/opt/etc/init.d/rc.unslung stop
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 10: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 13: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S01syslog-ng: /opt/etc/init.d/S01syslog-ng: 10: pidof: Permission denied
/opt/etc/init.d/S01syslog-ng: /opt/etc/init.d/S01syslog-ng: 10: [: Permission denied
/opt/etc/init.d/S01syslog-ng: /opt/etc/init.d/S01syslog-ng: 22: pidof: Permission denied
/opt/etc/init.d/S01syslog-ng: /opt/etc/init.d/S01syslog-ng: 22: [: Permission denied
/opt/etc/init.d/S01syslog-ng: /opt/etc/init.d/S01syslog-ng: 28: pidof: Permission denied
/opt/etc/init.d/S01syslog-ng: /opt/etc/init.d/S01syslog-ng: 28: [: Permission denied
Error resolving user; user='root'
Error resolving user; user='root'
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S08samba: /opt/etc/init.d/S08samba: 6: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S10cron: /opt/etc/init.d/S10cron: 7: [: Permission denied
/opt/sbin/cron: can't lock /opt/var/run/cron.pid, otherpid may be 234: Resource temporarily unavailable
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S57rsyncd: /opt/etc/init.d/S57rsyncd: 7: [: Permission denied
/opt/etc/init.d/S57rsyncd: /opt/etc/init.d/S57rsyncd: 9: rm: Permission denied
/opt/etc/init.d/S57rsyncd: /opt/etc/init.d/S57rsyncd: 11: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S70lighttpd-ssl: /opt/etc/init.d/S70lighttpd-ssl: 9: test: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 56: test: Permission denied
/opt/etc/init.d/S70mysqldfailed to create pid file /var/run/rsyncd.pid: File exists
: /opt/etc/init.d/S70mysqld: 73: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 160: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 160: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 160: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 160: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 160: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 171: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 173: mysqld: not found
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 186: test: Permission denied
/opt/etc/init.d/S70mysqld: /opt/etc/init.d/S70mysqld: 256: test: Permission denied
ERROR! MySQL PID file could not be found!
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S80lighttpd: /opt/etc/init.d/S80lighttpd: 9: test: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: [: Permission denied
/opt/etc/init.d/rc.unslung: /opt/etc/init.d/rc.unslung: 37: logger: Permission denied
/opt/etc/init.d/S95samba: /opt/etc/init.d/S95samba: 6: [: Permission denied

в общем ругается на абсолютно все блоки if - fi
и все это из под рута естественно, все файлы на роутере с правами 775
что могло случиться?
на роутере стоит vsftpd,lighttpd,mysqld, samba и syslog-ng

Alexandre
23-11-2010, 10:12
возможно проблема с файловой системой на флешке (или hdd?).
ls -l /opt/bin/

Vilikk
03-03-2011, 20:38
Если я правильно понял при всех манипуляциях описных здесь головка hdd не паркуется, соответственно есть небольшой процеyт что при физическом выключении питания головка упадет на блины и может случиться непоправимое. Есть возможность заставить головку уйти на парковку как это делают взрослые ОС?

vectorm
04-03-2011, 09:47
Если я правильно понял при всех манипуляциях описных здесь головка hdd не паркуется, соответственно есть небольшой процеyт что при физическом выключении питания головка упадет на блины и может случиться непоправимое. Есть возможность заставить головку уйти на парковку как это делают взрослые ОС?
Уже дааавно все жесткие диски при отключении питания сами, самостоятельно, паркуют головки. Ничто никуда не упадет.

Zax
04-03-2011, 14:44
Хотя, если флешек нет, то можете смело выдёргивать.C момента покупки всегда обесточивал роутер, но появились проблемы. Иногда (один-два раза в месяц) были разрывы во время сессии или при включении невозможно было поднять PPPoE. После долгих и продолжительных боданий с провайдером, вот, что я получил:
1. На Вашем порту ( куда Вы подключены ) большое количество ошибок и битых МАС. Такое возможно - если Вы часто отключаете кабель или обесточиваете оборудование.
2. Роутер не надо отключать, этим Вы сокращаете ему время жизни.Сейчас тестирую без отключения питания. Прокоментируйте, плиз.

smi
04-03-2011, 14:49
После долгих и продолжительных боданий с провайдером, вот, что я получил: Сейчас тестирую без отключения питания. Прокоментируйте, плиз. А что тут коментировать, любое электронное оборудование, наиболее вероятно выходит из строя именно в момент подачи питания, переходные процессы никто не отменял, с ними стараются бороться, но свести их к нулю нереально ;)

P.S. У меня все работает 24x7, но все естественно, на UPS :cool:

Zax
04-03-2011, 17:41
А что тут коментировать, любое электронное оборудование, наиболее вероятно выходит из строя именно в момент подачи питания, переходные процессы никто не отменял, с ними стараются бороться, но свести их к нулю нереально ;)

P.S. У меня все работает 24x7, но все естественно, на UPS :cool:Спасибо, с этим понятно, а по первому пункту? Непонятно, какое отношение имеет мой роутер к битым МАК и ошибкам на линии.

alexpann
03-04-2011, 15:52
Настроил доступ кроутеру по ssh из интернет, пашёл как включить удалённо включить компьютеры в локальной сети, открыл доступ к компам по RDP. За всё это огромное спасибо этому форуму!
Но сегодня случилось неприятность. С работы подключился к роутеру по ssh, включил домашний комп, стал ставить на нём софтину и комп завис.
Хотел перезагрузить удалённо комп, не нашёл никакой команды акромя halt, вбил команду halt --help в программе putty (надеялся это мне справку покажеет :) ) и роутер благополучно выключился.
Теперь вопросы:
1. Как удалённо включить роутер?
2. Как удалённо перезагрузить компьютер?

Уважаемые гуру!
С Вашей помощью через командную строку научился включать комп.
Теперь появилась проблема такого рода: как, зайдя на веб-морду роутера, через system command выключить или перезагрузить компьютер? Ситуация банальная: на компе стоит NetOP, так он (именно NetOP, по логам вижу, что комп в норме), зараза, завис. Ситуацию может спасти перезагрузка, NetOP после нее заработает, или на худой конец надо выключить комп (допустим, меня еще месяц не будет дома). Помогите не тронуться умом, я уже близок, сохраните молодого хирурга для науки:)))

al37919
03-04-2011, 16:18
можно ssh сервер поставить. Еще можно почитать про rpcclient

tempik
03-04-2011, 16:42
Ситуация банальная: на компе стоит NetOP, так он (именно NetOP, по логам вижу, что комп в норме), зараза, завис. Ситуацию может спасти перезагрузка, NetOP после нее заработает, или на худой конец надо выключить комп (допустим, меня еще месяц не будет дома). Помогите не тронуться умом, я уже близок, сохраните молодого хирурга для науки:)))
Подробнее плиз!
1) Система на компе
2) Какие службы запущены (удаленный реестр, удаленное управление, etc.)
З.Ы. В догонку может наведет на мысль http://technet.microsoft.com/ru-ru/sysinternals/bb897553.aspx

alexpann
03-04-2011, 16:48
Подробнее плиз!
1) Система на компе
2) Какие службы запущены (удаленный реестр, удаленное управление, etc.)
З.Ы. В догонку может наведет на мысль http://technet.microsoft.com/ru-ru/sysinternals/bb897553.aspx

Роутер RT-N16, прошивка от энтузиастов, последняя. Компы в домашней сети - Win 7 и Win XP. Специально какие-либо службы не запускал, все по дефолту, виндовский удаленный помощник отключен. Вот как-то так... Система: запуск через system command - тушение через NetOP работа безотказно, но в пятницу Нетоп вылетел. А комп даже не заблокирован...

tempik
03-04-2011, 19:18
Роутер RT-N16, прошивка от энтузиастов, последняя. Компы в домашней сети - Win 7 и Win XP. Специально какие-либо службы не запускал, все по дефолту, виндовский удаленный помощник отключен. Вот как-то так... Система: запуск через system command - тушение через NetOP работа безотказно, но в пятницу Нетоп вылетел. А комп даже не заблокирован...
комп по ip-адресу доступен??? Если да то "Мой компьютер" (правой клавишей) "Управление" -"Действие"-"Подключиться к удаленному компьютеру" .... Если подключится значит считай что мы его сделали ...

alexpann
03-04-2011, 20:30
комп по ip-адресу доступен??? Если да то "Мой компьютер" (правой клавишей) "Управление" -"Действие"-"Подключиться к удаленному компьютеру" .... Если подключится значит считай что мы его сделали ...

Если честно, не совсем Вас понял. У меня стабильный коннект с роутером удаленной сети, комп (за роутером) пингуется, определяется в логах роутера, но из-за вылета NetOPa я ничего с ни сделать не могу. Виндовский удаленный помощник на нем отрублен. Как я понимаю, если что-то и возможно сделать, то только из system command роутера. А как - не знаю...

tempik
03-04-2011, 20:44
Если честно, не совсем Вас понял. У меня стабильный коннект с роутером удаленной сети, комп (за роутером) пингуется, определяется в логах роутера, но из-за вылета NetOPa я ничего с ни сделать не могу. Виндовский удаленный помощник на нем отрублен. Как я понимаю, если что-то и возможно сделать, то только из system command роутера. А как - не знаю...
Если комп пингуется попробуйте у себя на компе правой кнопкой мыши на иконку "Мой компьютер"-"Управление" и напишите что у вас появилось на экране ....

A1ex
03-04-2011, 23:06
Если честно, не совсем Вас понял. У меня стабильный коннект с роутером удаленной сети, комп (за роутером) пингуется, определяется в логах роутера, но из-за вылета NetOPa я ничего с ни сделать не могу. Виндовский удаленный помощник на нем отрублен. Как я понимаю, если что-то и возможно сделать, то только из system command роутера. А как - не знаю...
чтобы можно было сделать с роутера , надо было заранее позаботиться и установить на компах с виндой cygwin с openssh и пакетом для управления процессами винды, тогда бы можно было через ssh делать. Или, что гораздо проще, заранее разрешить на компах удаленный доступ и ходить на их рабочие столы с винды. Пробрасывать в этом случае надо всего один порт 3389. Утилиты от мелкомягких через нат может и заработают, но для этого надо хотя бы знать какие порты пробросить ;)

pilson66
27-12-2011, 10:08
Последний переход с RT-N16-1.9.2.7-rtn-r3497 на RT-N16-1.9.2.7-rtn-r3702 прошёл без каких-либо проблем. Что я делаю не так?

У меня например не работает даже простая перезагрузка через веб-интерфейс. Но у меня видимо дело в доп. софте, установленном на винт в /opt
Скрипты /opt/etc/init.d(S70php-fcgi S80nginx S99rtorrent) почему-то не отрабатывают и не завершают свою работу, просто вися в памяти. Причем если делать это ручками из консоли - они отлично отрабатывают. Соответственно, /tmp/local/sbin/pre-shutdown не завершается, и роутер не перегружается, ожидая завершения скрипта. Если его прибить (kill -9) - роутер перегружается. Наверное, у остальных пользователей та же проблема.
Возможно, дело в переменной PATH, передаваемой скриптам при запуске, которая отличается от той что в консоли.

Хотя, до какого-то, очень старого релиза (точно уже и не скажу) все работало нормально.

ryzhov_al
27-12-2011, 11:08
У меня например не работает даже простая перезагрузка через веб-интерфейс.
...Соответственно, /tmp/local/sbin/pre-shutdown не завершается, и роутер не перегружается, ожидая завершения скрипта. Если его прибить (kill -9) - роутер перегружается. Наверное, у остальных пользователей та же проблема.pilson66, каким образом надо модифицировать прошивку для того, чтобы она исправляла огрехи в написанных вами скриптах?
Пришлите патч, вы даже не представляете как он необходим энтузиастам!

pilson66
27-12-2011, 11:35
pilson66, каким образом надо модифицировать прошивку для того, чтобы она исправляла огрехи в написанных вами скриптах?
Пришлите патч, вы даже не представляете как он необходим энтузиастам!

Скрипты написаны не мной, а мейнтейнерами соответствующих пакетов.
По поводу патча - возможно, нужно в pre-shutdown делать экспорт переменных, т.к. они наследуются порожденными процессами, дабы скрипты использовали те же пути и те же бинарники, которые используются в консоли. Это как единственный разумный вариант, объясняющий такое их поведение.
Опять же, повторяюсь - на каком-то из очень старых релизов такого не было.

lly
27-12-2011, 11:45
Опять же, повторяюсь - на каком-то из очень старых релизов такого не было.
busybox меняется, какие-то баги чинятся, новые появляются...

pilson66
27-12-2011, 12:12
busybox меняется, какие-то баги чинятся, новые появляются...

Вывод из консоли:

pilson@pilson-router pilson:$ env | grep PATH
PATH=/opt/sbin:/opt/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
Вывод из веб-интерфейса, через "External command":

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin
Наверняка при ребуте используется тот же порядок что и при выполнении из web-интерфейса.
Можно попробовать в pre-shutdown экспортировать PATH такого же вида как и в консоли.

**********
UPD: Немного поковырялся. Нарыл следующее: При ребуте запускается "/opt/etc/init.d/pre-shutdown", который запускает в свою очередь "/bin/sh /opt/etc/init.d/rc.stop".
rc.stop, в свою очередь, запускает скрипты остановки демонов. скрипты отрабатывают, но демоны не прибиваются полностью, превращаясь в зомби-процессы:

root 422 0.0 0.0 0 0 ? Zs 13:24 0:00 [cron] <defunct>
root 424 0.2 0.0 0 0 ? Zs 13:24 0:00 [php-fcgi] <defunct>
root 431 0.0 0.0 0 0 ? Z 13:24 0:00 [php-fcgi] <defunct>
root 455 0.0 0.2 1380 380 ? Ss 13:25 0:00 /bin/sh /usr/local/sbin/pre-shutdown
root 472 0.0 0.3 1384 412 ? S 13:25 0:00 /bin/sh /opt/etc/init.d/rc.stop
root 476 0.0 0.3 1380 392 ? S 13:25 0:00 /bin/sh /opt/etc/init.d/S70php-fcgi stop
root 477 0.0 0.2 1072 352 ? S 13:25 0:00 /opt/bin/killall -q -w /opt/bin/php-fcgi
Отсюда видно, что /opt/bin/killall ожидает пока php-fcgi убьется окончательно, ну и соответственно дальше ничего не происходит, ибо выполнение висит на этой строке скрипта.
Так вот, собственно, вопрос: Почему при остановке демона из консоли все проходит отлично, и при остановке через ребут - он остается висеть как зомби?
Думаю что решив эту проблему - решится "неперегружание" если не у всех, то у многих.

ryzhov_al
27-12-2011, 12:22
Спасибо, что пытаетесь разобраться сами.
Вывод из консоли:...
Вывод из веб-интерфейса, через "External command":...
При работе из консоли работают настройки вашего профиля с его специфичными переменными среды. Запуск и останов системы ведётся от "от лица" процесса init, который о существовании вашего профиля знать ничего не должен. Пропишите полные пути ко всем исполняемым файлам в pre-shutdown и проблема, скорее всего, будет решена.

Поверьте, никакой разработчик (прошивки) не станет включать настройки из вашего профиля в работу системных процессов.

pilson66
27-12-2011, 12:35
Спасибо, что пытаетесь разобраться сами.

В сообщении выше я добавил еще кой-чего (это на случай если вы вдруг не увидели). Посмотрите, вожможно что-то придет на ум...



Пропишите полные пути ко всем исполняемым файлам в pre-shutdown и проблема, скорее всего, будет решена.

Да куда уж полнее...


#!/bin/sh

/sbin/flashfs save
/sbin/flashfs commit
/sbin/flashfs enable
/opt/etc/init.d/rc.stop
sleep 20
/bin/umount /opt
/bin/umount /tmp/harddisk
/sbin/swapoff /dev/discs/disca/part1

ryzhov_al
27-12-2011, 12:52
При ребуте запускается "/opt/etc/init.d/pre-shutdown", который запускает в свою очередь "/bin/sh /opt/etc/init.d/rc.stop".
rc.stop, в свою очередь, запускает скрипты остановки демонов.
Видимо, имелось в виду следующее: При ребуте запускается "/tmp/local/sbin/pre-shutdown", который запускает в свою очередь "/bin/sh /opt/etc/init.d/rc.stop"
Запуск /tmp/local/sbin/pre-shutdown говорит о том, что прошивка сделала всё от неё зависящее для грациозного завершения работы, остальное же зависит от того, чем вы наполнили скрипт /tmp/local/sbin/pre-shutdown и другие зависимые. С этого места корректность завершения работы целиком зависит исключительно от вас, и никакие патчи за вас эту работу не сделают.

скрипты отрабатывают, но демоны не прибиваются полностью, превращаясь в зомби-процессы:Так задайте вопрос в профильной теме (http://www.wl500g.info/showthread.php?t=12221)!

Прошу вас принять то, что в прошивке никогда не будет кнопки "сделай круто" или патча "сделай всё за меня". После открытия консоли telnet/SSH весь дальнейший успех действий зависит... нет, не от прошивки. От вас.



Да куда уж полнее...Полнее - это когда вы попробуете следовать рекомендациям из профильной темы (http://www.wl500g.info/showthread.php?t=12221) и сделаете что-нибудь с теми процессами, которые не завершили работу за отведённое на это время.

lly
27-12-2011, 12:54
Так вот, собственно, вопрос: Почему при остановке демона из консоли все проходит отлично, и при остановке через ребут - он остается висеть как зомби?
Думаю что решив эту проблему - решится "неперегружание" если не у всех, то у многих.
Судя по приведённой картинке - это проблемы с обработкой сигналов SIGCHLD в самом демоне, нежели чем в /opt/bin/killall. Ну и протухшая uClibc из optware может подгадить.

В любом случае лучше:

ставить из optware минимум и ни в коем случае не системные утилиты
Попробовать перейти на новый репозитарий от ryzhov_al

ryzhov_al
27-12-2011, 13:04
Судя по приведённой картинке - это проблемы с обработкой сигналов SIGCHLD в самом демоне, нежели чем в /opt/bin/killall. Ну и протухшая uClibc из optware может подгадить.На мой взгяд всё гораздо проще. У парня работает kill -9 из консоли. Он просто не удосуживается "попросить" с его помощью "замешкавшихся" "освободить помещение" с помощью

lsof -t /dev/discs/disc0/part1 | xargs kill -9
У меня при отработке скриптов unslung демоны crond и php-fcgi тоже уходили в <defunc> вплоть до "особой просьбы". Именно оттуда растут ноги многочисленным рекомендациям делать не размонтирование файловых систем, а их перемонтирование на чтение. Так как это единственный способ сохранить целостность файловой системы при висящих зомби.

pilson66
27-12-2011, 13:20
Судя по приведённой картинке - это проблемы с обработкой сигналов SIGCHLD в самом демоне, нежели чем в /opt/bin/killall
Тогда почему из локального профиля (root) с остановкой демонов нет никаких проблем?


В любом случае лучше:

ставить из optware минимум и ни в коем случае не системные утилиты
Попробовать перейти на новый репозитарий от ryzhov_al

Судя по переменной PATH - система в момент запуска pre-shutdown не знает о наличии системных утилит в /opt и не использует их, если к конкретной утилите явно не указать абсолютный путь. Killall от busybox не используется скорее всего по причине того что в нем нет опции "-w". В настройках busybox возможно активировать эту опцию, или ее принципиально там нет?

ryzhov_al
27-12-2011, 13:28
Тогда почему из локального профиля (root) с остановкой демонов нет никаких проблем?
<facepalm>
Потому, что процесс init при завершении работы о ваших PATH=.../opt/bin и других чудесных настройках пользовательского профиля даже не догадывается. Прописывайте полные пути в скриптах, прибивайте зависшие зомби-процессы перед размонтированием дисков и всё будет работать как часы. Рецепт решения своей проблемы вроде бы узнали, так чем же ещё вам помочь?:)

lly
27-12-2011, 13:37
Тогда почему из локального профиля (root) с остановкой демонов нет никаких проблем?
ryzhov_al расписал предельно подробно, мне добавить нечего.


Killall от busybox не используется скорее всего по причине того что в нем нет опции "-w". В настройках busybox возможно активировать эту опцию, или ее принципиально там нет?
Пока никто не сделал. Планы добавить своими силами есть, но времени катастрофически не хватает.

HobGoblin
27-01-2012, 20:43
Роутер ASUS WL-500gP V2.
Прошивка 1.9.2.7-rtn-r3702.

SSN
05-10-2012, 13:09
Заметил, что бьются закачки при выключении роутера...
Оказалось, что скрипт размещенный на первой странице сейчас некорректно отрабатывает ситуацию, хотя этот скрипт году назад работал безупречно.
Добавив пару выводов содержимого переменных в консоль оказалось, что скрипт прибивает сам себя, не дойдя до перемонтирования разделов в RO.

Mounts: /tmp/mnt/disc0_3 /opt
Flushing file system buffers
Asking all remaining processes to terminate
My Pid: 7432
Pids on mounts: 7431 7432 7503
Killed
[admin]/tmp/local/root>

Вот такая ситуёвина.