Страница 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 :
Re: Как в вывод записать результат двух команд
Добавлено: 2010-12-29 2:40:34
Бакир
пришлось поразбираться с syslog, в конце концов получилось. СПАСИБО
Кстати, просто дописал строчку в syslogd.conf :
Код: Выделить всё • Развернуть
Вернее так не получилось...После долгого гугля, запускаю программу следующим образом:
Код: Выделить всё
/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). Что бы не создавать отдельный процесс.
спастбо, учтём-с, почитаем-с