Gestion des informations système, des processus et des performances dans Oracle® Solaris 11.2

Quitter la vue de l'impression

Mis à jour : Septembre 2014
 
 

Commandes de gestion des processus système

Le tableau suivant décrit les commandes de gestion des processus système.

Table 2-1  Commandes de gestion des processus
Commande
Description
Page de manuel
ps, pgrep, prstat, pkill
Vérifiez l'état des processus actifs sur un système et affichez des informations détaillées sur les processus.
pkill
Fonctionne exactement comme pgrep mais recherche ou signale les processus par nom ou un autre attribut et met fin au processus. Chaque processus concordant est signalé comme avec la commande kill, au lieu de voir son ID de processus imprimé.
pargs, preap
Facilite le débogage des processus.
dispadmin
Répertorie les stratégies de planification des processus par défaut.
priocntl
Affecte les processus à une classe de priorité et gère les priorités des processus.
nice
Change la priorité d'un processus de partage du temps.
psrset
Lie des groupes de traitement à un groupe de processeurs plutôt qu'à un seul processeur.

Utilisation de la commande ps

La commande ps vous permet de vérifier l'état des processus actifs sur un système et d'afficher des informations techniques sur les processus. Ces données sont utiles pour les tâches d'administration telles que la détermination des priorités des processus.

    En fonction des options utilisées, la commande ps rapporte les informations suivantes :

  • Etat actuel du processus

  • ID de processus

  • ID du processus parent

  • ID utilisateur

  • Classe de programmation

  • Priorité

  • Adresse du processus

  • Mémoire utilisée

  • Temps CPU utilisé

La liste suivante décrit quelques-uns des champs rapportés par la commande ps. Les champs affichés dépendent de l'option choisie. Pour une description de toutes les options disponibles, reportez-vous à la page de manuel ps(1).

UID

ID utilisateur effectif du propriétaire du processus.

PID

L'ID de processus.

PPID

ID du processus parent.

C

Utilisation du processeur à des fins de programmation. Ce champ n'est pas affiché lorsque l'option –c est utilisée.

CLS

Classe de programmation à laquelle appartient le processus, telle qu'en temps réel, système ou partage du temps. Ce champ est inclus uniquement avec l'option –c.

PRI

Priorité de programmation du thread de noyau. Un nombre plus élevé indique une priorité plus élevée.

NI

Numéro nice du processus, qui contribue à sa priorité de programmation. Rendre un processus plus ''nice'' équivaut à abaisser sa priorité.

ADDR

Adresse de la structure proc.

SZ

Taille d'adresse virtuelle du processus.

WCHAN

Adresse d'un événement ou verrou pour lequel le processus est en veille.

STIME

Heure de début du processus (en heures, minutes et secondes).

TTY

Terminal à partir duquel le processus, ou son parent, a été démarré. Un point d'interrogation indique qu'il n'y a aucun terminal de contrôle.

TIME

Quantité totale du temps CPU utilisé par le processus depuis son démarrage.

CMD

Commande qui a généré le processus.

Utilisation du système de fichiers et des commandes /proc

Vous pouvez afficher des informations détaillées sur les processus du répertoire /proc à l'aide des commandes de processus. Le tableau suivant répertorie les commandes du processus /proc. Le répertoire /proc est également connu comme le système de fichiers du processus (PROCFS). Les images des processus actifs sont stockées dans le PROCFS en fonction du numéro d'identification du processus.

Table 2-2  Commandes de processus (/proc)
Commande du processus
Description
pcred
Affiche des informations d'identification du processus.
pfiles
Indique les informations fstat et fcntl relatives aux fichiers ouverts dans un processus.
pflags
Affiche les indicateurs de suivi /proc, les signaux en attente et en suspens, et d'autres informations d'état.
pldd
Répertorie les bibliothèques dynamiques liées à un processus.
pmap
Affiche la configuration de l'espace d'adressage de chaque processus.
psig
Répertorie les actions de signal et les gestionnaires de chaque processus.
prun
Démarre chaque processus.
pstack
Affiche un suivi de pile hex+symbolique pour chaque processus léger dans chaque processus.
pstop
Arrête chaque processus.
ptime
Comptabilise le temps d'un processus en utilisant la comptabilisation des micro-états.
ptree
Affiche les arborescences de processus contenant le processus.
pwait
Affiche les informations d'état une fois qu'un processus se termine.
pwdx
Affiche le répertoire de travail actuel d'un processus.

Pour plus d'informations, reportez-vous à la page de manuel proc(1) .

Les outils de processus sont similaires à certaines options de la commande ps, à l'exception du fait que la sortie fournie par ces commandes est plus détaillée.

    En règle générale, les commandes du processus effectuent les opérations suivantes :

  • Affiche plus d'informations sur les processus comme les répertoires de travail fstat et fcntl et les arborescences des processus parents et enfants

  • Procure le contrôle des processus en permettant aux utilisateurs de les arrêter ou de les reprendre

Gestion des processus à l'aide des commandes de processus (/proc)

Vous pouvez afficher des informations techniques détaillées sur les processus ou contrôler les processus actifs à l'aide de certaines commandes de processus. Le Table 2–2 répertorie certaines commandes /proc.

Si un processus est piégé dans une boucle infinie ou si son exécution prend trop de temps, vous pouvez arrêter le processus. Pour plus d'informations sur l'arrêt des processus à l'aide de la commande kill ou pkill, reportez-vous au Chapter 2, Gestion des processus système.

Le système de fichiers /proc est une hiérarchie de répertoires qui contient des sous-répertoires supplémentaires pour les informations d'état et les fonctions de contrôle.

Le système de fichiers /proc fournit également une fonction xwatchpoint qui sert à reconfigurer les autorisations de lecture/écriture sur les différentes pages de l'espace d'adressage d'un processus. Cette fonction n'a pas de restrictions et est MT-safe.

Les outils de débogage ont été modifiés de façon à utiliser la fonction xwatchpoint, ce qui signifie que l'ensemble du processus xwatchpoint est plus rapide.

    Les restrictions suivantes ont été supprimées lorsque vous définissez des xwatchpointsà l'aide de l'outil de débogage dbx :

  • Définition des xwatchpoint sur des variables locales de la pile en raison des fenêtres de registre du système SPARC.

  • Définition de xwatchpoints sur les processus multithreaded.

Pour plus d'informations, reportez-vous aux pages de manuel proc(4) etmdb(1).

Etablissement de la liste des processus

  • Utilisez la commande ps pour dresser la liste de tous les processus d'un système.
    $ ps [-efc]
    ps

    Affiche uniquement les processus associés à votre session de connexion.

    –ef

    Affiche des informations complètes sur tous les processus en cours d'exécution sur le système.

    –c

    Affiche les informations sur le planificateur de processus.

Exemple 2-1  Liste des processus

L'exemple suivant illustre la sortie de la commande ps lorsque aucune option n'est utilisée.

$ ps
   PID TTY      TIME COMD
  1664 pts/4    0:06 csh
  2081 pts/4    0:00 ps

L'exemple suivant montre la sortie de la commande ps –ef. Cette sortie indique que le premier processus exécuté lorsque le système s'initialise est sched (le swappeur) suivi du processus init, pageout, et ainsi de suite.

$ ps -ef
 UID   PID  PPID   C    STIME TTY         TIME CMD
    root     0     0   0 18:04:04 ?           0:15 sched
    root     5     0   0 18:04:03 ?           0:05 zpool-rpool
    root     1     0   0 18:04:05 ?           0:00 /sbin/init
    root     2     0   0 18:04:05 ?           0:00 pageout
    root     3     0   0 18:04:05 ?           2:52 fsflush
    root     6     0   0 18:04:05 ?           0:02 vmtasks
  daemon   739     1   0 19:03:58 ?           0:00 /usr/lib/nfs/nfs4cbd
    root     9     1   0 18:04:06 ?           0:14 /lib/svc/bin/svc.startd
    root    11     1   0 18:04:06 ?           0:45 /lib/svc/bin/svc.configd
  daemon   559     1   0 18:04:49 ?           0:00 /usr/sbin/rpcbind
  netcfg    47     1   0 18:04:19 ?           0:01 /lib/inet/netcfgd
   dladm    44     1   0 18:04:17 ?           0:00 /sbin/dlmgmtd
  netadm    51     1   0 18:04:22 ?           0:01 /lib/inet/ipmgmtd
    root   372   338   0 18:04:43 ?           0:00 /usr/lib/hal/hald-addon-cpufreq
    root    67     1   0 18:04:30 ?           0:02 /lib/inet/in.mpathd
    root   141     1   0 18:04:38 ?           0:00 /usr/lib/pfexecd
  netadm    89     1   0 18:04:31 ?           0:03 /lib/inet/nwamd
    root   602     1   0 18:04:50 ?           0:02 /usr/lib/inet/inetd start
    root   131     1   0 18:04:35 ?           0:01 /sbin/dhcpagent
  daemon   119     1   0 18:04:33 ?           0:00 /lib/crypto/kcfd
    root   333     1   0 18:04:41 ?           0:07 /usr/lib/hal/hald --daemon=yes
    root   370   338   0 18:04:43 ?           0:00 /usr/lib/hal/hald-addon-network-discovery
    root   159     1   0 18:04:39 ?           0:00 /usr/lib/sysevent/syseventd
    root   236     1   0 18:04:40 ?           0:00 /usr/lib/ldoms/drd
    root   535     1   0 18:04:46 ?           0:09 /usr/sbin/nscd
    root   305     1   0 18:04:40 ?           0:00 /usr/lib/zones/zonestatd
    root   326     1   0 18:04:41 ?           0:03 /usr/lib/devfsadm/devfsadmd
    root   314     1   0 18:04:40 ?           0:00 /usr/lib/dbus-daemon --system
    .
		.
		.

Affichage d'informations sur les processus

  1. Obtenez l'ID du processus dont vous souhaitez afficher plus d'informations.
    # pgrep process

    L'ID de processus s'affiche dans la première colonne de la sortie.

  2. Affichez les informations relatives aux processus.
    # /usr/bin/pcommand PID
    pcommand

    La commande de traitement que vous souhaitez exécuter. Table 2–2 répertorie et décrit ces commandes.

    PID

    Identifie l'ID de processus.

Exemple 2-2  Affichage des informations sur les processus

L'exemple suivant montre comment utiliser les commandes du processus pour afficher plus d'informations sur un processus cron.

# pgrep cron Obtains the process ID for the cron process
4780
# pwdx 4780 Displays the current working directory for the cron process
4780:   /var/spool/cron/atjobs
# ptree 4780 Displays the process tree that contains the cron process
4780  /usr/sbin/cron
# pfiles 4780 Displays fstat and fcntl information
4780:   /usr/sbin/cron
  Current rlimit: 256 file descriptors
   0: S_IFCHR mode:0666 dev:290,0 ino:6815752 uid:0 gid:3 rdev:13,2
      O_RDONLY|O_LARGEFILE
      /devices/pseudo/mm@0:null
   1: S_IFREG mode:0600 dev:32,128 ino:42054 uid:0 gid:0 size:9771
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
      /var/cron/log
   2: S_IFREG mode:0600 dev:32,128 ino:42054 uid:0 gid:0 size:9771
      O_WRONLY|O_APPEND|O_CREAT|O_LARGEFILE
      /var/cron/log
   3: S_IFIFO mode:0600 dev:32,128 ino:42049 uid:0 gid:0 size:0
      O_RDWR|O_LARGEFILE
      /etc/cron.d/FIFO
   4: S_IFIFO mode:0000 dev:293,0 ino:4630 uid:0 gid:0 size:0
      O_RDWR|O_NONBLOCK
   5: S_IFIFO mode:0000 dev:293,0 ino:4630 uid:0 gid:0 size:0
      O_RDWR

Contrôle des processus

  1. Obtenez l'ID du processus à contrôler.
    # pgrep process

    L'ID de processus apparaît dans la première colonne de la sortie.

  2. Utilisez la commande de processus appropriée pour contrôler le processus.
    # /usr/bin/pcommand PID
    pcommand

    La commande de traitement que vous souhaitez exécuter. Table 2–2 répertorie et décrit ces commandes.

    PID

    Identifie l'ID de processus.

  3. Vérifiez l'état du processus.
    # ps -ef | grep PID

Arrêt d'un processus (pkill, kill)

Il peut s'avérer nécessaire d'arrêter (interrompre) un processus qui se trouve dans une boucle infinie ou arrêter un travail volumineuses, avant qu'il ne soit terminé. Vous pouvez interrompre un processus que vous possédez. Un superutilisateur peut interrompre tout processus du système à l'exception des processus dotés des ID 0, 1, 2, 3 et 4. L'interruption de ces processus risque de provoquer la panne du système.

Pour plus d'informations à ce sujet, reportez-vous aux pages de manuel pgrep(1), pkill(1) etkill(1).

Arrêt d'un processus (pkill)

  1. ()Pour mettre fin au processus d'un autre utilisateur, prenez le rôle root.
  2. Obtenez l'ID du processus à terminer.
    $ pgrep process

    Par exemple :

    $ pgrep netscape
    587
    566

    L'ID de processus s'affiche dans la sortie.


    Remarque -  Pour obtenir des informations sur les processus d'un système Sun Ray, utilisez les commandes suivantes :

    Pour obtenir la liste de tous les processus utilisateur, procédez comme suit :

    # ps -fu user

    Pour localiser un de ces processus appartenant à un utilisateur, procédez comme suit :

    # ps -fu user | grep process

  3. Mettez fin au processus.
    $ pkill [signal] PID
    signal

    Lorsque aucun signal n'est inclus dans la syntaxe de ligne de commande pkill, le signal utilisé par défaut est –15 (SIGKILL). L'utilisation du signal –9 (SIGTERM) avec la commande pkill garantit la fin du processus dans les plus brefs délais. Cependant, le signal –9 ne doit pas être utilisé pour arrêter certains processus, par exemple un processus de base de données ou de serveur LDAP.

    PID

    Représente le nom du processus à arrêter.


    Conseil  -  Lorsque vous utilisez la commande pkill pour interrompre un processus, utilisez d'abord la commande proprement dite, sans y inclure une option de signal. Si le traitement ne prend pas fin après quelques minutes, utilisez la commande pkill avec le signal -9.
  4. Vérifiez que le processus a été interrompu.
    $ pgrep process

    Le processus interrompu ne doit plus figurer dans la sortie de la commande pgrep.

Arrêt d'un processus (kill)

  1. ()Pour mettre fin au processus d'un autre utilisateur, prenez le rôle root.
  2. Obtenez l'ID du processus à arrêter.
    # ps -fu user

    user est le propriétaire du processus.

    L'ID de processus s'affiche dans la première colonne de la sortie.

  3. Mettez fin au processus.
    # kill [signal-number] PID
    signal

    Lorsque aucun signal n'est inclus dans la syntaxe de ligne de commande kill, le signal utilisé par défaut est –15 (SIGKILL). L'utilisation du signal –9 (SIGTERM) avec la commande kill garantit la fin du processus dans les plus brefs délais. Cependant, le signal –9 ne doit pas être utilisé pour arrêter certains processus, par exemple un processus de base de données ou de serveur LDAP.

    PID

    Représente l'ID du processus à arrêter.


    Conseil  - Lorsque vous utilisez la commande kill pour arrêter un processus, utilisez d'abord la commande proprement dite, sans y inclure une option de signal. Attendez quelques minutes pour voir si le processus se termine avant d'utiliser la commande kill avec le signal -9.
  4. Vérifiez que le processus a été interrompu.
    $ ps

    Le processus interrompu ne doit plus figurer dans la sortie de la commande pgrep.

Débogage d'un processus (pargs, preap)

Les commandes pargs et preap améliorent le débogage des processus. La commande pargs imprime les arguments et les variables d'environnement associées à un processus en direct ou à un dump noyau. La commande preap supprime les processus défunts (zombies). Un processus zombie n'a pas encore vu son état de sortie réclamé par son parent. Ces processus sont généralement inoffensifs mais peuvent consommer des ressources système s'ils sont nombreux. Vous pouvez utiliser les commandes pargs et preap pour examiner les processus dont vous souhaitez examiner les privilèges. Lorsque vous vous connectez en tant qu'administrateur, vous pouvez examiner les processus.

Pour plus d'informations sur l'utilisation de la commande preap, reportez-vous à la page de manuel preap(1). Pour plus d'informations sur l'utilisation de la commande pargs, reportez-vous à la page de manuel pargs(1). Reportez-vous également à la page de manuel proc(1).

Exemple 2-3  Débogage d'un processus (pargs)

La commande pargs résout un problème de longue date lié à l'impossibilité d'afficher avec la commande ps tous les arguments transmis à un processus. L'exemple suivant illustre comment utiliser la commande pargs avec la commande pgrep pour afficher les arguments transmis à un processus.

# pargs `pgrep ttymon`
579:	/usr/lib/saf/ttymon -g -h -p system-name console login:  
-T sun -d /dev/console -l 
argv[0]: /usr/lib/saf/ttymon
argv[1]: -g
argv[2]: -h
argv[3]: -p
argv[4]: system-name console login: 
argv[5]: -T
argv[6]: sun
argv[7]: -d
argv[8]: /dev/console
argv[9]: -l
argv[10]: console
argv[11]: -m
argv[12]: ldterm,ttcompat
548:	/usr/lib/saf/ttymon
argv[0]: /usr/lib/saf/ttymon

L'exemple suivant illustre comment utiliser la commande pargs– e pour afficher les variables d'environnement associées à un processus.

$ pargs -e 6763
6763: tcsh
envp[0]: DISPLAY=:0.0