Afficher les processus en cours d'exécution avec un nom de fichier?

12

J'utilise du mastic pour connecter mon serveur linux dans lequel se trouvent mes sites. Je peux exécuter

# ps aux | less

pour afficher les processus en cours. Mais je veux afficher les fichiers exécutant ces processus?

J'ai aussi essayé

# ps aux | grep <pid>

Mais obtenir cette erreur:

-bash: syntax error near unexpected token `newline'

Quelle est la bonne façon de procéder?

tshepang
la source
4
dans grep <pid>, vous êtes censé remplacer <pid>par votre identifiant de processus réel (c'est un nombre). <pid>est juste un espace réservé, pas quelque chose que vous devez réellement taper.
Ben Voigt

Réponses:

13

ps aux | grep <pid>n'est pas une commande shell. La notation <pid>est une convention courante pour signifier «mettre le PID là». Par exemple, si le PID est 1234, vous devez exécuter ps aux | grep 1234. Ce n'est pas une commande très utile, vous pourriez aussi bien l'exécuter ps u 1234.

Votre question n'est pas très claire. Qu'entendez-vous par «avec des noms de fichiers»? Si vous voulez voir quel exécutable le processus 1234 est en cours d'exécution:

ls -l /proc/1234/exe

Si vous voulez voir quels fichiers ce processus a ouverts:

ls -l /proc/1234/fd

Si vous voulez voir la ligne de commande complète avec des arguments:

tr '\0' '\n' </proc/1234/cmdline

Si vous préférez utiliser des commandes, lsof -p1234affiche tous les fichiers ouverts par le processus. ps uww 1234affiche diverses informations sur le processus 1234, y compris la ligne de commande complète.

Gilles 'SO- arrête d'être méchant'
la source
5

essayez d'exécuter ce qui suit:

ps -ef
ennuikiller
la source
3

Tout d'abord, ps aux | grep <PID>est utile lorsque vous souhaitez afficher les détails d'un processus spécifique dont PID(Identificateur de processus) est représenté par <PID>.

Par exemple ( ps aux | grep 'firefox\|USER'signifie imprimer uniquement les lignes qui contiennent firefoxou USER):

ps aux | grep 'firefox\|USER'
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
terdon  9021  2.5 11.8 1950888 970832 ?      Sl   Apr03 108:41 /opt/firefox/firefox

Ainsi, le PID pour mon firefoxinstance est 9021. Donc, pour utiliser la commande que vous essayez d'exécuter, je remplacerais <PID>par 9021:

ps aux | grep 9021
terdon  9021  2.5 11.5 1948776 942640 ?      Sl   Apr03 109:03 /opt/firefox/firefox

Maintenant, je ne sais pas ce que vous entendez par "afficher les fichiers exécutant ces processus". Si vous voulez dire quels fichiers ces processus utilisent, ps auxc'est une façon de le faire. Disons que j'ai ouvert le fichier à l' /usr/share/doc/nano/faq.htmlaide de cette commande:

 firefox /usr/share/doc/nano/faq.html 

Je pouvais voir quel fichier firefoxs'était ouvert en utilisant ps:

ps aux | grep firefox
terdon   31763 18.7  1.0 682916 84352 pts/10   Sl+  17:10   0:02 firefox /usr/share/doc/nano/faq.html

Le fichier ouvert apparaît comme l'un des arguments transmis à Firefox. Notez que le PID est différent (il est maintenant à la 31763place de 9021), car chaque programme en cours d'exécution a son propre PID unique.


Une autre commande utile est top. Si vous l'exécutez avec le -ccommutateur, il affichera les arguments passés à une commande et, avec -u <your user>lui, affichera uniquement les processus démarrés par votre nom d'utilisateur (remplacez-les <your user>par votre nom d'utilisateur réel):

top -c -u terdon

Il s'agit de la sortie sur ma machine locale (l'utilisateur terdonn'exécute que deux processus):

top - 17:14:41 up 3 days, 49 min, 14 users,  load average: 0.48, 0.54, 0.55
Tasks: 228 total,   1 running, 226 sleeping,   0 stopped,   1 zombie
%Cpu(s):  7.1 us,  5.5 sy,  0.0 ni, 86.5 id,  0.0 wa,  0.0 hi,  0.9 si,  0.0 st
KiB Mem:   8187940 total,  8007220 used,   180720 free,   349264 buffers
KiB Swap:  8191996 total,     5556 used,  8186440 free,  4173004 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                                                       
31573 terdon    20   0 24900 5576 1684 S   0.0  0.1   0:00.20 bash                                                          
31763 terdon    20   0  666m  77m  28m S   0.0  1.0   0:02.39 firefox /usr/share/doc/nano/faq.html                          

Pour une explication des informations affichées par top, voir ma réponse à une question connexe sur SU.

terdon
la source
0

certains caractères sous shell sont à des fins spéciales comme <>? "; ...

grep PID n'est pas utile car PID est l'identifiant du processus et grep trouvera des valeurs numériques similaires ...


la source