сохранение вывода другой команды

Archwiki спасает положение! Инициализация сессии на tmux странице дает пример.

Тем не менее вместо того, чтобы запустить tmux как tmux, tmux new -s name назовет сессию, когда она запустится вместо того, чтобы дать ему число.

Инициализация сессии


У Вас может быть tmux, открытый сессия с предварительно загруженными окнами включением тех деталей в Вашем ~/.tmux.conf:

new  -n WindowName Command
neww -n WindowName Command
neww -n WindowName Command

Для запуска сессии с окнами с несколькими панелями (несколько областей) включайте команду splitw ниже neww, который требуется разделить; таким образом:

new  -s SessionName -n WindowName Command
neww -n foo/bar foo
splitw -v -p 50 -t 0 bar
selectw -t 1 
selectp -t 0

открыл бы 2 окна, второе из которых назовут нечто/панелью и разделили бы вертикально в половине (50%) с нечто, работающим выше панели. Фокус был бы в окне 2 (нечто/панель), верхняя область (нечто).

Примечание: Нумеруя для сессий, окна и области запускаются в нуле, если Вы не указали базисный индекс 1 в Вашем .conf

Для управления несколькими сессиями источник разделяет файлы сессии из conf файла:

# initialize sessions
bind F source-file ~/.tmux/foo
bind B source-file ~/.tmux/bar

5
18.11.2013, 23:43
4 ответа

Необходимо добавить stdbuf(1) в Ваш конвейер:

tail -f general.log | stdbuf -oL grep Some_word | tee -a todel.txt

Это установит grepпотоковый режим буферизации stdout для строки, иначе grep ожидает для получения по крайней мере 4 096 байтов от потока (это - значение по умолчанию на Linux для буферизированного i/o).

С другой стороны, можно также звонить grep с --line-buffered:

tail -f general.log | grep --line-buffered Some_word | tee -a todel.txt

Посмотрите Выключают буферизацию в канале и http://www.pixelbeat.org/programming/stdio_buffering/ для подробно объяснений.

8
27.01.2020, 20:36

Третий должен хорошо работать, предполагая, что у Вас есть доступ для записи файлов в текущем каталоге.

Например: tail -f general.log | grep "Some_word" | tee todel.txt

Это правильно определяется синтаксис мишени. Если это не работает, Вы делаете что-то еще неправильно.

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

1
27.01.2020, 20:36
  • 1
    , я думаю, что Вы имеете в виду мишень вместо хвоста в Вашем примере командной строки. –  dmourati 18.11.2013, 08:23
  • 2
    Конечно же.Спасибо. Что я получаю для многозадачности. –  Magellan 18.11.2013, 08:42
  • 3
    Используя tail -f ... |grep позволяет тот grep поступление новых строк (-f опция к tail). AFAIK grep не имеет такой опции. –  zhenech 18.11.2013, 09:34
  • 4
    Вы правы. Не обращал внимание. –  Magellan 18.11.2013, 18:33
  • 5
    Рассмотрите текстовый файл только с несколькими символами в нем. Если Вы работаете tail -f... и передайте его по каналу в grep | tee оборудование, Вы закончили бы в точно сценарии вопроса: grep ожидал бы более входа прежде, чем обработать его, в то время как tee не получает ничего вообще. Конечно, если general.log является достаточно большим, стандартный подход, не изменяя режим буфера вывода к с буфером строки работал бы, но только если Вы это больше, чем размер буфера. И затем необходимо было бы ожидать заполнения grepбуферизуйте снова. Посмотрите unix.stackexchange.com/a/102505/50954 –  tkrennwa 25.11.2013, 14:50
grep "my words" > mytextfile.txt
tail -f access.log > last_log.txt
tail -f access.log | grep "IP address" > hacker.log
0
27.01.2020, 20:36

Это возможно строки, которые Вы ищете, отправляются в stderr вместо stdout, в этом случае заканчивая строку с 2>&1 должен решить проблему:

tail -f general.log | grep Some_word | tee -a todel.txt 2>&1
0
27.01.2020, 20:36
  • 1
    Почему был бы tail отправить вывод в стандартную погрешность? –  peterph 26.11.2013, 01:12
  • 2
    О, положительная сторона. Я предполагаю 2>&1 просто мой рефлексивный ответ на этот тип вопроса. –  Matthew Cline 26.11.2013, 02:38
  • 3
    Вы могли бы хотеть обновить свой ответ затем. Плюс Ваш 2>&1 на самом деле относится к tee в этом случае. –  peterph 28.11.2013, 11:56

Теги

Похожие вопросы