Guide d'administration système : Gestion des ressources des conteneurs et des zones Oracle Solaris

Chapitre 3 Administration des projets et des tâches

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).


Remarque –

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.


Administration des projets et des tâches (liste des tâches)

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. 

Exemples de commandes et d'options de commande

Définir un projet 

Ajout d'une entrée de projet dans le fichier /etc/project et modification des valeurs pour cette entrée.

Définition d'un projet et affichage du projet actuel

Supprimer un projet 

Suppression d'une entrée de projet du fichier /etc/project.

Suppression d'un 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.

Validation du contenu du fichier /etc/project

Obtenir des informations relatives aux données d'appartenance au projet 

Affichage des critères d'appartenance actuelle au projet du processus appelant. 

Obtention des informations d'appartenance au projet

Créer une tâche 

Création d'une tâche dans un projet particulier à l'aide de la commande newtask.

Création d'une tâche

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é. 

Transfert d'un processus en cours vers une nouvelle tâche

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. 

Modification et validation des attributs de projet

Exemples de commandes et d'options de commande

Cette section propose différents exemples illustrant l'utilisation des commandes et des options avec des projets et des tâches.

Options de commande utilisées avec les projets et les tâches

Commande ps

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

Commande id

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)

Commandes pgrep et pkill

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

Commande prstat

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	

Remarque –

Il est impossible d'utiliser conjointement les options -J et -T.


Application des commandes cron et su aux projets et aux tâches

Commande cron

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.

Commande su

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

Administration des projets

ProcedureDéfinition d'un projet et affichage du projet actuel

Cet exemple montre comment utiliser la commande projadd pour ajouter une entrée de projet et la commande projmod pour modifier cette entrée.

  1. 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.

  2. 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: 
  3. 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
    
  4. 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: 
  5. Ajoutez un commentaire de description du projet dans le champ prévu à cet effet.


    # projmod -c `Book Auction Project' booksite
    
  6. 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: 
Voir aussi

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.

ProcedureSuppression d'un projet du fichier /etc/project

Cet exemple montre comment utiliser la commande projdel pour supprimer un projet.

  1. 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.

  2. Effacez le projet site-livre à l'aide de la commande projdel.


    # projdel booksite
    
  3. 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: 
  4. 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

Validation du contenu du fichier /etc/project

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 —

Remarque –

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

Obtention des informations d'appartenance au projet

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)

ProcedureCréation d'une tâche

  1. Connectez-vous en tant que membre du projet de destination, site-livre.

  2. 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.

  3. 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.

ProcedureTransfert d'un processus en cours vers une nouvelle tâche

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.

  1. 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.


    Remarque –

    Si vous êtes le propriétaire du processus ou un membre du nouveau projet, vous pouvez ignorer cette étape.


  2. Obtenez l'ID du processus catalogue_livres.


    # pgrep book_catalog
    	8100
  3. 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.

  4. Confirmez la tâche pour procéder à la correspondance de l'ID.


    # pgrep -T 17
    	8100

Modification et validation des attributs de projet

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.

ProcedureAjout d'attributs et de valeurs d'attribut à des projets

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éé.

  1. 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.

  2. 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
    
  3. 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
    
  4. É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)

ProcedureSuppression des valeurs d'attribut des projets

Cette procédure suppose que les valeurs suivantes ont été définies :


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
  1. 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.

  2. 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)

ProcedureSuppression d'un attribut de contrôle de ressource d'un projet

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.

  1. 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.

  2. Supprimez l'attribut task.max-lwps et toutes ses valeurs du projet mon-projet :


    # projmod -r -K task.max-lwps myproject
    

ProcedureRemplacement des attributs et des valeurs d'attribut des projets

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éé.

  1. 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.

  2. 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)

ProcedureSuppression des valeurs existantes pour un attribut de contrôle de ressource

  1. 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.

  2. 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