2010-09-24 5 views
53

J'essaie d'utiliser la commande ps -o pour obtenir seulement des informations spécifiques sur les processus correspondant à un certain nom. Cependant, j'ai quelques problèmes sur ceci, quand j'essaye d'employer ceci même juste pour obtenir tous les processus, comme ainsi, il renvoie juste un sous-ensemble de ce qu'un ps -ef normal renverrait (il ne rentre pas presque le même nombre de résultats de sorte que son ne pas retourner tous les processus en cours d'exécution)Linux/Bash, en utilisant ps -o pour obtenir le processus par nom spécifique?

ps -ef -o pid,time,comm 

Je veux essayer quelque chose comme ça (ci-dessous), mais incorporer le -o ps juste obtenir des informations spécifiques de celui-ci (juste PID)

ps -ef |grep `whoami`| grep firefox-bin 

Tout conseil est apprécié sur la façon de le faire correctement, merci

Répondre

81

Cela vous obtenir le PID d'un processus par son nom:

pidof name 

que vous pouvez ensuite rebranchant ps pour plus de détails:

ps -p $(pidof name) 
+5

'pgrep' peut également être utilisé, mais il y a des différences dans la façon ils travaillent. Par exemple, sur mon système exécutant apache2, 'pidof' trouvera" apache2 "mais pas" apache "alors que' pgrep' le trouvera de toute façon. –

+3

Personnes OS X: 'bib install install pidof' – rogerdpack

+0

' pidof' n'est pas normalisé par POSIX et n'est donc pas garanti, comme en témoigne le fait que OS X ne possède pas 'pidof'. – Wyatt8740

22

C'est un peu vieux, mais je suppose que ce que vous voulez est: ps -o pid process_name C, par exemple:

ps -o pid -C bash 

EDIT: Dépendant de sur le type de sortie que vous attendez, pgrep serait plus élégant. Ceci, à ma connaissance, est spécifique à Linux et produit une sortie similaire à celle ci-dessus. Par exemple:

pgrep bash 
+3

'pgrep' n'est pas spécifique à Linux, car il a été introduit avec Solaris et a ensuite été réimplémenté sous Linux et * BSD. – jlliagre

+0

pgrep est la meilleure chose que j'ai vue de toute ma vie. gj h7 – codyc4321

8
ps -fC PROCESSNAME 

ps et grep est une combinaison dangereuse - grep essaie de tout correspondre à chaque ligne (donc la trop commune: grep -v grep bidouille). ps -C n'utilise pas grep, il utilise la table de processus pour une correspondance exacte. Ainsi, vous obtiendrez une liste précise avec: ps -fC sh plutôt trouver chaque processus avec sh quelque part sur la ligne.

+2

Cela ne fonctionne pas sur mac cependant. Mac ne semble pas utiliser '-C' de la même manière, savez-vous comment faire cela sur Mac? Merci! – Noitidart

2

Parfois, vous devez grep le processus par son nom - dans ce cas:

ps aux | grep simple-scan 

Exemple de sortie:

simple-scan 1090 0.0 0.1 4248 1432 ?  S Jun11 0:00 
Questions connexes