Можно установить переменную LC_ALL на английскую локаль. Вот пример:
export LC_ALL=en_US.UTF-8
Локаль должна присутствовать на машине. Если это не, Вы можете нейтрализация к POSIX C локаль:
export LC_ALL=C
Спецификация POSIX описывает, как переменные локали должны работать.
Насколько я знаю, , cmd1 | кладут для первого удара verylong.txt |, cmd2
не будет содержать целый файл в памяти. На самом деле, если бы cmd2
должен был ожидать слишком долго прежде, чем использовать его вход, , то cmd1
мог бы заблокироваться на запись
вызов и разблокировать только, когда cmd2
начинает читать снова.
причина этого состоит в том, что существует буфер для канала, и что буфер, по умолчанию, ограничен определенным разумным размером .
, Конечно, история могла бы отличаться, если cmd2
вид
(или что-то одинаково), где весь вход должен быть считан, прежде чем команда может записать свой вывод. В этом случае все содержание файла могло бы быть сохранено в память cmd2
, но это независимо от того, использовались ли канал или посреднический файл для входа той команды.
существует умный прием с мишенью и подоболочками:
cat source.lst | tee >(doSomething.sh) >(somethingElse.sh) | somethingFinal.sh
я сделал это прежде
pv -perl source.list | tee >(doSomething.sh) >(somethingElse.sh) | md5sum
, объем плазмы
даст вам индикатор выполнения, ETA и рабочее общее количество строки. Затем source.lst будет питаться на doSomething.sh и somethingElse.sh (и на различных центральных процессорах!) Наконец мы получим md5sum этого hugefile, только в академических целях.
Что не так с простым двухстрочным пакетным файлом? Например:
Cmd1 >filespec
Cmd2 <filespec
или
cmd1 >filespec
cmd2 filespec
в любом случае, файл остается в массовом хранилище.
Странный выстрел в темноте, но убедитесь, что IP-адрес не изменился. У меня была эта проблема один раз - я установил .bashrc
псевдоним sshdev = 'ssh me @ 123,2,3 .4'
в качестве моего типичного способа входа в систему, и однажды я начал получать следующую ошибку:
ME-M-216C:~ me$ sshdev
ssh: connect to host 123.2.3.4 port 22: Connection refused
У нас просто было отключение питания на работе, которое сбрасывало IP, поэтому я успешно связывался с IP, но это не было Вы можете использовать nslookup < IP >
, чтобы убедиться, что это правильное имя компьютера, в котором вы пытаетесь ssh
.
Подключение к машине в качестве пользователя root является крайне обескураженной практикой, поскольку она скрывает, кто на самом деле подключается.
Например:
Если вы посмотрите на файлы журнала ssh, то увидите подключения только от одного пользователя, что очень затрудняет поиск вредоносных подключений.
Вы теряете возможность задавать/отвечать на вопросы, такие как "Почему Боб подключился к серверу в 3:30 утром? "
Если это тестовая машина, или вы готовы принять эти риски, то раскомментируйте следующую строку в /etc/ssh/sshd _ config
PermitRootLogin yes
Затем перезапустите ssh daemon
service sshd restart
Немного менее рискованная альтернатива была бы настройка ssh keypairs (поэтому вам не нужно вводить пароль при каждом подключении). А также настройте пользователя так, чтобы он не запрашивал пароль root каждый раз, когда вы судо.
-121--125757- Уже заданный ответ верен. Но если вы хотите выборочно прочитать verylongfile.txt
w/ cmd2
, sed
может быть другим вариантом.
cmd1 | sed -e 'w verylongfile.txt' -e '/notinteresting/d' | cmd2
sed
будет w
перечислять все свои входные данные в файл комплекта, но только те биты, которые не соответствуют адресу /notintresting/
канала. Или можно отменить действие с помощью команды /интересный/! d
, которая будет записывать в канал только строки, соответствующие интересному
адресу.
Если это не ваша цель, используйте tee
вместо этого, хотя - это более эффективный инструмент для написания всего своего ввода как в снаряжение, так и в трубу.