Zum Beispiel öffne ich normalerweise das Mauspad (xfce-Äquivalent von gedit) über das Anwendungsmenü. Ich weiß jedoch, dass Sie dies auch in einem Terminal durch Eingabe tun können mousepad
.
Nach diesem Beispiel möchte ich immer dann, wenn ich das Mauspad über die GUI öffne, eine neue Zeile in eine Protokolldatei schreiben, in der so etwas wie angegeben ist Sep 5 15:35:11 lucho@lucho:~$ mousepad
. Im Allgemeinen möchte ich alle GUI-Aktivitäten protokollieren, die möglicherweise über die Befehlszeile ausgeführt werden können (z. B. Öffnen von Programmen, Ändern von Berechtigungen, Ändern von Systemeinstellungen usw.), jedoch in ihrem alternativen Befehlszeilenausführungsformat geschrieben sind . Ich möchte dies, um meine Kenntnisse über die Verwendung der Befehlszeile zu verbessern (ohne die man
Seiten durchzugehen). Es gibt viele Dinge, die ich über die GUI mache, die ich nicht über die Befehlszeile mache (einige können möglicherweise über ein Skript oder über Tastaturkürzel automatisiert werden), und diese Protokolldatei wäre eine gute Möglichkeit, sie zu lernen.
Ich bin mir der Existenz der Syslog-Datei in bewusst, /var/log
aber das ist nicht das, was ich brauche. Die Activity Log Manager-App aus Ubuntu-Repositorys zeigt meines Wissens kein Befehlszeilenformat an. Ich benötige so etwas wie die .bash_history-Datei, die in meinem Home-Ordner vorhanden ist, aber meine GUI-basierten Aktivitäten aufzeichnet.
unity-control-center background
odergnome-control-center background
(abhängig von Ihrem Desktop, Unity oder XFCE oder GNOME). Aber die Außenwelt wird wahrscheinlich nur sehengnome-control-center
Antworten:
Einführung
Es ist zwar nicht möglich, alle GUI-Aktionen zu protokollieren , es können jedoch beispielsweise Protokollierungsbefehle ausgeführt werden, die geöffneten Fenstern entsprechen. Unten finden Sie das einfache Python-Skript, das die Aufgabe erledigt. Es befindet sich noch in der Entwicklung, erledigt aber 90% der erforderlichen Aufgabe.
Quellcode
Testlauf:
Das Skript zeigt den Zeitstempel, den Ereignistyp, die Fenster-PID und den entsprechenden Befehl an.
Wie benutzt man
Es gelten die Standardregeln eines Skripts. Stellen Sie sicher, dass Sie das Skript im
~/bin
Verzeichnis speichern . Wenn Sie kein~/bin
Verzeichnis haben, erstellen Sie eines. Speichern Sie dort die Skriptdatei und stellen Sie sicher, dass sie mit ausführbar istchmod +x ~/bin/log_open_windows.py
. Danach können Sie es jederzeit über die Befehlszeile ausführen, indem Sie die~/log_open_windows.py
Befehlszeile aufrufen .quelle
Es ist eine brillante Idee, diese Art von Protokolldatei als Grundlage für das Lernen vorzuschlagen!
Leider werden viele Aktionen von GUI-Programmen im Programm selbst implementiert, ohne externe Befehle zu verwenden. Und selbst wenn externe Befehle verwendet werden, kann dies anders sein als in einer Shell.
Das gibt es also nicht und es ist nicht einfach zu implementieren.
Aber ich habe eine Lösung für einen Teil des Problems: Der Programmname in der GUI unterscheidet sich manchmal von dem Programmnamen, den man für einen Shell-Befehl kennen muss - nicht nur, wenn der GUI-Name in eine lokale Sprache übersetzt wird.
Wie
Files
starte ich beispielsweise das Programm in der Kommazeile?Wir müssen in allen
*.desktop
Dateien nach dem Namen suchen . Dort finden wir den Befehl in derExec
Zeile:locate -b '.desktop' | xargs grep -ls '^Name.*=Files$' | xargs grep '^Exec.*'
listet Desktop-Dateinamen und Befehle für das GUI-Programm auf
File
- ersetzen Sie diesen durch den genauen Namen, nach dem Sie suchen - auch wenn es sich um mehrere Wörter handelt (lassen Sie für die Teilstringsuche das=
und weg$
).Mit dem Befehl kann ich
Files
seinnautilus
,dolphin
oderactive-filebrowser
:quelle