JavaScript is required to for searching.
Omitir Vínculos de navegación
Salir de la Vista de impresión
Gestión del rendimiento, los procesos y la información del sistema en Oracle Solaris 11.1     Oracle Solaris 11.1 Information Library (Español)
search filter icon
search icon

Información del documento

Prefacio

1.  Gestión de información del sistema (tareas)

2.  Gestión de procesos del sistema (tareas)

Novedades en la gestión de procesos del sistema

Procesos del pseudosistema

Gestión de procesos del sistema

Gestión de procesos del sistema (mapa de tareas)

Comandos para gestionar procesos del sistema

Uso del comando ps

Uso de comandos y sistema de archivos /proc

Gestión de procesos con comandos de proceso (/proc)

Cómo mostrar procesos

Cómo visualizar información sobre los procesos

Cómo controlar procesos

Terminación de un proceso (pkill, kill)

Cómo terminar un proceso (pkill)

Cómo terminar un proceso (kill)

Depuración de un proceso (pargs, preap)

Gestión de información de clase de proceso

Gestión de información de clase de proceso (mapa de tareas)

Cambio de prioridad de programación de procesos (priocntl)

Cómo visualizar información básica sobre clases de proceso (priocntl)

Cómo visualizar la prioridad global de un proceso

Cómo designar una prioridad de proceso (priocntl)

Cómo cambiar los parámetros de programación de un proceso de tiempo compartido (priocntl)

Cómo cambiar la clase de un proceso (priocntl)

Cambio de prioridad de un proceso de tiempo compartido (nice)

Cómo cambiar la prioridad de un proceso (nice)

Resolución de problemas de procesos del sistema

3.  Supervisión del rendimiento del sistema (tareas)

4.  Programación de tareas del sistema (tareas)

5.  Gestión de la consola del sistema, dispositivos del terminal y servicios de energía (tareas)

Índice

Gestión de procesos del sistema

En esta sección, se describen las distintas tareas para gestionar los procesos del sistema.

Gestión de procesos del sistema (mapa de tareas)

Tarea
Descripción
Para obtener instrucciones
Mostrar procesos.
Utilice el comando ps para mostrar todos los procesos de un sistema.
Mostrar información sobre los procesos.
Utilice el comando pgrep a fin de obtener los ID de los procesos sobre los que desea mostrar más información.
Controlar procesos.
Ubique procesos mediante el comando pgrep. Luego, utilice el pcommand (/proc) adecuado para controlar el proceso. Consulte la Tabla 2-3 para obtener una descripción de los comandos (/proc).
Terminar un proceso.

Ubique un proceso, ya sea por nombre de proceso o por ID de proceso. Puede utilizar los comandos pkill o kill para terminar el proceso.

Comandos para gestionar procesos del sistema

La siguiente tabla describe los comandos necesarios para gestionar los procesos del sistema.

Tabla 2-1 Comandos para gestionar procesos

Comando
Descripción
Página de comando man
ps, pgrep, prstat, pkill
Comprueba el estado de los procesos activos en un sistema y muestra información detallada sobre los procesos.
pkill
Funciona de forma idéntica a pgrep, pero encuentra o señala procesos por nombre u otro atributo y termina el proceso. Cada proceso coincidente está señalado del mismo modo que si tuviera el comando kill, en lugar de tener impreso su ID de proceso.
pargs, preap
Ayuda con la depuración de procesos.
dispadmin
Muestra las directivas de programación de procesos predeterminadas.
priocntl
Asigna procesos a una clase de prioridad y gestiona las prioridades del proceso.
nice
Cambia la prioridad de un proceso de tiempo compartido.
psrset
Enlaza grupos de procesos específicos a un grupo de procesadores, en lugar de un solo procesador.

Uso del comando ps

El comando ps permite comprobar el estado de los procesos activos en un sistema y mostrar información técnica sobre los procesos. Estos datos son útiles para tareas administrativas, como la determinación de la manera de definir las prioridades del proceso.

Según las opciones utilizadas, el comando ps proporciona la siguiente información:

En la siguiente tabla, se describen algunos de los campos informados por el comando ps. Los campos que se muestran dependen de la opción seleccionada. Para obtener una descripción de todas las opciones disponibles, consulte la página del comando man ps(1).

Tabla 2-2 Resumen de campos de informes de ps

Campo
Descripción
UID
El ID de usuario efectivo del propietario del proceso.
PID
El ID de proceso.
PPID
El ID de proceso principal.
C
El uso del procesador para la programación. Este campo no se muestra cuando se utiliza la opción -c.
CLS
La clase de programación a la que pertenece el proceso, como tiempo real, sistema o tiempo compartido. Este campo sólo se incluye con la opción -c.
PRI
La prioridad de programación del subproceso del núcleo. Los números más altos indican una prioridad superior.
NI
El número de nice del proceso, que contribuye a su prioridad de programación. Aumentar el valor del comando nice de un proceso significa reducir su prioridad.
ADDR
La dirección de la estructura proc.
SZ
El tamaño de la dirección virtual del proceso.
WCHAN
La dirección de un evento o bloqueo para el que el proceso está inactivo.
STIME
La hora de inicio del proceso en horas, minutos y segundos.
TTY
El terminal desde el cual se inició el proceso o su proceso principal. Un signo de interrogación indica que no existe un terminal de control.
TIME
La cantidad total de tiempo de CPU utilizado por el proceso desde que comenzó.
CMD
El comando que generó el proceso.

Uso de comandos y sistema de archivos /proc

Puede visualizar información detallada sobre los procesos mostrados en el directorio /proc mediante los comandos de proceso. La siguiente tabla muestra los comandos de proceso /proc. El directorio /proc también se conoce como el sistema de archivos de procesos (PROCFS). Las imágenes de procesos activos se almacenan aquí por número de ID de proceso.

Tabla 2-3 Comandos de proceso (/proc)

Comando de proceso
Descripción
pcred
Muestra información de credenciales de proceso.
pfiles
Proporciona información de fstat y fcntl de archivos abiertos en un proceso.
pflags
Imprime indicadores de seguimiento, señales pendientes y señales retenidas, y otra información de estado de /proc.
pldd
Muestra las bibliotecas dinámicas que están enlazadas a un proceso.
pmap
Imprime el mapa de espacio de direcciones de cada proceso.
psig
Muestra las acciones y los manejadores de señales de cada proceso.
prun
Inicia cada proceso.
pstack
Imprime un seguimiento de pila hexadecimal+simbólico para todos los procesos ligeros de cada proceso.
pstop
Detiene cada proceso.
ptime
Registra el tiempo de un proceso mediante la contabilidad según los estados.
ptree
Muestra los árboles del proceso que contienen el proceso.
pwait
Muestra información de estado después de que un proceso termina.
pwdx
Muestra el directorio de trabajo actual de un proceso.

Para obtener más información, consulte proc(1).

Las herramientas del proceso son similares a algunas opciones del comando ps, salvo que el resultado proporcionado por estos comandos sea más detallado.

En general, los comandos del proceso realizan las siguientes acciones:

Gestión de procesos con comandos de proceso (/proc)

Puede visualizar información técnica detallada sobre procesos o controlar procesos activos mediante algunos de los comandos de proceso. La Tabla 2-3 muestra algunos de los comandos /proc.

Si un proceso queda atrapado en un bucle infinito, o si el proceso tarda demasiado en ejecutarse, es posible que desee detenerlo (terminarlo). Para obtener más información sobre la detención de procesos mediante el comando kill o pkill, consulte el Capítulo 2, Gestión de procesos del sistema (tareas).

El sistema de archivos /proc es una jerarquía de directorios que contiene subdirectorios adicionales para información de estado y funciones de control.

El sistema de archivos /proc también proporciona una utilidad de punto de observación x que se utiliza para reasignar permisos de lectura y escritura en las páginas individuales del espacio de direcciones de un proceso. Esta utilidad no tiene restricciones y admite multiprocesamiento.

Las herramientas de depuración se han modificado para usar la utilidad de punto de observación x de/proc, lo que significa que todo el proceso de punto de observación x es más rápido.

Las siguientes restricciones se han eliminado al definir los puntos de observación x mediante la herramienta de depuración dbx:

Para obtener más información, consulte las páginas del comando man proc(4) y mdb(1).

Cómo mostrar procesos

Ejemplo 2-1 Lista de procesos

El siguiente ejemplo muestra el resultado del comando ps cuando no se utiliza ninguna opción.

$ ps
   PID TTY      TIME COMD
  1664 pts/4    0:06 csh
  2081 pts/4    0:00 ps

El siguiente ejemplo muestra el resultado del comando ps - ef. Este resultado muestra que el primer proceso que se ejecuta cuando el sistema se inicia es sched (el intercambiador), seguido del proceso init, pageout, etc.

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

Cómo visualizar información sobre los procesos

  1. Obtenga el ID del proceso sobre el que desea visualizar más información.
    # pgrep process

    donde proceso es el nombre del proceso sobre el que desea visualizar más información.

    El ID de proceso se muestra en la primera columna del resultado.

  2. Visualice la información de proceso que necesita.
    # /usr/bin/pcommand pid
    pcommand

    Es el comando (/proc) que desea ejecutar. La Tabla 2-3 muestra y describe estos comandos.

    pid

    Identifica el ID de proceso.

Ejemplo 2-2 Visualización de información sobre procesos

El siguiente ejemplo muestra cómo utilizar los comandos de proceso para visualizar más información sobre un proceso cron.

# pgrep cron 1
4780
# pwdx 4780 2
4780:   /var/spool/cron/atjobs
# ptree 4780 3
4780  /usr/sbin/cron
# pfiles 4780 4
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
  1. Obtiene el ID de proceso para el proceso cron

  2. Muestra el directorio de trabajo actual del proceso cron

  3. Muestra el árbol de proceso que contiene el proceso cron

  4. Muestra información de fstat y fcntl

Cómo controlar procesos

  1. Obtenga el ID del proceso que desea controlar.
    # pgrep process

    donde proceso es el nombre del proceso que desea controlar.

    El ID de proceso se muestra en la primera columna del resultado.

  2. Utilice el comando de proceso adecuado para controlar el proceso.
    # /usr/bin/pcommand pid
    pcommand

    Es el comando de proceso (/proc) que desea ejecutar. La Tabla 2-3 muestra y describe estos comandos.

    pid

    Identifica el ID de proceso.

  3. Verifique el estado del proceso.
    # ps -ef | grep pid

Terminación de un proceso (pkill, kill)

A veces, es posible que necesite detener (terminar) un proceso. El proceso se puede encontrar en un bucle infinito. O bien, es posible que haya iniciado un trabajo grande que desea detener antes de finalizarlo. Puede terminar cualquier proceso propio. El superusuario puede terminar cualquier proceso del sistema, excepto los procesos con ID de proceso 0, 1, 2, 3 y 4. Es muy probable que al terminar estos procesos, se produzca un fallo en el sistema.

Para obtener más información, consulte las páginas del comando man pgrep(1), pkill(1) y kill(1).

Cómo terminar un proceso (pkill)

  1. Para poner fin al proceso de otro usuario, asuma el rol root.
  2. Obtenga el ID del proceso que desea terminar.
    $ pgrep process

    donde proceso es el nombre del proceso que desea terminar.

    Por ejemplo:

    $ pgrep netscape
    587
    566

    El ID de proceso se muestra en el resultado.


    Nota - Para obtener información de proceso sobre Sun Ray, utilice los siguientes comandos:

    # ps -fu user

    Este comando muestra todos los procesos del usuario.

    # ps -fu user | grep process

    Este comando ubica un proceso específico para un usuario.


  3. Finaliza el proceso.
    $ pkill [signal] process
    señal

    Cuando no se incluye ninguna señal en la sintaxis de la línea de comandos pkill, la señal predeterminada que se utiliza es -15 (SIGKILL). Mediante la señal -9 (SIGTERM) con el comando pkill, se garantiza que el proceso terminará de inmediato. Sin embargo, la señal -9 no debe utilizarse para terminar ciertos procesos, como un proceso de base de datos o un proceso de servidor LDAP. El resultado es que los datos pueden perderse.

    proceso

    Es el nombre del proceso que se detendrá.


    Consejo - Cuando se utiliza el comando pkill para terminar un proceso, primero, intente usar el comando por sí mismo, sin incluir una opción de señal. Espere unos minutos para ver si el proceso termina antes de utilizar el comando pkill con la señal -9.


  4. Verifique que el proceso se haya terminado.
    $ pgrep process

    El proceso terminado ya no se debería mostrar en el resultado del comando pgrep.

Cómo terminar un proceso (kill)

  1. Para poner fin al proceso de otro usuario, asuma el rol root.
  2. Obtenga el ID del proceso que desea terminar.
    # ps -fu user

    donde usuario es el usuario para el que desea mostrar los procesos.

    El ID de proceso se muestra en la primera columna del resultado.

  3. Finaliza el proceso.
    # kill [signal-number] pid
    señal

    Cuando no se incluye ninguna señal en la sintaxis de la línea de comandos kill, la señal predeterminada que se utiliza es -15 (SIGKILL). Mediante la señal -9 (SIGTERM) con el comando kill, se garantiza que el proceso terminará de inmediato. Sin embargo, la señal -9 no debe utilizarse para terminar ciertos procesos, como un proceso de base de datos o un proceso de servidor LDAP. El resultado es que los datos pueden perderse.

    pid

    Es el ID del proceso que desea terminar.


    Consejo - Cuando se utiliza el comando kill para detener un proceso, primero, intente usar el comando por sí mismo, sin incluir una opción de señal. Espere unos minutos para ver si el proceso termina antes de utilizar el comando kill con la señal -9.


  4. Verifique que el proceso se haya terminado.
    $ pgrep pid

    El proceso terminado ya no se debería mostrar en el resultado del comando pgrep.

Depuración de un proceso (pargs, preap)

El comando pargs y el comando preap mejoran la depuración de procesos. El comando pargs imprime los argumentos y las variables de entorno asociados con un proceso en ejecución o un archivo del núcleo central. El comando preap elimina procesos inactivos (zombie). Un proceso zombie todavía no ha tenido el estado de salida reclamado por el proceso principal. En general, estos procesos son inofensivos, pero pueden consumir los recursos del sistema si son numerosos. Puede utilizar los comandos pargs y preap a fin de examinar los procesos para los que cuenta con privilegios. Como superusuario, puede examinar cualquier proceso.

Para obtener información sobre el uso del comando preap, consulte la página del comando man preap(1). Para obtener información sobre el uso del comando pargs, consulte la página del comando man pargs(1). Consulte también la página del comando man proc(1).

Ejemplo 2-3 Depuración de un proceso (pargs)

El comando pargs resuelve el antiguo problema de no poder mostrar todos los argumentos que se transfieren a un proceso con el comando ps. El siguiente ejemplo muestra cómo utilizar el comando pargs en combinación con el comando pgrep para mostrar los argumentos que se transfieren a un proceso.

# 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

El siguiente ejemplo muestra cómo utilizar el comando pargs - e para mostrar las variables de entorno asociadas con un proceso.

$ pargs -e 6763
6763: tcsh
envp[0]: DISPLAY=:0.0