Le tableau suivant décrit les commandes de gestion des processus système.
|
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).
L'ID de processus.
ID du processus parent.
Utilisation du processeur à des fins de programmation. Ce champ n'est pas affiché lorsque l'option –c est utilisée.
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.
Priorité de programmation du thread de noyau. Un nombre plus élevé indique une priorité plus élevée.
Numéro nice du processus, qui contribue à sa priorité de programmation. Rendre un processus plus ''nice'' équivaut à abaisser sa priorité.
Adresse de la structure proc.
Taille d'adresse virtuelle du processus.
Adresse d'un événement ou verrou pour lequel le processus est en veille.
Heure de début du processus (en heures, minutes et secondes).
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.
Quantité totale du temps CPU utilisé par le processus depuis son démarrage.
Commande qui a généré le processus.
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.
|
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
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).
$ ps [-efc]
Affiche uniquement les processus associés à votre session de connexion.
Affiche des informations complètes sur tous les processus en cours d'exécution sur le système.
Affiche les informations sur le planificateur de 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 . . .
# pgrep process
L'ID de processus s'affiche dans la première colonne de la sortie.
# /usr/bin/pcommand PID
La commande de traitement que vous souhaitez exécuter. Table 2–2 répertorie et décrit ces commandes.
Identifie l'ID de 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
# pgrep process
L'ID de processus apparaît dans la première colonne de la sortie.
# /usr/bin/pcommand PID
La commande de traitement que vous souhaitez exécuter. Table 2–2 répertorie et décrit ces commandes.
Identifie l'ID de processus.
# ps -ef | grep PID
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).
$ pgrep process
Par exemple :
$ pgrep netscape 587 566
L'ID de processus s'affiche dans la sortie.
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
$ pkill [signal] PID
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.
Représente le nom du processus à arrêter.
$ pgrep process
Le processus interrompu ne doit plus figurer dans la sortie de la commande pgrep.
# ps -fu user
où user est le propriétaire du processus.
L'ID de processus s'affiche dans la première colonne de la sortie.
# kill [signal-number] PID
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.
Représente l'ID du processus à arrêter.
$ ps
Le processus interrompu ne doit plus figurer dans la sortie de la commande pgrep.
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