Abrufen einer Liste der derzeit laufenden Prozesse

Ich möchte über die Befehlszeile eine Liste aller Anwendungen erhalten, die derzeit auf meinem Computer ausgeführt werden. Es sollte dem ähneln, was Sie erhalten, wenn Sie den Aktivitätsmonitor öffnen und die Liste speichern.

Mir ist aufgefallen, dass der ps -aBefehl etwas Ähnliches macht, aber die Namen der Prozesse abschneidet.

Mich interessiert nur der Name der Prozesse, daher brauche ich nicht alle Spalten, die der Aktivitätsmonitor ausgibt.

Update: Ich hätte klarer sein sollen ... Ich möchte nicht, dass der gesamte Pfad zum Prozess angezeigt wird. Ich möchte nur den Namen des Prozesses, wie er im Aktivitätsmonitor angezeigt wird. Zum Beispiel psUrsachen lanchd, die so angezeigt werden, /sbin/launchdanstatt wie es im Aktivitätsmonitor angezeigt wird (dh nur lanchd). Dies ist ein Problem, da Prozesse mit sehr langen Pfaden am Ende abgeschnitten werden (abhängig von der Größe meines Terminalfensters) und ich nicht einmal den Prozessnamen sehen kann.

Ich möchte nur meine Prozesse ... wie mache ich das?

Antworten (3)

ps -axc -o comm
  • -azeigt Prozesse von allen Benutzern (oder root) an
  • -xenthält Prozesse, die kein steuerndes Terminal haben
  • -o commgibt Befehlspfade oder -namen aus
  • -cmacht -o commnur Ausgabenamen

tell app "System Events" to name of application processeswürde nur Prozesse auflisten, die von einem Anwendungspaket gestartet wurden.

Dies gibt mir die gleichen Informationen wie die Antwort von ephsmith, schließt jedoch -bash, aus und zeigt keine Fehlermeldung an (was gut ist). Außerdem verwendet es einen einfacheren Befehl, danke. sortxargs
@Senseful, tut mir leid :(. Zumindest war ich eine Hilfe bei der Bewältigung Ihrer Notwendigkeit, es in einer Datei zu speichern.
Ich möchte nur meine Prozesse ... wie mache ich das?

Richtiger Befehl, falsche Flaggen.

  • Verwenden Sie diese Option ps -Ao comm, wenn Sie nur Prozessnamen wünschen.
  • Verwenden Sie ps -Ao command, wenn Sie Prozessnamen mit Argumenten wünschen.
Der erste Befehl gibt immer noch den gesamten Pfad des Prozesses aus, wodurch er auf der Länge meines Terminalfensters abgeschnitten wird. Zum Beispiel sehe ich im Aktivitätsmonitor launchdin ps, es wird als angezeigt /sbin/launchd. Es ist kein Problem für diesen Prozess, aber es ist ein Problem für diejenigen, die in vielen Ordnern verschachtelt sind. Gibt es eine Möglichkeit, nur den Namen des Prozesses ohne seinen Pfad zu erhalten?
Ah ja. Sie haben "like Activity Monitor" gesagt, aber ich dachte nicht, dass es wichtig wäre. Da ich sehe, dass Ihre Frage bereits beantwortet wurde, belasse ich es einfach dabei.
Ich möchte nur meine Prozesse ... wie mache ich das?

Sie haben erwähnt, dass Sie es in einer Datei speichern möchten. Verwenden Sie im einfachsten Fall (derjenige, um den Sie sich am meisten sorgen)

ps ax > /path/to/outfile.txt

Dadurch wird eine Liste aller laufenden Prozesse (mit dem vollständigen Namen) in die durch den Pfad angegebene Datei gedruckt. Das ">" leitet die Druckausgabe (im Überschreibmodus) in die Datei um. Durch einfaches Ausgeben ps axwird es auf dem Bildschirm gedruckt.

Tipp: Wenn Sie keine Lust haben, ein vollständiges Verzeichnis einzugeben, ziehen Sie einen Ordner auf das Terminal, um den Pfad für Sie zu erhalten, und vervollständigen Sie ihn manuell mit dem Namen der Datei

Für den Fall, dass Sie irgendwann einige der anderen Spalten benötigen ... Überprüfen Sie auch die Manpage für ps, indem Sie man psin die Befehlszeile eingeben, und sehen Sie sich andere Optionen an. Hier ist ein weiteres Beispiel, das die CPU-Auslastung und den Arbeitsspeicher für jeden Prozess (in Prozent) ausgibt, gefolgt vom Befehl (process):

ps ax -o %cpu -o %mem -o command > /path/to/outfile.txt

Verwenden

# Sort by cpu usage with the 'r' option
ps arx -o %cpu -o %mem -o command > /path/to/outfile.txt

# Sort by memory usage with the 'm' option
ps arm -o %cpu -o %mem -o command > /path/to/outfile.txt

BEARBEITEN

Um nur den Befehl zu drucken, gibt es wahrscheinlich haltbarere Ansätze, aber zur Not würde ich einfach das Folgende tun. Sie werden wahrscheinlich gegen Ende ein bisschen Cruft bemerken, das mit Saiten zusammenhängt, für die nicht gedacht war basename(wie -bash), aber der Rest von dem, was Sie wollen, wird mit diesem Quickie da sein.

ps ax -o comm | xargs -I % basename % > /path/to/outfile.txt

HINWEIS: Einige laufende Prozesse sind nicht unbedingt ausführbare Namen. Sie könnten ein direkter Aufruf shmit einer Reihe von Befehlen sein, die folgen.

Das Upvoting-Verhalten auf AskDifferent ist seltsam. Eine Antwort, die die Frage nicht beantwortet, hat einen höheren Stimmenrang. Das Speichern in einer Datei wurde nicht einmal angesprochen :( und die Argumente sind für die vom OP angeforderte Ausgabe falsch.
Danke für die Antwort, ich habe es versucht, aber es gibt immer noch den gesamten Pfad zum Prozess aus. Ich suche nach einer Lösung, die nur den Prozessnamen und nicht seinen Pfad ausgibt. Anstelle einer Ausgabe sollte es beispielsweise /sbin/launchdnur ausgegeben werden launchd.
Okay. Kein Problem. Leiten Sie einfach die Ausgabe von ps axan basenamevia weiter xargs. Siehe Bearbeiten für weitere Details.
Super, danke! Fürs Protokoll, am Ende habe ich es auch angeleitet sort. Der letzte Befehl lautet also:ps ax -o comm | xargs -I % basename % | sort