Не уверенный, если бы это работало бы хорошо на Ваш файл 400 МБ, но здесь является некоторым CLI лайнеры, которые добились бы цели.
Если Вы ищете записи для определенной даты, grep -c
может, вероятно, сделать то, в чем Вы нуждаетесь.
Иначе Вы могли, вероятно, использовать sed
:
sed -n '/date1/,/date2/p' filename
Например, с входным файлом "тест":
Day 0: foo
Day 1: hello
Day 2: world
Day 3: blah
Вы могли работать
[me@mybox tmp]$ sed -n '/Day 1/,/Day 2/p' test
Day 1: hello
Day 2: world
Для проверки возможности соединения сервера у Вас есть 4 инструмента в Вашем распоряжении.
ping
Это проверит, чтобы видеть, пытаетесь ли какой-либо из серверов Вы соединиться через, но не сможете видеть, может ли middle-server-1 достигнуть сервера-b, например.
Можно пропустить, сколько времени ping попытается проверить с помощью ping-запросов другой сервер с помощью переключателя количества (-c
). Ограничение его к 1 должно быть достаточным.
$ ping -c 1 skinner
PING skinner (192.168.1.3) 56(84) bytes of data.
64 bytes from skinner (192.168.1.3): icmp_req=1 ttl=64 time=5.94 ms
--- skinner ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 5.946/5.946/5.946/0.000 ms
Можно проверить состояние этой команды с помощью этой переменной, $?
. Если это имеет значение 0 затем, это было успешно, что-либо еще и проблема произошли.
$ echo $?
0
traceroute
Другая команда, которую можно использовать для проверки возможности соединения, traceroute
.
$ traceroute skinner
traceroute to skinner (192.168.1.3), 30 hops max, 60 byte packets
1 skinner (192.168.1.3) 0.867 ms 0.859 ms 0.929 ms
Снова этот инструмент не покажет возможность соединения через один сервер другому (та же проблема как ping), но это покажет Вам путь через сеть что Ваше взятие для получения до другого сервера.
ssh
ssh
может использоваться в BatchMode
протестировать возможность соединения. С BatchMode=yes
Вы попытаетесь соединиться с другим сервером, обходя использование имени пользователя/паролей и только общественности/закрытых ключей. Это обычно ускоряет вещи вполне немного.
$ ssh -o "BatchMode=yes" skinner
Можно создать грубый один лайнер, который проверит на возможность соединения к серверу:
$ ssh -q -o "BatchMode=yes" skinner "echo 2>&1" && echo $host SSH_OK || echo $host SSH_NOK
SSH_OK
Если это будет работать, то Вы получите a SSH_OK
сообщение, если это перестало работать, Вы получите a SSH_NOK
сообщение.
Альтернатива этому методу должна также включать ConnectTimeout
опция. Это будет охранять ssh
клиент от занимания много времени. Что-то вроде этого обычно приемлемо, ConnectTimeout=5
. Например:
$ ssh -o BatchMode=yes -o ConnectTimeout=5 skinner echo ok 2>&1
ok
Если это перестанет работать, то это будет выглядеть примерно так:
$ ssh -o BatchMode=yes -o ConnectTimeout=5 mungr echo ok 2>&1
ssh: connect to host 192.168.1.2 port 22: No route to host
Это также установит статус возврата:
$ echo $?
255
telnet
Можно использовать этот тест, чтобы видеть если ssh
сервер доступен на другом сервере, использующем просто основное telnet
:
$ echo quit | telnet skinner 22 2>/dev/null | grep Connected
Connected to skinner.
nc
может "проверить с помощью ping-запросов" порт также
nc -z hostname 22
этим путем можно проверить с помощью ping-запросов порт 22 на машине, даже если машина настроена для не ответа на регулярный ping (ICMP)
С другой стороны, Вы могли попытаться сократить время SSH путем установки некоторых опций конфигурации, как ConnectTimeout=1
. UseDNS=no
также помогает с системами, которые не имеют обратного DNS настроенным правильно.
echo ^]quit | telnet skinner 22
Войти^]
в Bash нажмите Ctrl-V, Ctrl-]. – Leif Arne Storset 04.08.2016, 18:17