Newsyslog

Проблемы установки, настройки и работы Правильной Операционной Системы

Модератор: terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Newsyslog

Непрочитанное сообщение dikens3 » 2006-11-27 13:04:20

Как выполнить команду date перед запуском newsyslog?

Поясню на примере:
Есть у меня заветная мечта чтобы логи складывались таким образом:
/var/log/МОИ ЛОГИ/ГОД/МЕСЯЦ/ДЕНЬ/**** Тут сами лог файлы
На данный момент мне приходится запускать свой скрипт для такого дела.

У newsyslog есть опция -a, которая создаёт папки и кладёт в нужную ротируемые файлы.
# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log

myyear=date -v-1d "+%Y"
mymonth=date -v-1d "+%m"
myday=date -v-1d "+%d"
mypath="/var/log/МОИ ЛОГИ"

0 * * * * root newsyslog -a "$mypath"/"$myyear"/"$mymonth"/"$myday"
Т.е. моя идея почти осуществима, но только проблема в том, что crontab не запускает команды, в моём случает это date
В итоге создаётся фигня типа: /var/log/МОИ ЛОГИ/date -v-1d "+%Y"/date -v-1d "+%m"/date -v-1d "+%d"

Пробовал закинуть в /etc/csh.cshrc, тоже самое ес-но.
Где блин почитать и вообще можно так сделать?
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

Аватара пользователя
zorg
лейтенант
Сообщения: 665
Зарегистрирован: 2006-03-01 22:25:36
Откуда: Санкт-Петербург

Непрочитанное сообщение zorg » 2006-11-27 13:42:47

Ты почитай формат крона, там если запуск команды с параметрами, кажется всё в кавычки нужно брать!??!? :?
Всё дело в перце!! :)

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2006-11-27 13:53:07

zorg писал(а):Ты почитай формат крона, там если запуск команды с параметрами, кажется всё в кавычки нужно брать!??!? :?
Я пробовал просто:
mydate=/bin/date
он строку понимает как /bin/date, т.е. не выполняет. :-(

Нужно /profile и т.п. копать
Нужно как-то создавать переменные MYDATE и т.п. при запуске SH.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2006-11-27 14:11:33

Код: Выделить всё

USER=root
HOME=/root
PS1='# '
OPTIND=1
PS2='> '
LOGNAME=root
PPID=17766
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
SHELL=/bin/sh
IFS='
'
Вот с такими переменными запускается newsyslog.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
zorg
лейтенант
Сообщения: 665
Зарегистрирован: 2006-03-01 22:25:36
Откуда: Санкт-Петербург

Непрочитанное сообщение zorg » 2006-11-27 14:24:36

саму команду date он отрабатывает прекрасно. просто ты забываешь создать эти каталоги, я думаю что newsyslog помещает логи в готовые папки но сам их не создаёт, создай сперва папку и думаю что увидишь, что туда лог переместиться!! :)
Всё дело в перце!! :)

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2006-11-27 15:04:01

Код: Выделить всё

# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log
MYPATH="/var/log/МОИ ЛОГИ"
MYDATE  = "/bin/date"
MYMONTH = "`/bin/date`"
MYYEAR  = '/bin/date'
А вот какие данные перед запуском newsyslog

Код: Выделить всё

USER=root
HOME=/root
MYDATE=/bin/date
PS1='# '
OPTIND=1
PS2='> '
LOGNAME=root
PPID=23764
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
MYPATH=/var/log/МОИ ЛОГИ
MYYEAR=/bin/date
SHELL=/bin/sh
IFS='
'
MYMONTH='`/bin/date`'
Решу эту проблему через запуск newsyslog через свой файл :-)

P.S. Директории он создаёт.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Непрочитанное сообщение dikens3 » 2006-11-27 15:13:01

Вот так сделал:

Код: Выделить всё

В crontab заменил на строку:
0       *       *       *       *       root    /root/scripts/newsyslog/mynewsyslog.sh 1>/dev/null 2>/dev/null

Код: Выделить всё

#!/bin/sh

myyear=`date -v-1d "+%Y"`
mymonth=`date -v-1d "+%m"`
myday=`date -v-1d "+%d"`
mypath="/var/log/dik"

/usr/sbin/newsyslog -a "$mypath"/"$myyear"/"$mymonth"/"$myday"
И всё работает.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.

Аватара пользователя
freeman
лейтенант
Сообщения: 734
Зарегистрирован: 2007-03-18 5:13:25

Re: Newsyslog

Непрочитанное сообщение freeman » 2008-10-21 13:19:23

dikens3 писал(а):Как выполнить команду date перед запуском newsyslog?

Поясню на примере:
Есть у меня заветная мечта чтобы логи складывались таким образом:
/var/log/МОИ ЛОГИ/ГОД/МЕСЯЦ/ДЕНЬ/**** Тут сами лог файлы
На данный момент мне приходится запускать свой скрипт для такого дела.

У newsyslog есть опция -a, которая создаёт папки и кладёт в нужную ротируемые файлы.
# /etc/crontab - root's crontab for FreeBSD
#
# $FreeBSD: src/etc/crontab,v 1.32 2002/11/22 16:13:39 tom Exp $
#
SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
HOME=/var/log

myyear=
mymonth=date -v-1d "+%m"
myday=date -v-1d "+%d"
mypath="/var/log/МОИ ЛОГИ"

0 * * * * root newsyslog -a "$mypath"/"$myyear"/"$mymonth"/"$myday"
Т.е. моя идея почти осуществима, но только проблема в том, что crontab не запускает команды, в моём случает это date
В итоге создаётся фигня типа: /var/log/МОИ ЛОГИ/date -v-1d "+%Y"/date -v-1d "+%m"/date -v-1d "+%d"

Пробовал закинуть в /etc/csh.cshrc, тоже самое ес-но.
Где блин почитать и вообще можно так сделать?
Случайно нашёл в поиске тут эту тему и вспомил что у меня подобное используется вот так примерно

Код: Выделить всё

0       *       *       *       *       root    newsyslog -a ххххх/'date -v-1d +\%Y'/хххх/хххх
Остатся должен только один ...

Аватара пользователя
dikens3
подполковник
Сообщения: 4856
Зарегистрирован: 2006-09-06 16:24:08
Откуда: Нижний Новгород
Контактная информация:

Re: Newsyslog

Непрочитанное сообщение dikens3 » 2008-10-21 16:01:54

Спасибо, попробую.
Лучше установить FreeBSD, чем потратить 30 лет на Linux'ы и выяснить какой из них хуже.