Нет, размер /dev
не 8 ГБ. Это максимальный размер. Размер, который он фактически использует в памяти, пропорционален используемому размеру; память выделяется по мере необходимости. В
Linux нет man-страниц для всех файловых систем, в этом случае вам следует обратиться к man-странице mount
. Но у tmpfs
есть man-страница, и в ней упоминается об этом.
Редактор потоков, sed, buffers, отключите с помощью «-u» или «--unbuffered».
tail -f some/log_file | sed -u 's/foo//g' | grep bar
Я бы попробовал ту же команду со следующим дополнением:
ssh someuser@somehost 2>&1 | sed -e "s/\[32//g" | tee --output-error=warn logging
После этого вы сможете увидеть, есть ли ошибка при записи в стандартный вывод. Дайте мне знать, если это поможет.
Вы можете установить expect, а затем попробовать:
unbuffer ssh someuser@somehost 2>&1 | sed -e "s/\[32//g" | tee logging
Когда вы запускаете ssh user@somehost
без явной команды, вы запрашиваете ssh для запуска интерактивной оболочки на удаленной машине.
Интерактивная оболочка (, такая как bash ), обычно хочет иметь доступный терминал , поскольку он будет использовать команды терминала для реализации улучшенного опыта при редактировании командной строки и просмотре истории. (Команды терминала обеспечивают полное -управление экраном.)
Но ssh будет выделять терминал по умолчанию (, также называемый псевдо--терминалом ), если его стандартный вывод подключен к терминалу.
Если вы просто запустите ssh user@somehost
из терминальной программы (, такой как gnome -terminal, rxvt, xterm и т. д. ), то ее стандартным выводом будет терминал, поэтому ssh создаст псевдо Терминал -и удаленная интерактивная оболочка будут вести себя нормально.
Если вы передаете ssh через что-то (что-нибудь ), например ssh user@somehost | cat
, то его стандартным выводом будет канал (, а не терминал ), поэтому ssh не создаст терминал и что может привести к неправильной работе удаленной интерактивной оболочки.
Возможное решение — заставить ssh создать псевдо-терминал -, передав ему параметр -t
, например ssh -t user@somehost | cat
, который может помочь. (Кроме того, вам может понадобиться двойная опция -tt
, чтобы принудительно выделить псевдо-терминал -.)
Другая возможность, если вы используете ssh главным образом потому, что вас интересует конкретная команда, — запустить конкретную команду из командной строки ssh, например ssh user@somehost mycommand | cat
. Если вы запускаете определенную команду, интерактивная оболочка не задействуется, и в этом случае доступный терминал, скорее всего, не вызовет никаких проблем.