Ce chapitre explique comment utiliser les utilitaires de gestion de projets et de tâches du système d'administration des ressources Solaris.
Ce chapitre contient les sections suivantes.
Pour avoir un aperçu des utilitaires de projets et de tâches, reportez-vous au Chapitre 2Projets et tâches (présentation).
Si vous comptez exécuter ces utilitaires sur un système Solaris possédant des zones, seuls les processus appartenant à la même zone seront visibles par le biais des interfaces faisant appel au système et aux ID de processus lors de l'exécution de ces commandes dans une zone non globale.
Tâche |
Description |
Voir |
---|---|---|
Afficher des exemples des commandes et des options utilisées avec les projets et les tâches |
Présentation des ID des tâches et des projets, affichage de statistiques variées au sujet des processus et des projets en cours d'exécution sur votre système. | |
Définir un projet |
Ajout d'une entrée de projet dans le fichier /etc/project et modification des valeurs pour cette entrée. | |
Supprimer un projet |
Suppression d'une entrée de projet du fichier /etc/project. | |
Valider le fichier de projet ou la base de données du projet |
Vérification de la syntaxe du fichier /etc/project ou du caractère non ambigü du nom et de l'ID de projet par comparaison avec le service d'attribution de noms externe. | |
Obtenir des informations relatives aux données d'appartenance au projet |
Affichage des critères d'appartenance actuelle au projet du processus appelant. | |
Créer une tâche |
Création d'une tâche dans un projet particulier à l'aide de la commande newtask. | |
Associer un processus en cours à une autre tâche ou un autre projet |
Association d'un numéro de processus à un autre ID de tâche dans un projet donné. | |
Ajouter et traiter des attributs de projet |
Utilisation des commandes d'administration de la base de données du projet pour ajouter, modifier, valider et supprimer des attributs de projet. |
Cette section propose différents exemples illustrant l'utilisation des commandes et des options avec des projets et des tâches.
Servez-vous de la commande ps et de l'option -o pour afficher les ID de tâche et de projet. Pour connaître l'ID de projet, par exemple, entrez l'instruction suivante :
# ps -o user,pid,uid,projid USER PID UID PROJID jtd 89430 124 4113 |
Associez la commande id à l'option -p pour obtenir l'ID de projet actuel en plus des ID d'utilisateur et de groupe. Il suffit de spécifier l'opérande user pour connaître le projet correspondant à l'identifiant de connexion normal de cet utilisateur :
# id -p uid=124(jtd) gid=10(staff) projid=4113(booksite) |
Pour ne sélectionner que les processus correspondant à un ID de projet dans une liste donnée, exécutez les commandes pgrep et pkill avec l'option -J :
# pgrep -J projidlist # pkill -J projidlist |
Pour ne sélectionner que les processus correspondant à un ID de tâche dans une liste donnée, exécutez les commandes pgrep et pkill avec l'option -T :
# pgrep -T taskidlist # pkill -T taskidlist |
Pour obtenir différentes statistiques au sujet des processus et des projets en cours d'exécution sur votre système, exécutez la commande prstat avec l'option -J :
% prstat -J PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 21634 jtd 5512K 4848K cpu0 44 0 0:00.00 0.3% prstat/1 324 root 29M 75M sleep 59 0 0:08.27 0.2% Xsun/1 15497 jtd 48M 41M sleep 49 0 0:08.26 0.1% adeptedit/1 328 root 2856K 2600K sleep 58 0 0:00.00 0.0% mibiisa/11 1979 jtd 1568K 1352K sleep 49 0 0:00.00 0.0% csh/1 1977 jtd 7256K 5512K sleep 49 0 0:00.00 0.0% dtterm/1 192 root 3680K 2856K sleep 58 0 0:00.36 0.0% automountd/5 1845 jtd 24M 22M sleep 49 0 0:00.29 0.0% dtmail/11 1009 jtd 9864K 8384K sleep 49 0 0:00.59 0.0% dtwm/8 114 root 1640K 704K sleep 58 0 0:01.16 0.0% in.routed/1 180 daemon 2704K 1944K sleep 58 0 0:00.00 0.0% statd/4 145 root 2120K 1520K sleep 58 0 0:00.00 0.0% ypbind/1 181 root 1864K 1336K sleep 51 0 0:00.00 0.0% lockd/1 173 root 2584K 2136K sleep 58 0 0:00.00 0.0% inetd/1 135 root 2960K 1424K sleep 0 0 0:00.00 0.0% keyserv/4 PROJID NPROC SIZE RSS MEMORY TIME CPU PROJECT 10 52 400M 271M 68% 0:11.45 0.4% booksite 0 35 113M 129M 32% 0:10.46 0.2% system Total: 87 processes, 205 lwps, load averages: 0.05, 0.02, 0.02 |
Pour obtenir différentes statistiques au sujet des processus et des tâches en cours d'exécution sur votre système, exécutez la commande prstat avec l'option -J :
% prstat -T PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP 23023 root 26M 20M sleep 59 0 0:03:18 0.6% Xsun/1 23476 jtd 51M 45M sleep 49 0 0:04:31 0.5% adeptedit/1 23432 jtd 6928K 5064K sleep 59 0 0:00:00 0.1% dtterm/1 28959 jtd 26M 18M sleep 49 0 0:00:18 0.0% .netscape.bin/1 23116 jtd 9232K 8104K sleep 59 0 0:00:27 0.0% dtwm/5 29010 jtd 5144K 4664K cpu0 59 0 0:00:00 0.0% prstat/1 200 root 3096K 1024K sleep 59 0 0:00:00 0.0% lpsched/1 161 root 2120K 1600K sleep 59 0 0:00:00 0.0% lockd/2 170 root 5888K 4248K sleep 59 0 0:03:10 0.0% automountd/3 132 root 2120K 1408K sleep 59 0 0:00:00 0.0% ypbind/1 162 daemon 2504K 1936K sleep 59 0 0:00:00 0.0% statd/2 146 root 2560K 2008K sleep 59 0 0:00:00 0.0% inetd/1 122 root 2336K 1264K sleep 59 0 0:00:00 0.0% keyserv/2 119 root 2336K 1496K sleep 59 0 0:00:02 0.0% rpcbind/1 104 root 1664K 672K sleep 59 0 0:00:03 0.0% in.rdisc/1 TASKID NPROC SIZE RSS MEMORY TIME CPU PROJECT 222 30 229M 161M 44% 0:05:54 0.6% group.staff 223 1 26M 20M 5.3% 0:03:18 0.6% group.staff 12 1 61M 33M 8.9% 0:00:31 0.0% group.staff 1 33 85M 53M 14% 0:03:33 0.0% system Total: 65 processes, 154 lwps, load averages: 0.04, 0.05, 0.06 |
Il est impossible d'utiliser conjointement les options -J et -T.
La commande cron émet une instruction settaskid pour s'assurer que chaque opération cron, at et batch s'exécute dans une tâche distincte et que le projet par défaut de l'initiateur de la commande convient. Les commandes at et batch permettent également de capturer l'ID de projet actuel, ce qui garantit la restauration de l'ID de projet lors de l'exécution d'une opération at.
La commande su rejoint le projet par défaut de l'utilisateur cible en créant une tâche lors de la simulation d'une connexion.
Pour passer au projet par défaut de l'utilisateur à l'aide de la commande su, entrez la commande suivante :
# su user |
Cet exemple montre comment utiliser la commande projadd pour ajouter une entrée de projet et la commande projmod pour modifier cette entrée.
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Affichez le fichier /etc/project par défaut sur votre système à l'aide de l'instruction projects -l.
# projects -l system:0:::: user.root:1:::: noproject:2:::: default:3:::: group.staff:10::::system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: |
Ajoutez un projet intitulé site-livre. Assignez le projet à un utilisateur appelé mark et possédant l'ID 4113.
# projadd -U mark -p 4113 booksite |
Affichez à nouveau le fichier /etc/project.
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: booksite projid : 4113 comment: "" users : mark groups : (none) attribs: |
Ajoutez un commentaire de description du projet dans le champ prévu à cet effet.
# projmod -c `Book Auction Project' booksite |
Vérifiez les modifications dans le fichier /etc/project .
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: booksite projid : 4113 comment: "Book Auction Project" users : mark groups : (none) attribs: |
Pour lier des projets, des tâches et des processus à un pool, reportez-vous à la section Définition des attributs des pools et liaison à un pool.
Cet exemple montre comment utiliser la commande projdel pour supprimer un projet.
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Effacez le projet site-livre à l'aide de la commande projdel.
# projdel booksite |
Affichez le fichier /etc/project.
# projects -l system projid : 0 comment: "" users : (none) groups : (none) attribs: user.root projid : 1 comment: "" users : (none) groups : (none) attribs: noproject projid : 2 comment: "" users : (none) groups : (none) attribs: default projid : 3 comment: "" users : (none) groups : (none) attribs: group.staff projid : 10 comment: "" users : (none) groups : (none) attribs: |
Connectez-vous sous le nom d'utilisateur mark et tapez projects pour afficher la liste des projets assignés à cet utilisateur.
# su - mark # projects default |
En l'absence d'option d'édition, la commande projmod valide le contenu du fichier project.
Pour valider une carte NIS, en tant que superutilisateur, entrez l'instruction suivante :
# ypcat project | projmod -f — |
La commande ypcat project | projmod -f — n'est pas encore implémentée.
Pour vérifier la syntaxe du fichier /etc/project, entrez l'instruction suivante :
# projmod -n |
Associez la commande id à l'indicateur -p pour afficher l'appartenance actuelle au projet du processus d'appel.
$ id -p uid=100(mark) gid=1(other) projid=3(default) |
Connectez-vous en tant que membre du projet de destination, site-livre.
Définissez une nouvelle tâche dans le projet site-livre en exécutant la commande newtask avec l'option -v (mode détaillé) afin d'obtenir l'ID de la tâche système.
machine% newtask -v -p booksite 16 |
L'exécution de la commande newtask a pour effet de créer une tâche dans le projet indiqué et de placer le shell par défaut de l'utilisateur dans cette tâche.
Affichez les critères d'appartenance actuelle au projet du processus appelant.
machine% id -p uid=100(mark) gid=1(other) projid=4113(booksite) |
Le processus fait désormais partie du nouveau projet.
Cet exemple montre comment associer un processus en cours d'exécution à une autre tâche et à un nouveau projet. Seul le superutilisateur ou le propriétaire du processus est en droit d'effectuer cette action. Il est indispensable également de faire partie des membres du nouveau projet.
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Si vous êtes le propriétaire du processus ou un membre du nouveau projet, vous pouvez ignorer cette étape.
Obtenez l'ID du processus catalogue_livres.
# pgrep book_catalog 8100 |
Associez le processus 8100 à un nouvel ID de tâche dans le projet site-livre.
# newtask -v -p booksite -c 8100 17 |
L'option -c indique que la commande newtask s'applique au processus nommé existant.
Confirmez la tâche pour procéder à la correspondance de l'ID.
# pgrep -T 17 8100 |
Vous pouvez vous servir des commandes d'administration de la base de données de projet (projadd et projmod) pour modifier les attributs du projet.
L'option -K affiche une liste d'attributs de remplacement. Les attributs sont délimités par un point-virgule (;). Le fait d'associer l'option -K à l'option -a permet d'ajouter l'attribut ou la valeur de l'attribut. En revanche, associer l'option -K à l'option -r a pour effet de retirer l'attribut ou la valeur d'attribut. Combiner l'option -K à l'option -s permet de remplacer l'attribut ou la valeur d'attribut.
Exécutez la commande projmod avec les options -a et -K pour ajouter des valeurs à un attribut de projet. Si l'attribut n'existe pas, il est créé.
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Ajoutez un attribut de contrôle de ressource task.max-lwps sans valeur au projet mon-projet. Une tâche accédant au projet possède uniquement la valeur système en guise d'attribut.
# projmod -a -K task.max-lwps myproject |
Insérez ensuite une valeur à l'attribut task.max-lwps dans le projet mon-projet. La valeur correspond à un niveau de privilège, à une valeur de seuil et à une action associée au seuil.
# projmod -a -K "task.max-lwps=(priv,100,deny)" myproject |
Étant donné que les contrôles de ressource peuvent être définis par plusieurs valeurs, vous êtes libre de compléter la liste de valeurs actuelle en utilisant les mêmes options.
# projmod -a -K "task.max-lwps=(priv,1000,signal=KILL)" myproject |
Les différentes valeurs sont séparées par des virgules. L'entrée task.max-lwps se présente désormais comme suit :
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
Cette procédure suppose que les valeurs suivantes ont été définies :
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Pour retirer une valeur d'attribut du contrôle de ressource task.max-lwps dans le projet mon-projet, exécutez la commande projmod avec les options -r et -K.
# projmod -r -K "task.max-lwps=(priv,100,deny)" myproject |
Si l'attribut task.max-lwps possède plusieurs valeurs telles que :
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
Le programme élimine la première valeur qui correspond. Vous obtenez le résultat suivant :
task.max-lwps=(priv,1000,signal=KILL) |
Pour retirer le contrôle de ressource task.max-lwps dans le projet mon-projet, exécutez la commande projmod avec les options -r et -K.
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Supprimez l'attribut task.max-lwps et toutes ses valeurs du projet mon-projet :
# projmod -r -K task.max-lwps myproject |
Pour remplacer une valeur de l'attribut task.max-lwps dans le projet mon-projet, exécutez la commande projmod avec les options -s et -K. Si l'attribut n'existe pas, il est créé.
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Remplacez les valeurs task.max-lwps actuelles par les nouvelles valeurs affichées :
# projmod -s -K "task.max-lwps=(priv,100,none),(priv,120,deny)" myproject |
Vous obtenez le résultat suivant :
task.max-lwps=(priv,100,none),(priv,120,deny) |
Connectez-vous en tant que superutilisateur ou prenez un rôle équivalent.
Les rôles contiennent des autorisations et des commandes privilégiées. Pour plus d'informations au sujet des rôles, reportez-vous à la section Using the Solaris Management Tools With RBAC (Task Map) du System Administration Guide: Basic Administration.
Pour supprimer les valeurs actuelles de l'attribut task.max-lwps dans le projet mon-projet, entrez l'instruction suivante :
# projmod -s -K task.max-lwps myproject |