Ich habe einen xmms2d
Prozess ausgeführt, aber zwei mögliche ausführbare Dateien (in verschiedenen Verzeichnissen, beide im ausführbaren Pfad), die es hervorgebracht haben könnten. Ich vermute, dass einer von denen beschädigt ist, weil manchmal dieses Programm funktioniert und manchmal nicht. Der Prozess, der jetzt ausgeführt wird, funktioniert. Daher möchte ich den anderen löschen (oder umbenennen).
ps ax|grep "xmms"
kehrt 8505 ? SLl 2:38 xmms2d -v
ohne Pfadangabe zurück. Kann ich anhand der PID feststellen, ob sie von /usr/bin/xmms2d
oder ausgeführt wurde /usr/local/bin/xmms2d
?
Vielen Dank!
ps -C xmms
sollte dein grep obsolet machen.Antworten:
Versuche dies:
Oder wenn Sie die Ausgabe von nicht analysieren möchten, tun Sie einfach Folgendes
ls
:oder
quelle
Wenn Sie mit Solaris arbeiten, unterscheidet sich die Vorgehensweise geringfügig von der unter Linux vorgeschlagenen:
Wenn Sie das aktuelle Arbeitsverzeichnis der ausgeführten Prozesse kennen möchten, können Sie Folgendes verwenden:
z.B:
quelle
Ich starte das Mousepad von der Shell aus:
Überprüfen Sie, woher es kommt:
Beginne es mit dem Pfad:
schau per ps:
Wie wir sehen, wird der ohne Pfad aufgerufene Pfad ohne Pfad angezeigt und beginnt mit dem Pfad und ist daher zu finden durch
So einfach ist das, nicht wahr? Warten! Was ist, wenn ich das Mousepad über das Menü starte? Nun, es kann mit oder ohne Verwendung der PATH-Einstellungen angegeben werden. Ich habe es versucht. Ein normaler Start führt zu einem einfachen "Mousepad" in
ps v -C
. Da ~ / bin der erste Teil meines PATH ist, erstelle ich dort einen Dummy, und voila, der Dummy wird über das Menü gestartet.Was aber, wenn Sie ein Programm starten, das sich selbst löscht? Die werden das gelöschte Programm nicht finden und ein falsches melden, wenn es eine Sekunde im Pfad gibt.
Das ist also eine Rennbedingung. Wenn Sie wissen , dass Ihre Programme selbst nicht löschen oder nicht bewegen , während Sie ihre Lage ist zu untersuchen,
ps v -C NAME
undwhich NAME
sollen ziemlich gut funktionieren.quelle
./someexecutable
in beiden?Gehen Sie vor und löschen Sie beide Dateien (ohne die Option force -f). Die Datei, die gelöscht wird, ist die, die nicht ausgeführt wurde !!
Durch das Sperren der vom System ausführbaren Dateien können Sie keine derzeit ausgeführten Dateien löschen.
quelle
init
, die immer ausgeführt werden, aktualisiert? Sie können eine laufende ausführbare Datei nicht ändern .