web-dev-qa-db-fra.com

Comment toujours couper le PID de la commande `ps aux`?

Je voudrais obtenir le PID de mes processus. Je fais ps aux | cut -d ' ' -f 2 mais je remarque que parfois il obtient le pid et parfois non:

[user@ip ~]$ 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 
[user@ip ~]$ ps aux | cut -d ' ' -f 2 

12290
[user@ip ~]$ ps aux |  cut -d ' ' -f 3
2049

notez que la première commande cut la redirige vers 2 alors que le second le redirige vers 3. Comment puis-je choisir le PID de ceux-ci sans avoir à savoir quel numéro utiliser (2 ou 3)?

Quelqu'un peut-il s'il vous plaît me dire la différence entre ceux-ci et pourquoi il ramasse l'un et pas l'autre?

9
Hunle

-d ' ' signifie utiliser un seul espace comme délimiteur. Puisqu'il y a 1 espace avant 2049 et 2 espaces avant 12290, votre commande les obtient par -f 2 et -f 3.

Je recommande d'utiliser ps aux | awk '{print $2}' pour obtenir ces pids.

Ou vous pouvez utiliser tr pour compresser ces espaces en premier ps aux | tr -s ' ' | cut -d ' ' -f 2

10
CtheSky

Vous pouvez utiliser l'option - o pour imprimer uniquement le pid:

ps -u user -o pid
3
Minh Tuan Nguyen