Там какие-либо альтернативы к pidof? (меньшее место)

[1186278] Вы можете использовать [1186715] сортировку [1186716] для реорганизации вывода [1186717]netstat[1186718] в любом удобном для вас формате.

System Preference for Screen Capture Keyboard Shortcuts

Это позволит отсортировать вывод, используя сначала 7-й столбец (имя процесса/ПИД), а затем состояние (ESTABLISHED, LISTEN и т.д.).

ПРИМЕЧАНИЕ:[1186720] Первая часть команды, [1186721]netstat -anpt 2>&1 | tail -n +5 ...[1186722] направит всю выходную мощность, которая может произойти на STDOUT, также на STDIN, а затем отрежет первые 5 строк, которые являются выходной мощностью котла из [1186723]netstat[1186724], в которых мы не заинтересованы.

Пример

Вы можете использовать аналогичный подход для получения подсчетов, используя различные инструменты, такие как [1186725]wc[1186726] или [1186727]uniq -c[1186728].

Изменение вывода

  • Если вы действительно хотите получить вывод [1186729] netstat [1186730], выглядящий следующим образом:
  • Вы можете сделать некоторые дополнительные нарезки и нарезание кубиков с помощью [1186731] awk[1186732] и [1186733] sed[1186734]. Это можно сделать более компактным, но следует начать и выполнить работу.
  • ПРИМЕЧАНИЕ:

столбец -t[1186738] просто выравнивает все выходные данные в красивых столбцах.

Подсчет соединений

Наконец, чтобы сделать то, что вы хотите с точки зрения подсчета вхождений:

Первый столбец представляет подсчет.[1186301]

2
23.10.2014, 00:58
3 ответа

Я согласен, что странно, что pidof вырос до 30%. Но если это всего лишь временный всплеск, разве это будет так плохо?

В качестве альтернативы вы можете использовать ps (1) . Пример:

$ ps ax | grep firefox
8621 ??  S       5:20.24 firefox
10409 p3  R+      0:00.00 grep firefox
0
27.01.2020, 22:22

Вот несколько примеров для поиска pids процессов с именем "apache2". Есть небольшие различия (новые строки в выводе) между ними и pidof, но в остальном они должны работать одинаково, в конвейерах и т.д.

Используя pidof:

$ pidof apache2
31751 31750 31749 31748 31747 31489 31488 31487 31486 31485 1500

Newline-separated:

$ ps aux | grep apache2 | grep -v grep | awk -n '{print $2}'
1500 
31485 
31486 
31487 
31488 
31489 
31747 
31748 
31749 
31750 
31751 

Space-separated:

$ ps aux | grep apache2 | grep -v grep | awk -n '{printf $2" "}'
1500 31485 31486 31487 31488 31489 31747 31748 31749 31750 31751 

Я сделал несколько глупых таймингов для вышеуказанных команд.

$ date +%T:%N; pidof apache2 ;  date +%T:%N
17:06:05:627088798
31751 31750 31749 31748 31747 31489 31488 31487 31486 31485 1500
17:06:05:634500908

$ date +%T:%N; ps aux | grep apache2 | grep -v grep | awk -n '{printf $2" "}' ;  date +%T:%N
17:06:29:887314682
1500 31485 31486 31487 31488 31489 31747 31748 31749 31750 31751
17:06:29:903997288

pidof: 7,412,110 наносекунд

ps | grep | awk : 16,682,606 наносекунд

На моей машине pidof загружается быстрее (как и ожидалось).

Вывод pidof кажется отсортированным в обратном порядке, так что это было бы моей предпочтительной альтернативной инкантацией:

$ ps aux | grep apache2 | grep -v grep | awk -n '{print $2}' | sort -rn
31751
31750
31749
31748
31747
31489
31488
31487
31486
31485
1500
1
27.01.2020, 22:22

Существует набор команд для управления процессами (pgrep, pkill и т. д. ); так что лучший вариант это (для macOSX):

$ ps -ef | pgrep login
102
103
6245
6361

... или, в обратном порядке:

$ ps -ef | pgrep login | sort -rn
6361
6245
103
102

...или, последний:

$ ps -ef | pgrep login | sort -rn | head -n 1
6361
0
27.01.2020, 22:22

Теги

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