Wenn ich das tue, ps -ef|grep python
bekomme ich Folgendes:
myusername 4492 2994 0 10:32 pts/0 00:00:01 /home/myusername/.virtualenvs/myproject/bin/ipython manage.py runserver
root 6665 1 0 10:42 ? 00:00:00 /usr/bin/python /usr/lib/system-service/system-service-d
myusername 14051 13497 0 11:28 pts/7 00:00:00 grep --color=auto python
Wie erhalte ich stattdessen nur den Benutzer , der den Prozess ausführt , die pid und den Befehl , der für den Prozess ausgeführt wird, wie in der folgenden Ausgabe?
myusername 4492 /home/myusername/.virtualenvs/myproject/bin/ipython manage.py runserver
root 6665 /usr/bin/python /usr/lib/system-service/system-service-d
ps --fields="user pid command"
Antworten:
Ich vermute, Sie suchen nach dem Argument -o:
Der von Ihnen gewünschte Befehl wäre (Ubuntu):
unter OpenSolaris lautet der Befehl:
quelle
Warning: bad ps syntax, perhaps a bogus '-'? See http://procps.sf.net/faq.html
man ps
. Möglicherweise unterscheidet sich die Syntax auf Ihrem System geringfügig.ps -o uid,pid,cmd -e|grep python
ps -o user,pid,cmd -e|grep '[p]ython'
Das einfachste wäre wahrscheinlich:
Auf diese Weise erhalten Sie alles direkt von
ps
und müssen nichts analysieren.Von der
ps
Manpage:Die
-C
Option funktioniert, wenn Siepython
interaktiv ausgeführt werden, nicht, wenn in Python ein Skript ausgeführt wird. In diesem Fall sollten Sie-C scriptname.py
stattdessen verwenden.quelle
Meine PS-Version ist anders, daher ist möglicherweise eine Feinabstimmung erforderlich, aber Sie können cut verwenden (und möglicherweise tr, je nachdem, was Sie erreichen möchten) - zum Beispiel so etwas wie
Gibt die Zeichen 1-16 und 50 ab jeder Zeile Ihrer ps-Anweisung an. (Ihre tatsächlichen Zahlen müssen wahrscheinlich ein wenig massiert werden).
Ein anderer Weg, es zu tun (aber Sie werden die Formatierung verlieren) könnte sein
Dadurch wird das Leerzeichen im Befehl ps komprimiert, und die Felder 1,2 und 8 werden angezeigt.
quelle
Beispiel:
Erläuterung:
-e
alle Prozesse-o
benutzerdefiniertes Formatuser,pid,cmd
Anzeigen von Benutzer-, Prozess-ID- und BefehlsspaltenHinweis: Wenn Sie verwenden
-f
mit-e
wie andere vorgeschlagen haben, können Sie Fehlermeldungen erhalten. Dies liegt daran, dass diese beiden Parameter das Ausgabeformat steuern und nur einer von ihnen verwendet werden sollte:quelle