Несколько дней назад я приобрел себе домой сетевое хранилище (далее — NAS) D-Link DNS-325 — одно из самых популярных устройств в своем классе, имеющее не только прекрасное соотношение цена/качество, но и огромный потенциал для твика. В Сети есть множество мануалов по доработке программного обеспечения данного NAS’а, однако не вся информация доступна на русском языке. В процессе более тесного знакомства с устройством я постараюсь восполнять данный пробел.
Проблема планировщика fun_plug
После установки плагина fun_flug на D-Link DNS-325 я решил добавить несколько заданий планировщика для выполнения автоматической индексации папок с данными. При этом выяснилось, что таблица заданий планировщика (далее — crontab) сбрасывается в первоначальное состояние при каждой перезагрузке устройства. Для решения проблемы был найден скрипт uwcron от Uli Wolf, после удачного «внедрения» которого я написал эту заметку, являющуюся очень вольным переводом статьи uwcron: Cron for the fun_plug.
Исходные данные
Все действия, описанные ниже, выполнялись на NAS’е D-Link DNS-325 с официальной прошивкой версии 1.03 и плагином fun_plug версии 0.7. Скрипт uwcron устанавливался из репозитория Uli.
Установка uwcron
Для установки uwcron достаточно подключиться к устройству с помощью SSH (или Telnet) под именем root
и выполнить следующие команды:
slacker -UaA uli:uwcron [[ -f /ffp/start/uwcron.sh.new ]] && mv /ffp/start/uwcron.sh.new /ffp/start/uwcron.sh chmod a+x /ffp/start/uwcron.sh
При возникновении проблем с установкой скрипта uwcron с помощью slacker можно установить его с этого сайта командами:
wget --no-check-certificate -O /ffp/start/uwcron.sh https://sergeysl.ru/wp-content/uploads/linux/uwcron.sh chmod a+x /ffp/start/uwcron.sh
Добавление заданий
Для добавления заданий планировщика необходимо перейти в папку /ffp/etc/cron.d
и создать в ней любое количество файлов с любыми именами. Каждый из этих файлов должен иметь формат crontab и содержать одну или несколько строк, определяющих задания. Например, для интересующей меня индексации содержимого папок /mnt/HD/HD_a2/Downloads
на 15й, /mnt/HD/HD_a2/Movies
на 30й ну и, наконец, /mnt/HD/HD_a2/Music
на 45й минуте каждого часа был создан файл upnpdbmgr
, имеющий следующее содержимое:
15 * * * * /usr/local/modules/sbin/upnpdbmgr --mode=add /mnt/HD/HD_a2/Downloads 30 * * * * /usr/local/modules/sbin/upnpdbmgr --mode=add /mnt/HD/HD_a2/Movies 45 * * * * /usr/local/modules/sbin/upnpdbmgr --mode=add /mnt/HD/HD_a2/Music
Управление uwcron
После добавления всех нужных заданий необходимо запустить uwcron командой /ffp/start/uwcron.sh start
, а затем посмотреть, что получилось, командой crontab -l
. В моем случае она отображает примерно такую информацию (добавленные выше определения заданий подсвечены):
30 2 * * * /usr/sbin/stime& */10 * * * * /usr/sbin/rlog /var/log/user.log 800 ### UWCRON BEGIN ### # DO NOT REMOVE OR CHANGE THE DEFINITIONS HERE # FOR CHANGES GO TO THE CORRESPONDING FILES, SEE BELOW ### BEG: Definition from upnpdbmgr ############################################# 15 * * * * /usr/local/modules/sbin/upnpdbmgr --mode=add /mnt/HD/HD_a2/Downloads 30 * * * * /usr/local/modules/sbin/upnpdbmgr --mode=add /mnt/HD/HD_a2/Movies 45 * * * * /usr/local/modules/sbin/upnpdbmgr --mode=add /mnt/HD/HD_a2/Music ### END: Definition from upnpdbmgr ############################################# ### UWCRON END ###
Учтите, что после внесения любых изменений в файлы из папки /ffp/etc/cron.d
следует выполнять команду /ffp/start/uwcron.sh restart
.
Заключение
На мой взгляд, представленной информации вполне достаточно для полноценного использования планировщика D-Link DNS-325 с плагином fun_plug. Можете смело перезагрузить NAS и выполнить команду crontab -l
. Если Вы были внимательны, результат ее работы не должен отличаться от уже виденного ранее — все добавленные Вами задания должны быть на своем месте.
а можно как-то удалить вот это задание
*/10 * * * * /usr/sbin/rlog /var/log/user.log 800
?Я не рекомендую этого делать, хотя, конечно, можно. Откройте файл
/etc/NAS_CFG/config.xml
в том жеmcedit
, найдите вот такие строки:<user.log>
<count>1</count>
<item id="1">
<method>1</method>
<1>*/10</1>
<2>*</2>
<3>*</3>
<4>*</4>
<5>*</5>
<run>/usr/sbin/rlog /var/log/user.log 800</run>
</item>
</user.log>
удалите все, кроме:
<user.log>
</user.log>
и перезагрузите NAS.
Не получается:( Может я не с того начал, у меня такая проблема, когда нас не в работе, винт паркует головки, но каждые ~10 минут просыпается, крутится минут 5-8, опять паркует головки… В общем, получается, когда нас простаивает винт все равно крутится… Хотелось бы, чтобы он при простое парковал головки, не крутился и спал, пока не потребуется.
Еще заметил интересную особенность, бывает fun_plug не загружается при перезагрузке, так вот тогда, винт в простое очень правильно спит и никто его не будет…
Вот я и подумал, может от этого задания он просыпается
*/10 * * * * /usr/sbin/rlog /var/log/user.log 800
?А всяческие Amazon S3, dlinkCloud и т.п. у Вас не запущены? Еще где-то попадалась инфа, что с прошивками старше 1.03 бывают проблемы с незасыпающими дисками. У меня все облачные сервисы отключены, fun_plug запущен всегда, если Transmission и Twonky ничего не делают, винты спят.
Не давно пытался настроить планировщик, но так ничего и невышло. После этого поста захотелось поробовать снова.
Смело делайте. Проверял на собственном NAS’е 🙂
Сергей, а ты не хохол случаем?
Нет, хотя против адекватных хохлов ничего не имею 🙂
А можно ли планировщиком настроить синхронизацию времени(NTP). Команду не подскажете?
Можно. Команда
stime
берет время с ntp1.dlink.com,sntp <имя NTP-сервера>
— с заданного Вами NTP-сервера.Моё первое знакомство с Linux состоялось только сейчас, при настройке моего dns-325, поэтому прошу прощения, если мой вопрос покажется слишком глупым. У меня не получается заставить cron выполнять удаление файлов из директории (все файлы, которые старше одних суток). Подскажите, пожалуйста, где я ошибся?
uwcron я установил успешно, в папку
/ffp/etc/cron.d
поместил файлmycron
со следующим содержимым:10 21 * * * find /mnt/HD/HD_b2/foscam -mtime +1 -exec rm -rf {} \;
Проверяю задания через
crontab -l
, ответ следующий:30 2 * * * /usr/sbin/stime&
*/10 * * * * /usr/sbin/rlog /var/log/user.log 800
### UWCRON BEGIN ###
# DO NOT REMOVE OR CHANGE THE DEFINITIONS HERE
# FOR CHANGES GO TO THE CORRESPONDING FILES, SEE BELOW
### BEG: Definition from mycron ################################################
10 21 * * * find /mnt/HD/HD_b2/foscam/192 -mtime +1 -exec rm -rf {} \;
### END: Definition from mycron ################################################
Что-то даже не знаю где искать ошибку.
Точка с запятой в конце команды не нужна, не знаю, может ли это повлиять на правильность работы планировщика. Лично я добавил бы вот такую команду вместо Вашей:
cd /mnt/HD/HD_b2/foscam/192 && find . -mtime +1 -delete
Все остальное похоже не правду.
Еще один важный момент — похоже, что Вы не добавили перевод строки после команды.
Извиняюсь, в предыдущем посте опечатку сделал, путь в файле
mycron
само собой указан такой же, как и при выводе списка заданий.Ничего страшного.
Ура! Всё заработало! Действительно, проблема была в том, что не хватало перевода строки. Спасибо за помощь, я бы, наверное, долго еще догадывался в чем проблема 🙂
Мне кажется, все в начале использования nix об это спотыкались. Рад, что сумел помочь 🙂
А это ты где?
Это не я 🙂
Сергей, вопрос на засыпку — есть у Вас uwcron? не могу найти нигде. в репозиториях нету его. имею dns-325 уже 4 года, только сейчас начал в линукс вникать…. а то инструкция есть (в нескольких местах), а самого uwcron’a нет нигде.
Давно не пользуюсь uwcron, т.к. Twonky Media Server сам индексирует контент. Попробуйте вот этот uwcron.sh.
Спасибо.