The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
Crontab с ограничением по времени, !*! vfp7, 02-Сен-13, 16:43  [смотреть все]
Добрый день всем
Давно назревало, и вот настал момент истины :)
Потребовалось автоматически запускать программу даже при перезагрузке системы, но в определенный интервал времени. На текущий момент эта прога стартует так:

crontab -e

@reboot /usr/local/bin/mpc play 1 > /dev/null 2>&1
0       8-22    *       *       *       /usr/local/bin/mpc play 1 > /dev/null 2>&1
50      22      *       *       *       /usr/local/bin/mpc stop > /dev/null 2>&1
10,55   7       *       *       *       /usr/local/bin/mpc play 3 > /dev/null 2>&1
45,50,55        20      *       *       *       /usr/local/bin/mpc play 1 > /dev/null 2>&1

То есть mpc работает ВСЕ время с 8 утра до 23 вечера, даже при перезагрузке системы и т.д.
Но нужно добиться что бы, если сервер перезагрузится в прочее время ( с 23:00 до 8:00 ), то mpc не стартовал.
Это звуковая система установленная на первом этаже жилого дома, жильцы дома будут явно не в восторге от работы звуковой системы в ночное время :)
Иногда приходится сервер ставить в шедуллер на перезагрузку ночью, плюс возможен вариант отключения электричества в ночное время ( все системы авто стартуют при подаче напряжения ).

Есть ли вариант через крон задать ограничение по времени?
( Кому нужна система: freebsd 9.1 x64 )

  • Crontab с ограничением по времени, !*! михалыч, 17:32 , 02-Сен-13 (1)
    > Есть ли вариант через крон задать ограничение по времени?

    Скрипт написать.

    #!/bin/sh

    TIME=`date +%H`
    if [ $TIME -ge 23 -o $TIME -lt 8 ]; then
        # проверяем работу mpc
        pgrep -q mpc
        if [ $? -eq 0 ]; then
            /usr/local/bin/mpc stop
        fi
        exit
    else
        /usr/local/bin/mpc start
    fi

    и по крону каждый час
    либо по ребуту без куска с проверкой работы mpc, т.е. сразу на exit а то целый час будет нервы на прочность испытывать))

  • Crontab с ограничением по времени, !*! vfp7, 18:18 , 02-Сен-13 (2)
    0 1 1-7 * * [ "$(date '+\%u')" -eq 7 ] && echo "Эта надпись выводится каждое первое воскресенье каждого месяца в 1:00"

    Я бы склонился в эту сторону, типа минискрипта в теле крона - пока собираю информацию как правильнее сделать ...

  • Crontab с ограничением по времени, !*! vfp7, 19:34 , 02-Сен-13 (3)
    На текущий момент оптимальный вариант в крон по ребуту воткнуть запуск такого скрипта:
    ( Он сам найдет минимальное и максимальное время для mpc из крона )

    #!/bin/sh
    TIME=`date +%H`
    NAMEAPP=mpc
    MINTIME=`crontab -l | grep ${NAMEAPP} | cut -f2 | awk 'BEGIN { min = 23} { if ( $1 < min ) min = $1 } END  {  print min }'`
    MAXTIME=`crontab -l | grep ${NAMEAPP} | cut -f2 | awk 'BEGIN { max = 23} { if ( $1 > max ) max = $1 } END  {  print max }'`
    if [ ${TIME} -ge ${MINTIME} ] && [ ${TIME} -le ${MAXTIME} ]; then
        /usr/local/bin/mpc play 3 > /dev/null 2>&1
    fi

    • Crontab с ограничением по времени, !*! vfp7, 11:11 , 03-Сен-13 (4)
      На текущий момент оптимальный вариант в крон по ребуту воткнуть запуск такого
      скрипта:
      ( Он сам найдет минимальное и максимальное время для mpc из крона
      )

      #!/bin/sh
      TIME=`date +%H`
      NAMEAPP=mpc
      MINTIME=`crontab -l | grep ${NAMEAPP} | cut -f2 | awk 'BEGIN {
      min = 23} { if ( $1 < min ) min
      = $1 } END  {  print min }'`
      MAXTIME=`crontab -l | grep ${NAMEAPP} | cut -f2 | awk 'BEGIN {
      max = 1 } { if ( $1 > max ) max
      = $1 } END  {  print max }'`
      if [ ${TIME} -ge ${MINTIME} ] && [ ${TIME} -le ${MAXTIME} ];
      then
           /usr/local/bin/mpc play 3 > /dev/null 2>&1
      fi





Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру