Форум русскоязычного сообщества Ubuntu


Автор Тема: Cron & free-sa stat script  (Прочитано 2252 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн neqon

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Cron & free-sa stat script
« : 28 Апрель 2010, 10:52:12 »
Уже несколько дней бьюсь с кроном для того, чтобы получить статистику в free-sa за рабочий день ! Для этого написал простейший скрипт:
#!/bin/bash
today=$(/bin/date +%m/%d/%Y)
stat_today="/usr/local/bin/free-sa"
$stat_today -d $today-
bash -x /home/user/1 2> /home/user/log1

в /etc/crontab добавил строку
*/30 8-20 * * 1-5 root /home/user/1Собственно статистика не обновляется.

В файле логе лог1 при запуске руками :
++ /bin/date +%m/%d/%Y
+ today=04/28/2010
+ stat_today=/usr/local/bin/free-sa
+ /usr/local/bin/free-sa -d 04/28/2010-

В файле логе log1 от запуска из крона получаю следующее:
++ /bin/date +%m/%d/%Y
+ today=04/28/2010
+ stat_today=/usr/local/bin/free-sa
+ /usr/local/bin/free-sa -d 04/28/2010-
SAERROR: [SAusage] Incorrect dates range specified '04/28/2010-'
Usage: /usr/local/bin/free-sa [-s|-r|-F|-h|-v|-V] [-d STARTDATE-ENDDATE] [-f FILE] [-l FILE] [-o DIRECTORY] [-n NAME]
  -d STARTDATE-ENDDATE  Dates range for report generation in current locale,
                        you may specify only STARTDATE followed by '-' sign,
                        or only ENDDATE preceded by '-' sign.
  -e ADDRESS            Send top users report in text format to e-mail ADDRESS,
                        if ADDRESS is '-' then report is writed to stdout.
  -f FILE               Read configuration from FILE.
  -F                    Fix root index.html file according to
                        reports directories presense.
  -h                    Show help message
  -l FILE               Use FILE as log file.
  -n NAME               Use NAME as configuration name.
  -o DIRECTORY          Use DIRECTORY as target for placing reports.
  -r                    Remove records from log file.
                        You must also specify date(s) at '-d' option.
  -s                    Show log file information:
                        name, size, start and end dates.
  -v                    Show version
  -V                    Show advanced information about current free-sa build

Собственно где собака то зарыта !? ведь при запуске руками /usr/local/bin/free-sa -d 04/28/2010- формирует отчет так же без проблем. Что не так с датой ?!

П.С. сразу скажу, что вариант /usr/local/bin/free-sa -d day работает и через скрипт и через крон, но меня не устраивает т.к. берется статистика за последние 24 часа ! а не за рабочий день !




Пользователь решил продолжить мысль 28 Апрель 2010, 10:49:47:
ну что товарищи идей нет !? Или может непонятно описана проблема !?
free-sa если кто не знает лог анализатор прокси squid'a !
« Последнее редактирование: 28 Апрель 2010, 12:50:37 от neqon »

Оффлайн _navi_

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #1 : 28 Апрель 2010, 13:34:10 »
попробуйте заменить на $stat_today -d $(date +%m/%d/%Y)-
« Последнее редактирование: 28 Апрель 2010, 13:37:10 от _navi_ »

Оффлайн neqon

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #2 : 28 Апрель 2010, 13:51:33 »
ну уже гору инфы перечитал по этому вопросу :) и твое выражение не совсем неправильное ! т.к. в скриптах для крона лучше указывать полный путь т.е. $stat_today -d $(/bin/date +%m/%d/%Y)

Далее, пробовал и так как ты писал и вот так в скрипте писал
/usr/local/bin/free-sa -d $(/bin/date +%m/%d/%Y)
и собственно просто без скрипта засовывал в крон такой строчкой. Учитывая добавления "\" перед знаком "%"
*/30 8-20 * * 1-5 root /usr/local/bin/free-sa -d $(date \+\%m/\%d/\%Y)\-
И даже такой экзотической через сохранения файла даты в файл и потом ее взятие из этого файла
52 8-20 * * 1-5 root echo $(date \+\%m/\%d/\%Y) > /home/user/tmp && /usr/local/bin/free-sa -d $(cat /home/user/tmp)\-
Уже честно аж комплекс ! скрипт 3 строчки или одна строка с командой в кроне и не пашет !

Оффлайн _navi_

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #3 : 28 Апрель 2010, 14:05:12 »
при выполнение вот этого что выдает "/usr/local/bin/free-sa"?

Оффлайн RedBeard

  • Активист
  • *
  • Сообщений: 740
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #4 : 28 Апрель 2010, 14:13:21 »
Крон-то тут причем? Тут похоже, free-sa глючит!

Оффлайн neqon

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #5 : 28 Апрель 2010, 14:21:46 »
Крон-то тут причем? Тут похоже, free-sa глючит!
А почему тогда вручную работает ? вон в Sarg что в репозитариях Ubuntu лежит (версия 2,5) впишите в sarg.conf параметр resolve_ip yes. Так он крешитсья будет, что через крон , что в при ручном запуске. Т.к. баг данной версии.

при выполнение вот этого что выдает "/usr/local/bin/free-sa"?

всю статистику считает, что есть в логе squid.

Оффлайн RedBeard

  • Активист
  • *
  • Сообщений: 740
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #6 : 28 Апрель 2010, 16:00:19 »
Крон-то тут причем? Тут похоже, free-sa глючит!
А почему тогда вручную работает ? вон в Sarg что в репозитариях Ubuntu лежит (версия 2,5) впишите в sarg.conf параметр resolve_ip yes. Так он крешитсья будет, что через крон , что в при ручном запуске. Т.к. баг данной версии.

при выполнение вот этого что выдает "/usr/local/bin/free-sa"?

всю статистику считает, что есть в логе squid.
Крон всего лишь запускает нужную прогу в нужное время. Попробуйте acron, что ли!

Оффлайн _navi_

  • Новичок
  • *
  • Сообщений: 42
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #7 : 28 Апрель 2010, 16:27:36 »
не то написал....'/home/user/1' - я так понимаю это путь к скрипту твоему
что выдает тебя '/home/user/1' ?
судя по ошибки у тебя не работает сам скрипт..так что
#!/bin/bash
today=$(/bin/date +%m/%d/%Y)
stat_today="/usr/local/bin/free-sa"
$stat_today -d $today-
bash -x /home/user/1 2> /home/user/log1
замени на
#!/bin/bash
#set -x
stat_today="/usr/local/bin/free-sa"
$stat_today -d $(date +%m/%d/%Y)-
а в кроне добавь строку
*/30 8-20 * * 1-5 root /home/user/1
« Последнее редактирование: 28 Апрель 2010, 19:40:12 от _navi_ »

Оффлайн neqon

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #8 : 29 Апрель 2010, 15:09:05 »
В общем проблему решил ! Заключалась она в локале (locale) крона.  В нем используется С или POSIX. Можно так посмотреть, что брал free-sa на самом деле
d@ubuntu-proxy:~$ export LC_ALL=C
d@ubuntu-proxy:~$ export LANG=C
d@ubuntu-proxy:~$ date +%x
04/29/10

Добавил в скрипт строчки экспорта локали на ту, что у меня стоит (посмотреть можно набрав locale в консоле)
#!/bin/bash
export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

today=$(/bin/date +%m/%d/%Y)
stat_today="/usr/local/bin/free-sa"
$stat_today -d $today-

Теперь все работает из крона!


Оффлайн RedBeard

  • Активист
  • *
  • Сообщений: 740
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #9 : 29 Апрель 2010, 15:15:41 »
В кроне нет никакой собственной локали! А вот экспорт в баш-скрипт надо было делать сразу! Не путайте проблемы!

Оффлайн neqon

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #10 : 29 Апрель 2010, 15:31:38 »
В кроне нет никакой собственной локали! А вот экспорт в баш-скрипт надо было делать сразу! Не путайте проблемы!

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

Крон использует системную локаль.

Оффлайн RedBeard

  • Активист
  • *
  • Сообщений: 740
    • Просмотр профиля
Re: Cron & free-sa stat script
« Ответ #11 : 29 Апрель 2010, 15:36:14 »
Так я вам сразу написал, что не в кроне дело!

 

Страница сгенерирована за 0.056 секунд. Запросов: 22.