Page 18 of 23 FirstFirst ... 81617181920 ... LastLast
Results 256 to 270 of 339

Thread: Настройка CRON на роутере

  1. #256
    Quote Originally Posted by ryzhov_al View Post
    но скрипт не выполняется, причём в процессах намертво повисает
    Code:
    $ ps afx
      PID TTY      STAT   TIME COMMAND
    ...
      554 ?        Ss     0:00 crond -b -S -c /var/spool/cron/crontabs
      766 ?        Z      0:00  \_ [sh] <defunct>
      765 ?        Z      0:00  \_ [sh] <defunct>
    Ч.д?
    ps -ex вроде как окружение процесса показывает
    RT-N16 TomatoRAF

  2. #257
    Join Date
    Jan 2011
    Location
    Нижний Новгород
    Posts
    543
    Quote Originally Posted by partner View Post
    не понял... что мне тогда сделать?
    содержимое /opt/etc/cron.5mins и /opt/etc/cron.hourly одним архивом сюда
    DIR-320 & RTN-r3297 from USB>r3478>r3539>r3722>r3815>r3877>r4051>r4990>r5163

  3. #258
    Короче так... "Настраиваем CRON, который есть в прошивке"

    Проверяем наличие crond в прошивке
    1.1 Используем встроенный в прошивку crond. Если вы устанавливали crond через ipkg, сделайте ipkg remove cron
    1.2 Проверяем, есть ли у нас crond, встроенный в прошивку.
    ls /usr/sbin/crond
    /usr/sbin/crond Это должно быть. Если нет, то у вас нет встроенного crond

    Создаем файлы и папки
    2.0 Вступление. Дабы не заниматься фигнёй, мы создаем файл crontab, например, на флешке. Чтобы проще редактировать и т.д. Для этого я использую папку /opt/scripts/crondata в данном примере. В этой папке у меня все что относится к cron'у - crontab и скрипты типа cron.5mins. Сразу оговорюсь, я не использую run-parts, таким образом, у меня crond запускает сам скрипт, а не (как во многих мануалах) "все скрипты из папки cron.5min" .

    2.1 Создаем папку crondata
    Code:
    mkdir -p /opt/scripts/crondata
    2.1 Создаем файл crontab и сценарии
    Он у меня называется _crontab. cron работает не непосредственно с ним, так что использован символ "_".
    Code:
    touch /opt/scripts/crondata/_crontab
    touch /opt/scripts/crondata/cron.5min
    touch /opt/scripts/crondata/cron.daily
    touch /opt/scripts/crondata/cron.hourly
    touch /opt/scripts/crondata/cron.weekly
    Делаем исполняемые файлы исполняемыми
    Code:
    chmod +x /opt/scripts/crondata/cron.*
    2.2 Заполняем файл crontab содержимым**:
    Code:
    SHELL=/bin/sh
    
    #min    hr      dayOfM  month   dayOfW  command
    */5    *       *       *       *       /opt/scripts/crondata/cron.5min
    5       *       *       *       *       /opt/scripts/crondata/cron.hourly
    10      1       *       *       *       /opt/scripts/crondata/cron.daily
    15      1       *       *       1       /opt/scripts/crondata/cron.weekly
    Правила заполнения можно почитать тут. Я предпочитаю не использовать переменную PATH (в место этого указываю полные пути ко всему).

    2.3 Заполняем файлы cron.*
    Заполняем содержимым файлы cron.*. Напомню, что певая строка содержит упоминание интерпретатора (/bin/sh в моем случае). Вторая строка запускает программу logger. В данном случае logger должен добавить в системный журнал событие (во столько-то запущен cron-daily)*
    Code:
    #!/bin/sh
    logger [CRON-DAILY] #Меняем на weekly\hourly\5mins=\в зависимости от скрипта 
    #Ваши команды. Указывайте полные пути ко всему!
    Отдельно замечу: файл /opt/scripts/crondata/cron.5min я использую только для проверки работоспособности crond. Так что его содержимое состоит из одного logger-а
    Code:
    #!/bin/sh
    logger [CRON-5MIN]


    Добавляем в автозапуск
    3.0 Учить, как именно настраивать post-mount не буду - ищите сами.
    3.1 Добавляем в post-mount
    В комментариях упоминается admin как суперпользователь. У вас он может быть root или еще как нибудь. В общем, скрипт учитывает это, и admin упоминается только в комментариях
    Code:
    #!/bin/sh
    #Префикс для системного журнала
    c_prefix=[INIT][CROND]
    
    #Где встроенный crond ищет свои конфиги
    c_main_crontab_dir=/var/spool/cron/crontabs
    
    #Где наш crontab
    c_opt_crontab=/opt/scripts/crondata/_crontab
    
    #Определяем имя root-а (по-умолчанию он admin, но вдруг вы поменяли?)
    c_root_username=` cat /etc/passwd | /bin/grep :0:0: | /usr/bin/awk -F: '{print $1}'`
    
    #встроенный cron будучи запущеным от пользователя admin(root\..) будет искать свои данные crontab в файле /var/spool/cron/crontabs/admin
    c_main_crontab_file=$c_main_crontab_dir/$c_root_username
    
    #Логируемся
    logger $c_prefix Creating crontabs files for "$c_root_username"
    
    #Создаем папку /var/spool/cron/crontabs
    mkdir -p $c_main_crontab_dir
    
    #создаем файл /var/spool/cron/crontabs/admin
    touch $c_main_crontab_file
    
    #Логируемся
    logger $c_prefix Adding $c_opt_crontab to $c_main_crontab_file
    
    #Переносим все из файла /opt/scripts/crondata/_crontab в /var/spool/cron/crontabs/admin
    cat $c_opt_crontab >> $c_main_crontab_file
    
    #Логируемся
    logger $c_prefix Starting crond
    
    #Запускаем crond
    /usr/sbin/crond -b -S -c $c_main_crontab_dir
    
    #Логируем "crond script finished"
    logger $c_prefix crond script finished

    Проверяем
    Сохраняем flashfs, перезагружаем роутер.
    Смотрим логи.
    Ищем это
    Code:
    Apr 16 16:22:34 admin: [INIT][CROND] Creating crontabs files for admin
    Apr 16 16:22:34 admin: [INIT][CROND] Adding /opt/scripts/crondata/_crontab to /var/spool/cron/crontabs/admin
    Apr 16 16:22:34 admin: [INIT][CROND] Starting crond
    Apr 16 16:22:34 crond[433]: crond: crond (busybox 1.18.4) started, log level 8
    Apr 16 16:22:35 admin: [INIT][CROND] Script finished
    Заходим на роутер, проверяем служебный crontab
    #admin заменить на ваш логин в роутере
    cat /var/spool/cron/crontabs/admin
    Должно отобразиться то же содержимое что и у /opt/scripts/crondata/_crontab

    В течении 6 минут должна появиться запись
    Code:
    Apr 16 19:05:01 crond[433]: crond: USER admin pid 465 cmd /opt/scripts/crondata/cron.5min
    Apr 16 19:05:01 admin: [CRON-5MIN]
    Появилась - значит работает.

    Сноски:
    * logger <text> добавляет text в syslog датой выполнения. То есть можно так отслеживать свои сценарии и т.д.
    **
    */5 * * * * /opt/scripts/crondata/cron.5min ВЫПОЛНЯЕТСЯ каждые 5 минут
    5 * * * * /opt/scripts/crondata/cron.hourly ВЫПОЛНЯЕТСЯ каждый час, на пятой минуте часа (в 0:05, 1:05, 2:05,...)
    10 1 * * * /opt/scripts/crondata/cron.daily ВЫПОЛНЯЕТСЯ каждый день в 1:10
    15 1 * * 1 /opt/scripts/crondata/cron.weekly ВЫПОЛНЯЕТСЯ каждый понедельник 1:15
    В crontab: 0 -воскресение, 1 - понедельник, .... 6 - суббота

    МОГ ГДЕ_ТО ОШИБИТЬСЯ. С РАДОСТЬЮ ПРИМУ ПОПРАВКИ В ЛИЧКУ
    Last edited by Omega; 17-01-2016 at 21:34.
    Sorry for my bad English.
    Покупайте Отечественных Слонов!!!

  4. #259
    Quote Originally Posted by FilimoniC View Post
    Code:
    #!/bin/sh
    logger [CRON-DAILY] #Меняем на weekly\hourly\5mins=\в зависимости от скрипта 
    #Ваши команды. Указывайте полные пути ко всему!
    ну если полные пути , то logger это команда и должно быть /usr/bin/logger

    з.ы. IMHO размешать скрипты на /opt не очень хорошая идея. Тогда уж проще крон с оптваре поставить
    Last edited by A1ex; 21-04-2011 at 06:28.
    RT-N16 TomatoRAF

  5. #260
    Quote Originally Posted by A1ex View Post
    ну если полные пути , то logger это команда и должно быть /usr/bin/logger
    logger работает "и так", так что полный путь только пачкает код в этом случае.
    Quote Originally Posted by A1ex View Post
    з.ы. IMHO размешать скрипты на /opt не очень хорошая идея.
    Почему?
    Quote Originally Posted by A1ex View Post
    Тогда уж проще крон с оптваре поставить
    Зачем?

    В свою пользу делаю маленький аргумент -
    у меня в post-boot логика такая:
    - запуск dropbear
    - монтирование флешки
    - ожидание окончания монтирования
    - вызов скрипта /opt/scripts/opt-init

    В данном случае /opt/scripts/opt-init инициализирует комплект "сторонних сервисов". Таким образом, если роутер запущен без флешки, он просто роутер вообще без примочек. Если с флешкой - он запускается как микросервер.
    Sorry for my bad English.
    Покупайте Отечественных Слонов!!!

  6. #261
    Quote Originally Posted by FilimoniC View Post
    Почему?
    без смонтированного /opt скрипты крона работать не будут
    Зачем?
    а если не будут , то с настроить оптварный крон гораздо проще IMHO

    p.s.
    вариант добавления кронтаба в post-boot :
    Code:
    crontab -u `nvram get http_username`  /tmp/local/root/crontab.txt
    crond
    имя админа берется из nvram и файл заготовки переносится куда надо без лишних манипуляций. Путь к файлу, это куда бы я положил заготовку, flashfs наше все . Если бы понадобились новые задания после монтировании /opt, то достаточно в пост-маунте
    Code:
    crontab -u `nvram get http_username`  /opt/etc/crontab.txt
    и будут выполняться скрипты из этого файла, crond сам подхватит изменения.
    Last edited by A1ex; 21-04-2011 at 12:22.
    RT-N16 TomatoRAF

  7. #262

    запуск crond из прошивки

    на основе своих рабочих файлов. Устанавливаем crond из прошивки. Предполагается , что не установлен любой крон. Зайти на роутер терминалом и скопипастить:
    Code:
    CRONDIR=/tmp/local/etc/crond
    mkdir -p $CRONDIR
    
    echo "#min hour day month dayofweek command #" > $CRONDIR/crontab.txt
    echo "*/5  *    *   *     *         $CRONDIR/cron.5mins.sh" >> $CRONDIR/crontab.txt
    echo "01   *    *   *     *         $CRONDIR/cron.hourly.sh" >> $CRONDIR/crontab.txt
    echo "02   4    *   *     *         $CRONDIR/cron.daily.sh" >> $CRONDIR/crontab.txt
    echo "22   4    *   *     0         $CRONDIR/cron.weekly.sh" >> $CRONDIR/crontab.txt
    echo "42   4    1   *     *         $CRONDIR/cron.monthly.sh" >> $CRONDIR/crontab.txt
    
    for i in 5mins hourly daily weekly monthly; do
      echo "#!/bin/sh" > $CRONDIR/cron.$i.sh
      echo "logger \"  --- $CRONDIR/cron.$i.sh start ---\"" >> $CRONDIR/cron.$i.sh
      chmod +x $CRONDIR/cron.$i.sh
    done
    
    [ -f /tmp/local/sbin/post-boot ] || { echo "#!/bin/sh" >> /tmp/local/sbin/post-boot; chmod +x /tmp/local/sbin/post-boot; }
    echo "crontab -u \$(nvram get http_username)  $CRONDIR/crontab.txt" >> /tmp/local/sbin/post-boot
    #echo  "crond -l 9" >> /tmp/local/sbin/post-boot
    echo "PATH=/opt/sbin:/opt/bin:\$PATH crond -l 9" >> /tmp/local/sbin/post-boot
      
    flashfs save && flashfs commit && flashfs enable
    перед flashfs у меня добавляются нужные строчки в нужные скрипты , типа
    Code:
    echo "/tmp/local/sbin/archivelog.sh" >> $CRONDIR/cron.daily.sh
    ... либо редактируем скрипты ручками.
    Чтобы лог не забивать пятиминутным кроном, crond запускается с ключем l -9. В скриптах затем оставляем, если этот скрипт надо видеть в логе, или удаляем, если не надо видеть, строку logger ...

    Присвоение переменных в кронтабе, как в кроне из оптваре, тут не работает, поэтому нужные пути прописаны перед запуском crond. Вот какие пути получились в результате
    Code:
    cat /proc/`pidof crond`/environ
    OLDPWD=/HOME=/TERM=linuxPATH=/opt/sbin:/opt/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbinPWD=/tmpTZ=MSK-3MSD
    Или в более удобоваримом варианте , если установлен ps из оптваре, окружение процесса можно посмотреть
    Code:
    ps ex|grep -m 1 crond
    Last edited by A1ex; 22-04-2011 at 13:18.
    RT-N16 TomatoRAF

  8. #263

    Arrow ?

    ASUS N16. есть одна хотелка, которую без знаний линуха не осилю.
    хочется, чтобы писался лог, пригодный для дальнейшей обработки примерно по следующим правилам:
    раз в минуту пингуется яндыкс, если пинг не прошел, то пинговать раз 2-3 секунды до тех пор, пока не появится коннект.
    чтобы в лог писалось примерно следующее.
    24.07.2011 17:31 - нет коннекта
    24.07.2011 18:00 - есть коннект
    лог хотелось бы получать регулярно на мыло и по запросу через веб-морду.
    как можно такое или похожее организовать на сабжевом роутере?
    может есть какая-нить тулза с веб-мордой, которая даст такой функционал? или может в какой-либо сборке альтернативной прошивки есть такая фича?
    в идеале хотелось бы обойтись без подключения внешнего носителя.

  9. #264
    Join Date
    Jan 2009
    Location
    Kazan, Russia
    Posts
    1,163
    Quote Originally Posted by hardstep View Post
    ASUS N16. есть одна хотелка, которую без знаний линуха не осилю.
    хочется, чтобы писался лог, пригодный для дальнейшей обработки примерно по следующим правилам:
    раз в минуту пингуется яндыкс, если пинг не прошел, то пинговать раз 2-3 секунды до тех пор, пока не появится коннект.
    чтобы в лог писалось примерно следующее.
    24.07.2011 17:31 - нет коннекта
    24.07.2011 18:00 - есть коннект
    лог хотелось бы получать регулярно на мыло и по запросу через веб-морду.
    как можно такое или похожее организовать на сабжевом роутере?
    может есть какая-нить тулза с веб-мордой, которая даст такой функционал? или может в какой-либо сборке альтернативной прошивки есть такая фича?
    в идеале хотелось бы обойтись без подключения внешнего носителя.
    CRON Вас не устроит?
    Asus RT-AC66U, Xerox Phaser 3160B, on the shelf RT-N16 (Killed by lightning)
    WL-500gPv1 128MB, WL-500W 300MHz/128M, LCD 40x4, DIR-320 8Mb/64MB
    WL-700g 128MB, MNV25E2+ and more and more devices. provod.beeline.ru

    -------------------------------------------
    Computers. Since 1984. First one - "МИР-1"

  10. #265
    Quote Originally Posted by LnrMn View Post
    CRON Вас не устроит?
    крону shell script, который я не знаю. неужели никому не нужен мониторинг коннекта и задача нетривиальна?

  11. #266
    Quote Originally Posted by hardstep View Post
    крону shell script, который я не знаю. неужели никому не нужен мониторинг коннекта и задача нетривиальна?
    Никому не нужен )

    #!/bin/sh
    t_logfile=/tmp/log.ping
    t_host=www.ya.ru
    ping -c 1 $t_host
    t_result=$?
    if [ "$t_result" -ne "0" ]
    then
    echo `date` -- $t_result >> $t_logfile
    fi
    Пингует t_host=www.ya.ru и пишет Mon Jul 25 06:10:00 UTC 2011 -- #КодОшибки в t_logfile=/tmp/log.ping когда он не ноль(то есть без ошибки). Суйте в CRON
    Sorry for my bad English.
    Покупайте Отечественных Слонов!!!

  12. Уважаемые, гуру!

    скриптом (для чайников) производиться установка cron
    Code:
    	ipkg install cron
    но cron к сожалению не запускается! Все файлы что необходимы в системе присутствует но он так и не работает.

    Удаляю и снова устанавливаю cron
    Code:
    ipkg remove cron
    ipkg install cron
    и только после этого все начинает работать.

    Подскажите, пожалуйста, как правильно необходимо ставить cron, дабы потом не приходилось повторять действия удаления и повторной установки.

  13. #268
    Quote Originally Posted by Rung View Post
    Подскажите, пожалуйста, как правильно необходимо ставить cron, дабы потом не приходилось повторять действия удаления и повторной установки.
    правильно так
    Code:
    ipkg install cron

  14. #269
    Quote Originally Posted by Rung View Post
    Уважаемые, гуру!

    скриптом (для чайников) производиться установка cron
    Code:
    	ipkg install cron
    но cron к сожалению не запускается! Все файлы что необходимы в системе присутствует но он так и не работает.

    Удаляю и снова устанавливаю cron
    Code:
    ipkg remove cron
    ipkg install cron
    и только после этого все начинает работать.

    Подскажите, пожалуйста, как правильно необходимо ставить cron, дабы потом не приходилось повторять действия удаления и повторной установки.
    Сам с этим столкнулся , но как оказалось не всё так страшно ,просто при установке програм скриптом для чайников файл кронтаб пустой , из-за этого крон и не работает , просто заполняете этот файл нужным содержимым и крон начинает работать. Кстати бывают случаи когда ставится всё нормально , но в большенстве случаев крон не работает , закономерности в этом не нашёл
    Asus RT-N16 FW:1.9.2.7-rtn-r2944 + HDD 1 TB WD WD10EARS + Mobile Rack AgeStar SUB3AHT
    USB Flash 2 Gb Программы для чайника + nShaper + Poptop + Онлайн радио + Egreat EG-R1

  15. Quote Originally Posted by max2007 View Post
    Сам с этим столкнулся , но как оказалось не всё так страшно ,просто при установке програм скриптом для чайников файл кронтаб пустой , из-за этого крон и не работает , просто заполняете этот файл нужным содержимым и крон начинает работать. Кстати бывают случаи когда ставится всё нормально , но в большенстве случаев крон не работает , закономерности в этом не нашёл
    проверял, кронтаб содержит все необходимое, а лечение крона помогает только удаление и его повторная установка.

Page 18 of 23 FirstFirst ... 81617181920 ... LastLast

Similar Threads

  1. Установка и настройка Quagga на роутере
    By mymp in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 149
    Last Post: 02-09-2016, 15:21
  2. [HOW-TO] Установка и настройка ownCloud на роутере
    By ryzhov_al in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 6
    Last Post: 11-08-2013, 19:53
  3. Настройка VPN подключения на роутере
    By Tonusichka in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 215
    Last Post: 07-08-2012, 10:19
  4. Настройка mpcs на роутере
    By poptab in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 1059
    Last Post: 17-07-2012, 06:22
  5. Установка и настройка ipkg на роутере
    By FilimoniC in forum Russian Discussion - РУССКИЙ (RU)
    Replies: 250
    Last Post: 06-12-2008, 07:37

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •