2017-09-01 3 views
2

Ich möchte die PID von meinen Prozessen bekommen. Ich mache ps aux | cut -d ' ' -f 2 aber ich merke, dass es manchmal die pid bekommt und manchmal nicht:Wie schneidet man die PID immer vom `ps aux` Befehl ab?

[[email protected] ~]$ ps aux 
user 2049 0.5 10.4 6059216 1623520 ?  Sl date 8:48 process 
user 12290 0.3 6.9 5881568 1086244 ?  Sl date 2:30 
[[email protected] ~]$ ps aux | cut -d ' ' -f 2 

12290 
[[email protected] ~]$ ps aux | cut -d ' ' -f 3 
2049 

Mitteilung, dass der erste cut Befehl, es zu 2 kochend während die zweite ist es 3 kochend. Wie kann ich die PID aus diesen auswählen, ohne zu wissen, welche Nummer zu verwenden ist (2 oder 3)?

Kann mir bitte jemand den Unterschied zwischen diesen und warum es eins und nicht das andere aufgreift?

Antwort

4

-d ' ' bedeutet, dass ein einzelnes Leerzeichen als Trennzeichen verwendet wird. Da es 1 Speicherplatz vor 2049 und 2 Leerzeichen vor 12290 gibt, erhalten Sie Ihren Befehl durch -f 2 und -f 3.

Ich empfehle, ps aux | awk '{print $2}' zu verwenden, um diese pids zu erhalten.

Oder Sie können tr verwenden, um diese Räume zu quetschen erste ps aux | tr -s ' ' | cut -d ' ' -f 2

3

Sie können die Option -o nur die pid drucken:

ps -u user -o pid 
Verwandte Themen