Я могу использовать 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.