В UNIX, как найти обычно используемые команды в истории Unix?

Это было некоторое время, так как я попробовал его, но DXPC (Дифференциальное Сжатие X-протокола) раньше делал X11 по коммутируемому доступу работой PPP заметно быстрее. Возможно, опция сжатия SSH будет работать лучше на Вас, но это сжатие характерно для X11 и просто могло бы работать быстрее.

8
11.10.2011, 10:49
6 ответов

Это скорее зависит от того, что Вы предназначаете 'командой'. С одной точки зрения команда является просто исполняемым файлом, названным из командной строки, поэтому ls и ls -alh /tmp/foo/bar/*tar.bz оба команда ls. Другая перспектива - то, что команда является суммой своих частей, означая, что вышеупомянутым примером являются 2 отличных команды.

Если Ваше намерение состоит в том, чтобы считать совершенно уникальные команды в истории, Вы могли бы выполниться: history | cut -d' ' -f4- | uniq -c | sort -n

Знайте, что это было протестировано в системе Debian, выходной синтаксис Вашей команды истории может варьироваться немного. Скорректируйте номер '4' в команде для выбора альтернативных столбцов.

Если Вы хотите рассмотреть только первую команду без аргументов, то Вы могли выполниться: history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n

Для включения аргументов, но не любых цепочечных или переданных по каналу команд, которые следуют, Вы могли выполниться: history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n

Обратите внимание на то, что каждый из этих видов количество команд численно с наибольшей частотой, появляющейся в последний раз.

11
27.01.2020, 20:08
  • 1
    я должен был добавить дополнительное sort прежде uniq для получения точного количества, так как это только проверяет смежные строки: history | cut -d' ' -f4- | cut -d' ' -f1 | sort | uniq -c | sort -n –  nocash 27.08.2014, 20:53

Другой подход должен был бы использовать учет процесса BSD, который также доступен на Linux (хотя я не знаю, включен ли он по умолчанию). Это в основном сохраняет вкладку всех программ, которые запущены (и некоторые другие меры, как процессорное время, использованное и т.д.) столько, сколько учет активен. Оттуда несколько совокупных статистических данных доступны среди других: своего рода список всех программ когда-либо работает на системе, отсортированной по и т.д. главному количеству использования.

Команды для поиска lastcomm для синхронного журнала и sa для агрегированной статистики. Возвращение к исходному вопросу, предположение, что рассматриваемая система имела бы учет, включили, так как это было установлено, затем sa -n дал бы список всех команд, когда-либо выполняемых в системе (для всех пользователей), отсортированный по частоте. Для конвейеров каждая часть конвейера, конечно, считалась бы отдельно, поскольку каждая часть включает новый процесс, который будет разветвлен.

Для получения дополнительной информации журнал Linux имеет статью, объясняя работы. Я сам получил идею от руководства NetBSD; многие более универсальные рекомендации по администрированию там не характерны для NetBSD, но относятся к другим системам Unix также.

4
27.01.2020, 20:08

Я видел оба ответа vucar и tok, они очень полезны, но вы могли бы использовать удивительный инструмент awk тоже:

, если вы хотите перечислить команды, которые вы используете чаще всего:

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head

для поиска наиболее часто используемой команды:

history | awk '{a[$2]++}END{for(i in a){print a[i] " " i}}' | sort -rn | head -1 

для меня это было vi:

94 vi
4
27.01.2020, 20:08

Можно использовать одну команду разреза:

history | cut -c 7-100  | sort  | uniq -c | sort -nr
1
27.01.2020, 20:08

20 наиболее часто используемых команд интерфейса командной строки:

history |  cut -c7- | sort  | uniq -c | sort -nr | head -n 20
2
27.01.2020, 20:08

Если это только для текущего сеанса, то хэш без аргументов.

1
27.01.2020, 20:08

Теги

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