Jemand hat in der Mailingliste meiner lokalen LUG gefragt, ob es eine Möglichkeit gibt, den zuletzt auf einem GNU/Linux-System ausgegebenen Befehl herauszufinden.
Ich denke, wir sprechen hier vom letzten Befehl auf systemweiter Ebene. Wenn Sie nach einigem Überlegen die Befehlsmenge auf die Befehle beschränken, die von tatsächlichen Benutzern über eine interaktive Konsole ausgegeben werden, sollte der letzte Befehl im Befehlsverlauf registriert sein.
Eine andere Möglichkeit, diese Frage zu beantworten, wäre zu fragen, wie man erkennt, welcher Prozess der letzte war, der auf einer GNU/Linux-Box erstellt wurde, und zwar im Hinblick darauf, ob er noch läuft oder bereits abgeschlossen ist, welcher der übergeordnete Prozess war und andere relevante Informationen.
Antwort1
Ich habe ein Paket für Linux gefunden, das bei der Prozessabrechnung hilft.
Auf meinem Ubuntu 9.10-System habe ich Folgendes getan, um das Programm „acct“ zu installieren:
sudo apt-get install acct
Anschließend muss eine leere Logdatei erstellt werden, was Sie wie folgt tun können:
sudo touch /var/log/pacct
Anschließend muss die Prozessabrechnung aktiviert werden:
sudo /usr/sbin/accton /var/log/pacct
Ab diesem Zeitpunkt werden Prozesse zusammen mit dem Benutzer, der sie ausgeführt hat, und dem zugehörigen Terminal protokolliert.
Die Protokolldatei kann mit diesem Befehl angezeigt werden:
lastcomm -f /var/log/pacct
Ich schaue mir dieses Programm noch an … aber es sieht so aus, als ob es hilft.
Antwort2
Für einen bestimmten Benutzer (und eine bestimmte Shell): Verlauf
Für einen aktuellen Prozess: ps
Antwort3
Nun, ein systemweites System sieht ziemlich kompliziert aus. Ein solches System impliziert, dass es einen Prozess geben sollte, der die .bash_history jedes Benutzers überwacht. Wenn diese aktualisiert wird, wird eine zentrale Datenbank aktualisiert. Sobald dies erledigt ist, können wir möglicherweise eine Erweiterung des Befehls „history“ erstellen, die aus der zentralen Datenbank auswählt. Keine schlechte Idee.
Antwort4
Sie könnenSchnüfflerum alle ausgeführten Befehle zu überwachen.