Попробуйте это: http://j3pd.wordpress.com/2011/08/31/upgrading-openssl/
Это говорит Вам, как проверить Вашу текущую версию, загрузите новейший, скомпилируйте его и установите его по старому
Я собираюсь обойти Вас через несколько сложный пример, на основе реального сценария.
Проблема
Скажем, команда conky
остановленный ответ на моем рабочем столе, и я хочу уничтожить его вручную. Я знаю определенный Unix, таким образом, я знаю, что то, что я должен сделать, выполняют команду kill <PID>
. Для получения PID я могу использовать ps
или top
или безотносительно оснащают мое распределение Unix, дал мне. Но как я могу сделать это в одной команде?
Ответ
$ ps aux | grep conky | grep -v grep | awk '{print $2}' | xargs kill
Отказ от ответственности: Эта команда только работает в определенных случаях. Не делайте скопировать/вставить этого в своем терминале и начинайте использовать его, это могло уничтожить процессы unsuspectingly. Скорее изучите, как создать его.
Как это работает
1- ps aux
Эта команда произведет список выполнения процессов и некоторой информации о них. Интересная информация - то, что это произведет PID каждого процесса в его 2-м столбце. Вот извлечение из вывода команды на моем поле:
$ ps aux
rahmu 1925 0.0 0.1 129328 6112 ? S 11:55 0:06 tint2
rahmu 1931 0.0 0.3 154992 12108 ? S 11:55 0:00 volumeicon
rahmu 1933 0.1 0.2 134716 9460 ? S 11:55 0:24 parcellite
rahmu 1940 0.0 0.0 30416 3008 ? S 11:55 0:10 xcompmgr -cC -t-5 -l-5 -r4.2 -o.55 -D6
rahmu 1941 0.0 0.2 160336 8928 ? Ss 11:55 0:00 xfce4-power-manager
rahmu 1943 0.0 0.0 32792 1964 ? S 11:55 0:00 /usr/lib/xfconf/xfconfd
rahmu 1945 0.0 0.0 17584 1292 ? S 11:55 0:00 /usr/lib/gamin/gam_server
rahmu 1946 0.0 0.5 203016 19552 ? S 11:55 0:00 python /usr/bin/system-config-printer-applet
rahmu 1947 0.0 0.3 171840 12872 ? S 11:55 0:00 nm-applet --sm-disable
rahmu 1948 0.2 0.0 276000 3564 ? Sl 11:55 0:38 conky -q
2- grep conky
Я только интересуюсь одним процессом, таким образом, я использую grep
найти запись, соответствующую моей программе conky
.
$ ps aux | grep conky
rahmu 1948 0.2 0.0 276000 3564 ? Sl 11:55 0:39 conky -q
rahmu 3233 0.0 0.0 7592 840 pts/1 S+ 16:55 0:00 grep conky
3- grep -v grep
Поскольку Вы видите на шаге 2, команде ps
производит grep conky
процесс в его списке (это - рабочий процесс, в конце концов). Для фильтрации его я могу работать grep -v grep
. Опция -v
говорит grep
соответствовать всем строкам, исключая тех содержащих шаблон.
$ ps aux | grep conky | grep -v grep
rahmu 1948 0.2 0.0 276000 3564 ? Sl 11:55 0:39 conky -q
NB: я хотел бы знать способ сделать шаги 2 и 3 на сингле grep
звонить.
4- awk '{print $2}'
Теперь, когда я изолировал свой целевой процесс. Я хочу получить его PID. Другими словами, я хочу получить 2-е слово вывода. Удачный для меня, большинство (все?) современные нельды обеспечат некоторую версию awk
, язык сценариев, который делает чудеса с табличными данными. Наша задача становится столь же легкой как print $2
.
$ ps aux | grep conky | grep -v grep | awk '{print $2}'
1948
5- xargs kill
У меня есть PID. Все, в чем я нуждаюсь, должно передать его kill
. Чтобы сделать это, я буду использовать xargs
.
xargs kill
будет читать из входа (в нашем случае от канала), формировать команду, состоящую из kill <items>
(<items>
то, что это считало из входа), и затем выполните созданную команду. В нашем случае это выполнится kill 1948
. Миссия выполняется.
Заключительные слова
Обратите внимание, что в зависимости от того, какую версию Unix Вы используете, определенные программы могут вести себя немного по-другому (например, ps
мог бы произвести PID в столбце 3$). Если что-то кажется неправильным или отличающимся, прочитайте документацию своего поставщика (или лучше, man
страницы). Также будьте осторожны, поскольку длинные каналы могут быть опасными. Не делайте предположения особенно при использовании команд как kill
или rm
. Например, если был другой пользователь, названный 'носатым' (или 'Aconkyous'), моя команда может уничтожить все его рабочие процессы также!
То, что я говорю, быть осторожным, специально для длинных каналов. Всегда лучше создать его в интерактивном режиме, как мы сделали здесь, чем делают предположения и чувствуют себя виноватым позже.
Мой фаворит - этот:
youtube-dl $1 -q -o - | ffmpeg -i - $2
загружает видео с данного URL YouTube, мимо которого проходят $1
и выводы это как файл, данный $2
. Отметьте, как файл бесшумно -q
вывод к STDOUT -o -
, переданный по каналу к ffmpeg и используемый в качестве входа там -i -
.
Специально для новичков Linux это могло бы быть практическим примером, почему командная строка может быть полезной и сделать вещи легче, чем использование инструментов GUI. Я не уверен, сколько времени это взяло бы, чтобы загрузить видео с YouTube и преобразовать его звук в mp3. Вышеупомянутая строка может сделать это через несколько секунд.
youtube-dl --extract-audio --audio-format mp3 -a -
. Все еще прохладный пример, но существуют более легкие способы сделать это. (Это называет ffmpeg внутренне.)
– Brigand
04.02.2012, 04:07
youtube-dl $1 -q -o - | mplayer -
непосредственно играет видео внутри mplayer. Я использую ту команду от своего ноутбука для сообщения моего сервера (который подключен к ТВ) играть видео. Я должен добавить -display :0.0 -geometry 400x300+1200+200
позволять mplayer окну появиться на корректном экране.
– Baarn
04.02.2012, 13:06
Общее использование (чтение: путем я использую его большинство времен), когда по некоторым причинам я должен выполнить некоторые данные через несколько инструментов для продолжения различных задач обработки.
Таким образом, я сказал бы, что использование каналов как связующее звено для сборки нескольких стандартных блоков (различные инструменты UNIX) вместе. Как сказанный Ulrich, sort
и uniq
общая строка файла конфигурации.
В зависимости от аудитории, если Вы хотите выделить это использование каналов, Вы могли бы, например, запустить с: "эй, эта программа имеет ссылки на несколько интересных PDFs с бумагами и примечаниями лекции, но некоторые из них повторяются. я могу так или иначе автоматизировать это?"
Затем Вы могли показать как lynx --dump --listonly
получает список ссылок, как grep
мог отфильтровать для ссылок, заканчивающихся в .pdf
, как colrm
или sed
мог избавиться от чисел lynx
записи оставлены каждому URL, как sort
и uniq
мог избавиться от дубликатов, и наконец как wget -i -
может использоваться для получения файлов (использование --wait
быть нежным на сервере, конечно).
Я боюсь, что это - сложный пример. С другой стороны, может помочь показу питания каналов, когда Вы просто передаете его по каналу и выполняли оболочку все это сразу.
Я точно не знаю о хорошем, но передающий по каналу через grep
должен быть один из наиболее популярных способов использования, возможно сопровождаемых wc -l
. (Да, grep
имеет малоизвестное -c
переключатель.)
Другая общая строка файла конфигурации | sort | uniq
, если только потому, что uniq
требует, чтобы его вход был отсортирован.
... | sort -u
при наличии!
–
26.11.2013, 17:07
Это - первая вещь, которая пришла на ум для меня...
mysqldump
консольное приложение, которое отправляет данные, схему и дополнительно процедуры и функции к stdout. Обычно это перенаправляется в файл для резервного копирования.
mysqldump <options> > mydb.dump
Это дало бы Вам несжатый sql сценарий. Для оставления свободного места Вы могли сжать его с bzip2.
bzip2 mydb.dump
С другой стороны, Вы могли сделать обоих за один шаг:
mysqldump <options> | bzip2 > mydb.dump.bz2
В этом примере выше, stdout от mysqldump
передается по каналу к bzip2, которому затем перенаправили его вывод в файл.
bzcat mydb.dump.bz2 | mysql <options>
.
– manatwork
04.02.2012, 16:41
Вот пример, который я использую в своем задании нескольких каналов в одной команде. Это использует простофилю, чтобы искать журнал общего запроса MySQL ($OFILE) и найти любые отклоненные логины. Это затем виды, которые перечисляют по имени, каналы, которые перечисляют к uniq, который считает случаи и затем передает его по каналу, сортирует в один прошлый раз для сортировки считаемого списка численно...
gawk '{ for (x=1;x<=NF;x++) if ( $x~"Access" && $(x+4)~".*@.*") print $(x+4)}' $OFILE | sort | uniq -c | sort -n
cat filename | less
ужасное использование передачи по каналу, так как можно просто сделать less filename
Вот пример зернышек, что я использую каждый день (но может также быть плохой пример): ls -la | more -c
scott hoffman и ответы njsg являются лучшими примерами.
Вот пример, который я использовал для установки переменной ДИСПЛЕЯ, когда xauth не был опцией...
export DISPLAY=\`who am i |awk '{print $NF}' | sed 's/[()]//g'`":0.0"
Для первой команды были нужны данные, т.е., имя хоста или IP. Вторая команда добирается просто, что данные (длятся поле). Наконец, последняя команда разделяет круглую скобку от данных.
Не то, чтобы Вам нужен он для этого примера, но:
$ ps aux | grep -v grep | grep conky
... инвертирование порядка властей сохраняет колоризацию, но НАМНОГО менее эффективно. по-видимому, в больших списках, цвет не имел бы значения.
также, эта веб-страница предлагает:
https://stackoverflow.com/questions/9375711/more-elegant-ps-aux-grep-v-grep
>Johnsyweb answered Feb 21 '12 at 10:31 >The usual trick is this: >ps aux | grep '[t]erminal' >This will match lines containing terminal, which grep '[t]erminal' does not! >It also works on many flavours of Unix.
... но это не будет работать при поиске одной буквы (как процесс 'X').
Как насчет: поиск шаблона и дисплей последний происходящий шаблон?
Шоу, как использовать tail
, sed
и grep
в контексте канала, который может быть создан шаг за шагом.
Наконец-то я могу поделиться этой беспорядочной подводкой, которую я сделал полтора года назад...
while read in; do host "$in"; done < sites.txt | grep -iv "GOOGLE" | grep -E '1\.2\.3\.4|5\.6\.7\.8' | sed -e 's/has\ address\ 216.70.91.72//' | sed -e 's/has\ address\ 94.23.33.92//' | while read sites; do curl -sL -w "%{http_code} %{url_effective}\\n" "$sites" -o /dev/null; done | grep -ivE '4.*|5.*' | sed -e 's/200//' | sed -e 's/HTTP/http/'
Она...
Это можно было бы сделать намного лучше с помощью одного скрипта Python, я уверен.
Каналы лучше всего работают с фильтрами и трансляторами
find /usr/bin/ | #produce
sed 's:.*/::' | #translate: strip directory part
grep -i '^z' | #filter : select items starting with z
xargs -d '\n' aFinalConsumer #consume
Таким образом, данные могут передаваться от одной программы к следующей в буфере, и ни в коем случае не все данные должны память сразу.
Конвейер команд, который вы можете использовать везде, где вам кажется, что вывод первой команды может быть использован в качестве ввода для следующей.
Примеры.
cat example txt | grep {some_line} | awk {some_command}
Идея заключается в том, что если вы чувствуете, что результат выполненной вами команды может быть вводом другой команды, вы можете передать их по конвейеру.
выполните этот в любой директории, которую вы хотите, чтобы сортировка анализировалась по размеру папки (затем прокрутите вниз с помощью клавиши END):
du -m| sort -n| less
Sortiert nach Ordnergrösse
kill $(pgrep conky)
– Patrick 10.02.2012, 12:14pkill conky
– strugee 28.08.2013, 07:48grep
звонить.grep [c]onky
то, что Вы ищете. – AlexT 16.03.2016, 11:26