Wie finde ich unter UNIX die am häufigsten verwendeten Befehle in der Geschichte von Unix?

8

Wie finde ich unter UNIX die am häufigsten verwendeten Befehle im Verlauf?

Swetha
quelle
Ich denke, dass dies hier kein Thema ist, aber Google zeigt mehrere gute Listen als Referenz. Natürlich variiert die Verwendung je nach Distribution und Verfügbarkeit der Befehle sowie je nach Benutzer, Zweck und Kenntnis anderer Befehle, aber es gibt sicherlich einige, die nach oben schweben und in allen Listen zu diesem Thema angezeigt werden.
Caleb
7
Meinen Sie "Shell-Befehle Verlaufsdatei" oder "Verlauf von Unix"?
alex

Antworten:

11

Es kommt vielmehr darauf an, was Sie mit "Befehl" beabsichtigen. Aus einer Perspektive ist ein Befehl einfach eine ausführbare Datei, die über die Befehlszeile aufgerufen wird, lsund ls -alh /tmp/foo/bar/*tar.bzbeide sind der Befehl ls. Eine andere Perspektive ist, dass ein Befehl die Summe seiner Teile ist, was bedeutet, dass das obige Beispiel zwei verschiedene Befehle sind.

Wenn Sie ganz eindeutige Befehle in der Historie zählen möchten, können Sie Folgendes ausführen: history | cut -d' ' -f4- | uniq -c | sort -n

Bitte beachten Sie, dass dies auf einem Debian-System getestet wurde. Die Ausgabesyntax Ihres Verlaufsbefehls kann geringfügig variieren. Passen Sie die Zahl '4' im Befehl an, um alternative Spalten auszuwählen.

Wenn Sie nur den ersten Befehl ohne Argumente berücksichtigen möchten, können Sie Folgendes ausführen: history | cut -d' ' -f4- | cut -d' ' -f1 | uniq -c | sort -n

Um die folgenden Argumente, aber keine verketteten oder weitergeleiteten Befehle einzuschließen, können Sie Folgendes ausführen: history | cut -d ' ' -f4- | cut -d'|' -f1 | uniq -c | sort -n

Bitte beachten Sie, dass jeder dieser Befehle die Anzahl der Befehle numerisch sortiert, wobei die höchste Frequenz zuletzt angezeigt wird.

Tok
quelle
Ich musste sortvorher eine zusätzliche hinzufügen uniq, um eine genaue Zählung zu erhalten, da nur benachbarte Zeilen überprüft werden:history | cut -d' ' -f4- | cut -d' ' -f1 | sort | uniq -c | sort -n
nocash
4

Ich habe beide gesehen vucar und tok Antworten, sie sind sehr nützlich , aber man könnte die erstaunliche Tool awkzu:

Wenn Sie eine Liste der Befehle auflisten möchten, die Sie am häufigsten verwenden:

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

So finden Sie den am häufigsten verwendeten Befehl:

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

für mich war es vi:

94 vi
Nidal
quelle
4

Ein anderer Ansatz wäre die Verwendung der BSD-Prozessabrechnung , die auch unter Linux verfügbar ist (obwohl ich nicht weiß, ob sie standardmäßig aktiviert ist). Grundsätzlich werden alle Programme, die ausgeführt werden (und einige andere Maßnahmen, wie z. B. verbrauchte CPU-Zeit usw.), so lange überwacht, wie die Abrechnung aktiv ist. Von dort stehen unter anderem einige aggregierte Statistiken zur Verfügung: eine Art Liste aller Programme, die jemals auf dem System ausgeführt wurden, sortiert nach usw. Top-Anzahl der Verwendungen.

Die zu suchenden Befehle gelten lastcommfür das laufende Protokoll und safür die aggregierten Statistiken. Zurück zur ursprünglichen Frage: Unter der Annahme, dass für das betreffende System die Buchhaltung seit der Installation aktiviert war, wird sa -neine Liste aller jemals auf dem System ausgeführten Befehle (für alle Benutzer) angezeigt, sortiert nach Häufigkeit. Bei Pipelines würde natürlich jeder Teil der Pipeline separat gezählt, da jeder Teil einen neuen Prozess umfasst, der gegabelt werden muss.

Weitere Informationen finden Sie im Linux-Journal in einem Artikel , in dem die Funktionsweise erläutert wird. Ich selbst habe die Idee aus dem NetBSD-Handbuch erhalten . Viele der allgemeineren Verwaltungstipps sind nicht spezifisch für NetBSD, sondern gelten auch für andere Unix-Systeme.

Vucar Timnärakrul
quelle
2

Top 20 der am häufigsten verwendeten CLI-Befehle:

history |  cut -c7- | sort  | uniq -c | sort -nr | head -n 20
Adrian
quelle
1

Sie können einen einzelnen Schnittbefehl verwenden:

history | cut -c 7-100  | sort  | uniq -c | sort -nr
user78124
quelle
1

Wenn es nur für die aktuelle Sitzung ist, dann hashohne Argumente.

PSkocik
quelle