The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"sh, перенапрвление в два файла"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Открытые системы на сервере (Разное)
Изначальное сообщение [ Отслеживать ]

"sh, перенапрвление в два файла"  +/
Сообщение от Аноним (??) on 29-Мрт-12, 14:11 
Нужно сделать такое:
mycommand >>log1 2>>log1 2>>log2
т.е. один файл должен содержать и stdout и stderr, второй только stderr. Для решения в голову лезут только именованные каналы:

mkfifo mypipe1
mkfifo mypipe2
cat mypipe1|tee -a log1 >/dev/null &
cat mypipe2|tee -a log1 log2 >/dev/null &
mycommand >mypipe1 2>mypipe2
rm mypipe1
rm mypipe2

или, короче:
mkfifo mypipe2
cat mypipe2|tee -a log1 log2 >/dev/null &
mycommand >>log1 2>mypipe2
rm mypipe2

но как-то это все громоздко и не очень красиво, плюс вывод из stdout и stderr в log1 пишется не всегда последовательно...

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "sh, перенапрвление в два файла"  +/
Сообщение от Andrey Mitrofanov on 29-Мрт-12, 14:22 
> Нужно сделать такое:
> mycommand >>log1 2>>log1 2>>log2
> т.е. один файл должен содержать и stdout и stderr, второй только stderr.

( ... |tee -a log1 ) >& log2

Совсем не то, но около, наверное. ABS Guide в помощь также.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "sh, перенапрвление в два файла"  +/
Сообщение от Аноним (??) on 29-Мрт-12, 15:15 
>> Нужно сделать такое:
>> mycommand >>log1 2>>log1 2>>log2
>> т.е. один файл должен содержать и stdout и stderr, второй только stderr.
> ( ... |tee -a log1 ) >& log2
> Совсем не то, но около, наверное. ABS Guide в помощь также.

придумалась вот это:
(mycommand|tee -a log1 >/dev/null) 2>&1|tee -a log1 log2 >/dev/null
запись так же асинхронная, но хоть лишних файлов не создается на диске

Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "sh, перенапрвление в два файла"  +/
Сообщение от Аноним (??) on 29-Мрт-12, 15:20 
>>> Нужно сделать такое:
>>> mycommand >>log1 2>>log1 2>>log2
>>> т.е. один файл должен содержать и stdout и stderr, второй только stderr.
>> ( ... |tee -a log1 ) >& log2
>> Совсем не то, но около, наверное. ABS Guide в помощь также.
> придумалась вот это:
> (mycommand|tee -a log1 >/dev/null) 2>&1|tee -a log1 log2 >/dev/null
> запись так же асинхронная, но хоть лишних файлов не создается на диске

хотя у:
mycommand >>log1 2>>log1
mycommand >>log1 2>&1
тоже асинхронная запись в файл, ни когда об этом не задумывался, интересно...

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "sh, перенапрвление в два файла"  +/
Сообщение от Andrey Mitrofanov on 29-Мрт-12, 16:30 
> mycommand >>log1 2>>log1
> mycommand >>log1 2>&1
> тоже асинхронная запись в файл, ни когда об этом не задумывался, интересно...

Ну, в _самой _программе резные-отдельные буферы на вывод в stdout/stderr...

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру