2014-09-16 3 views
0

Как я могу перенаправить вывод на несколько целей, например, stdout, file, socket и т. Д.?Linux перенаправляет на несколько целей

скажем, у меня есть система и подключена к какой-либо сети. Когда он терпит неудачу, парень контролирует его через ssh, он должен его заметить, или клиент GUI должен получить информацию об ошибке, или, в худшем случае, мы все еще можем найти что-то в журнале.

или даже больше целей. Атоматичность может быть гарантирована или не обязательно.

так, как это сделать в bash и/или в C?

+0

команда 'tee' –

ответ

0

Вы можете перенаправить с tee на любое количество файлов и любых команд тоже, как:

seq 50 | tee copy1 copy2 >((echo Original linecount: $(grep -c ''))>&2) | grep '9' 

, что печатает:

9 
19 
29 
39 
49 
Original linecount: 50 #printed to stderr 

или

seq 50 | tee copy1 copy2 >((echo Original linecount: $(grep -c ''))>&2) | grep '9' | wc -l 

, что печатает количество чисел, содержащих цифру 9 в первых 50 числах, в то время как две копии оригинала последовательность ...

Original linecount: 50 #stderr 
     5 
1

Я думаю, что вы ищете команду «tee».

+0

даже несколько целей? Я хочу передать вывод в сокет и потенциально все, что может получить данные, названные или нет. – HuStmpHrrr

+0

Вы можете использовать тройники для нескольких выходов, например. [commandA] | tee [commandB] | tee [commandC] | ... | tee [commandD] | commandE – emsworth

+0

будет слишком сильно повреждать работу? это похоже на то, что я поддерживаю процессы forking. – HuStmpHrrr

Смежные вопросы