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

Простые/общие вопросы по UNIX системам. Спросите здесь, если вы новичок

Модераторы: vadim64, terminus

Правила форума
Убедительная просьба юзать теги [cоde] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Bakir
проходил мимо

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

Непрочитанное сообщение Bakir » 2010-12-26 5:01:40

Есть 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-а. Вот здесь я просто даже не представляю что можно сделать.
Посоветуйте плиз
Последний раз редактировалось f_andrey 2010-12-26 5:06:06, всего редактировалось 2 раза.
Причина: Автору, выбирайте пожалуйста раздел соответствуюший тематике вашего сообщения, и оформляйте его по человечески.

Хостинговая компания 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/

Гость
проходил мимо

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 &"
Последний раз редактировалось Alex Keda 2010-12-26 18:06:16, всего редактировалось 1 раз.
Причина: Товарищщи, цените чужое время, юзайте кнопочку [code]...

Гость
проходил мимо

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 вашу программу
поидеи время должно добавится в начале

Bakir
проходил мимо

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

Непрочитанное сообщение Bakir » 2010-12-29 0:01:03

пришлось поразбираться с 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 те же самые.
Все работает, спасибо!

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

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

Непрочитанное сообщение vadim64 » 2010-12-30 12:35:43

блин. очень полезно)))) спасибо что так описали это здесь. серьёзно. без стёба.
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

FiL
ст. лейтенант
Сообщения: 1374
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2011-01-05 10:29:08

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

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

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

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

Аватара пользователя
unix-admin
ст. сержант
Сообщения: 324
Зарегистрирован: 2010-11-26 12:43:04
Откуда: Cornucopia

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

Непрочитанное сообщение unix-admin » 2011-01-05 10:59:20

"strftime is a GNU gawk extension."
А форум по FreeBSD.
man gawk на тему strftime

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

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

Непрочитанное сообщение vadim64 » 2011-01-05 13:59:56

да мне пойдёт, я не для скриптов, а для своих гавнодемонов убогих)))
Люди не делятся на национальности, партии, фракции и религии. Люди делятся на умных и дураков, а вот дураки делятся на национальности, партии, фракции и религии.

FiL
ст. лейтенант
Сообщения: 1374
Зарегистрирован: 2010-02-05 0:21:40

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

Непрочитанное сообщение FiL » 2011-01-05 19:21:35

unix-admin писал(а):
"strftime is a GNU gawk extension."
А форум по FreeBSD.
man gawk на тему strftime
уговорил :)

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

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

Непрочитанное сообщение BlackCat » 2011-01-09 23:47:38

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

Аватара пользователя
vadim64
майор
Сообщения: 2101
Зарегистрирован: 2009-09-17 15:15:26
Откуда: Засратовец

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

Непрочитанное сообщение vadim64 » 2011-01-11 8:23:23

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