Назад | Перейти на главную страницу

Как объединить lsof stat и ps, чтобы получить больше информации в одной команде bash

Я могу использовать lsof для получения статистики открытых файлов для процессов, как показано ниже:

$ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr | head -n 5
  17955 11945
  10282 2786
   5980 32152
   1920 27803
   1786 32107

Теперь я хочу расширить результат, как показано ниже, с помощью однострочной команды bash,

$ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr | head -n 5 ...
  17955 11945  java
  10282 2786   python
   5980 32152  ruby
   1920 27803  go
   1786 32107  rust

Как я могу этого добиться?

Если вы используете awk для вывода $ 1 (команда) и $ 2 (PID) в обратном порядке ($ 2, $ 1), это предоставляет большую часть нужной информации в удобном для использования формате. Первый sort и uniq -c все еще работает, как ожидалось, что оставляет вас с несортированным списком

<count> <PID> <command>

Теперь вам просто нужно изменить окончательный sort -rn ... сортировать только по <count> что тривиально.

Вероятно, вам также следует удалить начальную строку из вывода lsof.