Verfolgen Sie die Aufrufe eines Befehls

347
chalasr

Um das Ziel meiner Frage schnell zu erklären, verwende ich Ubuntu Mate mit einer Apfeltastatur.
Damit die Tastatur ordnungsgemäß funktioniert, musste ich einige Tasten neu zuordnen xmodmap, z. B. das Austauschen von #/ @mit </ >.

Die benutzerdefinierte Karte wird in einem Format erstellt, ~/.Xmodmapwie es sein sollte.
Um es automatisch geladen werden, habe ich xmodmap ~/.Xmodmapzu meinen .zshrc.

Nach einer Weile wird die xmodmap-Konfiguration jedoch vollständig gelöscht.
Um es neu zu konfigurieren, muss ich ein neues Terminal öffnen oder den xmodmapBefehl manuell aufrufen .

Dieses Problem ist auf gnome bereits bekannt, und ich kann keine funktionierende Lösung finden, damit mein xmodmap immer funktioniert.

Um das Problem zu lösen, denke ich, muss ich herausfinden, welches Paket / Kommando das Auseinanderfallen meiner benutzerdefinierten Konfiguration verursacht, indem Zweifel nacheinander vermieden werden.

Ich kenne einige Befehle, die die xmodmapKonfiguration möglicherweise zurücksetzen können, z setxkbmap.

Um sicherzugehen, dass mein Problem dadurch entsteht, möchte ich, dass meine Sitzung mit diesem Befehl ( setxkbmap) abgehört wird, so wie ich weiß, wann er aufgerufen wird.

Meine Frage ist folgende:

Wie kann ich Aufrufe eines Befehls überwachen (indem ich z. B. in eine Protokolldatei schreibe, muss ich nur wissen, ob er während der Sitzung aufgerufen wurde)?

Wenn Sie eine andere Alternative zum Debuggen kennen oder meine Konfiguration während der Sitzung beibehalten, ist dies noch besser.

Vielen Dank im Voraus für jede Antwort, die ich erhalten würde.

3
Wenn sich diese Frage nicht auf diesen Stack-Austausch beziehen sollte, sagen Sie mir bitte, ich bin etwas verloren zwischen Server-orientiertem Stack-Austausch. chalasr vor 8 Jahren 0
Unter http://www.shibuvarkala.com/2009/04/howto-enable-process-accounting-in.html finden Sie Informationen zum Aktivieren der Prozessabrechnung in Linux. Wenn Sie weitere Fragen haben, ist askubuntu.com möglicherweise ein besserer Ort. Barmar vor 8 Jahren 1

1 Antwort auf die Frage

1
mabagu

Vielleicht kann Ihnen ein Shell-Wrapper helfen.

Benennen Sie setxkbmap in setxkbmap.bin um

Dann erstellen Sie ein Skript mit dem Namen setxkbmap, das sich an derselben Stelle befindet, an der sich das Original befand, und der Inhalt:

echo "[$(date)] [ppid $PPID] $@" >> /var/tmp/setxkbmap.log exec setxkbmap.bin $@ 

Sie können die Benutzer-ID protokollieren oder alles, was Sie als hilfreich erachten