Guía de administración de sistemas: administración de recursos y contenedores de Oracle Solaris y zonas de Oracle Solaris

Capítulo 3 Administración de proyectos y tareas

En este capítulo se describe cómo utilizar las funciones de proyectos y tareas de la administración de recursos de Solaris.

Se tratan los temas siguientes.

Para obtener una descripción general de las funciones de proyectos y tareas, consulte el Capítulo 2Proyectos y tareas (información general).


Nota –

Si utiliza estas funciones en un sistema Solaris con zonas instaladas, sólo los procesos de la misma zona estarán visibles en las interfaces de llamada del sistema que obtengan ID de proceso cuando se ejecuten estos comandos en una zona no global.


Administración de proyectos y tareas (mapa de tareas)

Tarea 

Descripción 

Para obtener instrucciones 

Ver ejemplos de comandos y opciones que se utilizan con proyectos y tareas. 

Muestra ID de proyectos y tareas, varias estadísticas para los procesos y los proyectos que se ejecutan en el sistema. 

Ejemplos y opciones de comandos

Definir un proyecto. 

Añade una entrada de proyecto al archivo /etc/project y modifica los valores para dicha entrada.

Cómo definir un proyecto y ver el proyecto actual

Eliminar un proyecto. 

Elimina una entrada de proyecto del archivo /etc/project.

Cómo eliminar un proyecto del archivo /etc/project

Validar el archivo project o la base de datos del proyecto.

Comprueba la sintaxis del archivo /etc/project o verifica la exclusividad del nombre y el ID del proyecto con el servicio de nombres externo.

Cómo validar el contenido del archivo /etc/project

Obtener información sobre la pertenencia del proyecto a un grupo. 

Muestra la pertenencia del proyecto actual a un grupo del proceso que ejecuta el comando. 

Cómo obtener información sobre la pertenencia de un proyecto a un grupo

Crear una tarea. 

Crea una tarea en un proyecto específico utilizando el comando newtask.

Cómo crear una tarea

Asociar un proceso en ejecución con un proyecto y una tarea diferentes. 

Asocia un número de proceso con un ID de tarea nuevo en un proyecto específico. 

Cómo mover un proceso en ejecución a una nueva tarea

Añadir y trabajar con atributos de proyecto. 

Utiliza los comandos de administración de la base de datos del proyecto para añadir, editar, validar y eliminar atributos del proyecto. 

Edición y validación de atributos de proyecto

Ejemplos y opciones de comandos

En esta sección se incluyen ejemplos de comandos y opciones que se utilizan con proyectos y tareas.

Opciones de comandos utilizadas con proyectos y tareas

Comando ps

Utilice el comando ps con la opción -o para ver los ID de proyectos y tareas. Por ejemplo, para ver el ID de proyecto, escriba:


# ps -o user,pid,uid,projid
USER PID   UID  PROJID
jtd  89430 124  4113

Comando id

Utilice el comando id con la opción -p para imprimir el ID de proyecto actual además de los ID de grupo y usuario. Si se proporciona el operando user, se imprime el proyecto asociado con el inicio de sesión normal del usuario:


#  id -p
uid=124(jtd) gid=10(staff) projid=4113(booksite)

Comandos pgrep y pkill

Para hacer coincidir sólo los procesos con un ID de proyecto en una lista específica, utilice los comandos pgrep y pkill con la opción -J:


# pgrep -J projidlist
# pkill -J projidlist

Para hacer coincidir sólo los procesos con un ID de tarea en una lista específica, utilice los comandos pgrep y pkill con la opción -T:


# pgrep -T taskidlist
# pkill -T taskidlist

Comando prstat

Para mostrar varias estadísticas para procesos y proyectos que se ejecutan en el sistema, utilice el comando prstat con la opción -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

Para mostrar varias estadísticas para procesos y tareas que se ejecutan en el sistema, utilice el comando prstat con la opción -T:


% 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	

Nota –

Las opciones -J y -T no se pueden utilizar de forma simultánea.


Uso de cron y su con proyectos y tareas

Comando cron

El comando cron emite settaskid para asegurarse de que cada tarea cron, at y batch se ejecute en una tarea distinta, con el proyecto predeterminado adecuado para el usuario que realiza el envío. Los comandos at y batch también capturan el ID de proyecto actual, lo que garantiza que el ID de proyecto se restablezca al ejecutar una tarea at.

Comando su

El comando su se une al proyecto predeterminado del usuario de destino al crear una tarea nueva, como parte de la simulación de un inicio de sesión.

Para alternar el proyecto predeterminado del usuario con el comando su, escriba:


# su user

Administración de proyectos

ProcedureCómo definir un proyecto y ver el proyecto actual

En este ejemplo se describe cómo utilizar el comando projadd para añadir una entrada de proyecto y el comando projmod para modificar dicha entrada.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Visualice el archivo /etc/project predeterminado en el sistema utilizando 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. Añada un proyecto con el nombre booksite. Asigne el proyecto a un usuario con el nombre mark con el número de ID de proyecto 4113.


    # projadd -U mark -p 4113 booksite
    
  4. Vuelva a visualizar el archivo /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. Añada un comentario que describa el proyecto en el campo de comentarios.


    # projmod -c `Book Auction Project' booksite
    
  6. Visualice los cambios en el archivo /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: 
Véase también

Para vincular proyectos, tareas y procesos con una agrupación, consulte Configuración de atributos de agrupaciones y vinculación a una agrupación.

ProcedureCómo eliminar un proyecto del archivo /etc/project

En este ejemplo se muestra cómo utilizar el comando projdel para eliminar un proyecto.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Elimine el proyecto booksite utilizando el comando projdel.


    # projdel booksite
    
  3. Visualice el archivo /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. Inicie sesión como usuario mark y escriba projects para ver los proyectos asignados al usuario.


    # su - mark
    # projects
    default

Cómo validar el contenido del archivo /etc/project

Si no se facilitan opciones de edición, el comando projmod valida el contenido del archivo project.

Para validar una asignación NIS, como superusuario, escriba:


# ypcat project | projmod -f —

Nota –

El comando ypcat project | projmod -f — no se ha implementado todavía.


Para comprobar la sintaxis del archivo /etc/project, escriba:


# projmod -n

Cómo obtener información sobre la pertenencia de un proyecto a un grupo

Utilice el comando id con la etiqueta -p para mostrar la pertenencia del proyecto actual a un grupo del proceso que ejecuta el comando.


$ id -p
uid=100(mark) gid=1(other) projid=3(default)

ProcedureCómo crear una tarea

  1. Inicie sesión como miembro del proyecto de destino, booksite.

  2. Cree una tarea en el proyecto booksite utilizando el comando newtask con la opción -v (detallado) para obtener el ID de tarea del sistema.


    machine% newtask -v -p booksite
    16

    La ejecución de newtask crea una tarea en el proyecto especificado, y coloca el shell predeterminado del usuario en esta tarea.

  3. Visualice la pertenencia del proyecto actual a un grupo del proceso que ejecuta el comando.


    machine% id -p
    uid=100(mark) gid=1(other) projid=4113(booksite)

    El proceso ahora es miembro del nuevo proyecto.

ProcedureCómo mover un proceso en ejecución a una nueva tarea

Este ejemplo muestra cómo asociar un proceso en ejecución con una tarea diferente y un proyecto nuevo. Para ejecutar esta acción, debe ser un superusuario o el propietario del proceso y miembro del proyecto nuevo.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.


    Nota –

    Si es el propietario del proceso o un miembro del proyecto nuevo, puede omitir este paso.


  2. Obtenga el ID de proceso de catálogo_guías.


    # pgrep book_catalog
    	8100
  3. Asocie el proceso 8100 con un nuevo ID de tarea en el proyecto booksite.


    # newtask -v -p booksite -c 8100
    	17

    La opción -c especifica que newtask opera en el proceso con nombre existente.

  4. Confirme la tarea para procesar la asignación de ID.


    # pgrep -T 17
    	8100

Edición y validación de atributos de proyecto

Puede utilizar los comandos de administración de bases de datos de proyecto projadd y projmod para editar los atributos del proyecto.

La opción -K especifica una lista de sustitución de los atributos. Los atributos se delimitan con puntos y coma (;). Si se utiliza la opción -K con la opción -a, se añade el atributo o el valor de atributo. Si se utiliza la opción -K con la opción -r, se elimina el atributo o el valor de atributo. Si se utiliza la opción -K con la opción - s, se sustituye el atributo o el valor de atributo.

ProcedureCómo añadir atributos y valores de atributos a los proyectos

Utilice el comando projmod con las opciones -a y - K para añadir valores a un atributo de proyecto. Si el atributo no existe, se crea.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Añada el atributo de control de recursos task.max-lwps sin valores en el proyecto myproject. Una tarea que se introduce en el proyecto sólo tiene el valor de sistema para el atributo.


    # projmod -a -K task.max-lwps myproject
    
  3. A continuación, puede añadir un valor para task.max-lwps en el proyecto myproject. El valor se compone de un nivel de privilegio, un valor umbral y una acción asociada con el umbral.


    # projmod -a -K "task.max-lwps=(priv,100,deny)" myproject
    
  4. Dado que los controles de recursos pueden tener varios valores, puede añadir otro valor a la lista utilizando las mismas opciones.


    # projmod -a -K "task.max-lwps=(priv,1000,signal=KILL)" myproject
    

    Los valores múltiples se separan con comas. La entrada task.max-lwps ahora es:


    task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)

ProcedureCómo eliminar valores de atributo de los proyectos

Este procedimiento da por sentados los valores:


task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)
  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Para eliminar un valor de atributo del control de recursos task.max-lwps en el proyecto myproject, utilice el comando projmod con las opciones -r y -K.


    # projmod -r -K "task.max-lwps=(priv,100,deny)" myproject
    

    Si task.max-lwps tiene múltiples valores, como:


    task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL)

    se eliminará el primer valor coincidente. El resultado sería:


    task.max-lwps=(priv,1000,signal=KILL)

ProcedureCómo eliminar un atributo de control de recursos de un proyecto

Para eliminar el control de recursos task.max-lwps del proyecto myproject, utilice el comando projmod con las opciones - r y -K.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Elimine el atributo task.max-lwps y todos sus valores del proyecto myproject:


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

ProcedureCómo sustituir atributos y valores de atributos para los proyectos

Para sustituir un valor diferente para el atributo task.max-lwps en el proyecto myproject, utilice el comando projmod con las opciones -s y -K. Si el atributo no existe, se crea.

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Sustituya los valores task.max-lwps actuales con los nuevos valores:


    # projmod -s -K "task.max-lwps=(priv,100,none),(priv,120,deny)" myproject
    

    El resultado sería:


    task.max-lwps=(priv,100,none),(priv,120,deny)

ProcedureCómo eliminar los valores existentes para un atributo de control de recursos

  1. Conviértase en superusuario o asuma una función similar.

    Las funciones incluyen autorizaciones y comandos con privilegios. Para obtener más información sobre las funciones, consulte Using the Solaris Management Tools With RBAC (Task Map) de System Administration Guide: Basic Administration.

  2. Para eliminar los valores actuales para task.max-lwps del proyecto myproject, escriba:


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