Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
08 octobre 2016

Linux           Manipuler les processus


ps

ps

Afficher un instantanné des processus

   ps affiche des informations sur une sélection des processus actifs. Pour une mise à jours répétitive de la sélection, utiliser top. ps accepte plusieurs types d'options:

Options UNIX qui peuvent être groupés et doivent être précédes par un '-'
Options BSD qui peuvent être groupés et ne doivent pas être utilisé avec un '-'
Options longues GNU Qui sont précédés par '--'

   Les options des différents types peuvent être librement mixés, mais des conflits peuvent apparaître. Noter que ps -aux est distinct de ps aux. Les standards POSIX et UNIX exigent que ps -aux affiche tous les processus possédés par l'utilisateur x, et affiche tous les processus qui ont été sélectionnés par d'option -a.

   Par défaut, ps sélectionne tous les processus avec le même user ID effectif (euid=EUID) comme utilisateur cournat et associé par le même terminal que l'invoqueur. Il affiche le process ID (pid=PID), le terminal associé avec les processus (tname=TTY), le temps CPU cumulé (time=TIME), et le nom de l'exécutable (ucmd=CMD). La sortie n'est pas triée par défaut.

   L'utilisation des options de type BSD ajoute un état de processus (stat=STAT) à l'affichage par défaut et affiche les arguments de la ligne de commande (args=COMMAND) au lieu du nom de l'exécutable. Ce mode peut être changé avec la variable d'environnement PS_FORMAT. L'utilisation des options type BSD changent également la sélection de processus pour inclure les processus de tous les autres terminaux (TTYs) qui sont possédés par l'utilisateur courant.

   Excepté quand spécifié, les options de sélection de processus sont additifs.

Pour voir tous les processus dans le système en utilisant la syntaxe standard:
ps -e
ps -ef
ps -ef
ps -ely
Pour voir tous les processus dans le système avec la syntaxe BSD:
ps ax
ps axu
Pour afficher une arborescence de processus:
ps -ejH
ps axjf
Pour obtenir des informations sur les threads:
ps -eLf
ps axms
Pour obtenir les informations de sécurité:
ps -eo euser,ruser,suser,fuser,f,comm,label
ps axZ
ps -eM
Pour voir tous les processus fonctionnant sous root au format utilisateur:
ps -U root -u root u
Pour voir tous les processus avec un format définis par l'utilisateur:
ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,wchan:14,comm
ps axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm
ps -Ao pid,tt,user,fname,tmout,f,wchan
Afficher seulement les PID de syslogd:
ps -C syslogd -o pid=
Afficher seulement le nom du PID 42:
ps -p 42 -o comm=

Sélection de simple processus

a Sélection "seulement vous-même".
-A, -e Sélectionne tous les processus.
-a Sélectionne tous les processus excepté les processus non associés avec un terminal et les leaders de session.
-d Sélectionne tous les processus excepté les têtes de session
--deselect, -N Sélectionne tous les processus excepté ceux qui remplissent les conditions spécifiées (inverse la sélection).
T Sélectionne tous les processus excepté ceux associés avec ce terminal. Identique à l'option t sans argument.
r Restreins la sélection seulement aux processus en cours de fonctionnement.
x Restriction "doit avoir un tty"

Sélection de processus par liste

   Ces options acceptent un seul argument sous la forme d'une liste séparé par ',' ou ' '. Ils peuvent être utilisés plusieurs fois. par exemple: ps -p "1 2" -p 3,4

-123, 123 Identique à --pid 123
-C cmdlist Sélectionne par nom de commande. Sélectionne les processus dont le nom de l'exécutable est dans cmdlist
-g grplist Sélectionne par session ou par nom de groupe effectif.
--Group grplist Sélection par Group ID réel ou nom.
--group grplist sélectionne par group ID effectif ou nom. Sélectionne les processus dont le nom de groupe effectif ou ID est dans grplist.
-p pidlist, -p pidlist, --pid pidlist Sélectionne par process ID
-ppid pidlist Sélectionne par PID parent.
-s sesslist, --sid sesslist Sélection par session ID.
-t ttylist, --tty ttylist Sélectionne par tty
U userlist, -u userlist, --user userlist Sélection par user ID effectif
-U userlist --User userlist Sélection par user ID effectif

Contrôles de format de sortie

   Ces options sont utilisée pour choisir les informations affichées par ps.

-c Affiche différentes informations du scheduler pour l'option -l
--context Affiche le context de sécurité (SELinux)
-f Listing complet. Peut être combiné avec d'autres options pour ajouter de colonnes. Affiche également les arguments de commande.
-F Format complet.
--format format format spécifié. Identique à -o et o
j Contrôle de job BSD
-j format de jobs
l Format long BSD
-l Format long. L'option -y est souvent utile avec lui.
-M Ajoute une colonne de données de sécurité. Identique à Z (pour SELinux)
O format Spécifier l'ordre de trie.
-O format Identique mais préchargé avec certaines colonnes par défaut. identique à -o pid,format,state,tname,time,command ou -o pidformat,tname,time,cmd
o format Format spécifié par l'utilisateur. Identique à -o et --format
-o format Format utilisateur. le format est un simple argument sous la forme d'une liste séparé par des ',' ou ' '. Les en-têtes peuvent être renommés(ps -o pid,ruser=RealUser -o comm=Command). Si tous les en-têtes sont vides (ps -o pid= -o comm=), l'en-tête n'est pas affiché. La largeur des colonnes augmente si nécessaire pour des en-tête plus large; cela peut être utilisé pour élargir les colonnes tel que WCHAN (ps -o pid,wchan=WIDE-WCHAN-COLUMN -o comm). Le contrôle de largeur explicite ps opid,wchan:42,cmd permet de le faire également.

        s Affiche le format du signal
        u Affiche le format orienté utilisateur
        v Affiche le format de mémoire virtuelle
        X Enregistre le format
        -y n'affiche pas les flag. Ne peut être utilisé qu'avec -l
        Z Ajoute une colonne de donnée de sécurité. Identique à -M (pour SELinux)

Modifieurs de sortie

c Affiche le vrai nom de la commande. c'est dérivé du nom du fichier exécutable, au lieu de la valeur de argv
--cols n, --columns n Définis la largeur de l'écran
--cumulative Inclus certaines données de processus enfant morts
e Affiche l'environnement après la commande.
f, --forest hiérarchie de processus ASCII
h Pas d'en-tête (ou un par écran dans le type BSD).
-H Affiche la hiérarchie des processus
--headers Répète les lignes d'en-tête, une par page de sortie
-k spec Spécifie l'ordre de trie. Trier la syntaxe est [+|-]key[,[+|-]key[,...]]. Utiliser un clé de la section Spécifieurs de format standard.

        exemples
        ps jaxkuid,-ppid,+pid
        ps axk comm o comm,args
        ps kstart_time -ef

--lines n Définis la hauteur d'écran
namelist, N namelist Définis le fichier namelist. Identique à N. le fichier namelist est nécessaire pour un affichage WCHAN propre, et doit correspondre à la version de Linux pour une sortie correcte. Sans cette option, le chemin de recherche par défaut pour namelist est:

        $PS_SYSMAP
        $PS_SYSTEM_MAP
        /proc/\*/wchan
        /boot/System.map-$(uname -r)
        /boot/System.map
        /lib/modules/$(uname -r)/System.map
        /usr/src/linux/System.map
        /System.map

n Sortie numérique pour WCHAN et USER (incluant tous les types de UID et GID).
--no-headers, --no-heading N'affiche pas le ligne d'en-tête.
--rows n Définis la hauteur d'écran
S Summarise les informations, tel que l'utilisation CPU, des processus enfant morts dans leur parent. Utile pour examiner un système où un processus parent forks en répétition des enfants de courte durée qui ne fonctionne pas.
--sort spec Spécifie l'ordre de trie. la syntaxe est [+|-]key[,[+|-]key[,...]]. exemple: ps jax --sort=uid,-ppid,+pid
w, -w Sortie large. Utiliser cet option 2 fois pour une largeur illimitée
--width n Définis la largeur de l'écran

Affichage des threads

H Affiche les threads comme s'ils étaient des processus
-L Affiche les threads, possiblement avec les colonnes LWP et NLWP
m, -m Affiche les threads après les processus
-T Affiche les threads, possiblement avec la colonne SPID

Autres informations

L Liste tous les spécifieurs au format long
V, -V, --version Affiche la version de procps-ng

Notes

   ps fonctionne en lisant le système de fichier virtuel /proc. ps n'a pas besoin d'être setuid kmem ni d'avoir aucun privilèges pour fonctionner. Ne pas donner à ce ps des permissions spéciales.

Ce ps doit accéder aux données namelist pour un affichage correcte de WCHAN.
L'utilisation CPU est actuellement exprimée en pourcentage de temps passé durant tous de cycle d'un processus. Ce n'est pas idéal, et n'est pas conforme au standards.
Les champs SIZE et RSS ne comptent pas certaines parties d'un processus incluant des tables de page, pile kernel, structure thread_info, et structure task_struct. C'est généralement au moins 20KiB de mémoire qui sont toujours résidents. SIZE est la taille virtuelle du processus (code+data+stack).
Les processus marqués ‹defunct› sont des processus morts (appelés zombie) qui restent parce que leur parent ne les ont pas détruit proprement. Ce processus seront détruit par init si le processus parent de termine.
Si la longueur du username est supérieur à la longueur de la colonne d'affichage, le user ID est affiché à la place.

Flags de processus

   La somme de ces valeurs est affiché dans la colonne F, qui est fournis par le spécifieur de sortie flags:

        1 Forké mais pas exécuté
        4 A utilisé les privilèges super-utilisateur.

codes d'état de processus

D uninterruptible sleep (usually IO)
R running or runnable (on run queue)
S interruptible sleep (waiting for an event to complete)
T stopped, either by a job control signal or because it is being traced
W paging (not valid since the 2.6.xx kernel)
X dead (should never be seen)
Z defunct ("zombie") process, terminated but not reaped by its parent

codes d'état de processus supplémentaires BSD

high-priority (not nice to other users)
N low-priority (nice to other users)
L has pages locked into memory (for real-time and custom IO)
s is a session leader
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ is in the foreground process group

Spécifieurs de format standard

   Les différents mots clé qui peuvent être utilisés pour contrôler le format de sortie (ex avec l'option -o) ou pour trier les processus sélectionnés avec l'option --sort (exemple: ps -eo pid,user,args --sort user) Cette version de ps tente de reconnaître le plus de mots clés utilisé dans d'autres implémentations de ps.

   Les spécifieurs de format suivant peuvent contenir des espaces: args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart, start. Certains mots clé peut ne pas être disponible pour le trie.

        CODE - HEADER DESCRIPTION
        %cpu $CPU Utilisation cpu du processus au format "##.#". Actuellement, c'est le temps CPU utilisé divisé par le temps de fonctionnement du processus. (ratio cputime/realtime), exprimé en pourcentage (alias pcpu)
        %mem %MEM Ratio de la taille du jeu résident du processus de la mémoire physique sur la machine, exprimée en pourcentage (alias pmem)
        args COMMAND Commande avec tous ses arguments.
        blocked BLOCKED Masque des signaux bloqués.
        bsdstart START date de démarrage de la commande. Si le processus a démarré depuis moins de 24heures, le format est " HH:MM", sinon c'est "Mmm:SS" où Mmm est le mois sur 3 lettres.
        bsdtime TIME Temps cpu cumulé user + système.
        c C Utilisation du processeur. Actuellement, c'est une valeur entière du pourcentage d'utilisation sur la durée de vie du processus.
        caught CAUGHT Masque des signaux capturés.
        cgroup CGROUP Affiche les cgroupe auquel le processus appartient.
        class CLS Classe de scheduling du processus. Les valeurs de champ possibles sont:

                - not reported
                TS SCHED_OTHER
                FF SCHED_FIFO
                RR SCHED_RR
                B SCHED_BATCH
                ISO SCHED_ISO
                IDL SCHED_IDLE
                ? unknown value

        cls CLS idem à class
        cmd CMD voir args
        comm COMMAND Nom de la commande (seulement le nom de l'exécutable). Les modification du nom de la commande ne seront pas affichés.
        command COMMAND Voir args
        cp CP dixième de pourcentage d'utilisation CPU
        cputime TIME Temps CPU cumulatif au format [DD-]hh:mm:ss (alias time)
        egid EGID GID effecif du processus comme entier décimal
        egroup EGROUP GID effectif du processus. C'est le GID textuel, s'il peut être obtenu et que la largeur du champ le permet, ou une représentation décimal sinon (alias group)
        eip EIP Pointer d'instruction
        esp ESP Pointeur de pile
        etime ELAPSED Temps passé depuis que le processus a démarré, sous la forme [[DD-]hh:]mm:ss.
        etimes ELAPSED Temps passé depuis que le processus a démarré, en secondes
        euid EUID UID effectif (alias uid)
        euser EUSER Nom d'utilisateur effectif. C'est l'UID textuel, s'il peut être obtenu et que la largeur du champ le permet, ou une représentation décimal sinon (alias uname, user)
        flag, flags f F Flags associés avec le processus (alias flag, flags)
        fgid FGID GID d'accès du système de fichier (alias fsgid)
        fgroup FGROUP ID de groupe d'accès du système de fichier. C'est un ID de groupe textuel, s'il peut être obtenu et que la largeur de champ le permet. (alias fsgroup)
        fname COMMAND 8 premiers octets du nom de base du fichier exécutable du processus. La sortie dans cette colonne peut contenir des espaces
        fuid FUID ID utilisateur d'accès au système de fichier (alias fsuid)
        fuser FUSER ID utilisateur d'accès au système de fichier . C'est un ID utilisateur textuel, s'il peut être obtenu et que la largeur de champ le permet
        gid GID voir egid (alias egid)
        group GROUP voir egroup. (alias egroup)
        ignored, IGNORED masque des signaux ignorés (alias sig_ignore, sigignore)
        ipcns IPCNS Numéro d'inode unique décrivant l'espace de nom du process.
        label LABEL Label de sécurité, principalement utilisé par SELinux.
        lstart STARTED date/heure de démarrage de la commande. voir également bsdstart, start, start_time et stime)
        lsession SESSION Affiche l'identifiant de session de login d'un processus, si le support de systemd est inclus
        lwp LWP ID de thread de l'entité dispatchable (alias spid,tid)
        lxc LXC nom du conteneur lxc dans lequel la tâche tourne.
        machine MACHINE Affiche le nom de la machine pour les processus assigné à des VM ou conteneurs, si le support de systemd est inclus
        maj_flt MAJFLT numéro de page faults majeur qui s'est produit avec ce processus
        min_flt numéro de page faults mineur qui s'est produit avec ce processus
        mntns MNTNS Numéro d'inode unique décrivant l'espace de nom du process.
        netns NETNS Numéro d'inode unique décrivant l'espace de nom du process.
        ni NI Valeur nice.
        nice voir ni
        nlwp NLWP nombre de lwps (threads) dans le processus. Alias thcount.
        nwchan WCHAN Adresse de la fonction kernel où le processus attend.
        ouid OWNER UID de propriétaire de la session d'une processus, si le support de systemd est inclus
        pcpu %CPU (alias %cpu)
        pending PENDING Masque de signaux d'attente. Les signaux d'attente dans le processus sont distincts des signaux d'attente des threads individuels. Utiliser l'option m ou -m pour voir les 2. (alias sig)
        pgid PGID ID du groupe du processus, ou ID de processus du groupe du chef de processus (alias pgrp)
        pgrp PGRP (alias pgid)
        pid PID ID du processus (alias tgid)
        pidns PIDNS Numéro d'inode décrivant l'espace de nom auquel le processus appartient
        pmem %MEM (alial %mem)
        policy POL Classe du scheduler du processus (alias class, cls)
        ppid PPID ID du processus parent
        pri PRI Priorité du processus. Des valeur élevée signifient un priorité inférieure
        rgid RGID GID réel
        rgroup RGROUP Nom réel du groupe.
        rss RSS Resident Set Sigze, la mémoire physique non-swappée qu'une tâche a utilisé (en Ko) (alias rssize, rsz)
        rssize RSS (alias rss, rsz)
        rsz RSZ (alias rss, rssize)
        rtprio RTPRIO Realtime priority
        ruid RUID UID réel
        ruser RUSER Nom d'utilisateur réel
        s S État (sur un caractère). Voir stat. (alias state)
        sched SCH Stratégie de scheduling du processus. Les stratégies SCHED_OTHER (SCHED_NORMAL), SCHED_FIFO, SCHED_RR, SCHED_BATCH, SCHED_ISO, et SCHED_IDLE sont affichés respectivement 0, 1, 2, 3, 4, et 5.
        seat SEAT Identifiant associé avec tous les périphériques hardwares assignés à l'emplacement spécifique, si le support de systemd est inclus
        sess SESS ID de session, ou le PID du chef de session. (alias session, sid)
        sgi_p P Processeur sur lequel le processus est exécuté. Affiche '*' si le processus n'est pas en cours d'exécution
        sgid SGID GID sauvé (alias svgid)
        sgroup SGROUP Nom du groupe sauvé.
        sid SID (alias sess, session)
        sig PENDING (alias pending, sig_pend)
        sigcatch CAUGHT (alias caught, sig_catch)
        sigignore IGNORED (alias ignored, sig_ignore)
        sigmask BLOCKED (alias blocked, sig_block)
        size SIZE Quantité approximative d'espace swap qui est requis si le processus modifiait les pages writable puis se swapait. Ce nombre est très approximatif
        slice SLICE Affiche l'unité slice auquel appartient le processus, si le support systemd est inclus
        spid SPID (alias lwp,tid)
        stackp STACKP Adresse du bas de la pile pour le processus
        start STARTED Date à laquelle la commande a démarré. Si le processus n'a pas été démarré la même année que ps, affiche seulement l'année
        start_time START Date et heure de lancement du processus.
        state S (alias s)
        suid SUID UID sauvé. (alias svuid)
        supgid SUPGID GID des groupes supplémentaires
        supgrp SUPGRP Noms des groupes supplémentaires
        suser SUSER Nom de l'utilisateur sauvegardé
        svgid SVGID (alias sgid)
        svuid SVUID (alias suid)
        sz SZ Taille dans les pages physiques de l'image core du processus. Inclus text, data, et stack
        tgid TGID Nombre représentant le groupe de threads auquel une tâche appartient. (alias pid)
        thcount THCNT nombre de threads kernels possédés par le processus (alias nlwp)
        tid TID Nombre unique représentant une entité dispatchable. (alias lwp, spid).
        time TIME Temps CPU cumulé au format "[DD-]HH:MM:SS". (alias cputime)
        tname TTY tty contrôlant. (alias tt, tty)
        tpgid TPGID ID du groupe de processus sur le tty auquel le processus est connecté, ou -1 si le processus n'est pas connecté à un tty
        trs TRS Taille Text resident set, quantité de mémoire physique dévouée au code exécutable
        tt TT TTY controlant (alias tname, tty)
        tty TT (alias tname, tt)
        ucmd CMD (alias comm, ucomm)
        ucomm COMMAND alias (comm, ucmd)
        uid UID (alias euid)
        uname USER (alias euser,user)
        unit UNIT Unit auquel appartient le processus, si le support systemd est inclus.
        user USER (alias euser, uname)
        userns USERNS Numéro inode unique décrivant l'espace de nom auquel le processus appartient.
        utsns UTSNS Numéro inode unique décrivant l'espace de nom auquel le processus appartient.
        uunit UUNIT user le unit auquel appartient le processus, si le support systemd est inclus
        vsize VSZ (alias vsz)
        vsz VSZ Taille de mémoire virtuelle en Kio. (alias vsize)
        wchan WCHAN Nom de la fonction kernel dans lequel le processus est en attente.

Variables d'environnement

COLUMNS Change la largeur d'affichage par défaut
LINES Change la hauteur par défaut
PS_PERSONALITY posix, old, linux, bsd, sun, digital, ...
CMD_ENV posix, old, linux, bsd, sun, digital, ...
I_WANT_A_BROKEN_PS Force l'interpretation de ligne de commande obsolète
LC_TIME Format de date
POSIXLY_CORRECT Strictement Conforme à POSIX
POSIX2 À on, agit comme POSIXLY_CORRECT
UNIX95 Pas d'excuse pour ignorer les mauvaise fonctionnalités de ps
_XPG Annule CMD_ENV=irix