Выполнить перед рестартом [FreeBSD]
можно оформить rtorrent в системе как сервис (если еще не так и разнести его с сервисом монтирования по ранлевелам или прописать зависимость в rc скрипте (REQUIRE)
man rc.d
man rcorder
и просто посмотри как устроены скрипты из /usr/local/etc/rc.d
man rcorder
и просто посмотри как устроены скрипты из /usr/local/etc/rc.d
rtorrent запускается daemon'ом через /etc/rc.conf, а ntfs монтируется fstab'ом. У скрипта rtorrent'а метод _stop есть, но он не выполняется при reboot'е почему-то...
Ты, видимо, не совсем понял как это все работает.
В /etc/rc.conf ты просто задаешь нужные переменные, типа <что-то>_enable="YES"
А потом уже скрипты из /usr/local/etc/rc.d анализируют эти переменные (не будем вдаваться в подробности как именно) и либо выполняют что-то, либо нет.
Если хочешь понять, работает оно или нет, попробуй просто запустить свой скрипт с параметром stop:
/usr/local/etc/rc.d/rtorrent stop — отработает или нет.
Можешь попробовать в rc.conf добавить rc_debug="YES", тогда ты увидишь все отладочные сообщения во время работы rc-скриптов. Но их будет просто куча, будь готов.
И еще поизучай отдельно man 8 rc — там тоже найдешь что-то полезное.
В /etc/rc.conf ты просто задаешь нужные переменные, типа <что-то>_enable="YES"
А потом уже скрипты из /usr/local/etc/rc.d анализируют эти переменные (не будем вдаваться в подробности как именно) и либо выполняют что-то, либо нет.
Если хочешь понять, работает оно или нет, попробуй просто запустить свой скрипт с параметром stop:
/usr/local/etc/rc.d/rtorrent stop — отработает или нет.
Можешь попробовать в rc.conf добавить rc_debug="YES", тогда ты увидишь все отладочные сообщения во время работы rc-скриптов. Но их будет просто куча, будь готов.
И еще поизучай отдельно man 8 rc — там тоже найдешь что-то полезное.
Насколько я понял из манов, перед reboot'ом /etc/rc.shutdown запускает все скрипты из rc.d, содержащие"# KEYWORD: shutdown" с параметром stop. Этого не происходит.Более того, дописав в /etc/rc.shutdown после строчки "# Insert othershutdown procedures here" тестовую строку echo "Test String" >> /home/test.test.test я не обнаружил после ребута файла test.test.test в /home.
p.s. С "после ребута" проблем пока не возникало, все загружается. Проблемы с "до ребута".
p.s. С "после ребута" проблем пока не возникало, все загружается. Проблемы с "до ребута".
обрати внимание на следующую часть:
может поэтому у тебя и не доходит выполнение. попробуй выставить rc_debug="YES" и посмотреть потом логи.
foo.sh Scripts that are to be sourced into the current shell
rather than a subshell have a .sh suffix. Extreme
care must be taken in using this, as the startup
sequence will terminate if the script does.
может поэтому у тебя и не доходит выполнение. попробуй выставить rc_debug="YES" и посмотреть потом логи.
Честно говоря, даже приблизительно не смог выделенный отрывок понять...
Опытным путем выяснил, что rc.shutdown обрабатывается, при shutdown -r, но не при reboot.... В манах подтверждения этому не нашел, а часа два назад вообще где-то прочитал, что reboot - это алиас для shutdown...
Опытным путем выяснил, что rc.shutdown обрабатывается, при shutdown -r, но не при reboot.... В манах подтверждения этому не нашел, а часа два назад вообще где-то прочитал, что reboot - это алиас для shutdown...
Скрипты, выполняющиеся в текущем шелле, а не в дочернем, имеют суффикс .sh, Будьте крайне осторожны, используя эту фичу, ибо если упадёт ваш скрипт - навернется весь стартап.
Теперь все понятно, почему у тебя не работает
reboot — это сброс дисковых кэшей на диск, после этого убийство всех работающих процессов и потом уже перезагрузка системы.
А вот shutdown -r — это сначала выполнение всех скриптов из rc.d, а потом запуск reboot. И надо делать только так.
читай man reboot внимательней.
reboot — это сброс дисковых кэшей на диск, после этого убийство всех работающих процессов и потом уже перезагрузка системы.
А вот shutdown -r — это сначала выполнение всех скриптов из rc.d, а потом запуск reboot. И надо делать только так.
читай man reboot внимательней.
CAVEATS
...
This command will stop the system without running any shutdown(8)
scripts. Amongst other things, this means that swapping will not be dis-
abled so that raid(4) can shutdown cleanly. You should normally use
shutdown(8) unless you are running in single user mode.
По многим общим для семейства BSD вещам стоит читать документацию из системы,
где она на два порядка лучше.
REBOOT(8) NetBSD System Manager's Manual REBOOT(8)
Опыт показывает, что вообще, при работе с FreeBSD часто стоит сначала
читать документацию по NetBSD и проверять на отсутствие возможностей.
---
Q39: А вот в юниксах буковок нету
A39: Сдуру можно много чего сломать
Оставить комментарий
feliks28
Ситуация такая: есть rtorrent+web-морда, который раздает с ntfs (ntfw-3g,rw) диска.После reboot'а на всех этих раздачах заново начинается re-check...
Насколько я понимаю, это происходит от того, что диск с ntfs при reboot'е отваливается раньше, чем убивается rtorrent. Поэтому хочется выполнить перед reboot'ом `/usr/local/etc/rc.d/rtorrent.sh stop`. Вопрос в том, как это сделать?