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).
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.
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. | |
Definir un proyecto. |
Añade una entrada de proyecto al archivo /etc/project y modifica los valores para dicha entrada. | |
Eliminar un proyecto. |
Elimina una entrada de 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. | |
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. | |
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. | |
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. |
En esta sección se incluyen ejemplos de comandos y opciones que se utilizan con proyectos y tareas.
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 |
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) |
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 |
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 |
Las opciones -J y -T no se pueden utilizar de forma simultánea.
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.
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 |
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.
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.
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: |
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 |
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: |
Añada un comentario que describa el proyecto en el campo de comentarios.
# projmod -c `Book Auction Project' booksite |
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: |
Para vincular proyectos, tareas y procesos con una agrupación, consulte Configuración de atributos de agrupaciones y vinculación a una agrupación.
En este ejemplo se muestra cómo utilizar el comando projdel para eliminar un proyecto.
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.
Elimine el proyecto booksite utilizando el comando projdel.
# projdel booksite |
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: |
Inicie sesión como usuario mark y escriba projects para ver los proyectos asignados al usuario.
# su - mark # projects default |
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 — |
El comando ypcat project | projmod -f — no se ha implementado todavía.
Para comprobar la sintaxis del archivo /etc/project, escriba:
# projmod -n |
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) |
Inicie sesión como miembro del proyecto de destino, booksite.
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.
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.
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.
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.
Si es el propietario del proceso o un miembro del proyecto nuevo, puede omitir este paso.
Obtenga el ID de proceso de catálogo_guías.
# pgrep book_catalog 8100 |
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.
Confirme la tarea para procesar la asignación de ID.
# pgrep -T 17 8100 |
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.
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.
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.
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 |
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 |
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) |
Este procedimiento da por sentados los valores:
task.max-lwps=(priv,100,deny),(priv,1000,signal=KILL) |
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.
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) |
Para eliminar el control de recursos task.max-lwps del proyecto myproject, utilice el comando projmod con las opciones - r y -K.
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.
Elimine el atributo task.max-lwps y todos sus valores del proyecto myproject:
# projmod -r -K task.max-lwps myproject |
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.
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.
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) |
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.
Para eliminar los valores actuales para task.max-lwps del proyecto myproject, escriba:
# projmod -s -K task.max-lwps myproject |