Страница 1 из 1

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

Добавлено: 2010-12-26 5:01:40
Bakir
Есть java приложение, которое я запускаю следующим образом:

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

/usr/local/jdk1.6.0/bin/java -jar /usr/local/test/test.jar &
После запуска, он начинает выводить в STDOUT свои выходные параметры.
Чтобы это писалось в фаил(в качестве лога), я делаю перенаправление:

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

/usr/local/jdk1.6.0/bin/java -jar /usr/local/test/test.jar >> /var/log/test.log  &
Все нормально. Фаил test.log представляет из себя нечто вроде:

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

INFO - Load preferences ok
INFO - Начинаю установку скриптов для basic
INFO - Устанавливаю скрипт: b3
INFO - Reading script: ./services/b3.bsh
INFO - Завершено: Ok
Свои выходные параметры он выводит без привязки ко времени и дате.
Теперь вопрос. Как привязать к логу время и дату, чтобы это выглядело примерно так:

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

Dec 26 05:48:49 INFO - Load preferences ok
Dec 26 05:48:50 INFO - Начинаю установку скриптов для basic
Dec 26 05:48:51 INFO - Устанавливаю скрипт: b3
Dec 26 05:48:52 INFO - Reading script: ./services/b3.bsh
Dec 26 05:48:53 INFO - Завершено: Ok
Не хотелось бы писать отдельную программу которая бы анализировала фаил test.log и в случае чего
добавляла значение времени и даты.
Хотелось бы видеть решение в виде конструкции shell-а. Вот здесь я просто даже не представляю что можно сделать.
Посоветуйте плиз

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-26 11:37:29
Гость

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

sh -c "/usr/local/jdk1.6.0/bin/java -jar /usr/local/test/test.jar >> /var/log/test.log  2>&1 &"

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-28 17:38:04
Гость
спасибо за ответ. но все осталось без изменений, логи пишутся также.
После копаний обнаружил что ключ "-с" в команде "sh" есть только в линухах.
Во фрибсд (судя по ману) такого ключа нет.

Что еще посоветуете?

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-28 17:46:43
Гость
После копаний обнаружил что ключ "-с" в команде "sh" есть только в линухах.
да вы что?!
вообще то я вам пример давал для freebsd

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-28 17:51:54
Гость
тьфу ты
я вашу тему не правильно понял

вообщем добавте в syslog вашу программу
поидеи время должно добавится в начале

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-29 0:01:03
Bakir
пришлось поразбираться с syslog, в конце концов получилось. СПАСИБО

Кстати, просто дописал строчку в syslogd.conf :

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

  
!java
*.*                                             /var/log/java.log

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-29 2:40:34
Бакир
пришлось поразбираться с syslog, в конце концов получилось. СПАСИБО

Кстати, просто дописал строчку в syslogd.conf :

Код: Выделить всё • Развернуть

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

  !java
    *.*                                             /var/log/java.log


Вернее так не получилось...После долгого гугля, запускаю программу следующим образом:

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

/usr/local/jdk1.6.0/bin/java -jar /usr/local/test.jar | logger -i -t java &
А строки в syslog.conf те же самые.
Все работает, спасибо!

Re: Как в вывод записать результат двух команд

Добавлено: 2010-12-30 12:35:43
vadim64
блин. очень полезно)))) спасибо что так описали это здесь. серьёзно. без стёба.

Re: Как в вывод записать результат двух команд

Добавлено: 2011-01-05 10:29:08
FiL
vadim64 писал(а):блин. очень полезно)))) спасибо что так описали это здесь. серьёзно. без стёба.
Полезно, но неудобно. Каждый раз конфигурить сислог... или получать результат где-то в /var/log/..., а не в том месте, где оно тебе нужно.
В общем неудобно.

Проще и удобнее так -

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

$ command |  awk "{print strftime(), \$0}" > logfile
Ну и понятно, что формат вывода даты и времени можно задавать как хочешь (man awk на тему strftime).

Re: Как в вывод записать результат двух команд

Добавлено: 2011-01-05 10:59:20
unix-admin
"strftime is a GNU gawk extension."
А форум по FreeBSD.
man gawk на тему strftime

Re: Как в вывод записать результат двух команд

Добавлено: 2011-01-05 13:59:56
vadim64
да мне пойдёт, я не для скриптов, а для своих гавнодемонов убогих)))

Re: Как в вывод записать результат двух команд

Добавлено: 2011-01-05 19:21:35
FiL
unix-admin писал(а):
"strftime is a GNU gawk extension."
А форум по FreeBSD.
man gawk на тему strftime
уговорил :)

Re: Как в вывод записать результат двух команд

Добавлено: 2011-01-09 23:47:38
BlackCat
vadim64 писал(а):да мне пойдёт, я не для скриптов, а для своих гавнодемонов убогих)))
Для своих "гавнодемонов убогих" удобно использовать библиотечную функцию syslog(3) или, с использованием своей функции-обёртки для логирования, удобно использовать связку syslog(3)/fprintf(3). Что бы не создавать отдельный процесс.

Re: Как в вывод записать результат двух команд

Добавлено: 2011-01-11 8:23:23
vadim64
BlackCat писал(а):
vadim64 писал(а):да мне пойдёт, я не для скриптов, а для своих гавнодемонов убогих)))
Для своих "гавнодемонов убогих" удобно использовать библиотечную функцию syslog(3) или, с использованием своей функции-обёртки для логирования, удобно использовать связку syslog(3)/fprintf(3). Что бы не создавать отдельный процесс.
спастбо, учтём-с, почитаем-с