0% encontró este documento útil (0 votos)
13 vistas444 páginas

Gestion AIX

Cargado por

luis
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
13 vistas444 páginas

Gestion AIX

Cargado por

luis
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

AIX Versión 7.

Gestión del sistema operativo

IBM
Nota
Antes de utilizar esta información y el producto al que da soporte, lea la información de “Avisos” en la
página 415.

Esta edición se aplica a AIX Versión 7.1 y a todos los releases y modificaciones posteriores, a menos que se indique lo
contrario en nuevas ediciones.
© Copyright International Business Machines Corporation 2010, 2018.
Contenido

Acerca de este documento..................................................................................... v


Resalte.......................................................................................................................................................... v
Sensibilidad a mayúsculas y minúsculas en AIX.........................................................................................v
ISO 9000.......................................................................................................................................................v

Gestión del sistema operativo................................................................................ 1


Administración del sistema operativo.........................................................................................................1
Interfaces de gestión del sistema disponibles......................................................................................1
Datos vitales del producto de software................................................................................................. 2
Actualizaciones del sistema operativo.................................................................................................. 2
Arranque del sistema............................................................................................................................. 3
Copia de seguridad del sistema........................................................................................................... 20
Cierre del sistema.................................................................................................................................50
Entorno del sistema............................................................................................................................. 51
AIX Usage Metric (SLM tags) for ILMT................................................................................................. 63
AIX Runtime Expert..............................................................................................................................64
Mandatos y procesos......................................................................................................................... 129
Gestión del sistema colgado .............................................................................................................149
Gestión de procesos.......................................................................................................................... 151
Contabilidad del sistema................................................................................................................... 159
Controlador de recursos del sistema................................................................................................ 187
Archivos del sistema operativo..........................................................................................................192
Shells del sistema operativo..............................................................................................................210
Seguridad del sistema operativo....................................................................................................... 314
Entorno de usuario............................................................................................................................. 328
Consulta de sistemas BSD................................................................................................................. 342
Redirección de la entrada y la salida................................................................................................. 365
Recuperación de kernel de AIX......................................................................................................... 372
AIX Event Infrastructure para AIX y clústeres AIX - AHAFS..................................................................373
Introducción a la infraestructura de AIX Event Infrastructure.........................................................373
Componentes de AIX Event Infrastructure....................................................................................... 374
Configuración de AIX Event Infrastructure....................................................................................... 376
Vista de alto nivel de cómo funciona AIX Event Infrastructure........................................................376
Utilización de AIX Event Infrastructure.............................................................................................378
Supervisión de sucesos......................................................................................................................378
Generadores de sucesos predefinidos.............................................................................................. 392
Sucesos de clúster............................................................................................................................. 405
Generadores de sucesos predefinidos para una instancia AIX con reconocimiento de clúster .... 406

Avisos............................................................................................................... 415
Consideraciones de política de privacidad............................................................................................. 416
Marcas registradas.................................................................................................................................. 417

Índice............................................................................................................... 419

iii
iv
Acerca de este documento
Este documento proporciona a los usuarios y a los administradores del sistema información completa que
puede afectar a la selección de opciones al realizar tareas como la copia de seguridad y la restauración
del sistema, la gestión del almacenamiento lógico y físico, el redimensionamiento del espacio de páginas
adecuado, etc. Proporciona información completa acerca de cómo realizar tareas como la gestión de
volúmenes lógicos, almacenamiento y recursos. Los usuarios del sistema pueden obtener información de
cómo realizar tareas como, por ejemplo, la ejecución de mandatos, el manejo de procesos, el manejo de
archivos y directorios y la impresión básica.
Otros temas útiles para los usuarios y los administradores del sistema son la creación y
redimensionamiento del espacio de paginación, la gestión de la memoria virtual, la copia de seguridad y
restauración del sistema, la gestión del hardware y los seudodispositivos, la utilización del Controlador de
recursos del sistema (SRC), la protección de archivos, la utilización de soportes de almacenamiento, la
personalización de archivos de entorno y la escritura de scripts de shell. Este documento también está
disponible en el CD de documentación que se suministra con el sistema operativo.

Resalte
Las siguientes convenciones resaltadas se utilizan en este documento:

Negrita Identifica mandatos, subrutinas, palabras clave, archivos, estructuras, directorios y


otros elementos cuyos nombres están predefinidos por el sistema. También
identifica objetos gráficos como botones, etiquetas e iconos que el usuario
selecciona.
Cursiva Identifica parámetros cuyos nombres o valores reales deben ser proporcionados por
el usuario.
Identifica ejemplos de valores determinados de datos, ejemplos de texto similar al
Monoespaciado
que el usuario puede ver visualizado, ejemplos de porciones de código de programa
similar al que el usuario podría haber escrito como programador, mensajes del
sistema o información que debe escribir el propio usuario.

Sensibilidad a mayúsculas y minúsculas en AIX


Todos los elementos del sistema operativo AIX son sensibles a las mayúsculas y minúsculas, lo que
significa que distingue entre las letras mayúsculas y minúsculas. Por ejemplo, puede utilizar el mandato
ls para listar archivos. Si escribe LS, el sistema responde que el mandato no se ha encontrado. Del
mismo modo, FILEA, FiLea y filea son tres nombres de archivo distintos, aunque estén en el mismo
directorio. Para evitar que se realicen acciones indeseables, asegúrese siempre de utilizar la combinación
correcta de mayúsculas y minúsculas.

ISO 9000
En el desarrollo y la fabricación de este producto se han utilizado sistemas de calidad registrados que
cumplen la norma ISO 9000.

© Copyright IBM Corp. 2010, 2018 v


vi AIX Versión 7.2: Gestión del sistema operativo
Gestión del sistema operativo
Los usuarios y administradores del sistema pueden obtener información sobre cómo realizar tareas
como, por ejemplo, la ejecución de mandatos, el manejo de procesos, el manejo de archivos y directorios,
la copia de seguridad y restauración del sistema, la gestión del almacenamiento físico y lógico, y la
impresión básica.
Otros temas útiles para los usuarios y los administradores del sistema son la creación y
redimensionamiento del espacio de paginación, la gestión de la memoria virtual, la copia de seguridad y
restauración del sistema, la gestión del hardware y los seudodispositivos, la utilización del Controlador de
recursos del sistema (SRC), la protección de archivos, la utilización de soportes de almacenamiento, la
personalización de archivos de entorno y la escritura de scripts de shell. Este tema también está
disponible en el CD de documentación que se suministra con el sistema operativo.
La gestión del sistema operativo es la tarea de la persona a la que normalmente se denomina, en la
documentación de UNIX, administrador del sistema. Desafortunadamente, sólo unas cuantas actividades
del administrador del sistema son lo suficientemente sencillas para denominarse correctamente
administración. Esta publicación y las guías relacionadas están pensadas para ayudar a los
administradores del sistema en sus numerosas obligaciones.
Este sistema operativo proporciona su propia versión de soporte de gestión del sistema para promocionar
el fácil uso y mejorar la seguridad y la integridad.

Administración del sistema operativo


Puede utilizar mandatos para gestionar la copia de seguridad y el inicio del sistema, cerrar el sistema, los
shells y entornos del sistema, los recursos del sistema y otros componentes de AIX.
La gestión del sistema operativo es la tarea de la persona a la que normalmente se denomina, en la
documentación de UNIX, administrador del sistema. Desafortunadamente, sólo unas cuantas actividades
del administrador del sistema son lo suficientemente sencillas para denominarse correctamente
administración. Esta publicación y las guías relacionadas están pensadas para ayudar a los
administradores del sistema en sus numerosas obligaciones.
Este sistema operativo proporciona su propia versión de soporte de gestión del sistema para promocionar
el fácil uso y mejorar la seguridad y la integridad.

Interfaces de gestión del sistema disponibles


Además de la administración del sistema convencional de la línea de mandatos, este sistema operativo
proporciona las interfaces SMIT.
A continuación se muestran las interfaces SMIT:
• System Management Interface Tool (SMIT), interfaz de usuario basada en menús que construye
mandatos a partir de las opciones que el usuario elige y los ejecuta.
Con SMIT, puede:
– Instalar, actualizar y mantener software
– Configurar dispositivos
– Configurar unidades de almacenamiento de disco en grupos de volúmenes y volúmenes lógicos
– Crear y ampliar sistemas de archivos y espacio de paginación
– Gestionar usuarios y grupos
– Configurar redes y aplicaciones de comunicación
– Imprimir
– Realizar la determinación de problemas

© Copyright IBM Corp. 2010, 2018 1


– Planificar trabajos
– Gestionar los recursos del sistema y la carga de trabajo
– Gestionar entornos del sistema
– Gestionar datos del sistema de clústeres
• Una interfaz gráfica de usuario orientada a objetos que soporta las mismas tareas de gestión del
sistema que SMIT, pero las facilita mediante:
– La reducción de errores del usuario con la comprobación de errores y diseño de diálogos
– La oferta de procedimientos paso a paso para tareas nuevas o complejas
– La oferta de opciones para administradores más experimentados
– La facilitación de la visualización de datos complejos o de relaciones entre objetos del sistema
– La supervisión de la actividad del sistema y la alerta al administrador cuando se producen sucesos
predefinidos
– La proporción de ayudas según contexto, visiones generales, sugerencias y enlaces para
documentación en línea

Datos vitales del producto de software


Determinada información de los productos de software y sus opciones instalables se mantiene en la base
de datos de Datos Vitales del Producto de Software (SWVPD).
Los SWVPD consisten en un conjunto de mandatos y clases de objetos del Gestor de datos objeto (ODM)
para el mantenimiento de la información del producto de software. Los mandatos de SWVPD se
proporcionan para que el usuario consulte (lslpp) y verifique (lppchk) los productos de software
instalados. Las clases de objetos ODM definen el ámbito y el formato de la información del producto de
software que se mantiene.
El mandato installp utiliza el ODM para mantener la siguiente información en la base de datos SWVPD:
• Nombre del producto de software instalado
• Versión del producto de software instalado
• Nivel de release del producto de software, que indica los cambios en la interfaz de programación
externa del producto de software
• Nivel de modificación del producto de software, que indica los cambios que no afectan a la interfaz de
programación externa del producto de software
• Nivel de arreglo del producto de software, que indica pequeñas actualizaciones que se deben compilar
en un nivel de modificación normal en un momento posterior
• Campo de identificación del arreglo
• Nombres, sumas de comprobación y tamaños de los archivos que componen el producto o la opción de
software
• Estado de la instalación del producto de software: aplicando, aplicado, confirmando, confirmado,
rechazando o interrumpido.

Actualizaciones del sistema operativo


El paquete del sistema operativo se divide en catálogos de archivos, en los que cada catálogo de archivo
contiene un grupo de archivos relacionados lógicamente que se pueden entregar al cliente. Cada catálogo
de archivos se puede instalar y actualizar individualmente.
Se hace un seguimiento de las revisiones de los catálogos de archivos utilizando los niveles de versión,
release, mantenimiento y arreglo (VRMF). Por norma, cada vez que se aplica una actualización a un
catálogo de archivos de AIX, se ajusta el nivel de arreglo. Cada vez que se aplica un paquete de
mantenimiento o nivel de tecnología de AIX, se ajusta el nivel de modificación y el nivel de arreglo se
restablece en cero. La instalación inicial de una versión de AIX, por ejemplo, AIX6.1, se denomina
instalación base. El sistema operativo proporciona actualizaciones de sus características y funcionalidad,

2 AIX Versión 7.2: Gestión del sistema operativo


que pueden estar empaquetadas como un paquete de mantenimiento, un nivel de tecnología, un arreglo
temporal del programa (PTF) o un paquete de servicio (grupo de PTF).
Paquetes de mantenimiento y niveles de tecnología
Los paquetes de mantenimiento y niveles de tecnología proporcionan una nueva funcionalidad que
está pensada para actualizar el release. La parte de mantenimiento de VRMF se actualiza en un
paquete de mantenimiento. Por ejemplo, el primer paquete de mantenimiento para AIX 6.1 es
[Link]; el segundo es [Link], etc. Para listar el paquete de mantenimiento, utilice el mandato
oslevel -r.
Para determinar el paquete de mantenimiento o el nivel de tecnología instalados en un sistema
determinado, escriba:

oslevel

Para determinar qué catálogos de archivos se deben actualizar para que el sistema alcance un
paquete de mantenimiento o nivel de tecnología específico (en este ejemplo, [Link]), utilice el
mandato siguiente:

oslevel -l [Link]

Para determinar si un paquete de mantenimiento recomendado o nivel de tecnología está instalado


(en este ejemplo, 6100-02), utilice el mandato siguiente:

oslevel -r 6100-02

Para determinar qué catálogos de archivos se deben actualizar para que el sistema alcance el nivel de
tecnología o paquete de mantenimiento 6100-02, utilice el mandato siguiente:

oslevel -rl 6100-02

Para determinar el paquete de mantenimiento o nivel de tecnología de un catálogo de archivos


determinado (en este ejemplo, [Link]), utilice el mandato siguiente:

lslpp -L [Link]

PTF
Entre releases, puede recibir PTF para corregir o impedir un problema en particular. Una instalación
en particular puede necesitar parte, todos o ninguno de los PTF disponibles.
Paquetes de mantenimiento recomendados
Un paquete de mantenimiento recomendado es un conjunto de PTF entre niveles de tecnología que
se han probado extensamente juntos y que están recomendados como mantenimiento preventivo.
Arreglos temporales
Un arreglo temporal es similar a un PTF, pero normalmente se ofrece cuando no hay un PTF
disponible. También están disponibles arreglos temporales cuando un PTF actualiza el sistema al
siguiente nivel de mantenimiento y es posible que los usuarios deseen que sus sistemas
permanezcan en el nivel actual.
Para determinar la versión y el nivel de release, el paquete de mantenimiento, el nivel de tecnología y el
nivel de paquete de servicio, así como qué catálogos de archivos se deben actualizar para alcanzar un
nivel determinado, consulte los mandatos oslevel y lslpp.

Arranque del sistema


Cuando se inicia el sistema operativo base, el sistema inicia un conjunto de tareas complejo. Bajo
condiciones normales, estas tareas se realizan automáticamente.
En algunas situaciones, deseará dar instrucciones al sistema para que rearranque; por ejemplo, para que
el sistema reconozca el software que acaba de instalar, para restablecer los dispositivos periféricos, para
realizar las tareas rutinarias de mantenimiento como comprobar los sistemas de archivos o para

Gestión del sistema operativo 3


recuperar el sistema cuando se cuelga. Para obtener información acerca de estos procedimientos,
consulte:
Tareas relacionadas
Nueva creación de una imagen de arranque dañada
En el procedimiento siguiente se describe cómo identificar una imagen de arranque dañada y el modo de
volverla a crear.

Administración del arranque del sistema


Existen diversas situaciones en las que se puede encontrar que desee arrancar o rearrancar el sistema.
Para cerrar o rearrancar el sistema, puede utilizar el mandato shutdown o reboot. Debe utilizar el
mandato shutdown cuando varios usuarios hayan iniciado sesión en el sistema.

Rearranque de un sistema en ejecución


Puesto que puede haber procesos en ejecución que se deban terminar de una manera más ordenada de
lo que permite reboot, shutdown es el método preferido para todos los sistemas.
Hay dos métodos de cerrar y rearrancar el sistema, shutdown y reboot. Utilice siempre el método
shutdown cuando varios usuarios hayan iniciado sesión en el sistema.

Tarea Vía rápida de SMIT Mandato o archivo


Rearranque de un sistema multiusuario smit shutdown shutdown -r
Rearranque de un sistema de un solo usuario smit shutdown shutdown -r o reboot

Cómo rearrancar de forma remota un sistema que no responde


El recurso de rearranque remoto permite rearrancar el sistema a través de un puerto nativo (integrado)
del sistema.
Los puertos del sistema integrados POWER5 son similares a los puertos serie excepto en que los puertos
del sistema sólo están disponibles para funciones específicamente soportadas.
El sistema se rearranca cuando se recibe la serie_de_rearranque en el puerto. Este recurso es útil
cuando el sistema no responde de otra modo pero es capaz de dar servicio a interrupciones de puertos
del sistema. El rearranque remoto sólo se puede habilitar en un puerto del sistema nativo cada vez. Se
espera que los usuarios proporcionen su propia seguridad externa para el puerto. Este recurso se ejecuta
en la clase de interrupción de dispositivo más alta y una anomalía de UART (Recepción/Transmisión
asíncrona universal) para borrar el almacenamiento intermedio de transmisión puede tener el efecto de
provocar que otros dispositivos pierdan datos si sus almacenamientos intermedios se desbordan durante
este tiempo. Se sugiere utilizar este recurso sólo para rearrancar una máquina que de otra forma estaría
colgada y en la que no se puede iniciar la sesión de forma remota. Los sistemas de archivos no se
sincronizarán y existe la posibilidad de perder algunos datos que no se hayan desechado. Se sugiere
encarecidamente que cuando se habilite el rearranque remoto, no se utilice el puerto para ningún otro
propósito, especialmente para la transferencia de archivos, a fin de prevenir un rearranque inadvertido.
Dos atributos de puerto nativo del sistema controlan la operación del rearranque remoto.
reboot_enable
Indica si este puerto está habilitado para rearrancar la máquina al recibir reboot_string y, si es así, si se
debe realizar un vuelco del sistema antes del rearranque.

no - Indica que el rearranque remoto está inhabilitado


reboot - Indica que el rearranque remoto está habilitado
dump - Indica que el rearranque remoto está habilitado y que antes se realizará
un vuelco del sistema en el dispositivo de vuelcos primario

reboot_string
Especifica la serie de reboot_string que el puerto serie explorará cuando la característica de rearranque
remoto está habilitada. Cuando la característica de rearranque remoto está habilitada y se recibe
reboot_string en el puerto, se transmite un carácter > y el sistema está preparado para reiniciarse. Si se
recibe un carácter 1, el sistema se rearranca; cualquier otro carácter que no sea 1 termina anormalmente

4 AIX Versión 7.2: Gestión del sistema operativo


el proceso de rearranque. reboot_string tiene una longitud máxima de 16 caracteres y no debe contener
ningún carácter de espacio, dos puntos, signo igual, nulo, nueva línea ni Control-\.
El rearranque remoto se puede habilitar mediante SMIT o la línea de mandatos. En SMIT, la vía de acceso
Entornos del sistema -> Gestionar recurso de rearranque remoto se puede utilizar para una TTY
configurada. De forma alternativa, cuando se configura una nueva TTY, se puede habilitar un rearranque
remoto desde los menús Añadir una TTY o Cambiar/Mostrar características de una TTY. El acceso a
estos menús se efectúa a través de la vía de acceso Dispositivos -> TTY.
En la línea de mandatos, se utilizan los mandatos mkdev o chdev para habilitar el rearranque remoto. Por
ejemplo, el mandato siguiente habilita el rearranque remoto (con la opción de vuelco) y establece la serie
de rearranque en ReBoOtMe en tty1.

chdev -l tty1 -a remreboot=dump -a reboot_string=ReBoOtMe

Este ejemplo permite el rearranque remoto en tty0 con reboot_string actual sólo en la base de datos
(tendrá efecto en el siguiente rearranque).

chdev -P -l tty0 -a remreboot=reboot

Si la tty se utiliza como puerto normal, deberá utilizar el mandato pdisable antes de habilitar el
rearranque remoto. Después, puede utilizar penable para volver a habilitar el puerto.
Información relacionada
Diferencias de funciones entre puertos del sistema y puertos serie

Arranque desde disco duro para mantenimiento


Puede arrancar una máquina en modalidad de mantenimiento desde un disco duro.
Requisitos previos
No debe haber un soporte extraíble arrancable (cinta o CD-ROM) en la unidad. Además, consulte en la
documentación del hardware las instrucciones específicas para habilitar el arranque en modalidad de
mantenimiento de su modelo en particular.
Procedimiento
Para arrancar una máquina en modalidad de mantenimiento desde el disco duro:
1. Para rearrancar, apague la máquina y después vuélvala a encender, o pulse el botón de restablecer.
2. Pulse la secuencia de teclas para rearrancar en modalidad de mantenimiento que se especifica en la
documentación del hardware.
3. La máquina rearrancará en un punto donde tenga configurado un dispositivo de consola.
Si hay un vuelco del sistema que se debe recuperar, el menú de vuelcos del sistema se visualizará en
la consola.
Nota:
a. Si la consola no se puede configurar cuando hay un vuelco que se debe recuperar, el sistema se
colgará. El sistema se debe rearrancar desde un soporte extraíble para recuperar el vuelco.
b. El sistema vuelca automáticamente en el dispositivo de vuelco especificado al pulsar el botón de
restablecer. Para cambiar la designación de dispositivo de vuelco primario o secundario en un
sistema en ejecución, consulte el mandato sysdumpdev.
4. Si no hay ningún vuelco del sistema, o si se ha copiado, se visualizarán las instrucciones operativas de
diagnóstico. Pulse Intro para continuar en el menú Selección de función.
5. En el menú Selección de función, puede seleccionar la modalidad de diagnóstico o de un solo usuario:
Modalidad de un solo usuario: Para realizar el mantenimiento en un entorno de un solo
usuario, seleccione esta opción (opción 5). El sistema continúa con el arranque y entra en modalidad
de un solo usuario. El mantenimiento que requiere que el sistema esté en modalidad autónoma puede
realizarse en esta modalidad, y se puede ejecutar el mandato bosboot, si es necesario.

Gestión del sistema operativo 5


Información relacionada
Inicio de un vuelco del sistema

Arranque de un sistema que se ha colgado


En algunos casos, puede tener que arrancar un sistema que se ha detenido (colgado) sin que se haya
cerrado correctamente.
Los requisitos previos para este procedimiento son:
• El sistema se ha colgado y no se ha cerrado correctamente debido a condiciones inusuales.
• El sistema se ha apagado.
Este procedimiento abarca los puntos básicos de cómo se debe arrancar el sistema si no se ha podido
recuperar cuando se ha colgado. Siga estos pasos:
1. Asegúrese de que todo el hardware y los dispositivos periféricos estén conectados correctamente.
2. Encienda todos los dispositivos periféricos.
3. Observe la pantalla para obtener información acerca de los diagnósticos automáticos de hardware.
a) Si las pruebas de diagnóstico de hardware no son satisfactorias, consulte la documentación de
hardware.
b) Si todas las pruebas de diagnósticos de hardware son satisfactorias, encienda la unidad del
sistema.

Restablecimiento de una contraseña root desconocida


En el procedimiento siguiente se describe cómo recuperar el acceso a los privilegios raíz cuando se
desconoce la contraseña root del sistema o no está disponible.
El procedimiento siguiente necesita un tipo de inactividad del sistema. Si es posible, planifique la
inactividad cuando menos impacte en la carga de trabajo como protección contra posibles pérdidas de
datos o funcionalidad.
La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los
resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
1. Inserte el soporte del producto para la misma versión y nivel que la instalación actual en la unidad
adecuada.
2. Encienda la máquina.
3. Cuando aparezca la pantalla de iconos, o cuando oiga un pitido doble, pulse la tecla F1 varias veces
hasta que aparezca el menú Servicios de gestión del sistema.
4. Seleccione Multiarranque.
5. Seleccione Instalar desde.
6. Seleccione el dispositivo que contiene el soporte del producto y, a continuación, seleccione Instalar.
7. Seleccione el icono de versión de AIX.
8. Defina el sistema actual como la consola del sistema pulsando la tecla F1 y, a continuación, pulse
Intro.
9. Seleccione el número del idioma preferido y pulse Intro.
10. Elija Iniciar Modalidad Mantenimiento para Recuperación Sistema tecleando 3 y pulse Intro.
11. Seleccione Acceder a un Grupo de volúmenes raíz.
Se visualiza un mensaje que explica que no podrá volver a los menús de instalación sin rearrancar si
cambia el grupo de volúmenes raíz en este momento.
12. Escriba 0 y pulse Intro.
13. Escriba el número del grupo de volúmenes adecuado de la lista y pulse Intro.
14. Seleccione Acceder a este grupo de volúmenes e iniciar un shell tecleando 1 y pulse Intro.
15. En el indicador # (signo de número), escriba el mandato passwd en el indicador de línea de
mandatos para restablecer la contraseña root.
Por ejemplo:

6 AIX Versión 7.2: Gestión del sistema operativo


# passwd
Cambiando contraseña para "root"
Contraseña nueva de root:
Vuelva a especificar la contraseña nueva:

16. Para grabar todo el contenido del almacenamiento intermedio al disco duro y rearrancar el sistema,
escriba lo siguiente:

sync;sync;sync;reboot

Cuando aparezca la pantalla de inicio de sesión, la contraseña que ha establecido en el paso 15 le debe
permitir acceder a los privilegios raíz.
Información relacionada
Mandato passwd
Mandato reboot

Arranque de sistemas con gráficos de placa


Si la máquina se ha instalado sólo con el subsistema de gráficos de placa, y después se añade un
adaptador de gráficos adicional al sistema, se produce lo siguiente:
1. Se añade un nuevo adaptador gráfico al sistema y se instala el software de controlador de dispositivo
asociado.
2. Se rearranca el sistema y se produce una de las situaciones siguientes:
a. Si /dev/lft0 se ha definido como la consola del sistema (lscons visualiza esta información), se
solicita al usuario que seleccione la pantalla que es la consola del sistema al rearrancar. Si el
usuario selecciona un adaptador gráfico (un dispositivo no TTY), también se convierte en la nueva
pantalla predeterminada. Si el usuario selecciona un dispositivo TTY en lugar de un dispositivo LFT,
no aparece el inicio de sesión del sistema. Rearranque de nuevo y se visualizará la pantalla de inicio
de sesión TTY. Se supone que si el usuario añade un adaptador gráfico adicional al sistema y la
consola del sistema es un dispositivo FLT, el usuario no seleccionará el dispositivo TTY como
consola del sistema.
b. Si la consola del sistema se ha definido como TTY, al rearrancar el adaptador de visualización que
se acaba de añadir se convierte en la pantalla predeterminada.
Nota: Puesto que la TTY es la consola del sistema, continúa siendo la consola del sistema.
3. Si la consola del sistema es /def/lft0, después del rearranque, se inhabilita DPMS para mostrar el
texto de selección de consola del sistema en la pantalla durante un periodo de tiempo indefinido. Para
volver a habilitar DPMS, vuelva a rearrancar el sistema.

Despliegue de la ejecución del script de nivel de ejecución


Los scripts de nivel de ejecución permiten a los usuarios iniciar y detener las aplicaciones seleccionadas
mientras se cambia el nivel de ejecución.
Coloque los scripts de nivel de ejecución en el subdirectorio /etc/rc.d específico del nivel de ejecución:
• /etc/rc.d/rc2.d
• /etc/rc.d/rc3.d
• /etc/rc.d/rc4.d
• /etc/rc.d/rc5.d
• /etc/rc.d/rc6.d
• /etc/rc.d/rc7.d
• /etc/rc.d/rc8.d
• /etc/rc.d/rc9.d
/etc/rc.d/rc ejecutará los scripts que encuentre en el directorio especificado cuando cambie el nivel
de ejecución - ejecutará primero los scripts de detención de aplicaciones y luego los scripts de inicio de
aplicaciones.

Gestión del sistema operativo 7


Nota: Los scripts que empiezan por K son scripts de detención, mientras que los scripts que empiezan
por S son los scripts de inicio.

Modificación del archivo /etc/inittab


Están disponibles cuatro mandatos para modificar los registros del archivo etc/inittab.
Cómo añadir registros - mandato mkitab
Para añadir un registro al archivo /etc/inittab, escriba lo siguiente en el indicador de mandatos:

mkitab Identificador:Nivel de ejecución:Acción:Mandato

Por ejemplo, para añadir un registro para tty2, escriba lo siguiente en un indicador de mandatos:

mkitab tty[Link]respawn:/usr/sbin/getty /dev/tty2

En el ejemplo anterior:

Elemento Descripción
tty002 Identifica el objeto cuyo nivel de ejecución está definiendo.
2 Especifica el nivel de ejecución en el que se ejecuta este
proceso.
respawn Especifica la acción que el mandato init debe realizar para
este proceso.
/usr/sbin/getty /dev/tty2 Especifica el mandato de shell que se debe ejecutar.

Cómo cambiar registros - mandato chitab


Para cambiar un registro para el archivo /etc/inittab, escriba lo siguiente en un indicador de
mandatos:

chitab Identificador:Nivel de ejecución:Acción:Mandato

Por ejemplo, para cambiar un registro para tty2 de modo que este proceso se ejecute en los niveles de
ejecución 2 y 3, escriba:

chitab tty[Link]respawn:/usr/sbin/getty /dev/tty2

En el ejemplo anterior:

Elemento Descripción
tty002 Identifica el objeto cuyo nivel de ejecución está definiendo.
23 Especifica los niveles de ejecución en los que se ejecuta
este proceso.
respawn Especifica la acción que el mandato init debe realizar para
este proceso.
/usr/sbin/getty /dev/tty2 Especifica el mandato de shell que se debe ejecutar.

Cómo listar registros - mandato lsitab


Para listar todos los registros del archivo /etc/inittab, escriba lo siguiente en un indicador de
mandatos:

lsitab -a

Para listar un registro específico en el archivo /etc/inittab, escriba:

lsitab Identificador

8 AIX Versión 7.2: Gestión del sistema operativo


Por ejemplo, para listar el registro para tty2, escriba: lsitab tty2.
Cómo eliminar registros - mandato rmitab
Para eliminar un registro del archivo /etc/inittab, escriba lo siguiente en un indicador de mandatos:

rmitab Identificador

Por ejemplo, para eliminar el registro para tty2, escriba: rmitab tty2.
Conceptos relacionados
Nivel de ejecución del sistema
El nivel de ejecución del sistema especifica el estado del sistema y define los procesos que se inician.

Reactivación de un sistema inactivo


El sistema puede quedarse inactivo debido a un problema de hardware, un problema de software o una
combinación de ambos.
Este procedimiento le guía por los pasos que debe seguir para corregir el problema y reiniciar el sistema.
Si el sistema sigue inactivo después de completar el procedimiento, consulte la información acerca de la
determinación de problemas en la documentación del hardware.
Utilice los siguientes procedimientos para reactivar un sistema inactivo:

Comprobación de hardware
Se pueden utilizar varios procedimientos para comprobar el hardware.
Compruebe el hardware siguiendo estos procedimientos:
Comprobación de la alimentación:
Si la luz de encendido del sistema está encendida, vaya al apartado Comprobación del visor del panel
del operador, más abajo.
Si la luz de encendido del sistema no está encendida, compruebe que la alimentación esté encendida y el
sistema enchufado.
Comprobación del visor del panel del operador:
Si el sistema tiene un visor del panel del operador, compruebe si hay algún mensaje.
Si el visor del panel del operador del sistema está en blanco, vaya al apartado Activación del visor o
terminal, más abajo.
Si el visor del panel del operador del sistema no está en blanco, vaya a la guía de servicio para la unidad a
fin de encontrar información relativa a los dígitos del visor del panel del operador.
Activación del visor o terminal:
Compruebe varias partes del visor o terminal, de la manera siguiente:
• Asegúrese de que el cable del visor esté bien conectado al visor y a la unidad del sistema.
• Asegúrese de que el cable del teclado esté bien conectado.
• Asegúrese de que el cable del ratón esté bien conectado.
• Asegúrese de que el visor encendido y la luz de encendido esté encendida.
• Ajuste el control del brillo en el visor.
• Asegúrese de que los valores de comunicación del terminal sean correctos.
Si el sistema está activo, las comprobaciones del hardware han corregido el problema.
Tareas relacionadas
Reinicio del sistema
Además de comprobar el hardware y los procesos, puede reiniciar el sistema para reactivar un sistema
inactivo.
Comprobación de los procesos

Gestión del sistema operativo 9


Un proceso detenido o retenido puede hacer que el sistema se quede inactivo.

Comprobación de los procesos


Un proceso detenido o retenido puede hacer que el sistema se quede inactivo.
Compruebe los procesos del sistema mediante:
1. El reinicio del desplazamiento de línea
2. La utilización de la secuencia de teclas Control+D
3. La utilización de la secuencia de teclas Control+C
4. El inicio de la sesión desde un terminal remoto o sistema principal
5. La finalización remota de los procesos retenidos
Reinicio del desplazamiento de línea:
Reinicie el desplazamiento de línea detenido mediante la secuencia de teclas Control-S realizando lo
siguiente:
1. Active la ventana o shell con el proceso del problema.
2. Pulse la secuencia de teclas Control-Q para reiniciar el desplazamiento.
La secuencia de teclas Control-S detiene el desplazamiento de línea y la secuencia de teclas Control-Q
lo reinicia.
Si la comprobación de desplazamiento no ha corregido el problema del sistema inactivo, vaya a la
siguiente sección, Utilización de la secuencia de teclas Control-D.
Utilización de la secuencia de teclas Control-D:
1. Active la ventana o shell con el proceso del problema.
2. Pulse la secuencia de teclas Control-D. La secuencia de teclas Control-D envía una señal de fin del
archivo (EOF) al proceso. La secuencia de teclas Control-D puede cerrar la ventana o shell y finalizar la
sesión.
Si la secuencia de claves Control-D no ha corregido el problema del sistema inactivo, vaya a la siguiente
sección, Utilización de la secuencia de teclas Control-C.
Utilización de la secuencia de teclas Control-C:
Finalice un proceso detenido realizando las acciones siguientes:
1. Active la ventana o shell con el proceso del problema.
2. Pulse la secuencia de teclas Control-C. La secuencia de teclas Control-C detiene la búsqueda o filtro
actual.
Si la secuencia de claves Control-C no ha corregido el problema del sistema inactivo, vaya a la siguiente
sección, Inicio de sesión desde un terminal o sistema principal remoto:.
Inicio de sesión desde un terminal o sistema principal remoto:
Inicie la sesión remotamente de dos maneras:
• Inicie la sesión en el sistema desde otro terminal si hay más de un terminal conectado al sistema.
• Inicie la sesión desde otro sistema remoto de la red (si el sistema está conectado a la red) escribiendo
el mandato tn de la manera siguiente:

tn NombreSistema

El sistema solicita el nombre de inicio de sesión regular y la contraseña cuando se utiliza el mandato tn.
Si puede iniciar la sesión en el sistema desde un terminal o sistema principal remoto, vaya a la siguiente
sección, Finalización remota de procesos retenidos.
Si no ha podido iniciar la sesión en el sistema desde un terminal o sistema principal remoto, deberá
reiniciar el sistema.

10 AIX Versión 7.2: Gestión del sistema operativo


También puede iniciar un vuelco del sistema para determinar la causa de que el sistema esté inactivo.
Finalización remota de procesos retenidos:
Finalice un proceso retenido desde un terminal remoto realizando las acciones siguientes:
1. Liste los procesos activos escribiendo el siguiente mandato ps:

ps -ef

Los distintivos -e y -f identifican todos los procesos activos e inactivos.


2. Identifique el ID del proceso retenido.
Para obtener ayuda en la identificación de procesos, utilice el mandato grep con una serie de
búsqueda. Por ejemplo, para finalizar el proceso xlock, escriba lo siguiente para buscar el ID de
proceso:

ps -ef | grep xlock

El mandato grep permite buscar en la salida del mandato ps para identificar el ID de un proceso
específico.
3. Finalice el proceso escribiendo el siguiente mandato kill:
Nota: Debe tener autorización de usuario de root para poder utilizar el mandato kill en los procesos
que no ha iniciado.

kill -9 IDProceso

Si no puede identificar el proceso con problemas, el proceso activado más recientemente debe ser la
causa del sistema inactivo. Finalice el proceso más reciente si piensa que este es el problema.
Si las comprobaciones de procesos no han corregido el problema del sistema inactivo, deberá reiniciar el
sistema.
Conceptos relacionados
Comprobación de hardware
Se pueden utilizar varios procedimientos para comprobar el hardware.
Tareas relacionadas
Reinicio del sistema
Además de comprobar el hardware y los procesos, puede reiniciar el sistema para reactivar un sistema
inactivo.
Información relacionada
Recurso de vuelco del sistema

Reinicio del sistema


Además de comprobar el hardware y los procesos, puede reiniciar el sistema para reactivar un sistema
inactivo.
Si el procedimiento para la “Comprobación de hardware” en la página 9 y la “Comprobación de los
procesos” en la página 10 no puede corregir el problema que hace que el sistema esté inactivo, debe
reiniciar el sistema.
Nota: Antes de reiniciar el sistema, complete un vuelco del sistema.
1. Compruebe el estado del dispositivo de arranque.
El sistema arranca con un soporte extraíble, un dispositivo externo, un dispositivo de interfaz para
pequeños sistemas (SCSI), un dispositivo de electrónica de dispositivos integrados (IDE) o una red de
área local (LAN). Decida el método que se aplica a su sistema y siga estas instrucciones para
comprobar el dispositivo de arranque:

Gestión del sistema operativo 11


• Para un soporte extraíble, como una cinta, asegúrese de que el soporte está insertado
correctamente.
• Para dispositivos IDE, verifique que los valores de ID de dispositivo IDE son exclusivos por
adaptador. Si sólo hay un dispositivo conectado al adaptador, el ID de dispositivo IDE debe
establecerse en el dispositivo maestro.
• Para un dispositivo conectado externamente, como una unidad de cintas, asegúrese de que:
– La alimentación del dispositivo esté encendida.
– Los cables del dispositivo estén conectados correctamente al dispositivo y a la unidad del
sistema.
– El indicador de preparado esté encendido (si el dispositivo tiene uno).
• Para dispositivos SCSI externos, verifique que los valores de la dirección SCSI sean exclusivos.
• Para una LAN, verifique que la red esté activada y sea operativa.
Si el dispositivo de arranque funciona correctamente, continúe en el paso siguiente.
2. Cargue el sistema operativo:
a) Apague la alimentación del sistema.
b) Espere un minuto.
c) Encienda la alimentación del sistema.
d) Espere que el sistema arranque.
Si el sistema operativo no se ha podido cargar, arranque el disco duro desde la modalidad de
mantenimiento o los diagnósticos de hardware.
Si todavía no puede reiniciar el sistema, utilice un SRN para informar del problema del sistema inactivo al
representante de servicio.
Conceptos relacionados
Comprobación de hardware
Se pueden utilizar varios procedimientos para comprobar el hardware.
Tareas relacionadas
Comprobación de los procesos
Un proceso detenido o retenido puede hacer que el sistema se quede inactivo.
Información relacionada
Recurso de vuelco del sistema

Creación de imágenes de arranque


Para instalar el sistema operativo base o para acceder a un sistema que no arranca desde la unidad de
disco duro del sistema, necesita una imagen de arranque. Este procedimiento describe cómo crear
imágenes de arranque. La imagen de arranque varía según cada tipo de dispositivo.
Cuando el sistema se instala por primera vez, el mandato bosboot crea una imagen de arranque a partir
de una imagen del sistema de archivos de disco RAM (memoria de acceso aleatorio) y el kernel del
sistema operativo. La imagen de arranque se transfiere a un soporte determinado, como el disco duro.
Cuando se rearranca la máquina, la máquina de arranque se carga desde el soporte en la memoria. Para
obtener más información acerca del mandato bosboot, consulte bosboot.
El sistema de archivos de disco RAM contiene rutinas de configuración de dispositivos para los siguientes
dispositivos:
• Disco
• Cinta
• CD-ROM
• Dispositivo de Red en Anillo, Ethernet o FDDI
• Debe tener autorización de root para utilizar el mandato bosboot.

12 AIX Versión 7.2: Gestión del sistema operativo


• El sistema de archivos /tmp debe tener como mínimo 20 MB de espacio libre.
• El disco físico debe contener el volumen lógico de arranque. Para determinar el dispositivo de disco que
se debe especificar, escriba lo siguiente en un indicador de mandatos:

lsvg -l rootvg

El mandato lsvg -l lista los volúmenes lógicos del grupo de volúmenes raíz (rootvg). En la lista puede
encontrar el nombre del volumen lógico de arranque.
Después escriba lo siguiente en el indicador de mandatos:

lsvg -M rootvg

El mandato lsvg -M lista los discos físicos que contienen los diversos volúmenes lógicos.

Creación de una imagen de arranque en un volumen lógico de arranque


Si se está instalando el sistema operativo base (una nueva instalación o una actualización), se llama al
mandato bosboot para colocar la imagen de arranque en el volumen lógico de arranque. El volumen
lógico de arranque es un área contigua físicamente del disco creado mediante el Gestor de volúmenes
lógicos (LVM) durante la instalación.
Para obtener una lista de los requisitos previos para este procedimiento, consulte el apartado “Creación
de imágenes de arranque” en la página 12.
El mandato bosboot hace lo siguiente:
1. Comprueba si en el sistema de archivos hay suficiente espacio para crear la imagen de arranque.
2. Crea un sistema de archivos RAM utilizando el mandato mkfs y un archivo prototipo.
3. Llama al mandato mkboot, que fusiona el kernel y el sistema de archivos RAM en una imagen de
arranque.
4. Graba la imagen de arranque en el volumen lógico de arranque.
Para crear una imagen de arranque en el volumen lógico de arranque predeterminado del disco fijo,
escriba lo siguiente en un indicador de mandatos:

bosboot -a

O BIEN:

bosboot -ad /dev/ipldevice

Nota: No rearranque la máquina si el mandato bosboot falla al crear una imagen de arranque. Resuelva
el problema y ejecute el mandato bosboot hasta que se complete satisfactoriamente.
Debe rearrancar el sistema para que la nueva imagen de arranque se pueda utilizar.

Creación de imágenes de arranque para dispositivos de red


Puede crear imágenes de arranque para un arranque Ethernet o de Red en anillo.
Para obtener una lista de los requisitos previos para este procedimiento, consulte el apartado “Creación
de imágenes de arranque” en la página 12.
Para crear una imagen de arranque para un arranque Ethernet, escriba lo siguiente en un indicador de
mandatos:

bosboot -ad /dev/ent

Para un arranque de Red en anillo:

bosboot -ad /dev/tok

Gestión del sistema operativo 13


Nivel de ejecución del sistema
El nivel de ejecución del sistema especifica el estado del sistema y define los procesos que se inician.
Por ejemplo, cuando el nivel de ejecución es 3, se inician todos los procesos definidos para operar en ese
nivel de ejecución. Cerca del final de la fase de arranque del sistema del proceso de arranque, el nivel de
ejecución se lee de la entrada initdefault del archivo /etc/inittab. El sistema funciona en ese nivel de
ejecución hasta que recibe una señal para cambiarlo. El nivel de ejecución del sistema se puede cambiar
con el mandato init. El archivo /etc/inittab contiene un registro para cada proceso que define los
niveles de ejecución para ese proceso. Cuando se arranca el sistema, el mandato init lee el
archivo /etc/inittab para determinar los procesos que se deben iniciar.

Los niveles de ejecución definidos actualmente son los siguientes:

Elemento Descripción
0-9 Cuando el mandato init cambia a los niveles de ejecución de 0 a 9, mata todos los
procesos de los niveles de ejecución actuales y después reinicia los procesos asociados a
los nuevos niveles de ejecución.
0-1 Reservado para uso futuro del sistema operativo.
2 Nivel de ejecución predeterminado.
3-9 Se puede definir según las preferencias del usuario.
a, b, c Cuando el mandato init solicita un cambio a los niveles de ejecución a, b o c, no mata los
procesos de los niveles de ejecución actuales; simplemente inicia los procesos asignados
con los nuevos niveles de ejecución.
Q, q Indica al mandato init que vuelva a examinar el archivo /etc/inittab.

Tareas relacionadas
Modificación del archivo /etc/inittab
Están disponibles cuatro mandatos para modificar los registros del archivo etc/inittab.

Identificación del nivel de ejecución del sistema


Antes de realizar el mantenimiento del sistema operativo o cambiar el nivel de ejecución del sistema, es
aconsejable examinar los distintos niveles de ejecución.
Este procedimiento describe cómo identificar el nivel de ejecución en el que opera el sistema y cómo
visualizar un histórico de los niveles de ejecución anteriores. El mandato init determina el nivel de
ejecución del sistema.

Identificación del nivel de ejecución actual


En la línea de mandatos, escriba cat /etc/.[Link]. El sistema visualiza un dígito; que es el nivel
de ejecución actual. Consulte el mandato init o el archivo /etc/inittab para obtener más
información acerca de los niveles de ejecución.

Visualización de un histórico de niveles de ejecución anteriores


Puede visualizar un histórico de los niveles de ejecución anteriores utilizando el mandato fwtmp.
Nota: El código [Link] debe estar instalado en el sistema para utilizar este mandato.
1. Inicie la sesión como usuario root.
2. Escriba lo siguiente en un indicador de mandatos:

/usr/lib/acct/fwtmp </var/adm/wtmp |grep run-level

El sistema visualiza información similar a la siguiente:

run-level 2 0 1 0062 0123 697081013 Dom 2 Feb [Link] CST 1992


run-level 2 0 1 0062 0123 697092441 Dom 2 Feb [Link] CST 1992
run-level 4 0 1 0062 0123 698180044 Sáb 15 Feb [Link] CST 1992

14 AIX Versión 7.2: Gestión del sistema operativo


run-level 2 0 1 0062 0123 698959131 Dom 15 Feb [Link] CST 1992
run-level 5 0 1 0062 0123 698967773 Lun 24 Feb [Link] CST 1992

Configuración de niveles de ejecución en sistemas de múltiples usuarios


Puede cambiar los niveles de ejecución en los sistemas de múltiples usuarios.
1. Compruebe el archivo /etc/inittab y confirme que el nivel de ejecución al que cambia soporta los
procesos que está ejecutando.
El proceso getty es especialmente importante, ya que controla el acceso a la línea de terminal para la
consola del sistema y otros inicios de sesión. Asegúrese de que el proceso getty está habilitado en
todos los niveles de ejecución.
2. Utilice el mandato wall para informar a todos los usuarios que piensa cambiar el nivel de ejecución y
solicitar que finalicen la sesión.
Para obtener más información sobre el mandato wall, consulte el apartado wall.
3. Utilice la vía rápida smit telinit para acceder al menú Establecer el Nivel de Ejecución del
Sistema.
4. Escriba el nuevo nivel de ejecución en el campo NIVEL DE EJECUCIÓN del Sistema.
5. Pulse Intro para implementar todos los valores de este procedimiento.
El sistema responde indicando los procesos que están terminando o iniciando como resultado del
cambio del nivel de ejecución y visualizando el mensaje:

INIT: Nuevo nivel de ejecución: n

donde n es el número del nuevo nivel de ejecución.

Configuración de los niveles de ejecución en sistemas de un solo usuario


Puede cambiar los niveles de ejecución en los sistemas de un solo usuario.
1. Compruebe el archivo /etc/inittab para confirmar que el nivel de ejecución al que está cambiando
soporta los procesos que está ejecutando.
El proceso getty es especialmente importante, ya que controla el acceso a la línea de terminal para la
consola del sistema y otros inicios de sesión. Asegúrese de que el proceso getty está habilitado en
todos los niveles de ejecución. Para obtener más información acerca del archivo inittab, consulte el
apartado inittab.
2. Utilice la vía rápida smit telinit para acceder al menú Establecer Nivel de Ejecución del Sistema.
Para obtener más información acerca del mandato telinit, consulte el apartado telinit.
3. Escriba el nuevo nivel de ejecución del sistema en el campo NIVEL DE EJECUCIÓN del Sistema.
4. Pulse Intro para implementar todos los valores de este procedimiento.
El sistema responde indicando los procesos que están terminando o iniciando como resultado del
cambio del nivel de ejecución y visualizando el mensaje:

INIT: Nuevo nivel de ejecución: n

donde n es el número del nuevo nivel de ejecución.

Proceso de arranque
Hay tres tipos de arranques del sistema y dos recursos que se necesitan para arrancar el sistema
operativo.
Durante el proceso de arranque, el sistema prueba el hardware, carga y ejecuta el sistema operativo y
configura los dispositivos. Para arrancar el sistema operativo, se necesitan los recursos siguientes:
• Una imagen de arranque que se puede cargar después de encender o restablecer la máquina.
• Acceso a los sistemas de archivos raíz (/) y /usr.
Hay tres tipos de arranques del sistema:

Gestión del sistema operativo 15


Elemento Descripción
Arranque de disco duro Se inicia una máquina para operaciones normales.
Arranque de red sin disco Una estación de trabajo sin disco o sin datos se inicia remotamente
a través de la red. Se inicia una máquina para operaciones
normales. Uno o varios servidores de archivos remotos
proporcionan los archivos y los programas que las estaciones de
trabajo sin disco o sin datos necesitan para arrancar.
Arranque de mantenimiento Una máquina se inicia desde un disco duro, red, cinta o CD-ROM en
modalidad de mantenimiento. El administrador del sistema puede
realizar tareas como instalar software nuevo o actualizado y
ejecutar comprobaciones de diagnóstico.

Durante un arranque de disco duro, la imagen de arranque se encuentra en un disco local creado cuando
se ha instalado el sistema operativo. Durante el proceso de arranque, el sistema configura todos los
dispositivos encontrados en la máquina e inicializa otro software básico necesario para que el sistema
funcione (por ejemplo, el Gestor de volúmenes lógicos). Al final de este proceso, los sistemas de archivos
se montan y están preparados para utilizarlos.
Los mismos requisitos generales se aplican a los clientes de red sin disco. También necesitan una imagen
de arranque y acceder al árbol de archivos del sistema operativo. Los clientes de red sin disco no tienen
sistemas de archivos locales y obtienen toda su información mediante el acceso remoto.
Conceptos relacionados
Proceso de arranque del sistema
La mayoría de usuarios realizan un arranque de disco duro al iniciar el sistema para operaciones
generales. El sistema encuentra toda la información necesaria para el proceso de arranque en su unidad
de disco.
Proceso de arranque de mantenimiento
En ocasiones, se necesita un rearranque para realizar tareas especiales como la instalación de software
nuevo o actualizado, la realización de comprobaciones de diagnóstico o para el mantenimiento. En estos
casos, el sistema se inicia desde un soporte arrancable como, por ejemplo, un CD-ROM, DVD, una unidad
de cintas, la red o una unidad de disco.
Sistema de archivos RAM
El sistema de archivos RAM, parte de la imagen de arranque, reside totalmente en la memoria y contiene
todos los programas que permiten continuar el proceso de arranque. Los archivos del sistema de archivos
RAM son específicos para el tipo de arranque.

Proceso de arranque del sistema


La mayoría de usuarios realizan un arranque de disco duro al iniciar el sistema para operaciones
generales. El sistema encuentra toda la información necesaria para el proceso de arranque en su unidad
de disco.
Cuando el sistema se inicia encendiendo el interruptor de alimentación (arranque en frío) o se reinicia con
los mandatos reboot o shutdown (arranque en caliente), se pueden producir diversos sucesos antes de
que el sistema esté preparado para poderse utilizar. Estos sucesos se pueden dividir en las siguientes
fases:
Conceptos relacionados
Proceso de arranque
Hay tres tipos de arranques del sistema y dos recursos que se necesitan para arrancar el sistema
operativo.

Fase de firmware
El firmware prepara el sistema para cargar y ejecutar el sistema operativo.
Su fase de inicialización implica los pasos siguientes:

16 AIX Versión 7.2: Gestión del sistema operativo


1. El firmware realiza una prueba básica en los recursos del sistema que son necesarios para iniciar el
sistema operativo.
2. El firmware comprueba la lista de arranque del usuario, una lista de dispositivos de arranque
disponibles. Esta lista de arranque se puede modificar para acomodarse a las necesidades utilizando
el mandato bootlist. Si la lista de arranque del usuario en la memoria de acceso aleatoria no volátil
(NVRAM) no es válida o si no se encuentra un dispositivo de arranque válido, se comprueba la lista de
arranque predeterminada. En cualquier caso, el primer dispositivo de arranque válido que se
encuentra en la lista de arranque se utiliza para el arranque del sistema. Si existe una lista de arranque
del usuario válida en NVRAM, los dispositivos de la lista se comprueban por orden. Si no existe una
lista de arranque del usuario, se comprueban todos los adaptadores y dispositivos del bus. En
cualquier caso, los dispositivos se comprueban en un bucle continuo hasta que se encuentra un
dispositivo de arranque válido para el arranque del sistema.
Nota: El sistema mantiene una lista de arranque predeterminada que se guarda en NVRAM para el
arranque en modalidad normal. En NVRAM, también se guarda otra lista de arranque en modalidad de
servicio. Debe consultar las instrucciones específicas del hardware correspondientes a su modelo para
ver cómo se accede a la lista de arranque en modalidad de servicio.
3. Cuando se encuentra un dispositivo de arranque válido, se comprueba el primer registro o número de
sector de programa (PSN). Si se trata de un registro de arranque válido, se lee en la memoria y se
añade al bloque de control de IPL en la memoria. En los datos de registro de arranque de clave se
incluyen la ubicación de inicio de la imagen de arranque en el dispositivo de arranque, la longitud de la
imagen de arranque y las instrucciones sobre dónde se debe cargar la imagen de arranque en la
memoria.
4. La imagen de arranque se lee secuencialmente desde el dispositivo de arranque en la memoria
empezando en la ubicación especificada en NVRAM. La imagen de arranque de disco consiste en el
kernel, un sistema de archivos RAM y la información de dispositivo personalizada base.
5. El control se pasa al kernel, que empieza la inicialización del sistema.
6. El kernel ejecuta init, que ejecuta la fase 1 del script [Link].
Cuando se completa la fase de inicialización del kernel, empieza la configuración del dispositivo base.

Fase de configuración del dispositivo base


El proceso init inicia el script [Link]. La fase 1 del script [Link] realiza la configuración del
dispositivo base.
La fase 1 del script [Link] incluye los pasos siguientes:
1. El script de arranque llama al programa restbase para crear la base de datos personalizada del Gestor
de Datos Objeto (ODM) en el sistema de archivos RAM a partir de los datos personalizados
comprimidos.
2. El script de arranque inicia el gestor de configuración, que accede a las normas de configuración de
ODM de la fase 1 para configurar los dispositivos base.
3. El gestor de configuración inicia los métodos de configuración de sys, bus, disk, SCSI, el Gestor de
volúmenes lógicos (LVM) y el grupo de volúmenes rootvg.
4. Los métodos de configuración cargan los controladores de dispositivos, crean archivos especiales y
actualizan los datos personalizados en la base de datos ODM.

Arranque del sistema


Este procedimiento completa la fase de arranque del sistema.

1. El proceso init inicia la ejecución de la fase 2 del script [Link]. La fase 2 de [Link] incluye los
pasos siguientes:
a) Llame al programa ipl_varyon para cambiar el grupo de volúmenes rootvg.
b) Monte los sistemas de archivos de disco duro en sus puntos de montaje normales.
c) Ejecute el programa swapon para empezar la paginación.

Gestión del sistema operativo 17


d) Copie los datos personalizados de la base de datos ODM en el sistema de archivos RAM de la base
ODM del sistema de archivos del disco duro.
e) Salga del script [Link].
2. Después de que se complete la fase 2 del script [Link], el proceso de arranque cambia del sistema
de archivos RAM a los sistemas de archivos que están almacenados en el disco duro.
3. Después el proceso init ejecuta los procesos definidos por los registros del archivo /etc/inittab.
Una de las instrucciones del archivo /etc/inittab ejecuta la fase 3 del script [Link], que incluye
los pasos siguientes:
a) Monte el sistema de archivos de disco duro /tmp.
b) Inicie la fase 2 del gestor de configuración para configurar todos los dispositivos restantes.
c) Utilice el mandato savebase para guardar los datos personalizados en el volumen lógico de
arranque.
d) Salga del script [Link].
Al final del proceso, el sistema está preparado para utilizarlo.

Proceso de arranque de mantenimiento


En ocasiones, se necesita un rearranque para realizar tareas especiales como la instalación de software
nuevo o actualizado, la realización de comprobaciones de diagnóstico o para el mantenimiento. En estos
casos, el sistema se inicia desde un soporte arrancable como, por ejemplo, un CD-ROM, DVD, una unidad
de cintas, la red o una unidad de disco.
La secuencia de arranque de mantenimiento de los sucesos es similar a la secuencia de un arranque
normal.
1. El firmware realiza una prueba básica en los recursos del sistema que son necesarios para iniciar el
sistema operativo.
2. El firmware comprueba la lista de arranque del usuario. Puede utilizar el mandato bootlist para
modificar la lista de arranque del usuario para acomodarla a sus requisitos. Si la lista de arranque del
usuario en NVRAM (Memoria de acceso aleatorio no volátil)no es válida o si no se encuentra ningún
dispositivo de arranque válido, se comprueba la lista de arranque predeterminada. En cualquier caso,
el primer dispositivo de arranque válido que se encuentra en la lista de arranque se utiliza para iniciar
el sistema.
Nota: Para un arranque normal, el sistema operativo también mantiene una lista de arranque
predeterminada y una lista de arranque del usuario almacenadas en NVRAM. La lista de arranque
predeterminada y la lista de arranque del usuario también se mantienen durante el inicio del sistema
en modo de mantenimiento.
3. Cuando se encuentra un dispositivo de arranque válido, se comprueba el primer registro o número de
sector de programa (PSN). Si se trata de un registro de arranque válido, se lee en la memoria y se
añade al bloque de control de la carga del programa inicial (IPL) en memoria. En los datos del registro
de arranque de claves se incluyen la ubicación de inicio de la imagen de arranque en el dispositivo de
arranque, la longitud de la imagen de arranque y el desplazamiento para el punto de entrada para
empezar la ejecución cuando la imagen de arranque está en la memoria.
4. La imagen de arranque se lee secuencialmente desde el dispositivo de arranque en la memoria,
empezando por la ubicación especificada en NVRAM.
5. El control se pasa al kernel, que empieza a ejecutar los programas del sistema de archivos RAM.
6. El contenido de la base de datos ODM determina qué dispositivos están presentes y el mandato
cfgmgr configura dinámicamente todos los dispositivos encontrados, incluyendo todos los discos que
deben contener el sistema de archivos raíz.
7. Si se utiliza un CD-ROM, DVD, una cinta o la red para arrancar el sistema, el grupo de volúmenes rootvg
(o rootvg) no se activa, porque puede que rootvg no exista (como en el caso de la instalación del
sistema operativo en un nuevo sistema). Se puede producir la configuración de la red en este
momento. No se produce ninguna paginación cuando se realiza un arranque de mantenimiento.

18 AIX Versión 7.2: Gestión del sistema operativo


Al final de este proceso, el sistema está preparado para la instalación, el mantenimiento o los
diagnósticos.
Nota: Si el sistema se inicia desde el disco duro, rootvg se activa, el sistema de archivos raíz de disco duro
y el sistema de archivos de disco duro /usr se montan en el sistema de archivos RAM, se visualiza un
menú que permite entrar en varias modalidades de diagnóstico o en la modalidad de un solo usuario.
Puede seleccionar la modalidad de un solo usuario, puede continuar el proceso de arranque y entrar en
modalidad de un solo usuario, donde el nivel de ejecución de init se establece en "S". El sistema ya
estará preparado para las actualizaciones de software, mantenimiento o para ejecutar el mandato
bosboot.
Conceptos relacionados
Proceso de arranque
Hay tres tipos de arranques del sistema y dos recursos que se necesitan para arrancar el sistema
operativo.

Sistema de archivos RAM


El sistema de archivos RAM, parte de la imagen de arranque, reside totalmente en la memoria y contiene
todos los programas que permiten continuar el proceso de arranque. Los archivos del sistema de archivos
RAM son específicos para el tipo de arranque.
Es posible que un sistema de archivos RAM de arranque de mantenimiento no tenga rutinas de
volúmenes lógicos, ya que es posible que no se deba activar rootvg. Sin embargo, durante un arranque de
disco duro, es conveniente activar rootvg y la paginación en cuanto sea posible. Aunque hay diferencias
en estos dos casos de ejemplo de arranque, la estructura del sistema de archivos RAM no cambia mucho.
El mandato init, que está en el sistema de archivos RAM, es un programa de intérprete de mandatos de
arranque básico creado para utilizarlo durante el proceso de arranque. Este programa de intérprete de
mandatos de arranque controla el proceso de arranque llamando al script [Link] script. El script
[Link] determina la máquina desde donde se inicia el dispositivo. El dispositivo de arranque determina
los dispositivos que se deben configurar en el sistema de archivos RAM. Si la máquina se ha iniciado en la
red, los dispositivos de red se deben configurar de manera que los sistemas de archivos del cliente se
puedan montar remotamente. En el caso de un arranque de cinta, de CD-ROM o de DVD, la consola se
configura para visualizar los menús de instalación de BOS (sistema operativo base). Después de que
[Link] identifique el dispositivo de arranque, se llaman a las rutinas de configuración adecuadas desde
el sistema de archivos RAM. El programa de intérprete de mandatos de arranque llama dos veces al script
[Link] para que coincidan las dos fases de configuración durante el arranque. Una tercera llamada a
[Link] se produce durante un arranque de disco o de red cuando se llama al mandato init real. El
archivo inittab contiene una stanza [Link] que completa la configuración final de la máquina.
El sistema de archivos RAM para cada dispositivo de arranque también es exclusivo debido a los distintos
tipos de dispositivos que se deben configurar. Hay un archivo prototipo asociado a cada tipo de
dispositivo de arranque. El archivo prototipo es una plantilla de archivos que componen el sistema de
archivos RAM. El mandato bosboot utiliza el mandato mkfs para crear el sistema de archivos RAM
utilizando los distintos archivos prototipo. Consulte el mandato bosboot para ver más detalles.
Conceptos relacionados
Proceso de arranque
Hay tres tipos de arranques del sistema y dos recursos que se necesitan para arrancar el sistema
operativo.

Resolución de problemas de arranque del sistema


Utilice los siguientes métodos de resolución de problemas para solucionar algunos de los problemas
básicos que pueden producirse al iniciar el sistema. Si la información de resolución de problemas no
resuelve su problema, póngase en contacto con el representante de servicio.

Sistemas que no arrancan


Aunque un sistema no arranque desde el disco duro, todavía puede obtener acceso al sistema para
averiguar y corregir el problema.

Gestión del sistema operativo 19


Si tiene un sistema que no arranca desde el disco duro, consulte el procedimiento acerca de cómo
acceder a un sistema que no arranca en el apartado Resolución de problemas de instalación de
Installation and migration.
Este procedimiento permite obtener un indicador del sistema para que pueda intentar recuperar datos
del sistema o realizar la acción correctora que permita que el sistema rearranque desde el disco duro.
Nota:
• Este procedimiento sólo está pensado para los gestores del sistema con experiencia que tienen
conocimientos de cómo arrancar y recuperar datos de un sistema que no puede arrancar desde el disco
duro. La mayoría de usuarios no deben intentar este procedimiento, sino que deben ponerse en
contacto con el representante de servicio.
• Este procedimiento no está pensado para los gestores del sistema que acaban de completar una nueva
instalación, porque en este caso el sistema no contiene datos que se deban recuperar. Si no puede
arrancar desde el disco duro después de completar una nueva instalación, póngase en contacto con el
representante de servicio.
Referencia relacionada
Diagnósticos de problemas de arranque
Distintos factores pueden hacer que un sistema no pueda arrancar.

Diagnósticos de problemas de arranque


Distintos factores pueden hacer que un sistema no pueda arrancar.
Algunos de estos factores son:
• Problemas de hardware
• Cintas o CD-ROM de arranque defectuosos
• Servidores de arranque de red configurados incorrectamente
• Sistemas de archivos dañados
• Errores en scripts como /sbin/[Link]
Si el proceso de arranque se detiene con el código de referencia 2702 y muestra un mensaje que indica
que la cantidad de memoria autorizada no es suficiente ("INSUFFICIENT ENTITLED MEMORY"), utilice
HMC para aumentar la cantidad de memoria autorizada disponible para dicha partición.
Conceptos relacionados
Sistemas que no arrancan
Aunque un sistema no arranque desde el disco duro, todavía puede obtener acceso al sistema para
averiguar y corregir el problema.

Copia de seguridad del sistema


Una vez que el sistema esté en marcha, la siguiente consideración que debe tener en cuenta debe ser
hacer copia de seguridad de los sistemas de archivos, directorios y archivos. Si hace copia de seguridad
de los sistemas de archivos, puede restaurar los archivos o los sistemas de archivos en caso de que el
disco duro se cuelgue. Hay métodos diferentes para hacer copia de seguridad de la información.
La copia de seguridad de sistemas de archivos, directorios y archivos representa una inversión importante
de tiempo y esfuerzo. A la vez, todos los archivos del sistema se pueden cambiar o borrar con facilidad,
intencionada o accidentalmente.
Atención: Cuando se cuelga un disco duro, la información que contiene se destruye. La única
forma de recuperar los datos destruidos es recuperar la información a partir de la copia de
seguridad.
Si realiza la copia de seguridad de los sistemas de archivos de forma cuidadosa y metódica, siempre
podrá restaurar las versiones recientes de los archivos o de los sistemas de archivos sin dificultad.
Existen diversos métodos para hacer copia de seguridad de la información. Uno de los métodos utilizados
con más frecuencia se denomina copia de seguridad por nombre, archivado de nombres de archivos o

20 AIX Versión 7.2: Gestión del sistema operativo


copia de seguridad regular. Se trata de una copia de un sistema de archivos, un directorio o un archivo
que se conserva para la transferencia de archivos o para el caso de que se cambien o destruyan
accidentalmente los datos originales. Este método de copia de seguridad se realiza cuando se especifica
el distintivo i y se utiliza para hacer una copia de seguridad de archivos individuales y directorios. Se trata
de un método utilizado normalmente por usuarios individuales para hacer copia de seguridad de sus
cuentas.
Otro método utilizado con frecuencia se denomina copia de seguridad por i-nodo, archivado de sistemas
de archivos o copia de seguridad de archivado. Este método de copia de seguridad se realiza cuando el
distintivo i no se especifica. Se utiliza para futuras referencias, finalidades históricas o para la
recuperación si se dañan o pierden los datos originales. Se utiliza para hacer una copia de seguridad de
todo un sistema de archivos y es el método que los administradores del sistema utilizan normalmente
para hacer copia de seguridad de grandes grupos de archivos como, por ejemplo, todas las cuentas de
usuario de /home. Una copia de seguridad de sistema de archivos permite realizar fácilmente copias de
seguridad incrementales. Una copia de seguridad incremental hace copia de seguridad de todos los
archivos que se han modificado desde la copia de seguridad anterior especificada.
Los mandatos compress y pack permiten comprimir archivos para almacenamiento y los mandatos
uncompress y unpack desempaquetan los archivos cuando se han restaurado. El proceso de
empaquetamiento y desempaquetamiento de archivos tarda tiempo, pero una vez empaquetados, los
datos utilizan menos espacio de tiempo en el soporte de copia de seguridad. Para obtener más
información acerca de estos mandatos, consulte compress, pack, uncompress y unpack.
Existen varios mandatos que crean copias de seguridad y archivados. Por esto, los datos de los que se ha
hecho copia de seguridad se deben etiquetar para saber el mandato que se ha utilizado para iniciar la
copia de seguridad, y cómo se ha realizado la copia de seguridad (por nombre o por sistema de archivos).

Elemento Descripción
backup Hace copia de seguridad por nombre o por sistema de archivos. Para obtener más
información, consulte backup.
mksysb Crea una imagen instalable de rootvg. Para obtener más información, consulte mksysb.
cpio Copia archivos en y desde el almacenamiento de archivado. Para obtener más
información, consulte cpio.
dd Convierte y copia un archivo. Normalmente se utiliza para convertir y copiar datos en
sistemas que ejecutan otros sistemas operativos o desde ellos, por ejemplo, sistemas
principales. dd no agrupa múltiples archivos en un archivado; se utiliza para manipular y
mover datos. Para obtener más información, consulte dd.
tar Crea o manipula archivados de formato tar. Para obtener más información, consulte tar.
rdump Hace copia de seguridad de archivos por sistema de archivos en el dispositivo de una
máquina remota. Para obtener más información, consulte rdump.
pax (Programa de utilidad de archivado que se ajusta a POSIX) lee y graba archivados tar y
cpio. Para obtener más información, consulte pax.

Conceptos relacionados
Copia de seguridad para los gestores del sistema BSD 4.3
Los gestores del sistema BSD 4.3 pueden hacer copia de seguridad de datos.
Tareas relacionadas
Copia de seguridad de archivos o sistemas de archivos del usuario
Se pueden utilizar dos procedimientos para hacer copia de seguridad de archivos y sistemas de archivos:
las vías rápidas de SMIT smit backfile o smit backfilesys, y el mandato backup.

Conceptos de copia de seguridad


Antes de empezar a realizar una copia de seguridad de los datos, debe conocer los tipos de datos, las
políticas y los soportes que puede utilizar.

Gestión del sistema operativo 21


Políticas de copia de seguridad
Ninguna política de copias de seguridad cumple con los requisitos de todos los usuarios. Una política que
funciona bien para un sistema con un usuario, por ejemplo, puede ser inadecuada para un sistema que
sirve a cientos de usuarios. De igual modo, una política desarrollada para un sistema en que pueden
modificarse muchos archivos diariamente sería ineficaz para un sistema en el que los datos cambian con
poca frecuencia.
Se cual sea la estrategia de copia de seguridad adecuada para el sitio, es muy importante que exista una y
que se hagan copias de seguridad con frecuencia y regularmente. Es difícil la recuperación de la pérdida
de datos si no se ha implementado una buena estrategia de copia de seguridad.
Sólo el propio usuario puede determinar la mejor política de copia de seguridad para el sistema, pero las
siguientes directrices generales pueden ser útiles:
• Asegúrese de que puede realizar la recuperación ante pérdidas importantes.
¿Puede seguir funcionado el sistema si falla alguno de los discos duros fijos? ¿Puede restaurar el
sistema si fallan todos los discos duros? ¿Podría restablecer el sistema si perdiera los disquetes o
cintas de seguridad por incendio o robo? Si se pierden datos, ¿qué dificultades supondría tener que
volver a crearlos? Considere las posibles pérdidas principales, aunque no sean probables, y diseñe una
política de copia de seguridad que permita realizar la recuperación del sistema tras producirse
cualquiera de ellas.
• Compruebe las copias de seguridad periódicamente.
Los soportes de copia de seguridad y su hardware pueden no ser fiables. Una gran biblioteca de cintas o
disquetes de copia de seguridad es inútil si no se pueden volver a leer los datos en un disco fijo. Para
asegurarse de que se pueden utilizar las copias de seguridad, visualice periódicamente la tabla de
contenido de la cinta de copia de seguridad (utilizando restore -T o tar -t para cintas de
archivado). Si utiliza disquetes para las copias de seguridad y tiene más de una unidad de disquetes, lea
los disquetes desde otra unidad que no sea donde las ha creado. También puede repetir cada copia de
seguridad de nivel 0 en un segundo conjunto de soportes para más seguridad. Si utiliza un dispositivo
de cintas en modalidad continua para las copias de seguridad, puede utilizar el mandato tapechk para
realizar comprobaciones de coherencia básicas en la cinta. Para obtener más información acerca de
estos mandatos, consulte restore -T, tar -t y tapechk.
• Conserve las copias de seguridad antiguas.
Desarrolle un plan cíclico regular de reutilización de los soportes de copias de seguridad; no obstante,
no vuelva a utilizar todos los soportes de copia de seguridad. A veces, puede que transcurran meses
antes de darse cuenta de que falta un archivo importante o que está dañado. Guarde las copias de
seguridad antiguas para estos casos. Por ejemplo, podría planificar los siguientes tres ciclos de cintas o
disquetes de copias de seguridad:
– Una vez por semana, recicle todos los disquetes diarios, excepto el del viernes.
– Una vez por mes, reciclar todos los disquetes del viernes excepto el del último viernes del mes. Con
ello, las cuatro últimas copias de seguridad de los viernes siempre estarán disponibles.
– Una vez por trimestre, reciclar todos los disquetes mensualmente a excepción del último. Conserve
el último disquete mensual de cada trimestre indefinidamente, preferiblemente en un edificio
diferente.
• Compruebe los sistemas de archivos antes de hacer copia de seguridad.
Una copia de seguridad de un archivo dañado no será útil. Antes de realizar las copias de seguridad, se
recomienda comprobar la integridad del sistema de archivos con el mandato fsck. Para obtener más
información, consulte fsck.
• Asegúrese de que los archivos no se están utilizando durante la copia de seguridad.
No utilice el sistema cuando haga copias de seguridad. Si el sistema está en uso, los archivos pueden
cambiar mientras está realizándose la copia de seguridad de éstos y, por lo tanto, la copia de seguridad
no será precisa.
• Haga copia de seguridad del sistema antes de realizar cambios importantes en él.

22 AIX Versión 7.2: Gestión del sistema operativo


Es siempre aconsejable hacer copias de seguridad del sistema de archivos antes de realizar cualquier
prueba de hardware o trabajo de reparación o antes de instalar algún nuevo dispositivo, programa u
otras características.
• Otros factores.
Cuando planifique e implemente una estrategia de realización de copias de seguridad, tenga en cuenta
los factores siguientes:
– ¿Con qué frecuencia cambian los datos? Los datos del sistema operativo no cambian con demasiada
frecuencia, por lo tanto, no es necesario que realice con frecuencia la copia de seguridad de ellos.
Por otro lado, los datos del usuario normalmente cambian con frecuencia, por lo que debe hacer
copia de seguridad de ellos con frecuencia.
– ¿Cuántos usuarios hay en el sistema? El número de usuarios influye en la cantidad de medios de
almacenamiento necesarios y en la frecuencia con que han de realizarse las copias de seguridad.
– ¿Qué dificultades supondría tener que volver a crear los datos? Es importante tener en cuenta que
algunos datos no pueden volver a crearse si no existe ninguna copia de seguridad disponible.
Para proteger los datos, es muy importante contar con una estrategia de realización de copias de
seguridad adecuada. La evaluación de las necesidades de su entorno le ayudará a determinar cuál es la
política de copias de seguridad más adecuada. Realice copias de seguridad de la información de los
usuarios con frecuencia y de forma regular. La recuperación de una pérdida de datos es muy difícil si no
se ha implementado una buena estrategia de copias de seguridad.

Nota: Para la copia de seguridad de conductos con nombre (archivos especiales FIFO), los conductos
pueden estar cerrados o abiertos. Sin embargo, la restauración falla cuando se realiza la copia de
seguridad en conductos con nombre abiertos. Cuando se restaura un archivo especial FIFO, el i-nodo es
lo único necesario para volver a crearlo porque contiene toda la información de las características. El
contenido del conducto con nombre no es importante para la restauración. Por lo tanto, el tamaño de
archivo durante la copia de seguridad es cero (todos los FIFO cerrados) antes de realizar la copia de
seguridad.
Atención: Los procedimientos de copia de seguridad y restauración del sistema necesitan que
éste se restaure en el mismo tipo de plataforma desde la que se hecho la copia de seguridad. En
particular, las placas base de CPU y E/S deben ser del mismo tipo.

Soportes de copias de seguridad


Existen varios tipos distintos de soportes para la realización de las copias de seguridad. Los distintos
tipos de medios de seguridad para la configuración específica del sistema depende del software y del
hardware.
Están disponibles varios tipos de soportes de copia de seguridad. Los tipos de soportes de copia de
seguridad disponibles para una configuración específica del sistema dependen del software y el
hardware. Los tipos que se utilizan con más frecuencia son las cintas (cintas de 8 mm y cintas de 9
pistas), disquetes (disquetes de 5,25 pulgadas y disquetes de 3,5 pulgadas), archivados remotos y discos
duros locales alternativos. A menos que especifique un dispositivo diferente utilizando el mandato
backup -f, el mandato backup graba automáticamente la salida en /dev/rfd0, que es la unidad de
disquetes.
Atención: La ejecución del mandato backup da lugar a la pérdida de todo el material almacenado
previamente en el soporte de copia de seguridad seleccionado.
Disquetes
Los disquetes son el medio de copias de seguridad estándar. A menos que especifique un dispositivo
diferente utilizando el mandato backup -f, el mandato backup graba automáticamente su salida en
el dispositivo /dev/rfd0, que es la unidad de disquetes. Para realizar la copia de seguridad de los
datos en el dispositivo de cintas por omisión, escriba /dev/rmt0 y pulse Intro.
Manipule los disquetes cuidadosamente. Puesto que cada unidad de información ocupa una pequeña
zona del disquete, las pequeñas motas, polvo o partículas de tabaco pueden dejar la información
inutilizable. Asegúrese de recordar lo siguiente:

Gestión del sistema operativo 23


• No toque las superficies de grabación.
• Mantenga los disquetes alejados de imanes y de fuentes que generen campos magnéticos como,
por ejemplo, teléfonos, el equipo para el dictado y las calculadoras electrónicas.
• Mantenga los disquetes lejos de temperaturas extremas. La temperatura recomendada oscila entre
los 10 y los 60 grados Celsius (entre 50 y 140 grados Fahrenheit).
• Un manejo correcto ayuda a evitar la pérdida de información.
• Realice copias de seguridad de los disquetes con regularidad.
Atención: Las unidades de disquetes y los disquetes deben ser del tipo correcto para
almacenar datos satisfactoriamente. Si utiliza un disquete incorrecto en la unidad de disquetes
de 3,5 pulgadas, los datos del disquete podrían destruirse.
La unidad de disquetes utiliza los disquetes de 3,5 pulgadas que se indican a continuación:
• 1 MB de capacidad (almacena 720 KB de datos aproximadamente)
• 2 MB de capacidad (almacena 1,44 MB de datos aproximadamente)
Cintas
Por su gran capacidad y duración, la cinta suele ser el soporte que se elige para almacenar archivos
grandes o muchos archivos como, por ejemplo, las copias de archivador de los sistemas de archivos.
También se utilizan para la transferencia de muchos archivos de un sistema a otro. Las cintas no se
suelen utilizar para almacenar archivos a los que se accede con frecuencia dado que otros soportes
proporcionan tiempos de acceso mucho más rápidos.
Los archivos de cinta se crean utilizando mandatos como backup, cpio y tar, que abren una unidad
de cintas, graban en ella y la cierran.

Estrategia de copia de seguridad


Hay dos métodos para hacer copia de seguridad de grandes cantidades de datos.
• Copia de seguridad completa del sistema
• Copia de seguridad incremental
Para comprender estos dos tipos de copia de seguridad y cuál es la correcta para un sitio o sistema, es
importante comprender la estructura del sistema de archivos y la colocación de los datos. Tras decidir la
estrategia de la colocación de los datos, puede desarrollar una estrategia de copia de seguridad para esos
datos.
Tareas relacionadas
Implementación de copias de seguridad planificadas
Este procedimiento describe cómo desarrollar y utilizar un script para realizar una copia de seguridad
completa semanal y copias de seguridad incrementales diarias de archivos del usuario.

Datos del sistema en contraposición a datos del usuario


Los datos se definen como programas o texto y para esta presentación se dividen en dos clases:
• Datos del sistema, que componen el sistema operativo y sus ampliaciones. Estos datos siempre se
deben guardar en los sistemas de archivos del sistema, a saber, / (raíz), /usr, /tmp, /var, etcétera.
• Normalmente, los datos del usuario son datos locales que las personas necesitan para completar
tareas específicas. Estos datos se deben mantener en el sistema de archivos /home o en los sistemas
de archivos que se crean específicamente para los datos del usuario.
Los programas y el texto del usuario no se deben colocar en los sistemas de archivos diseñados para
contener datos del sistema. Por ejemplo, un gestor del sistema puede crear un nuevo sistema de archivos
y montarlo en /local. Una excepción es /tmp, que se utiliza para el almacenamiento temporal de datos
del sistema y del usuario.

24 AIX Versión 7.2: Gestión del sistema operativo


Copias de seguridad
En general, se conservan copias de seguridad de los datos del usuario y del sistema por si se eliminan
accidentalmente o se produce una anomalía de disco. Es más fácil gestionar las copias de seguridad
cuando los datos del usuario se conservan separados de los datos del sistema.
Las razones para mantener los datos del sistema separados de los datos del usuario son:
• Los datos del usuario tienden a cambiar con mucha más frecuencia que los datos del sistema operativo.
Las imágenes de copia de seguridad son mucho más pequeñas si no se realiza la copia de seguridad de
los datos del sistema en la misma imagen que los datos del usuario. El número de usuarios influye en la
frecuencia y en los medios de almacenamiento necesarios con que han de realizarse las copias de
seguridad.
• Es más rápido y fácil restaurar los datos del usuario cuando se conservan por separado. La restauración
del sistema operativo junto con los datos del usuario necesita tiempo y esfuerzo adicionales. La razón
es que el método utilizado para recuperar los datos del sistema operativo implica el arranque del
sistema desde un soporte extraíble (cinta o CD) y la instalación de la copia de seguridad del sistema.
Para hacer copia de seguridad de los datos del sistema, desmonte todos los sistemas de archivos del
usuario, incluyendo /home con el mandato umount. Si estos sistemas de archivos se están utilizando, no
puede desmontarlos. Planifique las copias de seguridad en periodos de poco uso a fin de que se puedan
desmontar; si los sistemas de archivos de datos del usuario permanecen montados, se hará copia de
seguridad de ellos junto con los datos del sistema operativo. Utilice el mandato mount para garantizar
que sólo se monten los sistemas de archivos del sistema operativo.
Los únicos sistemas de archivos montados son /, /usr, /var y /tmp y el resultado del mandato mount
puede ser similar a la siguiente salida:

nodo montado montado sobre vfs fecha opciones

/dev/hd4 / jfs Jun 11 10:36 rw,log=/dev/hd8

/dev/hd2 /usr jfs Jun 11 10:36 rw,log=/dev/hd8

/dev/hd9var /var jfs Jun 11 10:36 rw,log=/dev/hd8

/dev/hd /tmp jfs Jun 11 10:36 rw,log=/dev/hd8

Cuando esté seguro de que se han desmontado todos los sistemas de archivos del usuario, estará
preparado para realizar una copia de seguridad de los datos del sistema operativo.
Cuando finalice la copia de seguridad del sistema operativo, monte el sistema de archivos de usuario
utilizando el mandato smit mount. Después, puede hacer copia de seguridad de los archivos, sistemas
de archivos u otros grupos de volúmenes, según las necesidades.
Conceptos relacionados
Copia de seguridad de la imagen del sistema y de grupos de volúmenes definidos por el usuario
rootvg se almacena en un disco duro, o grupo de discos, y contiene los archivos de arranque, el BOS, la
información de configuración y los productos de software opcionales. Normalmente un grupo de
volúmenes definido por el usuario (también denominado grupo de volúmenes no rootvg) contiene archivos
de datos y software de aplicaciones.

Réplica del sistema (clonación)


La clonación permite guardar los datos de configuración junto con los datos del usuario o del sistema. Por
ejemplo, es posible que desee replicar un sistema o un grupo de volúmenes; a veces es denomina
clonación.
Después puede instalar esta imagen en otro sistema y puede utilizarla igual que el primer sistema. El
mandato mksysb se utiliza para clonar el grupo de volúmenes rootvg, que contiene el sistema operativo,
mientras que el mandato savevg se utiliza para clonar un grupo de volúmenes.

Resumen de mandatos para archivos de copia de seguridad y soportes de almacenamiento


Hay mandatos disponibles para hacer copia de seguridad de archivos y almacenar datos.

Gestión del sistema operativo 25


Elemento Descripción
backup Realiza la copia de seguridad de los archivos y de los sistemas de archivos
compress Comprime y expande los datos
cpio Copia archivos en y desde el almacenamiento de archivadores y los directorios
fdformat Formatea disquetes
flcopy Copia en y desde los disquetes
format Formatea disquetes
fsck Comprueba la coherencia del sistema de archivos y repara interactivamente el
sistema de archivos
pack Comprime archivos
restore Copia los sistemas de archivos o archivos de los que anteriormente se ha realizado
una copia de seguridad, creados utilizando el mandato backup desde un dispositivo
local
tapechk Comprueba la coherencia de la unidad de cinta de modalidad continua
tar Manipula archivos
tcopy Copia una cinta magnética
uncompress Comprime y expande los datos
unpack Expande archivos

Administración de copias de seguridad del sistema


Existen varias formas de realizar y restaurar una copia de seguridad del sistema.

Copia de seguridad de archivos o sistemas de archivos del usuario


Se pueden utilizar dos procedimientos para hacer copia de seguridad de archivos y sistemas de archivos:
las vías rápidas de SMIT smit backfile o smit backfilesys, y el mandato backup.
• Si hace copia de seguridad por i-nodo de sistemas de archivos que pueden estar en uso, desmóntelos
primero para evitar incoherencias.

Atención: Si intenta hacer copia de seguridad de un sistema de archivos montado, se visualiza


un mensaje de aviso. El mandato backup continúa, pero pueden producirse incoherencias en el
sistema de archivos. Este aviso no se aplica al sistema de archivos raíz (/).
• Para evitar errores, asegúrese de que el dispositivo de copia de seguridad se ha limpiado
recientemente.
Para hacer copia de seguridad de archivos y sistemas de archivos del usuario, puede utilizar las vías
rápidas de SMIT smit backfile o smit backfilesys.
Puede utilizar la interfaz SMIT para hacer copia de seguridad de sistemas de archivos individuales y
pequeños por el nombre como, por ejemplo, /home del sistema local. Tenga en cuenta que SMIT no
puede crear archivados en ningún otro formato que el proporcionado por el mandato backup. Además,
no todos los distintivos del mandato backup están disponibles con SMIT. SMIT puede colgarse si se
necesitan varias cintas o discos durante la copia de seguridad.
Utilice el mandato backup cuando desee hacer copia de seguridad de varios sistemas de archivos
grandes. Puede especificar un número de nivel para controlar la cantidad de datos cuya copia de
seguridad se realiza (completo, 0; incremental, de 1 a 9). La utilización del mandato backup es la única
manera de poder especificar el número de nivel en las copias de seguridad.
El mandato backup crea copias en uno de los dos formatos de copia de seguridad siguientes:
• Copia de seguridad por nombre de archivos específicos utilizando el distintivo -i.

26 AIX Versión 7.2: Gestión del sistema operativo


• Copia de seguridad por i-nodo de sistemas de archivos completos, utilizando los parámetros -Nivel y
SistemaArchivos. El sistema de archivos se desfragmenta cuando se restaura desde la copia de
seguridad.
Atención: La copia de seguridad por i-nodo no funciona correctamente para los archivos que
tienen un ID de usuario (UID) o un ID de grupo (GID) mayor que 65535. La copia de seguridad de
estos archivos se realiza con el UID o GID truncado y, por lo tanto, tendrán atributos de UID o GID
incorrectos cuando se restauren. En estos casos, debe hacer copia de seguridad por nombre.

Tareas de copia de seguridad de archivos o sistemas de archivos del usuario


Tarea Vía rápida de Mandato o archivo
SMIT
Copia de seguridad de archivos del usuario smit 1. Inicie la sesión en la cuenta del
backfile usuario.
2. Copia de seguridad: find . -
print | backup -ivf /dev/
rmt0

Copia de seguridad de sistemas de archivos smit 1. Desmonte los sistemas de archivos


del usuario backfilesys cuya copia de seguridad desea
realizar. Por ejemplo: umount all
o umount /home /filesys1
2. Verifique los sistemas de archivos.
Por ejemplo: fsck /home /
filesys1
3. Haga copia de seguridad por i-
nodo. Por ejemplo: backup -5 -
uf/dev/rmt0 /home/libr
4. Restaure los archivos utilizando el
mandato siguiente: restore -t

Nota: Si este mandato genera un mensaje de error, deberá repetir la copia de seguridad completa.
Conceptos relacionados
Copia de seguridad del sistema
Una vez que el sistema esté en marcha, la siguiente consideración que debe tener en cuenta debe ser
hacer copia de seguridad de los sistemas de archivos, directorios y archivos. Si hace copia de seguridad
de los sistemas de archivos, puede restaurar los archivos o los sistemas de archivos en caso de que el
disco duro se cuelgue. Hay métodos diferentes para hacer copia de seguridad de la información.

Restauración de archivos de copia de seguridad


Tras hacer una copia de seguridad correcta de los datos, hay varios métodos de restaurar los datos
basándose en el tipo de mandato backup que se ha utilizado.
Debe conocer cómo se ha creado la copia de seguridad o el archivado para restaurarlos correctamente.
Cada procedimiento de copia de seguridad proporciona información acerca de la restauración de datos.
Por ejemplo, si utiliza el mandato backup, puede especificar una copia de seguridad por sistema de
archivos o por nombre. Esa copia de seguridad se debe restaurar de la misma manera en que se ha
creado, por sistema de archivos o por nombre.
Varios mandatos restauran los datos de copia de seguridad, por ejemplo:

Elemento Descripción
restore Copia los archivos creados por el mandato backup. Para obtener más información acerca
de la utilización de este mandato, consulte la sección "Restauración de archivos utilizando
el mandato restore'.

Gestión del sistema operativo 27


Elemento Descripción
rrestore Copia los sistemas de archivos de copia de seguridad de una máquina remota en la
máquina local.
cpio Copia archivos en y desde el almacenamiento de archivado.
tar Crea o manipula los archivados tar.
pax (Programa de utilidad de archivado que se ajusta a POSIX) lee y graba archivados tar y
cpio.

Las secciones siguientes explican los mandatos restore y smit.


Nota:
• Los archivos deben restaurarse utilizando el mismo método que el empleado para la realización de la
copia de seguridad de éstos. Por ejemplo, si se ha hecho copia de seguridad de un sistema de archivos
por nombre, debe restaurarse por nombre.
• Cuando se necesita más de un disquete, el mandato restore lee el disquete que se ha montado, le
solicita uno nuevo y espera su respuesta. Después de insertar el nuevo disquete, pulse la tecla Intro
para seguir restaurando archivos.
Restauración de archivos utilizando el mandato restore
Utilice el mandato restore para leer los archivos que se han grabado mediante el mandato backup
y restaurarlos en el sistema local.
Vea los ejemplos siguientes:
• Para listar los nombres de los archivos de los que previamente se ha realizado una copia de
seguridad, escriba lo siguiente:

restore -T

La información se lee del dispositivo de copia de seguridad por omisión /dev/rfd0. Si se ha hecho
copia de seguridad de archivos individuales, únicamente se mostrarán los nombres de los archivos.
Si se ha hecho copia de seguridad de un sistema de archivos entero, también se muestra el número
de inodo.
• Para restaurar archivos en el sistema de archivos principal, escriba lo siguiente:

restore -x -v

El distintivo -x extrae todos los archivos del soporte de copia de seguridad y los restaura en el lugar
que les corresponde en el sistema de archivos. El distintivo -v visualiza un informe de progreso a
medida que va restaurándose cada archivo. Si está restaurándose la copia de seguridad de un
sistema de archivos, los archivos se indican con sus números de inodo. De lo contrario, sólo se
visualizan los nombres.
• Para copiar el archivo /home/mike/manual/chap1, escriba lo siguiente:

restore -xv /home/mike/manual/chap1

Este mandato extrae el archivo /home/mike/manual/chap1 del soporte de copia de seguridad y


lo restaura. El archivo /home/mike/manual/chap1 debe tener un nombre que el mandato
restore -T pueda visualizar.
• Para copiar todos los archivos en un directorio denominado manual, escriba lo siguiente:

restore -xdv manual

28 AIX Versión 7.2: Gestión del sistema operativo


Este mandato restaura el directorio manual y los archivos que contiene. Si el directorio no existe, se
crea un directorio denominado manual en el directorio actual para que contenga los archivos que
se están restaurando.
Restauración de archivos utilizando el mandato smit
Utilice el mandato smit para ejecutar el mandato restore, que lee archivos grabados por el
mandato backup y los restaura en el sistema local.
1. En el indicador de mandatos, escriba lo siguiente:

smit restore

2. Realice su entrada en el campo del directorio de destino, Target DIRECTORY. Éste es el directorio
en el que desea que residan los archivos restaurados.
3. Continúe con el campo del dispositivo de copia de seguridad BACKUP device o del archivo FILE y
escriba el nombre de dispositivo de salida, tal como se muestra en el ejemplo siguiente que
corresponde a un dispositivo de cinta magnética sin procesar:

/dev/rmt0

Si el dispositivo no está disponible, aparece un mensaje similar al siguiente:

No puede abrirse /dev/rmtX, no existe dicho


archivo o directorio.

Este mensaje indica que el sistema no puede acceder al controlador de dispositivo porque no
existe ningún archivo para rmtX en el directorio /dev. Sólo los elementos en estado disponible
se encuentran en el directorio /dev.
4. Para el campo del número de bloques que han de leerse como una única entrada NUMBER of
blocks to read in a single input, se recomienda conservar el valor predeterminado.
5. Para restaurar el sistema de archivos o directorio especificado, pulse Intro.

Creación de un archivado remoto


Utilice este procedimiento para archivar archivos en un dispositivo de cinta remoto.
Los sistemas AIX en ejecución no pueden montar un dispositivo de cinta remoto como si fueran locales
para el sistema; sin embargo, se pueden enviar datos a un dispositivo de cinta de una máquina remota
utilizando el mandato rsh. El siguiente procedimiento sólo graba en una única cinta. Los archivados en
múltiples cintas necesitan software de aplicación especializado.
En el procedimiento siguiente, se supone lo siguiente:
tamañobloque
Representa el tamaño de bloque del dispositivo de cinta de destino.
sistemaprincipalremoto
Es el nombre del sistema de destino (el sistema en el que se encuentra la unidad de cinta).
sistemaprincipalorigen
Es el nombre del sistema de origen (el sistema que se está archivando).
/dev/rmt0
Es el nombre del dispositivo de cinta remoto
nombrevíaacceso
Representa el nombre completo de vía de acceso de un directorio o archivo necesario.
Al utilizar las instrucciones siguientes, se supone que tanto el usuario local como el remoto son root.
1. Asegúrese de que tiene acceso a la máquina remota.
La máquina de origen debe tener acceso al sistema con la unidad de cinta. (Se puede acceder al
sistema de destino utilizando cualquiera de los usuarios definidos en ese sistema, pero el nombre de
usuario debe tener autorización de root para poder seguir muchos de los pasos siguientes.)

Gestión del sistema operativo 29


2. En el editor favorito, cree un archivo en el directorio / (raíz) del sistema de destino
denominado .rhosts que permita que el sistema de origen acceda al sistema de destino.
Debe añadir el nombre de sistema principal y el ID de usuario autorizados a este archivo. Para
determinar el nombre de la máquina de origen para el archivo .rhosts, puede utilizar el mandato
siguiente:

host direcciónIPOrigen

Para este ejemplo, se supone que se añade la siguiente línea al archivo .rhosts:

[Link] root

3. Guarde el archivo y cambie sus permisos utilizando el mandato siguiente:

chmod 600 .rhosts

4. Utilice el mandato rsh para probar el acceso desde la máquina de origen. Por ejemplo:

rsh sistemaprincipalremoto

Si se ha configurado todo correctamente, debe tener acceso de shell a la máquina remota. No debe
ver una solicitud de inicio de sesión pidiéndole un nombre de usuario. Escriba exit para finalizar la
sesión de este shell de prueba.
5. Decida el tamaño de bloque de dispositivo de cinta adecuado.
Los valores recomendados son los siguientes:
Elemento Descripción
Tamaño de bloque de soporte de 9 pistas o 0,25 512
pulgadas:
Tamaño de bloque de soporte de 8 mm o 4 mm: 1024

Si no está seguro y desea comprobar el tamaño de bloque actual del dispositivo de cinta, utilice el
mandato tctl. Por ejemplo:

tctl -f /dev/rmt0 status

Si desea cambiar el tamaño de bloque de cinta, utilice el mandato chdev. Por ejemplo:

chdev -l rmt0 -a block_size=1024

6. Cree el archivado utilizando uno de los métodos siguientes:


Copia de seguridad por nombre
Para crear remotamente un archivado de copia de seguridad por nombre, utilice el mandato
siguiente:

find nombrevíaacceso -print | backup -ivqf- | rsh sistemaprincipalremoto \


"dd of=/dev/rmt0 bs=tamañobloque conv=sync"

Copia de seguridad por inodo


Para crear remotamente un archivado de copia de seguridad por inodo, primero desmonte el
sistema de archivos y después utilice el mandato backup. Por ejemplo:

umount /myfs
backup -0 -uf- /myfs | rsh sistemaprincipalremoto \
"dd of=/dev/rmt0 bs=tamañobloque conv=sync"

Creación y copia de un archivado en cinta remota


Para crear y copiar un archivado en el dispositivo de cinta remoto, utilice el mandato siguiente:

find nombrevíaacceso -print | cpio -ovcB | rsh sistemaprincipalremoto \


"dd ibs=5120 obs=tamañobloque of=/dev/rmt0"

30 AIX Versión 7.2: Gestión del sistema operativo


Creación de un archivado tar
Para crear remotamente un archivado tar, utilice el mandato siguiente:

tar -cvdf- nombrevíaacceso | rsh sistemaprincipalremoto \


"dd of=/dev/rmt0 bs=tamañobloque conv=sync"

Creación de un vuelco remoto


Para crear remotamente un vuelco remoto del sistema de archivos /myfs, utilice el mandato
rdump:

rdump -u -0 -f sistemaprincipalremoto:/dev/rmt0 /myfs

El distintivo -u indica al sistema que actualice los registros de nivel de copia de seguridad actual
en el archivo /etc/dumpdates. -0 es el valor del distintivo Nivel. El nivel 0 de copia de seguridad
especifica que se debe hacer copia de seguridad de todos los archivos del directorio /myfs.
7. Restaure el archivado remoto utilizado uno de los métodos siguientes:
Restauración de una copia de seguridad por nombre
Para restaurar un archivado de copia de seguridad remoto, utilice el mandato siguiente:

rsh sistemaprincipalremoto "dd if=/dev/rmt0 bs=tamañobloque" | restore \


-xvqdf- nombrevíaacceso

Restauración de una copia de seguridad por inodo


Para restaurar un archivado de copia de seguridad remoto por inodo, utilice el mandato siguiente:

rsh sistemaprincipalremoto "dd if=/dev/rmt0 bs=tamañobloque" | restore \


-xvqf- nombrevíaacceso

Restauración de un archivado cpio remoto


Para restaurar un archivado remoto creado con el mandato cpio, utilice el mandato siguiente:

rsh sistemaprincipalremoto "dd if=/dev/rmt0 ibs=tamañobloque obs=5120" | \


cpio -icvdumB

Restauración de un archivado tar


Para restaurar un archivado tar remoto, utilice el mandato siguiente:

rsh sistemaprincipalremoto "dd if=/dev/rmt0 bs=tamañobloque" |


tar -xvpf- nombrevíaacceso

Restauración de un vuelco remoto


Para restaurar un vuelco remoto del sistema de archivos /myfs, utilice el mandato siguiente:

cd /myfs
rrestore -rvf sistemaprincipalremoto:/dev/rmt0

Restauración de archivos del usuario desde una imagen de copia de seguridad


Si necesita restaurar una imagen de copia de seguridad destruida por accidente, el problema más difícil
es determinar qué cintas de copia de seguridad contienen este archivo. Se puede utilizar el mandato
restore -T para listar el contenido de un archivado. Es aconsejable restaurar el archivo en el
directorio /tmp para no sobregrabar accidentalmente los demás archivos del usuario.
Asegúrese de que el dispositivo está conectado y disponible. Para comprobar la disponibilidad, escriba:

lsdev -C | pg

Si la estrategia de copia de seguridad ha incluido copias de seguridad incrementales, es útil preguntar al


usuario cuándo se ha modificado por última vez el archivo. Sirve de ayuda para determinar la copia de
seguridad incremental que contiene el archivo. Si no se puede obtener esta información o es incorrecta,
empiece a buscar las copias de seguridad incrementales por orden invertido (7, 6, 5, ...). Para las copias
de seguridad incrementales del sistema de archivos, el distintivo -i (modalidad interactiva) del mandato
restore es muy útil para localizar y restaurar el archivo perdido. (La modalidad interactiva también es

Gestión del sistema operativo 31


útil para restaurar una cuenta de usuario individual desde una copia de seguridad del sistema de
archivos /home.)
Los procedimientos de la tabla siguiente describen cómo implementar una restauración de nivel 0
(completa) de un directorio o un sistema de archivos.

Tareas de restauración desde imagen de copia de seguridad


Tarea Vía rápida de SMIT Mandato o archivo
Restauración de archivos de usuario individual smit restfile Consulte el mandato restore.
Restauración de un sistema de archivos de smit restfilesys 1. mkfs /dev/hd1
usuario
2. mount /dev/hd1 /
filesys
3. cd /filesys
4. restore -r

Restauración de un grupo de volúmenes del smit restvg Consulte el mandato restvg -


usuario q.

Restauración del acceso a una biblioteca del sistema desenlazada o suprimida


Cuando la biblioteca libc.a existente no está disponible, no se reconocen la mayoría de mandatos del
sistema operativo.
Las causas más probables para este tipo de problema son las siguientes:
• El enlace de /usr/lib ya no existe.
• El archivo de /usr/ccs/lib se ha suprimido.
El siguiente procedimiento describe cómo restaurar el acceso a la biblioteca libc.a. Este procedimiento
necesita un tiempo de inactividad del sistema. Si es posible, planifique la inactividad cuando menos
impacte en la carga de trabajo como protección contra posibles pérdidas de datos o funcionalidad.
La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los
resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
Información relacionada
Mandato mount
Mandato unmount
Mandato reboot

Restauración de un enlace simbólico suprimido


Utilice el procedimiento siguiente para restaurar un enlace simbólico desde la biblioteca /usr/lib/
libc.a hasta la vía de acceso /usr/ccs/lib/libc.a.
La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los
resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
1. Con autorización de root, establezca la variable de entorno LIBPATH para que apunte al
directorio /usr/ccs/lib escribiendo los mandatos siguientes:

# LIBPATH=/usr/ccs/lib:/usr/lib
# export LIBPATH

Ahora, debe poder ejecutar mandatos del sistema.


2. Para restaurar los enlaces desde la biblioteca /usr/lib/libc.a y el directorio /lib con el
directorio /usr/lib, escriba los mandatos siguientes:

ln -s /usr/ccs/lib/libc.a /usr/lib/libc.a
ln -s /usr/lib /lib

32 AIX Versión 7.2: Gestión del sistema operativo


Ahora, los mandatos se deben ejecutar como antes. Si sigue sin poder acceder a un shell, sáltese el
resto de este procedimiento y continúe en la siguiente sección, “Restauración de un archivo de
biblioteca del sistema suprimido” en la página 33.
3. Escriba el mandato siguiente para eliminar el establecimiento de la variable de entorno LIBPATH.

unset LIBPATH

Restauración de un archivo de biblioteca del sistema suprimido


Este procedimiento para restaurar un archivo de biblioteca del sistema suprimido necesita un tiempo de
inactividad del sistema. Se debe rearrancar el sistema y después restaurar la biblioteca desde una cinta
mksysb reciente.
1. Antes de rearrancar, asegúrese de que el campo PROMPT del archivo [Link] está
establecido en yes.
2. Inserte una cinta mksysb reciente en la unidad de cintas.
mksysb debe contener el mismo OS y paquete de mantenimiento o nivel de tecnología que el
sistema instalado. Si restaura una biblioteca libc.a desde una cinta mksysb que entra en conflicto
con el nivel del sistema instalado, no podrá emitir mandatos.
3. Rearranque la máquina.
4. Cuando aparezca la pantalla de iconos, o cuando oiga un pitido doble, pulse la tecla F1 varias veces
hasta que aparezca el menú Servicios de gestión del sistema.
5. Seleccione Multiarranque.
6. Seleccione Instalar desde.
7. Seleccione el dispositivo de cinta que contiene mksysb y después seleccione Instalar.
Pueden pasar varios minutos antes de que aparezca la siguiente solicitud.
8. Defina el sistema actual como la consola del sistema, para ello pulse la tecla F1 y después Intro.
9. Seleccione el número del idioma preferido y pulse Intro.
10. Seleccione Iniciar Modalidad de Mantenimiento para Recuperación Sistema escribiendo 3 y pulse
Intro.
11. Seleccione Acceder a un Grupo de volúmenes raíz. Se visualiza un mensaje que explica que no
podrá volver a los menús de instalación sin rearrancar si cambia el grupo de volúmenes raíz en este
momento.
12. Escriba 0 y pulse Intro.
13. Escriba el número del grupo de volúmenes adecuado de la lista y pulse Intro.
14. Seleccione Acceder a este grupo de volúmenes escribiendo 2 y pulse Intro.
15. Monte los sistemas de archivos / (raíz) y /usr escribiendo los mandatos siguientes:

mount /dev/hd4 /mnt


mount /dev/hd2 /mnt/usr
cd /mnt

16. Para restaurar el enlace simbólico para la biblioteca libc.a, si es necesario, escriba el siguiente
mandato:

ln -s /usr/ccs/lib/libc.a /mnt/usr/lib/libc.a

Tras ejecutar el mandato, efectúe una de las acciones siguientes:


• Si el mandato es satisfactorio, vaya al paso 20.
• Si un mensaje visualiza que el enlace ya existe, continúe en el paso 17.
17. Establezca el tamaño de bloque de la unidad de cintas emitiendo los mandatos siguientes, donde X
es el número de la unidad de cintas adecuada.

tctl -f /dev/rmtX rewind


tctl -f /dev/rmtX.1 fsf 1

Gestión del sistema operativo 33


restbyname -xvqf /dev/rmtX.1 ./tapeblksz
cat tapeblksz

Si el valor del mandato cat tapeblksz no es igual a 512, escriba los siguientes mandatos,
sustituyendo Y por el valor del mandato cat tapeblksz:

ln -sf /mnt/usr/lib/methods /etc/methods


/etc/methods/chgdevn -l rmtX -a block_size=Y

Debe recibir el mensaje de que rmtX se ha cambiado.


18. Asegúrese de que la cinta está en la ubicación correcta para restaurar la biblioteca para ello escriba
los mandatos siguientes (donde X es el número de la unidad de cintas adecuada):

tctl -f /dev/rmtX rewind


tctl -f /dev/rmtX.1 fsf 3

19. Restaure la biblioteca que falta utilizando uno de los mandatos siguientes (donde X es el número de
la unidad de cintas adecuada):
• Para restaurar únicamente la biblioteca libc.a, escriba el mandato siguiente:

restbyname -xvqf /dev/rmtX.1 ./usr/ccs/lib/libc.a

• Para restaurar el directorio /usr/ccs/lib, escriba el mandato siguiente:

restbyname -xvqf /dev/rmtX.1 ./usr/ccs/lib

• Para restaurar el directorio /usr/ccs/bin, escriba el mandato siguiente:

restbyname -xvqf /dev/rmtX.1 ./usr/ccs/bin

20. Vacíe los datos en el disco escribiendo los mandatos siguientes:

cd /mnt/usr/sbin
./sync;./sync;./sync

21. Desmonte los sistemas de archivos /usr y / (raíz) escribiendo los mandatos siguientes:

cd /
umount /dev/hd2
umount /dev/hd4

Si el mandato umount falla, efectúe el ciclo de encendido de esta máquina e inicie este
procedimiento de nuevo.
22. Rearranque el sistema escribiendo el mandato siguiente:

reboot

Tras rearrancar el sistema, los mandatos del sistema operativo deben estar disponibles.

Nueva creación de una imagen de arranque dañada


En el procedimiento siguiente se describe cómo identificar una imagen de arranque dañada y el modo de
volverla a crear.
Si la máquina está en ejecución actualmente y sabe que la imagen de arranque se ha dañado o suprimido,
vuelva a crear la imagen de arranque ejecutando el mandato bosboot con autorización de usuario.
Atención: No rearranque nunca el sistema si sospecha que la imagen de arranque está dañada.

En el procedimiento siguiente se da por supuesto que el sistema no rearranca correctamente debido a


que la imagen de arranque está dañada. Si es posible, proteja el sistema de una posible pérdida de datos
o funcionalidad; para ello, planifique el tiempo de inactividad cuando el impacto a la carga de trabajo sea
menor.

34 AIX Versión 7.2: Gestión del sistema operativo


La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los
resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
1. Inserte el soporte del producto en la unidad adecuada.
2. Encienda la máquina siguiendo las instrucciones que se proporcionan con el sistema.
3. En el menú Servicios de gestión del sistema, seleccione Multiarranque.
4. En la pantalla siguiente, seleccione Instalar desde.
5. Seleccione el dispositivo que contiene el soporte del producto y, a continuación, seleccione Instalar.
6. Seleccione el icono de versión de AIX.
7. Siga las instrucciones en línea hasta que seleccione la modalidad que utiliza para la instalación. En
este punto, seleccione Iniciar Modalidad Mantenimiento para Recuperación Sistema.
8. Seleccione Acceder a un Grupo de volúmenes raíz.
9. Siga las instrucciones en línea hasta que seleccione Acceder a este grupo de volúmenes e iniciar un
shell.
10. Utilice el mandato bosboot para volver a crear la imagen de arranque. Por ejemplo:

bosboot -a -d /dev/hdisk0

Si el mandato da error y recibe el mensaje siguiente:

0301-165 bosboot: WARNING! bosboot failed - do not attempt to boot device.

Intente resolver el problema utilizando una de las opciones siguientes y, a continuación, vuelva a
ejecutar el mandato bosboot hasta que haya creado una imagen de arranque satisfactoriamente:
• Suprima el volumen lógico de arranque predeterminado (hd5) y, a continuación, cree un nuevo hd5.
O bien
• Ejecute diagnósticos en el disco duro. Repare o sustituya, según proceda.
Si el mandato bosboot sigue dando error, póngase en contacto con el representante de soporte al
cliente.

Atención: No rearranque la máquina si el mandato bosboot falla al crear una imagen de


arranque.
11. Cuando el mandato bosboot sea satisfactorio, utilice el mandato reboot para rearrancar el sistema.
Conceptos relacionados
Arranque del sistema
Cuando se inicia el sistema operativo base, el sistema inicia un conjunto de tareas complejo. Bajo
condiciones normales, estas tareas se realizan automáticamente.
Información relacionada
Mandato bosboot

Creación de una copia de seguridad en línea de un JFS


Al crear una copia de seguridad en línea de un sistema de archivos de diario (JFS) o un sistema de
archivos de diario ampliado (JFS2) se crea una imagen estática del volumen lógico que contiene el
sistema de archivos.
Para crear una copia de seguridad en línea de un JFS montado, se deben duplicar el volumen lógico en
que reside el sistema de archivos y el volumen lógico en que reside el registro del mismo.
Nota: puesto que las grabaciones de archivo son asíncronas, es posible que la copia subdividida no
contenga todos los datos que se han grabado inmediatamente antes de la subdivisión. Las modificaciones
que se inician después de iniciar la subdivisión pueden no estar presentes en la copia de seguridad. Por lo
tanto, se recomienda que la actividad del sistema de archivos sea mínima mientras tiene lugar la
separación.

Gestión del sistema operativo 35


La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los
resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
Para subdividir una copia duplicada del sistema de archivos /home/xyz en un nuevo punto de montaje
denominado /jfsstaticcopy, escriba lo siguiente:

chfs -a splitcopy=/jfsstaticcopy /home/xyz

Para controlar la copia duplicada que desea que se utilice como copia de seguridad, utilice el atributo
copy. La segunda copia duplicada es el valor predeterminado, si el usuario no especifica ninguna copia.
Por ejemplo:

chfs -a splitcopy=/jfsstaticcopy -a copy=1 /home/xyz

En este punto, existe una copia de sólo lectura del sistema de archivos disponible en /jfsstaticcopy.
En la copia de seguridad no se reflejan todos los cambios realizados en el sistema de archivos original
tras la subdivisión.
Para volver a integrar la imagen de subdivisión de JFS como una copia duplicada en el punto de montaje /
testcopy, utilice el mandato siguiente:

rmfs /testcopy

El mandato rmfs elimina la copia del sistema de archivos del estado de subdivisión y permite volverla a
integrar como una copia duplicada.

Creación y copia de seguridad de una instantánea de un JFS2


Se puede tomar una instantánea de un JFS2 montado que establezca una imagen de nivel de bloque
coherente del sistema de archivos en un punto en el tiempo.
La información de este procedimiento se ha probado utilizando versiones específicas de AIX. Los
resultados que obtenga pueden variar significativamente dependiendo de la versión y el nivel de AIX.
La imagen instantánea permanece estable incluso mientras el sistema de archivos que se ha utilizado
para crearla, denominado SAinst, continúa cambiando. La instantánea conserva los mismos permisos de
seguridad que tenía SAinst cuando se ha tomado la instantánea.
En el siguiente caso, cree una instantánea y haga una copia de seguridad de ella en un soporte extraíble
sin desmontar ni inmovilizar el sistema de archivos, todo ello con un solo mandato: backsnap. También
puede utilizar la instantánea para otras finalidades, por ejemplo, para acceder a los archivos o directorios
tal como eran cuando se ha tomado la instantánea. Puede seguir los distintos procedimientos de
instantánea utilizando el SMIT o los mandatos backsnap y snapshot.
Para crear una instantánea del sistema de archivos /home/abc/test y hacer una copia de seguridad de
la misma (por nombre) en el dispositivo de cinta /dev/rmt0, utilice el mandato siguiente:

backsnap -m /tmp/snapshot -s size=16M -i f/dev/rmt0 /home/abc/test

Este mandato crea un volumen lógico de 16 megabytes para la instantánea del sistema de archivos JFS2
(/home/abc/test). La instantánea se monta en /tmp/snapshot y luego se realiza una copia de
seguridad de la misma, por nombre, en el dispositivo de cinta. Una vez finalizada la copia de seguridad, la
instantánea sigue estando montada. Utilice el distintivo -R con el mandato backsnap si desea eliminar la
instantánea cuando finalice la copia de seguridad.
Información relacionada
Sistemas de archivos
mandato backsnap
mandato chfs
mandato rmfs
mandato snapshot

36 AIX Versión 7.2: Gestión del sistema operativo


Creación y copia de seguridad de una instantánea externa de un JFS2
Se puede tomar una instantánea de un JFS2 montado que establezca una imagen de nivel de bloque
coherente del sistema de archivos en un punto en el tiempo.
La imagen instantánea permanece estable incluso mientras el sistema de archivos que se ha utilizado
para crearla, denominado SAinst, continúa cambiando. La instantánea conserva los mismos permisos de
seguridad que tenía SAinst cuando se ha tomado la instantánea.
En el siguiente caso, puede utilizar el mandato backsnap para crear una instantánea externa y hacer una
copia de seguridad de ella en un soporte extraíble sin desmontar ni inmovilizar el sistema de archivos.
También puede utilizar la instantánea para otras finalidades, por ejemplo, para acceder a los archivos o
directorios tal como eran cuando se ha tomado la instantánea. Puede seguir los distintos procedimientos
de instantánea utilizando el SMIT, o los mandatos backsnap y snapshot.
Para crear una instantánea externa del sistema de archivos /home/abc/test y hacer una copia de
seguridad de la misma en el dispositivo de cinta /dev/rmt0, utilice el mandato siguiente:

backsnap -m /tmp/snapshot -s size=16M -if/dev/rmt0 /home/abc/test

El mandato anterior crea un volumen lógico de 16 MB para la instantánea del sistema de archivos JFS2 /
home/abc/test. La instantánea se monta en el directorio /tmp/snapshot y luego se realiza una copia
de seguridad de la instantánea, por nombre, en el dispositivo de cinta. Una vez finalizada la copia de
seguridad, la instantánea se desmonta, pero sigue estando disponible. Utilice el distintivo -R con el
mandato backsnap si desea eliminar la instantánea cuando finalice la copia de seguridad.
Información relacionada
Sistemas de archivos

Creación y copia de seguridad de una instantánea interna de un JFS2


Se puede tomar una instantánea de un JFS2 montado que establezca una imagen de nivel de bloque
coherente del sistema de archivos en un punto en el tiempo.
La imagen instantánea permanece estable incluso mientras el sistema de archivos que se ha utilizado
para crearla, denominado SAinst, continúa cambiando. La instantánea conserva los mismos permisos de
seguridad que tenía SAinst cuando se ha tomado la instantánea.
En el siguiente caso, puede utilizar el mandato backsnap para crear una instantánea interna y hacer una
copia de seguridad de ella en un soporte extraíble sin desmontar ni inmovilizar el sistema de archivos.
También puede utilizar la instantánea para otras finalidades, por ejemplo, para acceder a los archivos o
directorios tal como eran cuando se ha tomado la instantánea. Puede seguir los distintos procedimientos
de instantánea utilizando el SMIT, o los mandatos backsnap y snapshot.
Para crear una instantánea interna del sistema de archivos /home/abc/test y hacer una copia de
seguridad de la misma en el dispositivo de cinta /dev/rmt0, utilice el mandato siguiente:

backsnap -n mysnapshot -if/dev/rmt0 /home/abc/test

El mandato anterior crea una instantánea interna, llamada mysnapshot, del sistema de archivos /
home/abc/test. Se accede a la instantánea desde el directorio /home/abc/test/.snapshot/
mysnapshot y luego se hace una copia de seguridad en el dispositivo de cinta. Utilice el distintivo -R con
el mandato backsnap si desea eliminar la instantánea cuando finalice la copia de seguridad.
Información relacionada
Sistemas de archivos

Compresión de archivos (mandatos compress y pack)


Utilice el mandato compress y el mandato pack para comprimir archivos para almacenarlos.
Utilice el mandato uncompress y el mandato unpack para expandir los archivos restaurados.
El proceso de compresión y expansión de archivos requiere tiempo; sin embargo, una vez empaquetados
los archivos, los datos utilizan menos espacios en el soporte de copia de seguridad.
Para comprimir un sistema de archivos, utilice uno de los métodos siguientes:

Gestión del sistema operativo 37


• Utilice el distintivo -p con el mandato backup.
• Utilice los mandatos compress o pack.
A continuación se proporcionan algunas de las ventajas de la compresión de archivos:
• Ahorrar tiempo y dinero comprimiendo los archivos antes de enviarlos a través de una red.
• Ahorrar almacenamiento y archivar los recursos del sistema:
– Comprima los sistemas de archivos antes de realizar copias de seguridad para ahorrar espacio en la
cinta.
– Comprima los archivos de anotaciones cronológicas creados por los scripts de shell que se ejecutan
durante la noche; es fácil hacer que el script comprima el archivo antes de que realice su salida.
– Comprima los archivos a los que actualmente no se accede. Por ejemplo, pueden comprimirse los
archivos que pertenecen a un usuario que se ha ausentado por un período de tiempo prolongado y
colocarlos en un archivador tar en disco o en cinta y restaurarlos posteriormente.
Nota:
• Durante la compresión, puede que el mandato compress no disponga de suficiente espacio de trabajo
en el sistema de archivos. Este mandato crea los archivos comprimidos antes de suprimir cualquiera de
los archivos no comprimidos, por lo tanto, necesita aproximadamente un 50% más de espacio que ha
de sumarse al tamaño total de los archivos.
• Puede que un archivo no pueda comprimirse porque ya se ha comprimido. Si el mandato compress no
puede reducir los tamaños de los archivos, el mandato no se ejecuta satisfactoriamente.
Consulte el mandato compress para ver los detalles acerca de los valores de retorno pero, en general,
los problemas encontrados al comprimir archivos se pueden resumen en los siguientes:
• El mandato puede quedarse sin espacio de trabajo en el sistema de archivos mientras realiza la
compresión. Debido a que el mandato compress crea los archivos comprimidos antes de suprimir
cualquiera de los archivos no comprimidos, necesita entre un espacio adicional entre el 50 y el 100%
del tamaño de cualquier archivo dado.
• Puede que un archivo no pueda comprimirse porque ya se ha comprimido. Si el mandato compress no
puede reducir el tamaño de archivo, falla.

Compresión de archivos utilizando el mandato compress


Utilice el mandato compress para reducir el tamaño de los archivos utilizando la codificación Lempel-Zev
con capacidad de adaptación.
Cada archivo original especificado por el parámetro Archivo se sustituye por un archivo comprimido con la
extensión .Z añadida a su nombre. El archivo compactado conserva la misma propiedad, modalidades y
horas y acceso de modificación que el archivo original. Si no se especifican archivos, la entrada estándar
se comprime en la salida estándar. Si la compresión no reduce el tamaño de un archivo, se graba un
mensaje en el error estándar y el archivo original no se sustituye.
Utilice el mandato uncompress para restaurar los archivos comprimidos a su formato original.
La cantidad de compresión depende del tamaño de la entrada, del número de bits por código que
especifique la variable Bits y de la distribución de las subseries comunes. Normalmente, el código fuente
de texto inglés se reduce entre un 50 y un 60 por ciento. La compresión del mandato compress suele ser
más compacta y su cálculo se realiza en menos tiempo que la compresión que realiza el mandato pack,
que utiliza la codificación Huffman adaptable.
Por ejemplo, para comprimir el archivo foo y grabar el porcentaje de compresión en el error estándar,
escriba lo siguiente:

compress -v foo

Compresión de archivos utilizando el mandato pack


Utilice el mandato pack para almacenar el archivo o archivos especificados por el parámetro Archivo en
un formato comprimido utilizando la codificación Huffman.

38 AIX Versión 7.2: Gestión del sistema operativo


El archivo de entrada se sustituye por un archivo empaquetado cuyo nombre deriva del nombre del
archivo original (Archivo.z), con las mismas modalidades de acceso, fechas de acceso y modificación y
propietario que el archivo original. El nombre del archivo de entrada no puede contener más de 253 bytes
para que exista espacio para añadir el sufijo .z. Si el mandato pack se ejecuta satisfactoriamente, el
archivo original se elimina.
Utilice el mandato unpack para restaurar los archivos empaquetados a su formato original.
Si el mandato pack no puede crear un archivo más pequeño, detiene el proceso e informa de su
imposibilidad de ahorrar espacio. (Generalmente, se produce una imposibilidad de ahorrar espacio con
pequeños archivos o archivos con distribución de caracteres uniforme). La cantidad de espacio ahorrado
dependerá del tamaño del archivo de entrada y de la distribución de frecuencia de caracteres. Puesto que
el árbol de descodificación forma la primera parte de cada archivo .z, no ahorrará espacio con los
archivos que tengan menos de tres bloques. Normalmente, los archivos de texto se reduce entre un 25 y
un 40 por ciento.
El valor de salida del mandato pack es el número de archivos que no ha podido empaquetar. El
empaquetado no se efectúa en ninguna de estas condiciones:
• El archivo ya se ha empaquetado.
• El nombre del archivo de entrada tiene más de 253 bytes.
• El archivo tiene enlaces.
• El archivo es un directorio.
• El archivo no se puede abrir.
• El empaquetado no guarda ningún bloque de almacenamiento.
• Ya existe un archivo llamado Archivo.z.
• El archivo .z no puede crearse.
• Se ha producido un error de E/S durante el proceso.
Por ejemplo, para comprimir los archivos chap1 y chap2, escriba lo siguiente:

pack chap1 chap2

Esto comprime chap1 y chap2 y los sustituye por los archivos denominados chap1.z y chap2.z. El
mandato pack visualiza el porcentaje de reducción del tamaño de cada archivo.

Expansión de archivos comprimidos (mandatos uncompress y unpack)


Utilice los mandatos uncompress y unpack para expandir archivos comprimidos.
Expansión de archivos utilizando el mandato uncompress
Utilice el mandato uncompress para restaurar los archivos originales que se han comprimido con el
mandato compress. Cada archivo comprimido que especifica la variable Archivo se elimina y se
sustituye por una copia ampliada. El archivo expandido tiene el mismo nombre que la versión
comprimida pero sin la extensión .Z. El archivo expandido conserva el mismo propietario,
modalidades y horas de acceso y modificación que el archivos original. Si no se especifica ningún
archivo, la entrada estándar se expande en la salida estándar.
Aunque es parecido al mandato uncompress, el mandato zcat siempre graba la salida expandida en
la salida estándar.
Por ejemplo, para descomprimir el archivo foo, escriba lo siguiente:

uncompress foo

Expansión de archivos utilizando el mandato unpack


Utilice el mandato unpack para expandir los archivos que se han creado con el mandato pack. Para
cada archivo especificado, el mandato unpack busca un archivo denominado Archivo.z. Si se trata
de un archivo empaquetado, el mandato unpack lo sustituye por su versión expandida. El mandato
unpack cambia el nombre del nuevo archivo eliminando el sufijo .z de Archivo. El nuevo archivo tiene

Gestión del sistema operativo 39


las mismas modalidades de acceso, fechas de acceso y modificación y propietario que el archivo
empaquetado original.
El mandato unpack sólo funciona en archivos que finalizan en .z. Como resultado, cuando se
especifica un nombre de archivo que no finaliza en .z, el mandato unpack añade el sufijo y busca en
el directorio un nombre de archivo con ese sufijo.
El valor de la salida es el número de archivos que el mandato unpack no ha podido desempaquetar.
Un archivo no se puede desempaquetar en cualquiera de las situaciones siguientes:
• El nombre del archivo (sin contar la .z) tiene más de 253 bytes.
• El archivo no se puede abrir.
• El archivo no es un archivo empaquetado.
• Ya existe un archivo con el nombre del archivo desempaquetado.
• No puede crearse el archivo desempaquetado.
Nota: El mandato unpack graba un aviso en el error estándar si el archivo que desempaqueta tiene
enlaces. El nuevo archivo desempaquetado tiene un número de inodo (nodo de índice) distinto del
archivo empaquetado a partir del cual se ha creado. Sin embargo, cualquiera de los otros archivos
enlazados con el número de inodo original del archivo empaquetado siguen existiendo y siguen
estando empaquetados.
Por ejemplo, para desempaquetar los archivos empaquetados chap1.z y chap2.z, escriba lo
siguiente:

unpack chap1.z chap2

Con ello se expanden los archivos empaquetados chap1.z y chap2.z y se sustituyen por los
archivos denominados chap1 y chap2.
Nota: Puede especificar el mandato unpack con nombres de archivos con o sin el sufijo .z.

Copia de seguridad de la imagen del sistema y de grupos de volúmenes definidos por el usuario
rootvg se almacena en un disco duro, o grupo de discos, y contiene los archivos de arranque, el BOS, la
información de configuración y los productos de software opcionales. Normalmente un grupo de
volúmenes definido por el usuario (también denominado grupo de volúmenes no rootvg) contiene archivos
de datos y software de aplicaciones.
Puede hacer copia de seguridad de una imagen del sistema y grupos de volúmenes utilizando los
procedimientos del SMIT o mandatos. Una imagen de copia de seguridad sirve para dos finalidades. Una
es restaurar un sistema dañado utilizando la imagen de copia de seguridad del sistema. La otra es
transferir el software instalado y configurado de un sistema a otros.
Los procedimientos del SMIT utilizando el mandato mksysb para crear una imagen de copia de seguridad
en cinta o en un archivo que se pueda almacenar. Si elige la cinta, el programa de copia de seguridad
graba una imagen de arranque en la cinta, lo que la convierte en adecuada para la instalación.
Nota:
• Las cintas de arranque no se pueden crear ni utilizar en sistemas personales basados en PowerPC.
• Si elige el método de SMIT para la copia de seguridad, primero debe instalar el catálogo de archivos
sysbr del paquete de software [Link].
Conceptos relacionados
Copias de seguridad
En general, se conservan copias de seguridad de los datos del usuario y del sistema por si se eliminan
accidentalmente o se produce una anomalía de disco. Es más fácil gestionar las copias de seguridad
cuando los datos del usuario se conservan separados de los datos del sistema.

Copia de seguridad de la imagen del sistema y grupos de volúmenes definidos por el usuario
Puede hacer copias de seguridad de la imagen del sistema y los grupos de volúmenes definidos por el
usuario.

40 AIX Versión 7.2: Gestión del sistema operativo


Antes de hacer copia de seguridad del grupo de volúmenes rootvg:
• Debe estar instalado todo el hardware, incluyendo los dispositivos externos, como las unidades de
cintas y de CD-ROM.
• Este procedimiento de copia de seguridad necesita el catálogo de archivos sysbr, que se encuentra en
el paquete de software Herramientas y aplicaciones para la gestión del sistema BOS. Escriba el
mandato siguiente para determinar si el catálogo de archivos sysbr está instalado en el sistema:

lslpp -l [Link]

Si el sistema tiene instalado el catálogo de archivos sysbr, continúe los procedimientos de copia de
seguridad.
Si el mandato lslpp no lista el catálogo de archivos sysbr, debe instalarlo antes de continuar el
procedimiento de copia de seguridad.

installp -agqXd dispositivo [Link]

donde dispositivo es la ubicación del software; por ejemplo, /dev/rmt0 para una unidad de cintas.
Antes de hacer copia de seguridad de un grupo de volúmenes definido por el usuario:
• Antes de guardar un grupo de volúmenes, se debe activar y se deben montar los sistemas de archivos.

Atención: La ejecución del mandato savevg da lugar a la pérdida de todo el material


almacenado previamente en el soporte de salida seleccionado.
• Asegúrese de que el dispositivo de copia de seguridad se ha limpiado recientemente para evitar
errores.
Los siguientes procedimientos describen cómo crear una imagen instalable del sistema.

Tareas de copia de seguridad del sistema


Tarea Vía rápida de SMIT Mandato o archivo
Copia de seguridad del grupo de 1. Inicie la sesión como root. 1. Inicie la sesión como root.
volúmenes rootvg
2. Monte los sistemas de 2. Monte los sistemas de archivos para
archivos para copia de copia de seguridad.1 Consulte el
seguridad.1smit mountfs mandato mount.
3. Desmonte los directorios 3. Desmonte los directorios locales que
locales que están montados están montados en otro directorio
en otro directorio local. smit local. Consulte el mandato umount.
umountfs 4. Debe disponer de un mínimo de
4. Debe disponer de un mínimo 8,8MB de espacio de disco libre en el
de 8,8MB de espacio de disco directorio /tmp.2
libre en el directorio /tmp.2 5. Haga la copia de seguridad. Consulte
5. Haga la copia de seguridad: el mandato mksysb.
smit mksysb 6. Proteja el soporte de copia de
6. Proteja el soporte de copia de seguridad contra grabación.
seguridad contra grabación. 7. Anote las contraseñas de root y
7. Anote las contraseñas de root usuario cuya copia de seguridad se ha
y usuario cuya copia de realizado.
seguridad se ha realizado.

Verificación de una cinta de smit lsmksysb


copia de seguridad3

Gestión del sistema operativo 41


Tareas de copia de seguridad del sistema (continuación)
Tarea Vía rápida de SMIT Mandato o archivo
Copia de seguridad de un grupo smit savevg 1. Modifique el tamaño del sistema de
de volúmenes definido por el archivos antes de hacer la copia de
usuario4 seguridad, si es necesario.5
mkvgdata NombreGV después
edite /tmp/vgdata/NombreGV/
[Link]
2. Guarde el grupo de volúmenes.
Consulte el mandato savevg.

Nota:
1. El mandato mksysb no hace copia de seguridad de los sistemas de archivos montados en una red
NFS.
2. El mandato mksysb necesita este espacio de trabajo durante toda la copia de seguridad. Utilice el
mandato df, que informa en unidades de bloques de 512 bytes, para determinar el espacio libre del
directorio /tmp. Utilice el mandato chfs para cambiar el tamaño del sistema de archivos, si es
necesario.
3. Este procedimiento lista el contenido de una cinta de copia de seguridad mksysb. La lista del
contenido verifica la mayoría de información de la cinta pero no verifica si se puede arrancar la cinta
para instalaciones. La única manera de verificar que la imagen de arranque de una cinta mksysb
funciona correctamente es arrancando desde la cinta.
4. Si desea excluir archivos de un grupo de volúmenes definido por el usuario de la imagen de copia de
seguridad, cree un archivo denominado /etc/exclude.nombre_grupo_volúmenes, donde
nombre_grupo_volúmenes es el nombre del grupo de volúmenes cuya copia de seguridad desea
realizar. Después edite /etc/exclude.nombre_grupo_volúmenes y especifique los patrones de los
nombres de archivos que no desea incluir en la imagen de copia de seguridad. Los patrones de este
archivo se entran en los convenios de coincidencia de patrones del mandato grep para determinar los
archivos que se excluyen de la copia de seguridad.
5. Si elige modificar el archivo [Link] para cambiar el tamaño de un sistema de archivos, no
debe especificar el distintivo -i ni el distintivo -m con el mandato savevg, porque se sobregraba el
archivo [Link].
Información relacionada
Instalación de productos de software opcionales y actualizaciones de servicio
Instalación de copias de seguridad del sistema

Configuración anterior a la copia de seguridad


Configure el sistema de origen antes de crear una imagen de copia de seguridad de él. Sin embargo, si
tiene previsto utilizar una imagen de copia de seguridad para realizar la instalación en otros sistemas de
destino configurados de manera distinta, cree la imagen antes de configurar el sistema de origen.
El sistema de origen es el sistema a partir del cual se crea la copia de seguridad. El sistema de destino es
el sistema en el que se instala la copia de seguridad.
El programa de instalación sólo instala automáticamente el soporte de dispositivo necesario para la
configuración de hardware de la máquina instalada. Por lo tanto, si utiliza una copia de seguridad del
sistema para realizar la instalación en otras máquinas, es posible que deba instalar dispositivos
adicionales en el sistema de origen antes de hacer la imagen de copia de seguridad y utilizarla para
instalar en uno o varios sistemas de destino.
Utilice la vía rápida de SMIT, smit devinst, para instalar el soporte de dispositivos adicionales en el
sistema de origen.
• Si hay suficiente espacio de disco en los sistemas de origen y de destino, instale todo el soporte de
dispositivos.

42 AIX Versión 7.2: Gestión del sistema operativo


• Si el espacio de disco está limitado en los sistemas de origen o de destino, instale selectivamente el
soporte de dispositivos.
Una copia de seguridad transfiere las siguientes configuraciones del sistema de origen al sistema de
destino:
• Información de espacio de paginación
• Información de volúmenes lógicos
• Información de rootvg
• Colocación de particiones lógicas (si ha seleccionado la opción de correlación).
Información relacionada
Instalación de software opcional y actualizaciones de servicio
Personalización de la instalación

Montajes y desmontajes del sistema de archivos


Antes de realizar una copia de seguridad, debe montar todos los sistemas de archivos cuya copia de
seguridad desea realizar y desmontar todos los sistemas de archivos cuya copia de seguridad no desea
realizar.
El procedimiento de Métodos de copia de seguridad sólo hace copia de seguridad de los sistemas de
archivos montados en rootvg. Por lo tanto, debe montar todos los sistemas de archivos cuya copia de
seguridad desea realizar antes de empezar. Similarmente, debe desmontar todos los sistemas de
archivos cuya copia de seguridad no desea realizar.
Este procedimiento de copia de seguridad hace dos copias de seguridad de los archivos si un directorio
local está montado en otro directorio local del mismo sistema de archivos. Por ejemplo, si monta /tmp
en /usr/tmp, se hacen dos copias de seguridad de los archivos del directorio /tmp. Esta duplicación
puede sobrepasar el número de archivos que un sistema de archivos puede contener, lo que puede
provocar que falle una futura instalación de la imagen de copia de seguridad.

Consideraciones sobre la seguridad de las copias de seguridad


Si instala una imagen de copia de seguridad en otros sistemas, es aconsejable que, por razones de
seguridad, no copie las contraseñas y direcciones de red en los sistemas de destino.
También, al copiar las direcciones de red en un sistema de destino se crean direcciones duplicadas que
pueden interrumpir las comunicaciones de red.

Restauración de imágenes de copia de seguridad


Al instalar la imagen de copia de seguridad, el sistema comprueba si el sistema de destino tiene
suficiente espacio de disco para crear todos los volúmenes lógicos almacenados en la copia de seguridad.
Si hay suficiente espacio, se recupera toda la copia de seguridad. De lo contrario, la instalación se para y
el sistema solicita que elija más discos duros de destino.
Los sistemas de archivos creados en el sistema de destino tienen el mismo tamaño que el que tenían en
del sistema de origen, a menos que la variable SHRINK se establezca en yes en el archivo [Link]
antes de hacer crear la imagen de copia de seguridad. Una excepción es el directorio /tmp, que se puede
incrementar para asignar suficiente espacio para el mandato bosboot. Para obtener información acerca
del establecimiento de variables, consulte el archivo [Link].
Cuando el sistema termina de instalar la imagen de copia de seguridad, el programa de instalación vuelve
a configurar el ODM en el sistema de destino. Si el sistema de destino no tiene exactamente la misma
configuración que el sistema de origen, el programa puede modificar los atributos de dispositivo en los
siguientes archivos del sistema de destino:
• Todos los archivos de /etc/objrepos que empiezan por Cu
• Todos los archivos del directorio /dev.
Información relacionada
Instalación de copias de seguridad del sistema

Gestión del sistema operativo 43


Implementación de copias de seguridad planificadas
Este procedimiento describe cómo desarrollar y utilizar un script para realizar una copia de seguridad
completa semanal y copias de seguridad incrementales diarias de archivos del usuario.
• La cantidad de datos que se planifican para la copia de seguridad no pueden exceder de una cinta
cuando se utiliza este script.
• Asegúrese de que la cinta está cargada en el dispositivo de copia de seguridad antes de que el mandato
cron ejecute el script.
• Asegúrese de que el dispositivo está conectado y disponible, especialmente cuando utiliza scripts que
se ejecutan por la noche. Utilice el mandato lsdev -C | pg para comprobar la disponibilidad.
• Asegúrese de que el dispositivo de copia de seguridad se ha limpiado recientemente para evitar
errores.
• Si hace copia de seguridad de sistemas de archivos que puedan estar en uso, desmóntelos primero
para evitar que el sistema de archivos se dañe.
• Compruebe el sistema de archivos antes de hacer la copia de seguridad. Utilice el procedimiento
descrito en Verificación del sistema de archivos o ejecute el mandato fsck.
El script incluido en este procedimiento sólo está pensado como modelo y se debe adaptar
cuidadosamente a las necesidades del sitio específico.
Conceptos relacionados
Estrategia de copia de seguridad
Hay dos métodos para hacer copia de seguridad de grandes cantidades de datos.

Copia de seguridad de sistemas de archivos utilizando el mandato cron


Este procedimiento describe cómo escribir un script crontab que se puede pasar al mandato cron para
su ejecución.
El script hace copia de seguridad de dos sistemas de archivos del usuario, /home/plan y /home/run,
las noches de lunes a sábado. Se hace copia de seguridad de ambos sistemas de archivos en una cinta, y
cada mañana se inserta una nueva cinta para la noche siguiente. Las copias de seguridad del lunes por la
noche son archivados completos (nivel 0). Las copias de seguridad de martes a sábado son
incrementales.
1. El primer paso en la creación del script crontab es emitir el mandato crontab-e. Esto abre un
archivo vacío donde puede efectuar las entradas que se someten al script cron para que se ejecuten
cada noche (el editor por omisión es vi). Escriba:

crontab -e

2. El ejemplo siguiente muestra los seis campos de crontab. El campo 1 es para el minuto, el campo 2
para la hora en formato de 24 horas, el campo 3 para el día del mes y el campo 4 para el mes del año.
Los campos 3 y 4 contienen un * (asterisco) para indicar que el script se ejecuta cada mes del día
especificado en el campo day/wk. El campo 5 es para el día de la semana, y también se puede
especificar con un rango de días, por ejemplo, 1-6. El campo 6 es para el mandato de shell que se está
ejecutando.

min hr day/mo mo/yr day/wk shell command

0 2 * * 1 backup -0 -uf /dev/rmt0.1 /home/plan

La línea de mandatos que se muestra supone que personal del sitio está disponible para responder a
las solicitudes cuando sea adecuado. El distintivo -0 (cero) para el mandato backup indica el nivel
cero, o copia de seguridad completa. El distintivo -u actualiza el registro de copia de seguridad en el
archivo /etc/dumpdates y el distintivo f especifica el nombre de dispositivo, un dispositivo de cinta
magnética sin formato 0.1 como en el ejemplo anterior.
3. Escriba una línea similar a la del paso 2 para cada sistema de archivos cuya copia de seguridad se
realiza un día específico. El ejemplo siguiente muestra un script completo que realiza seis días de
copias de seguridad de dos sistemas de archivos:

44 AIX Versión 7.2: Gestión del sistema operativo


0 2 * * 1 backup -0 -uf/dev/rmt0.1 /home/plan
0 3 * * 1 backup -0 -uf/dev/rmt0.1 /home/run
0 2 * * 2 backup -1 -uf/dev/rmt0.1 /home/plan
0 3 * * 2 backup -1 -uf/dev/rmt0.1 /home/run
0 2 * * 3 backup -2 -uf/dev/rmt0.1 /home/plan
0 3 * * 3 backup -2 -uf/dev/rmt0.1 /home/run
0 2 * * 4 backup -3 -uf/dev/rmt0.1 /home/plan
0 3 * * 4 backup -3 -uf/dev/rmt0.1 /home/run
0 2 * * 5 backup -4 -uf/dev/rmt0.1 /home/plan
0 3 * * 5 backup -4 -uf/dev/rmt0.1 /home/run
0 2 * * 6 backup -5 -uf/dev/rmt0.1 /home/plan
0 3 * * 6 backup -5 -uf/dev/rmt0.1 /home/run

4. Guarde el archivo que ha creado y salga del editor. El sistema operativo pasa el archivo crontab al
script cron.
Información relacionada
Archivo especial rmt

Copia de seguridad de archivos de un sistema de archivos JFS2 gestionado por DMAPI


Hat opciones en los mandatos tar y backbyinode que permiten hacer copia de seguridad de los
atributos ampliados (EA).
Con el mandato backbyinode en un sistema de archivos DMAPI, sólo se hace copia de seguridad de los
datos residentes en el sistema de archivos en el momento de emitir el mandato. El mandato
backbyinode examina el estado actual de los metadatos para realizar su trabajo. Esto puede ser
ventajoso con DMAPI, porque hace copia de seguridad del estado del sistema de archivos gestionado. Sin
embargo, no se hará copia de seguridad de ningún dato fuera de línea.
Para hacer copia de seguridad de todos los datos de un sistema de archivos DMAPI, utilice el mandato
que lea los archivos completos como, por ejemplo, el mandato tar. Esto puede hacer que una aplicación
habilitada para DMAPI restaure datos para cada archivo accedido por el mandato tar, moviendo los
datos una y otra vez entre el almacenamiento secundario y terciario, por lo que puede haber
implicaciones del rendimiento.

Formateo de disquetes (mandato format o fdformat)


Puede formatear los disquetes de la unidad de disquetes especificada por el parámetro Dispositivo (el
dispositivo /dev/rfd0 de forma predeterminada) con los mandatos format y fdformat.
Atención: El formateo de un disquete destruye los datos existentes en ese disquete.

El mandato format determina el tipo de dispositivo, que puede ser uno de los siguientes:
• Disquete de 5,25 pulgadas de baja densidad (360 KB), que contiene 40x2 pistas, cada una de las cuales
tiene 9 sectores
• Disquete de 5,25 pulgadas de gran capacidad (1,2 MB) que contiene 80x2 pistas, cada una de ellas con
15 sectores
• Disquete de 3,5 pulgadas de baja densidad (720 KB), que contiene 80x2 pistas, cada una de las cuales
tiene 9 sectores
• Disquete de 3,5 pulgadas de gran capacidad (2,88 MB) que contiene 80x2 pistas, cada una de ellas con
36 sectores
El tamaño de un sector es de 512 bytes para todos los tipos de disquetes.
Utilice el mandato format para formatear un disquete para alta densidad a menos que el parámetro
Dispositivo especifique una densidad diferente.
Utilice el mandato fdformat para formatear un disquete para baja densidad a menos que se especifique
el distintivo -h . El parámetro Dispositivo especifica el dispositivo que contiene el disquete que se debe
formatear (por ejemplo, el dispositivo /dev/rfd0 para la unidad 0).
Antes de formatear un disquete, los mandatos format y fdformat le solicitan que verifique la acción.
Esto le permite finalizar la operación limpiamente si es necesario.
Vea los ejemplos siguientes:

Gestión del sistema operativo 45


• Para formatear un disquete en el dispositivo /dev/rfd0, escriba lo siguiente:

format -d /dev/rfd0

• Para formatear un disquete sin comprobar si existen pistas con errores, escriba lo siguiente:

format -f

• Para formatear un disquete de 360 KB en una unidad de disquetes de 5,25 pulgadas y 1,2 MB del
dispositivo /dev/rfd1, escriba lo siguiente:

format -l -d /dev/rfd1

• Para forzar el formateo de alta densidad de un disquete cuando se utiliza el mandato fdformat,
escriba lo siguiente:

fdformat -h

Comprobación de la integridad de un sistema de archivos (mandato fsck)


Utilice el mandato fsck para comprobar y reparar interactivamente las incoherencias de los sistemas de
archivos.
Es importante ejecutar este mandato en cada sistema de archivos como parte de la inicialización del
sistema. Debe poder leer el archivo de dispositivo en el que reside el sistema de archivos (por ejemplo, el
dispositivo /dev/hd0). Por lo general, el sistema de archivos es coherente y el mandato fsck sólo
informa acerca del número de archivos, de bloques no utilizados y de bloques libres del sistema de
archivos. Si el sistema de archivos no es coherente, el mandato fsck visualiza información acerca de las
incoherencias que ha encontrado y le solicita permiso para repararlas. Puede decirse que el mandato
fsck es conservador en las operaciones de reparación que realiza e intenta evitar las acciones que
pueden dar como resultado la pérdida de datos válidos. Sin embargo, en algunos casos, el mandato fsck
recomienda la destrucción de un archivo dañado.
Atención: Ejecute siempre el mandato fsck en los sistemas de archivos después de un mal
funcionamiento del sistema. Las acciones de corrección puede dar como resultado la pérdida de
algunos datos. La acción predeterminada para cada corrección de coherencia consiste en esperar
a que el operador escriba yes o no. Si no tiene permiso de grabación para un archivo afectado, el
mandato fsck asumirá de forma predeterminada la respuesta no.
Vea los ejemplos siguientes:
• Para comprobar todos los sistemas de archivos por omisión, escriba lo siguiente:

fsck

Esta forma del mandato fsck le solicita permiso antes de realizar un cambio en un sistema de archivos.
• Para solucionar de forma automática problemas poco importantes en los sistemas de archivos por
omisión, escriba lo siguiente:

fsck -p

• Para comprobar el sistema de archivos /dev/hd1, escriba lo siguiente:

fsck /dev/hd1

Esto comprueba el sistema de archivos sin montar ubicado en el dispositivo /dev/hd1.


Nota: El mandato fsck no realiza correcciones en un sistema de archivos montado.

Copia en o desde disquetes (mandato flcopy)


Utilice el mandato flcopy para copiar un disquete (abierto como /dev/rfd0) en un archivo denominado
floppy creado en el directorio actual.

46 AIX Versión 7.2: Gestión del sistema operativo


Se visualiza el mensaje Cambie el disquete, pulse retorno cuando lo haya hecho según
sea necesario. Entonces el mandato flcopy copia el archivo floppy en el disquete.
Vea los ejemplos siguientes:
• Para copiar /dev/rfd1 en el archivo floppy del directorio actual, escriba lo siguiente:

flcopy -f /dev/rfd1 -r

• Para copiar las 100 primeras pistas del disquete, escriba:

flcopy -f /dev/rfd1 -t 100

Copia de archivos en cinta o disco (mandato cpio -o)


Utilice el mandato cpio -o para leer los nombres de las vías de acceso de los archivos de la entrada
estándar y copiar estos archivos en la salida estándar, junto con los nombres de las vías de acceso y la
información de estado.
Los nombres de vías de acceso no pueden tener más de 128 caracteres. Evite proporcionar al mandato
cpio nombres de vías de acceso compuestos de muchos archivos con enlaces exclusivos, dado que es
posible que no exista memoria suficiente para realizar el seguimiento de los nombres de las vías de
acceso y podría perderse información de enlace.
Vea los ejemplos siguientes:
• Para copiar en un disquete los archivos del directorio actual cuyos nombres acaban en .c, escriba lo
siguiente:

ls *.c | cpio -ov >/dev/rfd0

El distintivo -v visualiza los nombres de cada uno de los archivos.


• Para copiar el directorio actual y todos los subdirectorios en disquete, escriba lo siguiente:

find . -print | cpio -ov >/dev/rfd0

Esto guarda el árbol de directorios que empieza por el directorio actual (.) e incluye todos los
subdirectorios y archivos.
• Para utilizar una serie del mandato más corta, escriba lo siguiente:

find . -cpio /dev/rfd0 -print

La entrada -print visualiza el nombre de cada archivo a medida que éste se copia.

Copia de archivos de cinta o disco (mandato cpio -i)


Utilice el mandato cpio -i para leer la entrada estándar de un archivo de archivado creado por el
mandato cpio -o y copiar los archivos que contiene cuyos nombres coinciden con el parámetro Patrón.
Estos archivos se copian en el árbol de directorios actual. Puede listar más de un parámetro Patrón
utilizando la notación de nombre de archivo descrito en el mandato ksh. El valor predeterminado para el
parámetro Patrón es un asterisco (*), que selecciona todos los archivos del directorio actual. En una
expresión como, por ejemplo [a-z], el guión (-) significa hasta, según el orden de clasificación actual.
Nota: Los patrones "*.c" y "*.o" se deben especificar entre comillas para evitar que el shell trate el
asterisco (*) como un carácter de coincidencia de patrones. Se trata de un caso especial en el que el
propio mandato cpio descodifica los caracteres de patrones de coincidencia.
Vea los ejemplos siguientes:
• Para listar los archivos que se han guardado en un disquete mediante el mandato cpio, escriba lo
siguiente:

cpio -itv </dev/rfd0

Gestión del sistema operativo 47


Esto visualiza la tabla de contenido de los datos que se han guardado previamente en el archivo /dev/
rfd0 en el formato del mandato cpio. El listado es parecido al largo listado de directorios que genera
el mandato ls -l.
• Para listar únicamente los nombres de vías de acceso, utilice solamente los distintivos -it.
• Para copiar los archivos que se han guardado anteriormente mediante el mandato cpio desde un
disquete, escriba lo siguiente:

cpio -idmv </dev/rfd0

Esto copia los archivos que el mandato cpio ha guardado previamente en el archivo /dev/rfd0 de
nuevo en el sistema de archivos (especifique el distintivo -i). El distintivo -d permite que el mandato
cpio cree los directorios adecuados si se guarda el árbol de directorios. El distintivo -m conserva la
hora de la última modificación que tenía aplicación en el momento de guardarse los archivos. El
distintivo -v hace que el mandato cpio visualice el nombre de cada archivo mientras se copia.
• Para copiar los archivos seleccionados de un disquete, escriba lo siguiente:

cpio -i "*.c" "*.o" </dev/rfd0

Con ello se copiarán los archivos que acaban en .c o .o del disquete.

Copia en o desde cintas (mandato tcopy)


Utilice el mandato tcopy para copiar cintas magnéticas.
Por ejemplo, para copiar desde una cinta de modalidad continua en una cinta de 9 pistas, escriba lo
siguiente:

tcopy /dev/rmt0 /dev/rmt8

Comprobación de la integridad de una cinta (mandato tapechk)


Utilice el mandato tapechk para realizar una comprobación básica de coherencia en un dispositivo de
cintas de modalidad continua conectado.
Simplemente leyendo una cinta puede detectar algunas anomalías de hardware de una unidad de cinta
de modalidad continua. El mandato tapechk proporciona un modo de realizar lecturas en los archivos de
una cinta.
Por ejemplo, para comprobar los tres primeros archivos de un dispositivo de cintas de modalidad
continua, escriba lo siguiente:

tapechk 3

Archivador de archivos (mandato tar)


El método de copia de seguridad de archivado se utiliza para realizar una copia de uno o varios archivos o
de toda una base de datos que se guarda para consultarla en el futuro, con finalidades históricas o para la
recuperación si se dañan o pierden los datos originales.
Normalmente, un archivador se utiliza cuando se eliminan dichos datos específicos del sistema.
Utilice el mandato tar para grabar archivos o recuperar archivos de un almacenamiento de archivar. El
mandato tar busca archivadores en el dispositivo por omisión (por lo general, el dispositivo de cintas), a
menos que especifique otro dispositivo.
Cuando se graba en un archivado, el mandato tar utiliza un archivo temporal (el archivo /tmp/tar*) y
mantiene en memoria una tabla de archivos con varios enlaces. Recibirá un mensaje de error si el
mandato tar no puede crear el archivo temporal o si no hay suficiente memoria disponible para dar
cabida a las tablas de enlaces.
Vea los ejemplos siguientes:

48 AIX Versión 7.2: Gestión del sistema operativo


• Para grabar los archivos file1 y file2 en un nuevo archivador en la unidad de cintas por omisión,
escriba lo siguiente:

tar -c file1 file2

• Para extraer todos los archivos del directorio /tmp del archivo archivador del dispositivo de
cintas /dev/rmt2 y utilizar la hora de extracción como la hora de modificación, escriba lo siguiente:

tar -xm -f/dev/rmt2 /tmp

• Para visualizar los nombres de los archivos del archivo archivador de disco [Link] del directorio
actual, escriba lo siguiente:

tar -vtf [Link]

Copia de seguridad de archivos


Utilice el mandato backup o el mandato smit para crear copias de los archivos en un soporte de copia de
seguridad como, por ejemplo, una cinta magnética o un disquete.
Atención: Si intenta realizar una copia de seguridad de un sistema de archivos montado, se
visualizará un mensaje. El mandato backup seguirá ejecutándose, pero pueden producirse
incoherencias en el sistema de archivos. Esta situación no se aplica al sistema de archivos raíz (/).
Las copias que ha creado con el mandato backup o el mandato smit están en uno de los siguientes
formatos de copia de seguridad:
• Archivos específicos cuya copia de seguridad se ha realizado por nombre, utilizando el distintivo -i.
• Sistema de archivos completo cuya copia de seguridad se ha realizado por número de i-nodo, utilizando
los parámetros -Nivel y SistemaArchivos.
Nota:
– Cuando se modifica un archivo durante la realización de la copia de seguridad del sistema, siempre
existe la posibilidad de que se dañen los datos. Por lo tanto, asegúrese de que la actividad del
sistema está al mínimo durante el procedimiento de realización de la copia de seguridad del sistema.
– Si la copia de seguridad se realiza en una cinta de 8 mm con el tamaño de bloque de dispositivo
establecido en 0 (cero), no será posible restaurar directamente los datos desde la cinta. Si ha
realizado copias de seguridad con el valor 0, puede restaurar datos a partir de ellas utilizando los
procedimientos especiales que se describen en el mandato restore.
Atención: Asegúrese de que los distintivos que especifica coinciden con el soporte de copia de
seguridad.

Copia de seguridad de archivos utilizando el mandato backup


Utilice el mandato backup para crear copias de los archivos en el soporte de copia de seguridad.
Por ejemplo, para realizar la copia de seguridad de los archivos seleccionados en el directorio $HOME por
nombre, escriba lo siguiente:

find $HOME -print | backup -i -v

El distintivo -i solicita al sistema que lea en la salida estándar los nombres de los archivos cuya copia de
seguridad va a realizarse. El mandato find genera una lista de archivos en el directorio del usuario. Esta
lista se interconecta con el mandato backup como entrada estándar. El distintivo -v visualiza un informe
de progreso a medida que se copia cada archivo. Se hace copia de seguridad de los archivos en el
dispositivo de seguridad por omisión para el sistema local.
Vea los ejemplos siguientes:
• Para realizar una copia de seguridad del sistema de archivos raíz, escriba lo siguiente:

backup -0 -u /

Gestión del sistema operativo 49


El nivel 0 y / indican al sistema que debe realizar la copia de seguridad del sistema de archivos / (raíz).
La copia de seguridad del sistema de archivos se realiza en el archivo /dev/rfd0. El distintivo -u indica
al sistema que actualice el registro de nivel de copia de seguridad actual en el archivo /etc/
dumpdates.
• Para realizar una copia de seguridad de todos los archivos del sistema de archivos / (raíz) que se han
modificado desde la realización de la última copia de seguridad de nivel 0, escriba lo siguiente:

backup -1 -u /

Realización de la copia de seguridad de archivos utilizando el mandato smit


Utilice el mandato smit para ejecutar el mandato backup, que crea copias de los archivos en el soporte
de copia de seguridad.
1. En el indicador de mandatos, escriba lo siguiente:

smit backup

2. Escriba el nombre de la vía de acceso del directorio en el que suele estar montado el sistema de
archivos en el campo del nombre completo de la vía de acceso del directorio, DIRECTORY:

/home/bill

3. En el campo de dispositivo de copia de seguridad BACKUP o en el campo de archivo FILE, escriba el


nombre del dispositivo de salida, tal como se muestra en el ejemplo siguiente que corresponde a un
dispositivo de cinta magnética sin procesar:

/dev/rmt0

4. Utilice el tabulador para conmutar entre la activación y la desactivación del campo opcional de
generación de un informe de cada fase de la copia de seguridad, REPORT each phase, si desea que
los mensajes de error aparezcan en pantalla.
5. En un entorno de gestión de sistemas, utilice el valor predeterminado para el campo de número
máximo de bloques que han de grabarse en un soporte de copia de seguridad (MAX number of blocks
to write on backup medium) puesto que este campo no se aplica a las copias de seguridad en cinta.
6. Pulse Intro para realizar la copia de seguridad del directorio o del sistema de archivos especificado.
7. Ejecute el mandato restore -t.
Si este mandato genera un mensaje de error, deberá repetir la copia de seguridad completa.

Cierre del sistema


El mandato shutdown es la manera más segura y minuciosa de detener el sistema operativo.
Puede desear cerrar el sistema:
• Tras instalar un nuevo software o cambiar la configuración para el software existente
• Cuando existe un problema de hardware
• Cuando el sistema se ha colgado irrevocablemente
• Cuando el rendimiento del sistema se ha degradado
• Cuando posiblemente el sistema de archivos esté dañado.
Cuando se designan los distintivos adecuados, este mandato notifica a los usuarios que el sistema está a
punto de cerrarse, mata todos los procesos existentes, desmonta los sistemas de archivos y detiene el
sistema. Consulte el mandato shutdown para obtener más información.
Lea la siguiente información para obtener detalles sobre situaciones concretas de cierre del sistema:

Cierre del sistema sin rearranque


Hay dos maneras de cerrar el sistema sin rearrancar.

50 AIX Versión 7.2: Gestión del sistema operativo


Puede utilizar dos métodos para cerrar el sistema sin rearrancar: la vía rápida de SMIT o el mandato
shutdown.
Requisitos previos

Debe tener autorización de usuario root para cerrar el sistema.


Para cerrar el sistema utilizando SMIT:
1. Inicie la sesión como root.
2. En el indicador de mandatos, escriba:

smit shutdown

Para cerrar el sistema utilizando el mandato shutdown:


1. Inicie la sesión como root.
2. En el indicador de mandatos, escriba:

shutdown

Cierre del sistema para la modalidad de un solo usuario


En algunos casos, puede que deba cerrar el sistema y entrar en modalidad de un solo usuario para
realizar el mantenimiento de software y los diagnósticos.
1. Escriba cd / para pasar al directorio raíz.
Debe estar en el directorio raíz para cerrar el sistema para la modalidad de un solo usuario a fin de
garantizar que los sistemas de archivos se desmonten ordenadamente.
2. Escriba shutdown -m.
El sistema se cierra para la modalidad de un solo usuario.
Se visualiza una solicitud del sistema y puede realizar actividades de mantenimiento.

Cierre del sistema en una emergencia


Utilice el mandato shutdown para detener el sistema rápidamente sin notificar a los demás usuarios.
Puede utilizar el mandato shutdown para cerrar el sistema bajo condiciones de emergencia.
Escriba shutdown -F. El distintivo -F da instrucciones al mandato shutdown para que omita el envío de
mensajes a otros usuarios y cierre el sistema tan rápido como sea posible.

Entorno del sistema


El entorno del sistema es principalmente el conjunto de variables que definen o controlan determinados
aspectos de la ejecución del proceso.
Se establecen o restablecen cada vez que se inicia un shell. Desde el punto de vista de la gestión del
sistema, es importante asegurarse de que el usuario está configurado con los valores correctos en el
inicio de sesión. La mayoría de estas variables se establecen durante la inicialización del sistema. Sus
definiciones se leen del archivo /etc/profile o se establecen de forma predeterminada.

Perfiles
El shell utiliza dos tipos de archivos de perfil cuando se inicia la sesión en el sistema operativo.
El shell evalúa los mandatos contenidos en los archivos y a continuación ejecuta los mandatos para
configurar el entorno del sistema. Los archivos tienen funciones similares excepto en que el
archivo /etc/profile controla las variables de perfil para todos los usuarios de un sistema mientras
que el archivo .profile permite personalizar su propio entorno.
Se proporciona el siguiente perfil e información del entorno del sistema:
• Archivo /etc/profile
• Archivo .profile
• Configuración de variables del entorno del sistema

Gestión del sistema operativo 51


• Cambio del mensaje del día
• “Servicios de manipulación de datos de tiempo” en la página 52.
Archivo /etc/profile
El primer archivo que el sistema operativo utiliza al iniciar la sesión es el archivo /etc/profile. Este
archivo controla las variables predeterminadas de todo el sistema como, por ejemplo:
• Variables de exportación
• Máscara de creación de archivos (umask)
• Tipos de terminal
• Mensajes de correo para indicar cuándo ha llegado nuevo correo.
El administrador del sistema configura el archivo profile para todos los usuarios del sistema.
Únicamente el administrador del sistema puede modificar este archivo.
Archivo .profile

El segundo archivo que el sistema operativo utiliza al iniciar la sesión es el archivo .profile. El
archivo .profile está presente en el directorio inicial ($HOME) y permite personalizar el entorno de
trabajo individual. El archivo .profile también prevalece sobre los mandatos y variables
establecidas en el archivo /etc/profile. Puesto que el archivo .profile está oculto, utilice el
mandato ls -a para listarlo. Utilice el archivo .profile para controlar los siguientes valores
predeterminados:
• Shells que han de abrirse
• Aspecto del indicador
• Variables de entorno (por ejemplo, variables de entorno de búsqueda)
• Sonido del teclado
El siguiente ejemplo muestra un archivo .profile típico:

PATH=/usr/bin:/etc:/home/bin1:/usr/lpp/tps4.0/user:/home/gsc/bin::
epath=/home/gsc/e3:
export PATH epath
csh

En este ejemplo, se definen dos vías de acceso (PATH y epath), se exportan y se abre un shell C
(csh).
También puede utilizar el archivo .profile (o si no está presente, el archivo .profile) para
determinar las variables de shell de inicio de sesión. También puede personalizar otros entornos de
shell. Por ejemplo, utilice los archivos .chsrc y .kshrc para adaptar un shell C y un shell Korn,
respectivamente, al iniciar cada tipo de shell.

Servicios de manipulación de datos de tiempo


Las funciones de tiempo acceden y vuelven a formatear la fecha y la hora actuales del sistema.
No es necesario que especifique ningún distintivo especial para que el compilador utilice las funciones de
tiempo. Incluya el archivo de cabecera para estas funciones en el programa. Para incluir un archivo de
cabecera, utilice la sentencia siguiente:

#include <time.h>

Los servicios de tiempo son los siguientes.

Elemento Descripción
adjtime Corrige la hora para permitir la sincronización del reloj
del sistema.

52 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
ctime, localtime, gmtime, mktime, Convierte la fecha y la hora en una representación de
difftime, asctime, tzset serie.
getinterval, incinterval, absinterval, Manipula el tiempo de caducidad de los
resinc, resabs, alarm, ualarm, getitimer, temporizadores de intervalos.
setitimer
gettimer, settimer, restimer, stime, Obtiene o establece el valor correcto para el
time temporizador especificado de todo el sistema.
gettimerid Asigna un temporizador de intervalos por proceso.
gettimeofday, settimeofday, ftime Obtiene y establece la fecha y la hora.
nsleep, usleep, sleep Suspende la ejecución de un proceso actual.
reltimerid Libera un temporizador de intervalos asignado
previamente.

Catálogos de archivos y hardware necesarios para la modalidad de 64 bits


El kernel se ejecuta en modalidad de 64 bits, lo que permite un acceso rápido a grandes cantidades de
datos y el manejo eficaz de tipos de datos de 64 bits.
El catálogo de archivos de tiempo de ejecución de 64 bits del sistema operativo base es bos.64bit. La
instalación de bos.64bit también instala el archivo /etc/methods/cfg64. El archivo /etc/
methods/cfg64 es un mandato que habilita el entorno de tiempo de ejecución de 64 bits. Este mandato
se invoca mediante el script [Link] durante la fase 3 del proceso de arranque.
Desde AIX 6.1, el kernel de 32 bits ha quedado obsoleto. Al instalar el sistema operativo base AIX 6.1 se
habilita la modalidad de 64 bits.
Nota: El hardware debe dar soporte a 64 bits para poder ejecutar AIX 6.1. Los siguientes modelos de RS/
6000 utilizan procesadores 604e y no dan soporte a 64 bits:
• 7025 Serie F50
• 7026 Serie H50
• 9076 Serie H50
• 7043 Serie 150
• 7046 Serie B50
Para verificar la capacidad del procesador, ejecute el mandato siguiente:

/usr/sbin/prtconf -c

El mandato prtconf devuelve 32 ó 64, en función de la capacidad del procesador. Si el sistema no tiene
el mandato prtconf, puede utilizar el mandato bootinfo con el distintivo -y.

Hardware necesario para la modalidad de 64 bits


Debe tener un hardware de 64 bits para ejecutar aplicaciones de 64 bits.
Para determinar si el sistema tiene una arquitectura de hardware de 32 bits o 64 bits:
1. Inicie la sesión como usuario root.
2. En la línea de mandatos, especifique bootinfo -y.
Esto produce la salida de 32 o 64, según si la arquitectura de hardware es de 32 o de 64 bits. Además, si
entra lsattr -El proc0 en cualquier versión de AIX, se visualiza el tipo de procesador para el
servidor.

Gestión del sistema operativo 53


Comparaciones del rendimiento de 32 bits y 64 bits
En la mayoría de casos, la ejecución de aplicaciones de 32 bits en hardware de 64 bits no es un problema,
ya que el hardware de 64 bits puede ejecutar software de 61 y 32 bits. Sin embargo, el hardware de 32
bits no puede ejecutar software de 64 bits.
Para averiguar si existe algún problema de rendimiento para aplicaciones que se ejecutan en el sistema,
consulte las guías del usuario de las aplicaciones para ver su entorno de ejecución recomendado.

Desasignación del procesador dinámico


AIX puede detectar y dejar de utilizar automáticamente un procesador anómalo.
A partir del tipo de máquina 7044 modelo 270, el hardware de todos los sistemas con dos o más
procesadores puede detectar errores corregibles, que el firmware reúne. Estos errores no son muy graves
y, siempre que se produzcan en raras ocasiones, se pueden ignorar sin problemas. Sin embargo, cuando
parezca que se está desarrollando un patrón de anomalías en un procesador específico, este patrón
puede indicar que es probable que el componente manifieste una anomalía muy grave en un futuro
próximo. El firmware realiza esta previsión basándose en las velocidades de las anomalías y el análisis de
los umbrales.
En estos sistemas, AIX implementa una supervisión continua del hardware y sondea regularmente el
firmware para ver si existen errores de hardware. Cuando el número de errores de procesador alcanza un
umbral y el firmware reconoce que hay una clara probabilidad de que este componente del sistema falle,
el firmware devuelve un informe de errores. En todos los casos, el error se anota cronológicamente en el
registro de errores del sistema. Además, en sistemas de multiprocesador, según el tipo de anomalía, AIX
intenta dejar de utilizar el procesador no fiable y desasignarlo. Esta característica se denomina
Desasignación del procesador dinámico.
En este punto, el firmware también coloca un distintivo en el procesador para la desasignación
permanente en rearranques subsiguientes, hasta que el personal de mantenimiento sustituya el
procesador.

Impacto de la desasignación del procesador en aplicaciones


La desasignación del procesador es transparente para la amplia mayoría de aplicaciones, incluyendo los
controladores y extensiones de kernel. Sin embargo, puede utilizar las interfaces publicadas para
determinar si una aplicación o extensión de kernel está en ejecución en una máquina multiprocesador,
averiguar cuántos procesadores hay y vincular hebras a procesadores específicos.
La interfaz bindprocessor para vincular procesos o hebras a procesadores utiliza los números de CPU de
vinculación. Los números de CPU de vinculación están en el rango [0..N-1] donde N es el número total de
CPU. Para evitar interrumpir aplicaciones o extensiones de kernel que supongan que no hay "agujeros" en
la numeración de CPU, AIX hace que siempre aparezca para las aplicaciones como si fuera la "última"
(número más alto) CPU de vinculación que se debe desasignar. Por ejemplo, en un SMP de 8 vías, los
números de CPU de vinculación son [0..7]. Si se desasigna un procesador, el número total de CPU
disponibles se convierte en 7, y se numeran [0..6]. Externamente, parece como si la CPU 7 hubiese
desaparecido, sin tener en cuenta qué procesador físico ha fallado.
Nota: En el resto de esta descripción, el término CPU se utiliza para la entidad lógica y el término
procesador para la entidad física.
Potencialmente, las aplicaciones o las extensiones kernel que son procesos o hebras de vinculación se
podrían interrumpir si AIX terminase silenciosamente sus hebras vinculadas o las moviese a la fuerza a
otra CPU cuando uno de los procesadores necesitase la desasignación. Desasignación del procesador
dinámico proporciona interfaces de programación para que se pueda notificar a estas aplicaciones y
extensiones de kernel que está a punto de producirse una desasignación de un procesador. Cuando estas
aplicaciones y extensiones de kernel reciben la notificación, son responsables de retirar sus hebras
vinculadas y recursos asociados (por ejemplo, bloques de petición de temporizador) del último ID de CPU
de vinculación y de adaptarse a la nueva configuración de CPU.
Tras la notificación, si algunas hebras permanecen vinculadas al último ID de CPU de vinculación, la
desasignación se cancela anormalmente, ésta se anota cronológicamente en el registro de errores y AIX
continúa utilizando el procesador defectuoso. Cuando, por último, el procesador falla, provoca una

54 AIX Versión 7.2: Gestión del sistema operativo


anomalía total del sistema. Por lo tanto, es importante que las aplicaciones o extensiones de kernel
reciban la notificación de la desasignación inminente del procesador y que actúen en base a este aviso.
Incluso en los raros casos que la desasignación no se puede llevar a cabo, Desasignación del procesador
dinámico sigue ofreciendo avisos avanzados a los administradores del sistema. Al anotar
cronológicamente el error en el registro de errores, les da la oportunidad de planificar una operación de
mantenimiento en el sistema para sustituir el componente defectuoso antes de que se produzca una
anomalía global del sistema.

Proceso de desasignación del procesador


AIX puede detener un procesador que falla mediante su desasignación.
El flujo de sucesos típico para la desasignación del procesador es el siguiente:
1. El firmware detecta que un procesador ha alcanzado un umbral de error recuperable.
2. El informe de errores del firmware se anota cronológicamente en el registro de errores del sistema y,
cuando AIX se ejecuta en una máquina que soporta la desasignación del procesador, AIX inicia el
proceso de desasignación.
3. AIX lo notifica a los procesos que no son de kernel y las hebras vinculadas a la última CPU de
vinculación.
4. AIX espera hasta diez minutos para que todas las hebras vinculadas se retiren de la última CPU de
vinculación. Si las hebras permanecen vinculadas, AIX termina anormalmente la desasignación.
5. Si todos los procesos o hebras se desvinculan desde el procesador defectuoso, se invocan a los
Manejadores de sucesos de alta disponibilidad (HAEH) registrados previamente. Un HAEH puede
devolver un error que termine anormalmente la desasignación.
6. A menos que termine anormalmente, el proceso de desasignación detiene en último lugar el
procesador que falla.
Si se produce una anomalía en algún punto de la desasignación, la anomalía y su causa se anotan
cronológicamente. El administrador del sistema puede consultar el registro de errores, efectuar la acción
correctora (cuando sea posible) y reiniciar la desasignación. Por ejemplo, si la desasignación se ha
terminado anormalmente debido a que una aplicación no ha desvinculado sus hebras, el administrador
del sistema puede detener la aplicación, reiniciar la desasignación y, después, reiniciar la aplicación.

Habilitación de la Desasignación del procesador dinámico


Si la máquina soporta la Desasignación del procesador dinámico, puede utilizar SMIT o los mandatos del
sistema para activar o desactivar la característica.
La Desasignación del procesador dinámico se habilita de forma predeterminada durante la instalación,
siempre que la máquina tenga el hardware y el firmware correctos para soportarla.

Procedimiento de vía rápida de SMIT


1. Con autorización de root, escriba smit system en el indicador del sistema, después pulse Intro.
2. En la ventana Entorno del sistema, seleccione Cambiar / Mostrar características del sistema
operativo.
3. Utilice los diálogos de SMIT para completar la tarea.
Para obtener información adicional para completar la tarea, puede seleccionar la tecla de ayuda F1 en los
diálogos de SMIT.

Procedimientos de mandatos
Con autorización de root, puede utilizar los mandatos siguientes para trabajar con la Desasignación del
procesador dinámico:
• Utilice el mandato chdev para cambiar las características del dispositivo especificado.
• Si la desasignación del procesador falla por alguna razón, puede utilizar el mandato ha_star para
reiniciar después de arreglarlo.

Gestión del sistema operativo 55


• Utilice el mandato errpt para generar un informe de los errores registrados.

Métodos de activar y desactivar la desasignación del procesador


Desasignación del procesador dinámico se puede habilitar o inhabilitar cambiando el valor del atributo
cpuguard del objeto ODM sys0.
Los valores posibles para el atributo son enable y disable.
El valor predeterminado es enabled (el atributo cpuguard tiene el valor de enable). Los
administradores del sistema que deseen inhabilitar esta característica deben utilizar los menús del
sistema, el menú Entornos del sistema de SMIT, o el mandato chdev. (En versiones anteriores de AIX, el
valor predeterminado era disabled).
Nota: Si la desasignación del procesador se ha desactivado (inhabilitado), los errores se siguen
registrando. El registro de errores contendrá un error como CPU_FAILURE_PREDICTED, que indica que
se ha notificado a AIX un problema con una CPU.

Reinicio de una desasignación de procesador terminada anormalmente


A veces, la desasignación del procesador falla porque una aplicación no ha retirado sus hebras vinculadas
de la última CPU lógica.
Después de arreglar este problema, ya sea desvinculando (cuando sea seguro hacerlo) o deteniendo la
aplicación, el administrador del sistema puede reiniciar el proceso de desasignación del procesador
utilizando el mandato ha_star.
La sintaxis de este mandato es:

ha_star -C

donde -C es para un suceso de anomalía previsible de CPU.

Consideraciones sobre el estado del procesador


Hay varios puntos que se deben tener en cuenta acerca de los estados del procesador.
Los procesadores físicos se representan en la base de datos ODM por objetos denominados procn donde
n es un número decimal que representa el número de procesador físico. Como cualquier otro dispositivo
representado en la base de datos ODM, los objetos del procesador tienen un estado como, por ejemplo
Definido/Disponible, y atributos.
El estado de un objeto proc siempre es Disponible mientras el procesador correspondiente esté presente,
sin tener en cuenta si se puede utilizar. El atributo state del objeto proc indica si el procesador se utiliza
y, si no, la razón. Este atributo puede tener tres valores.

Elemento Descripción
enable El procesador se utiliza.
disable El procesador se ha desasignado dinámicamente.
faulty El firmware ha declarado defectuoso el procesador en tiempo de inicio.

Si un procesador defectuoso se desasigna satisfactoriamente, su estado pasa de enable a disable.


Independientemente de AIX, también se indica que este procesador es defectuoso en el firmware. En el
rearranque, el procesador desasignado no estará disponible y su estado se establecerá en faulty. Sin
embargo, el objeto proc ODM, seguirá marcado como Disponible. Debe extraer físicamente la CPU
defectuosa de la placa del sistema o extraer la placa de CPU (si es posible) del objeto proc para cambiarlo
a Definido.
En el ejemplo siguiente, el procesador proc4 funciona correctamente y el sistema operativo lo utiliza, tal
como se muestra en la salida siguiente:

# lsattr -EH -l proc4


attribute value description user_settable

state enable Processor state False

56 AIX Versión 7.2: Gestión del sistema operativo


type PowerPC_RS64-III Processor type False
#

Cuando el procesador proc4 obtiene una anomalía previsible, el sistema operativo lo desasigna, tal como
se muestra a continuación:

# lsattr -EH -l proc4


attribute value description user_settable

state disable Processor state False


type PowerPC_RS64-III Processor type False
#

En el siguiente reinicio del sistema, el firmware informa que el procesador proc4 es defectuoso, tal como
se muestra a continuación:

# lsattr -EH -l proc4


attribute value description user_settable

state faulty Processor state False


type PowerPC_RS64-III Processor type False
#

Pero el estado del procesador proc4 permanece Disponible, tal como se muestra a continuación:

# lsdev -CH -l proc4


name status location description

proc4 Available 00-04 Processor


#

Entradas del registro de errores de desasignación


Tres mensajes diferentes de registro de errores se asocian a la desasignación de CPU.
A continuación se muestran unos ejemplos.
formato corto de errpt - resumen
En el ejemplo siguiente se muestran las entradas visualizadas por mandato errpt (sin opciones):

# errpt
IDENTIFICADOR IND._HORA T C NOMBRE_RECURSO DESCRIPCIÓN
804E987A 1008161399 I O proc4 CPU DESASIGNADA
8470267F 1008161299 T S proc4 DESASIGNACIÓN DE CPU CANCELADA
1B963892 1008160299 P H proc4 ANOMALÍA DE CPU PREVISTA
#

• Si la desasignación de procesador está habilitada, el mensaje de ANOMALÍA DE CPU PREVISTA


siempre va seguido del mensaje CPU DESASIGNADA o el mensaje DESASIGNACIÓN DE CPU
CANCELADA ANORMALMENTE.
• Si la desasignación de procesador no está habilitada, sólo se anota cronológicamente el mensaje
ANOMALÍA DE CPU PREVISTA. La habilitación de la desasignación del procesador en cualquier
momento posterior a la anotación cronológica de uno o varios mensajes ANOMALÍA DE CPU
PREVISTA inicia el proceso de desasignación y da lugar a una entrada en el registro de errores del
éxito o anomalía, según se describe más arriba, para cada procesador que se ha informado que
falla.
formato largo de errpt - descripción detallada
El siguiente formato es la salida obtenida con errpt -a:
• CPU_FAIL_PREDICTED
Descripción del error: Anomalía de procesador prevista
Este error indica que el hardware ha detectado que un procesador tiene una alta probabilidad de
fallar en un futuro próximo. Siempre se anota cronológicamente, no importa si la desasignación del
procesador está habilitada o no.
DATOS DE DETALLE: Número de procesador físico, ubicación

Gestión del sistema operativo 57


Ejemplo de entrada de registro de errores - formato largo

ETIQUETA: CPU_FAIL_PREDICTED
IDENTIFICADOR: 1655419A

Fecha/Hora: Jue Sep 30 [Link]


Número de secuencia: 53
Id de máquina: 00002F0E4C00
Id de nodo: auntbea
Clase: H
Tipo: PEND
Nombre de recurso: proc25
Clase de recurso: procesador
Tipo de recurso: proc_rspc
Ubicación: 00-25

Descripción
ANOMALÍA DE CPU PREVISTA

Causas probables
ANOMALÍA DE CPU

Causas de anomalía
ANOMALÍA DE CPU

Acciones recomendadas
ASEGÚRESE DE QUE LA MODALIDAD DE CPU GARD ESTÁ HABILITADA
EJECUTE LOS DIAGNÓSTICOS DEL SISTEMA.

Datos de detalle
DATOS DEL PROBLEMA
0144 1000 0000 003A 8E00 9100 1842 1100 1999 0930 4019
0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 4942 4D00 5531
2E31 2D50 312D 4332 0000
0002 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000
... ... ... ... ...

• CPU_DEALLOC_SUCCESS
Descripción del error: Un procesador se ha desasignado satisfactoriamente tras la detección de
una anomalía de procesador prevista. Este mensaje se anota cronológicamente cuando la
desasignación del procesador está habilitada y cuando la CPU se ha desasignado
satisfactoriamente.
DATOS DE DETALLE: Número de CPU lógica de procesador desasignado.
Ejemplo: entrada de registro de errores - formato largo:

ETIQUETA: CPU_DEALLOC_SUCCESS
IDENTIFICADOR: 804E987A

Fecha/Hora: Jue Sep 30 [Link]


Número de secuencia: 63
Id de máquina: 00002F0E4C00
Id de nodo: auntbea
Clase: O
Tipo: INFO
Nombre de recurso: proc24

Descripción
CPU DESASIGNADA

Acciones recomendadas
SE NECESITA MANTENIMIENTO DEBIDO A ANOMALÍA DE CPU

Datos de detalle
NÚMERO DE CPU LÓGICA DESASIGNADA

En este ejemplo, proc24 se ha desasignado satisfactoriamente y era la CPU lógica 0 cuando se ha


producido la anomalía.

58 AIX Versión 7.2: Gestión del sistema operativo


• CPU_DEALLOC_FAIL
Descripción del error: Una desasignación de procesador no ha sido satisfactoria debido a una
anomalía de procesador prevista. Este mensaje se anota cronológicamente cuando la desasignación
de CPU está habilitada, y cuando la CPU no se ha desasignado satisfactoriamente.
DATOS DE DETALLE: Código de razón, número de CPU lógica, información adicional según el tipo
de anomalía.
El código de razón es un valor hexadecimal numérico. Los posibles códigos de razón son:

Elemento Descripción
2 Uno o varios procesos o hebras permanecen vinculados a la última CPU lógica. En
este caso, los datos detallados ofrecen los PID de los procesos infractores.
3 Un controlador registrado o extensión de kernel ha devuelto un error cuando se le
ha notificado. En este caso, el campo de datos detallados contiene el nombre del
controlador o extensión de kernel infractor (codificado en ASCII).
4 La desasignación de un procesador hace que la máquina tenga disponibles menos
de dos CPU. Este sistema operativo no desasigna más de N-2 procesadores en una
máquina de N vías para evitar la confusión de las aplicaciones o extensiones de
kernel que utilizan el número total de procesadores disponibles para determinar si
están ejecutando en un sistema Uniprocesador (UP) donde es seguro saltarse el
uso de bloques de multiprocesador o en un Multiprocesador simétrico (SMP).
200 (0xC8) La desasignación de procesador está habilitada (el atributo de ODM cpuguard
tiene el valor disable). Normalmente no se ve este error a menos que se inicie
ha_star manualmente.

Ejemplos: entradas del registro de errores - formato largo


Ejemplo 1:

ETIQUETA: CPU_DEALLOC_ABORTED
IDENTIFICADOR: 8470267F
Fecha/Hora: Jue Sep 30 [Link]
Número de secuencia: 50
Id de máquina: 00002F0E4C00
Id de nodo: auntbea
Clase: S
Tipo: TEMP
Nombre de recurso: proc26

Descripción
DESASIGNACIÓN DE CPU CANCELADA ANORMALMENTE

Causas probables
PROGRAMA DE SOFTWARE

Causas de anomalía
PROGRAMA DE SOFTWARE

Acciones recomendadas
SE NECESITA MANTENIMIENTO DEBIDO A ANOMALÍA DE CPU
VER DOCUMENTACIÓN DEL USUARIO PARA CPU GARD

Datos de detalle
CAUSA DE DESASIGNACIÓN CANCELADA ANORMALMENTE
0000 0003
DATOS DE DESASIGNACIÓN CANCELADA ANORMALMENTE
6676 6861 6568 3200

En este ejemplo, la desasignación de proc26 ha fallado. El código de razón 3 significa que una
extensión de kernel ha devuelto un error a la rutina de notificación de kernel. Los DATOS DE
DESASIGNACIÓN CANCELADA ANORMALMENTE indican fvhaeh2, que es el nombre que la
extensión ha utilizado al registrarse en el kernel.

Gestión del sistema operativo 59


Ejemplo 2:

ETIQUETA: CPU_DEALLOC_ABORTED
IDENTIFICADOR: 8470267F
Fecha/Hora: Jue Sep 30 [Link]
Número de secuencia: 71
Id de máquina: 00002F0E4C00
Id de nodo: auntbea
Clase: S
Tipo: TEMP
Nombre de recurso: proc19

Descripción
DESASIGNACIÓN DE CPU CANCELADA ANORMALMENTE

Causas probables
PROGRAMA DE SOFTWARE

Causas de anomalía
PROGRAMA DE SOFTWARE

Acciones recomendadas
SE NECESITA MANTENIMIENTO DEBIDO A ANOMALÍA DE CPU;
VER DOCUMENTACIÓN DEL USUARIO PARA CPU GARD

Datos de detalle
CAUSA DE DESASIGNACIÓN CANCELADA ANORMALMENTE
0000 0002
DATOS DE DESASIGNACIÓN CANCELADA ANORMALMENTE
0000 0000 0000 4F4A

En este ejemplo, la desasignación para proc19 ha fallado. El código de razón 2 indica que había una
hebra o hebras vinculadas al último procesador lógico y no se han desvinculado después de recibir
la señal SIGCPUFAIL. DATOS DE DESASIGNACIÓN CANCELADA ANORMALMENTE muestra que
estas hebras pertenecían al proceso 0x4F4A.
Las opciones del mandato ps (-o THREAD, -o BND) permite listar todas las hebras o procesos
junto con el número de CPU a la que están vinculados.
Ejemplo 3:

ETIQUETA: CPU_DEALLOC_ABORTED
IDENTIFICADOR: 8470267F

Fecha/Hora: Jue Sep 30 [Link]


Número de secuencia: 106
Id de máquina: 00002F0E4C00
Id de nodo: auntbea
Clase: S
Tipo: TEMP
Nombre de recurso: proc2

Descripción
DESASIGNACIÓN DE CPU CANCELADA ANORMALMENTE

Causas probables
PROGRAMA DE SOFTWARE

Causas de anomalía
PROGRAMA DE SOFTWARE

Acciones recomendadas
SE NECESITA MANTENIMIENTO DEBIDO A ANOMALÍA DE CPU
VER DOCUMENTACIÓN DEL USUARIO PARA CPU GARD

Datos de detalle
CAUSA DE DESASIGNACIÓN CANCELADA ANORMALMENTE
0000 0004
DATOS DE DESASIGNACIÓN CANCELADA ANORMALMENTE
0000 0000 0000 0000

En este ejemplo, la desasignación de proc2 ha fallado debido a que había dos procesadores activos
o menos en el momento de la anomalía (código de razón 4).

60 AIX Versión 7.2: Gestión del sistema operativo


Configuración de variables del entorno del sistema
El entorno del sistema es principalmente el conjunto de variables que definen o controlan determinados
aspectos de la ejecución del proceso.
Se establecen o restablecen cada vez que se inicia un shell. Desde el punto de vista de la gestión del
sistema, es importante asegurarse de que el usuario está configurado con los valores correctos en el
inicio de sesión. La mayoría de estas variables se establecen durante la inicialización del sistema. Sus
definiciones se leen del archivo /etc/profile o se establecen de forma predeterminada.

Prueba de la batería del sistema


Si el sistema muestra una hora incorrecta, la causa puede ser una batería agotada o desconectada.

1. Para determinar el estado de la batería del sistema, escriba el siguiente mandato diag:

diag -B -c

2. Cuando aparezca el menú principal Diagnósticos, seleccione la opción Determinación de problemas.


Si la batería está desconectada o agotada, se visualizará un menú del problema con un número de
petición de servicio (SRN). Anote el SRN en el Elemento 4 del Formulario de resumen de problemas e
informe del problema a la organización de servicio de hardware.
Si la batería funciona, la hora del sistema puede haberse restablecido incorrectamente debido a que los
mandatos date o setclock se han ejecutado incorrecta o satisfactoriamente.
Conceptos relacionados
Configuración del reloj del sistema
El reloj del sistema registra la hora de los sucesos del sistema, permite planificar sucesos del sistema
(por ejemplo, ejecutar diagnósticos de hardware a las 3:00 de la madrugada)e indica cuándo ha creado
por primera vez los archivos o la última vez que los ha guardado.

Configuración del reloj del sistema


El reloj del sistema registra la hora de los sucesos del sistema, permite planificar sucesos del sistema
(por ejemplo, ejecutar diagnósticos de hardware a las 3:00 de la madrugada)e indica cuándo ha creado
por primera vez los archivos o la última vez que los ha guardado.
Utilice el mandato date para establecer el reloj del sistema. Utilice el mandato setclock para
establecer la hora y la fecha contactando con el servidor horario.
Tareas relacionadas
Prueba de la batería del sistema
Si el sistema muestra una hora incorrecta, la causa puede ser una batería agotada o desconectada.

Mandato date
El mandato date visualiza o establece la fecha y la hora.
Especifique el mandato siguiente para determinar lo que el sistema reconoce como la fecha y la hora
actuales:

/usr/bin/date

Atención: No cambie la fecha cuando el sistema se ejecute con más de un usuario.

Los formatos siguientes se pueden utilizar al establecer la fecha con el parámetro Fecha:
• mmddHHMM[AAaa] (valor predeterminado)
• mmddHHMM[aa]
Las variables para el parámetro Fecha se definen a continuación:

Gestión del sistema operativo 61


Ele Descripción
men
to
mm Especifica el número del mes.
dd Especifica el número del día del mes.
HH Especifica la hora del día (utilizando un reloj de 24 horas).
MM Especifica el número del minuto.
AA Especifica los dos primeros dígitos de un año de cuatro dígitos.
aa Especifica los dos últimos números del año.

Con autorización de root, puede utilizar el mandato date para establecer la fecha y la hora actuales. Por
ejemplo:

date 021714252002

Establece la fecha en el 17 de febrero de 2002, y la hora en las 14:25.

Mandato setclock
El mandato setclock visualiza o establece la fecha y la hora solicitando la hora actual a un servidor
horario de una red.
Para visualizar la fecha y la hora del sistema, especifique:

/usr/sbin/setclock

El mandato setclock toma la primera respuesta del servidor horario, convierte la lectura de reloj de
calendario que encuentra ahí y muestra la fecha y hora local. Si no responde ningún servidor horario, o si
la red no está operativa, el mandato setclock visualiza un mensaje que lo indica y no cambia los valores
de fecha y hora.
Nota: Cualquier sistema principal que ejecute el daemon inetd puede actuar de servidor horario.
Con autorización de root, puede utilizar el mandato setclock para enviar la petición de servicio horario
de Internet a un sistema principal de servidor horario y establecer la fecha y hora local de acuerdo a ello.
Por ejemplo:

setclock SistemaPrincipalHorario

Donde SistemaPrincipalHorario es el nombre de sistema principal o la dirección IP del servidor horario.


Información relacionada
Mandato setclock

Soporte y configuración de huso horario Olson


Desde AIX 6.1, se proporciona soporte para valores de huso horario coherentes con la base de datos
Olson.
La especificación de huso horario POSIX soportada en releases anteriores de AIX no maneja
correctamente los cambios en las reglas de huso horario, como el cambio de hora por ahorro de energía.
La base de datos Olson mantiene un registro histórico de reglas de huso horario, de modo que si las
reglas cambian en una determinada ubicación, AIX interpreta fechas y horas correctamente, tanto del
presente como del pasado.
Las definiciones de huso horario que cumplen con la especificación POSIX siguen recibiendo soporte de
AIX. AIX comprueba la variable de entorno TZ para determinar si la variable de entorno coincide con un
valor de huso horario Olson. Si la variable de entorno TZ no coincide con ningún valor de huso horario
Olson, AIX sigue las reglas de especificación de POSIX.
Para obtener más detalles sobre la variable de entorno TZ, consulte el archivo de entorno.

62 AIX Versión 7.2: Gestión del sistema operativo


Para establecer el huso horario utilizando valores definidos por Olson, utilice la siguiente vía de acceso de
SMIT: Entornos del sistema > Cambiar / Mostrar fecha, hora y huso horario > Cambiar huso horario
mediante los valores definidos del sistema.

Configuración del mensaje del día


El mensaje del día se visualiza cada vez que un usuario inicia la sesión en el sistema.
Es una manera adecuada de comunicar información a todos los usuarios como, por ejemplo, los números
de versión de software instalado o las noticias del sistema actual. Para cambiar el mensaje del día, utilice
su editor favorito para editar el archivo /etc/motd.

Datos de medida de uso de AIX (etiquetas de SLM) para IBM License Metric Tool
Las etiquetas de Software License Metric (SLM) generadas por el sistema operativo AIX sirven como
datos de medida de uso empleados por IBM® License Metric Tool. Los datos de medida de uso registran la
información de virtual CPU (vCPU) que representa el número de CPU virtuales que están en línea en
el sistema.
Para utilizar IBM License Metric Tool, tiene que instalar el conjunto de archivos [Link], disponible en el
paquete de expansión del sistema operativo AIX. El conjunto de archivos también se puede descargar
desde el sitio web.
IBM License Metric Tool genera un archivo [Link] de Software License Metric Tag (SLMTAG) que
se expande dinámicamente. El archivo [Link] se encuentra en el directorio /var/opt/slm. Este
archivo es utilizado por BigFix Agent (BESClient) para incorporar el software de agente de IBM License
Metric Tool y enviar el archivo al servidor de IBM License Metric Tool.
IBM License Metric Tool se puede utilizar con BigFix Agent (BESClient), instalado y configurado en el
sistema. BigFix Agent debe obtenerse de forma independiente desde el servidor de IBM License Metric
Tool e instalarse en el cliente. Si BigFix Agent no se ha instalado en el sistema, se crea el archivo SLMTAG,
pero no se envían datos al servidor de IBM License Metric Tool.
Puede configurar IBM License Metric Tool con las variables de entorno definidas en el archivo /etc/
environment. En el momento de la instalación, estas variables se establecen en los valores
predeterminados. Se pueden configurar las siguientes variables configurables.

Variable Detalles
SLM_VCPU_PERIOD_HOURS Periodo de tiempo que está especificado en horas,
para añadir una nueva entrada de métricas. El valor
predeterminado es de 720 horas (30 días). Este
valor debe ser un múltiplo de 4. Si especifica un
valor que no sea múltiplo de 4, IBM License Metric
Tool considerará el siguiente múltiplo de 4. El valor
mínimo es de 4 horas.
SLM_VCPU_MAX_FSIZE El tamaño de archivo máximo que está
especificado en bytes es el tamaño máximo (en
bytes) para el archivo de registro. Si el tamaño de
archivo supera este límite, el archivo se archivará.
El valor predeterminado es de 2097152 bytes (2
MB). El valor mínimo es de 10 KB. Si especifica un
valor inferior, IBM License Metric Tool lo
considerará como 10 KB.
SLM_VCPU_COUNT_ARCH Número de archivados retenidos por la
herramienta. El valor predeterminado es 4. El valor
mínimo es 1. Si especifica un valor inferior, IBM
License Metric Tool lo considerará como 1.

Gestión del sistema operativo 63


Los datos de medida de uso se visualizan en la página Utilización de recursos de la GUI del servidor de
IBM License Metric Tool. Los datos de medida de uso se muestran junto al nombre de host como el tipo
de métrica VCPU y el subtipo COUNT.
Información relacionada
IBM License Metric Tool 9.2.0

AIX Runtime Expert


AIX Runtime Expert proporciona un conjunto de acciones simplificadas que se pueden utilizar sobre una
única consolidación para recopilar, aplicar y verificar el entorno de ejecución para una o varias instancias
de AIX.
Los componentes de AIX proporcionan herramientas como, por ejemplo, RAS (Reliability Availability
Serviceability), Security o Kernel, que le permiten cambiar valores en cada capa de componente con el
objeto de ajustar el sistema operativo para un requisito o necesidad determinada. AIX Runtime Expert
habilita la configuración de todo el sistema al utilizar una infraestructura ampliable para manejar los
diversos métodos de configuración diferentes que existen actualmente en AIX.
AIX Runtime Expert ejecuta mandatos de configuración de varios componentes como una sola acción
mediante un perfil de configuración. Puede utilizar dicho perfil para aplicar valores de sistema idénticos
en varios sistemas. AIX Runtime Expert ofrece una alternativa simplificada para gestionar la configuración
de tiempo de ejecución de uno o varios sistemas, pero no impide el uso de otros métodos para cambiar
valores del sistema.

Conceptos de AIX Runtime Expert


Antes de empezar a utilizar AIX Runtime Expert, debe tener unos conocimientos básicos del mismo.
Las funciones base de AIX Runtime Expert soportan la gestión de perfiles de configuración y aplicación
para un único sistema AIX. Para habilitar el consumo escalable de varios sistemas para un único perfil, los
sistemas AIX pueden descubrir y consumir una descripción de perfil basada en LDAP cuando se inician o
cuando el sistema se dirige mediante operaciones administrativas en los puntos finales AIX de destino. La
gestión remota para AIX Runtime Expert sólo se puede realizar con el componente NIM (Network Install
Manager). Al utilizar funciones NIM existentes, puede ejecutar AIX Runtime Expert de modo remoto en
varios clientes NIM autónomos desde una máquina maestra NIM.

Perfiles AIX Runtime Expert


Los perfiles AIX Runtime Expert se utilizan para establecer valores en un sistema en ejecución, extraer
valores para un sistema en ejecución y comparar valores con respecto a un sistema en ejecución u otro
perfil.
Un perfil describe uno o varios controles de configuración de tiempo de ejecución y sus valores para el
área función de destino. Un perfil puede representar un conjunto de controles completo o un subconjunto
de controles y sus valores. Los perfiles de configuración son archivos XML estándar. Mediante AIX
Runtime Expert puede gestionar perfiles y aplicarlos al sistema definido.
Un perfil puede contener parámetros de configuración y parámetros de ajuste sin valores, tales como
perfiles de ejemplo. El propósito de un perfil sin parámetros es extraer los valores de los sistemas
actuales a partir del perfil especificado. Los perfiles que contienen, como mínimo, un parámetro sin
valores tienen las limitaciones siguientes:
• Al utilizar el mandato artexset se produce un error.
• Al utilizar el mandato artexdiff devuelven un mensaje de aviso para cada parámetro que no tiene
valor.
El valor de un parámetro de un perfil puede contener lo siguiente:
• Ningún valor
• Un valor de objeto binario grande, que son datos binarios con codificación base64 como un archivo de
texto en línea. El valor de objeto binario grande se utiliza para sustituir archivos existentes como, por
ejemplo, /etc/motd o /etc/hosts.

64 AIX Versión 7.2: Gestión del sistema operativo


• Un valor que no sea de objeto binario grande, que es un valor que se asigna a parámetros de
configuración del sistema como, por ejemplo, un entero o serie.
En el directorio /etc/security/artex/samples puede ver perfiles de ejemplo existentes. El perfil de
ejemplo sólo contiene nombres de parámetros a los que dan soporte los valores predeterminados
instalados con AIX Runtime Expert. Los parámetros de los perfiles de ejemplo no tienen valores. Los
perfiles de ejemplo son archivos de sólo lectura. Utilice los perfiles de ejemplo como plantilla para crear
nuevos archivos de configuración. Los ejemplos existentes no se pueden aplicar a un sistema en
ejecución.
Los ejemplos siguientes son algunos de los mandatos de configuración básica que se pueden controlar a
través de perfiles de configuración:
• Configuración de red
– no
– mktcpip
• Configuración de kernel
– ioo
– schedo
• Configuración de RAS
– alog
• Configuración de la seguridad
– setsecattr

Ejemplo
El ejemplo siguiente muestra un perfil de configuración para catálogos y subcatálogos diferentes con
valores asignados para parámetros distintos. Puede editar este perfil con cualquier editor XML, o bien,
puede utilizar el mandato vi y cambiar los valores existentes para los parámetros definidos.

<?xml version="1.0" encoding="UTF-8" ?>


<Profile origin="get" version="1.0" date="2009-04-25T[Link]Z">
<Catalog id="vmoParam">
<Parameter name="kernel_heap_psize" value="0" applyType="nextboot" reboot="true" />
<Parameter name="maxfree" value="1088" />
</Catalog>
<Catalog id="noParam">
<SubCat id="tcp_network">
<Parameter name="tcp_recvspace" value="16384" />
<Parameter name="tcp_sendspace" value="16384" />
</SubCat>
<SubCat id="general_network">
<Parameter name="use_sndbufpool" value="1" applyType="nextboot" reboot="true" />
</SubCat>
</Catalog>
<Catalog id="lvmoParam">
<Parameter name="max_vg_pbuf_count" value="0">
<Target class="vg" instance="rootvg" />
</Parameter>
<Parameter name="pv_pbuf_count" value="512">
<Target class="vg" instance="rootvg" />
</Parameter>
</Catalog>

Tareas relacionadas
Modificación de perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert son archivos XML y se pueden modificar con cualquier editor XML o editor
de texto.
Creación de perfiles AIX Runtime Expert
Utilice los ejemplos existentes en el directorio /etc/security/artex/samples para crear un nuevo
perfil con el mandato artexget. Los perfiles de ejemplo son una plantilla con la que puede crear un
perfil, que puede modificar y guardar en un archivo personalizado.

Gestión del sistema operativo 65


Obtención de valores de perfil AIX Runtime Expert
Utilice el mandato artexget para buscar información sobre un perfil.
Aplicación de perfiles AIX Runtime Expert
Para establecer un sistema con la configuración y parámetros ajustables de un perfil, aplique un perfil
mediante el mandato artexset.

Catálogos de AIX Runtime Expert


Los catálogos son el mecanismo que define y especifica controles de configuración que se pueden utilizar
mediante AIX Runtime Expert.
Se proporcionan catálogos para los controles a los que AIX Runtime Expert da soporte actualmente. Los
catálogos son archivos de definición que correlacionan valores de perfil de configuración con parámetros
que ejecutan mandatos y acciones de configuración.
AIX Runtime Expert le facilita los catálogos de sólo lectura existentes, que se encuentran en el
directorio /etc/security/artex/catalogs e identifican valores que se pueden modificar. No
modifique los catálogos.
Cada catálogo contiene parámetros para un componente. Sin embargo, algunos catálogos pueden
contener parámetros de varios componentes relacionados. Los nombres de los catálogos describen los
componentes que están contenidos en el catálogo. El elemento XML <description> de cada catálogo
proporciona una descripción del catálogo.

AIX Runtime Expert y LDAP


AIX Runtime Expert puede recuperar perfiles del servidor LDAP (Lightweight Directory Access Protocol).
Los perfiles AIX Runtime Expert se deben almacenar como objetos ibm-artexProfile y deben tener los
atributos obligatorios siguientes:
• Ibm-artexProfileName: nombre de perfil AIX Runtime Expert.
• Ibm-artexProfileXMLData: contenido XML del perfil AIX Runtime Expert que se ha almacenado como
octetString.
El esquema AIX Runtime Expert se debe haber instalado en el servidor LDAP antes de almacenar
cualquier perfil AIX Runtime Expert. La configuración de un servidor LDAP para AIX Runtime Expert es
similar a la configuración de un servidor LDAP para autenticación de usuario. Para obtener más
información sobre la configuración de LDAP, consulte el apartado que trata sobre la configuración de un
servidor de información de seguridad ITDS.
La configuración de un cliente LDAP para AIX Runtime Expert es similar a la configuración de un cliente
LDAP para la autenticación de usuarios. Para obtener más información, consulte el tema Configuración de
un cliente LDAP. Para configurar un cliente LDAP, utilice el mandato mksecldap -c para configurar
correctamente el daemon secldapclntd. AIX Runtime Expert se basa en el daemon secldapclntd para
acceder al servidor LDAP. De forma predeterminada, AIX Runtime Expert busca entradas de perfil bajo el
identificador DN: ou=artex,cn=AIXDATA. Puede personalizar este DN actualizando la clave
artexbasedn en el archivo de configuración secldapclntd de /etc/security/ldap/[Link].

Actualización de un perfil AIX Runtime Expert


Para cargar un perfil AIX Runtime Expert, puede crear un archivo LDIF (LDAP Data Interchange
Formatted) y utilizar el mandato ldapadd o utilizar una herramienta de administración de LDAP como,
por ejemplo, Tivoli Directory Server Web Administration Tool.
El siguiente es un ejemplo de un perfil que se ha guardado en LDIF:

dn:
ou=artex,cn=AIXDATA
objectClass: organizationalUnit
objectClass: top
ou: artex

dn: ibm-artexProfileName=[Link],ou=artex,cn=AIXDATA
objectClass: ibm-artexProfile
objectClass: top

66 AIX Versión 7.2: Gestión del sistema operativo


obm-artexProfileName: [Link]
ibm-artexProfileXMLData:< [Link]

Lo siguiente es un ejemplo de cómo cargar un perfil mediante el mandato ldapadd y un archivo LDIF de
ejemplo denominado [Link]:

ldapadd -c -h <ldaphost> -D cn=admin -w <password> -f [Link]

Tareas relacionadas
Creación de perfiles AIX Runtime Expert
Utilice los ejemplos existentes en el directorio /etc/security/artex/samples para crear un nuevo
perfil con el mandato artexget. Los perfiles de ejemplo son una plantilla con la que puede crear un
perfil, que puede modificar y guardar en un archivo personalizado.
Información relacionada
IBM Security Directory Server

AIX Runtime Expert y RBAC


Control de accesos basado en roles (RBAC) se puede utilizar para dar a usuarios no root la habilidad de
ejecutar los mandatos de AIX Runtime Expert.

Autorizaciones de AIX Runtime Expert


Al instalar el conjunto de archivos [Link], se crearán tres autorizaciones del sistema que
permiten distintos niveles de acceso a la funcionalidad de AIX Runtime Expert:
• La autorización [Link] permite la ejecución de los mandatos artexlist y
artexmerge. También se permiten los mandatos artexget y artexdiff, pero sólo para obtener los
valores de perfil. Los valores no se pueden capturar desde el sistema (es decir, el mandato artexget
no se puede ejecutar con los distintivos –r, –n ni –p, y el mandato artexdiff sólo se puede ejecutar
entre dos perfiles).
• La autorización [Link] permite todas las operaciones permitidas por la
autorización [Link] y, de forma adicional, permite la ejecución no restringida de los
mandatos artexget y artexdiff.
• La autorización [Link] permite todas las operaciones permitidas por la
autorización [Link] y, de forma adicional, permite la ejecución del mandato
artexset.

Roles de AIX Runtime Expert


AIX Runtime Expert no crea ningún rol nuevo; sin embargo, los conjuntos de archivos [Link]
añaden la autorización [Link] al rol SysConfig. Cualquier usuario con el rol SysConfig o
cualquier rol delimitador (como el rol isso) podrá ejecutar los mandatos artexlist, artexmerge,
artexdiff, artexget y artexset.

Restricciones
Por motivos de seguridad, el uso de la variable de entorno ARTEX_CATALOG_PATH está restringido al
usuario root. Los usuarios no root a los que se otorga el derecho de ejecutar los mandatos de AIX
Runtime Expert mediante el RBAC no pueden utilizar la variable de entorno ARTEX_CATALOG_PATH.

Administración de AIX Runtime Expert


AIX Runtime Expert utiliza unos pocos mandatos simples para crear, modificar, combinar y aplicar
perfiles.

Configuración de AIX Runtime Expert


AIX Runtime Expert utiliza el archivo de configuración /etc/security/artex/config/[Link].

Gestión del sistema operativo 67


Una entrada del archivo de configuración consta del nombre de una opción de configuración, seguido por
uno o más espacios y un valor. Las líneas en blanco y las líneas que empiezan por un signo # se pasarán
por alto.
Se da soporte a las siguientes opciones:

Tabla 1. Opciones de configuración


Opciones Descripción
ARTEX_CATALOG_PATH Lista separada por dos puntos de directorios
buscados para archivos de catálogo. Esta opción se
sobrescribe mediante la variable de entorno
ARTEX_CATALOG_PATH. La vía de acceso
predeterminada es /etc/security/artex/
catalogs.
ARTEX_PROFILE_PATH Lista separada por dos puntos de directorios
buscada por archivos de perfiles mediante el
mandato artexlist si no se especifica ningún
directorio. Esta opción se sobrescribe mediante la
variable de entorno ARTEX_PROFILE_PATH. La
vía de acceso predeterminada es /etc/
security/artex/samples.
DEBUG_LOG_CATEGORY Categoría de depuración para el archivo de
registro. Esta opción se puede repetir para
seleccionar varias categorías de depuración.
DEBUG_LOG_LEVEL Nivel de depuración para el archivo de registro
entre 0 (sin rastreos de depuración) y 3 (lo más
detallado).
MAX_CMDS Número máximo de mandatos externos ejecutados
simultáneamente. Los mandatos externos
ejecutados por AIX Runtime Expert se ponen en
cola para que no más que los mandatos externos
MAX_CMDS se ejecuten simultáneamente en
cualquier momento determinado. El valor
predeterminado es 10.

Creación de perfiles AIX Runtime Expert


Utilice los ejemplos existentes en el directorio /etc/security/artex/samples para crear un nuevo
perfil con el mandato artexget. Los perfiles de ejemplo son una plantilla con la que puede crear un
perfil, que puede modificar y guardar en un archivo personalizado.
Para crear un perfil con todos los parámetros a los que AIX Runtime Expert da soporte, siga estos pasos:
1. Configure y ajuste el sistema con los valores adecuados para un nuevo perfil.
2. Vaya al directorio samples: /etc/security/artex/samples
3. Ejecute el mandato siguiente para crear un nuevo perfil denominado custom_all.xml:

artexget -p [Link] > /directory_for_new_profile/custom_all.xml

Nota: El perfil custom_all.xml se puede utilizar para configurar otros sistemas que tengan una
configuración de sistemas actuales similares.
Para crear un perfil para un componente específico como, por ejemplo, opciones de red, siga estos pasos:
1. Configure y ajuste el sistema con los valores adecuados para un nuevo perfil.
2. Vaya al directorio samples: /etc/security/artex/samples.

68 AIX Versión 7.2: Gestión del sistema operativo


3. Cree un nuevo perfil con el nombre custom_no.xml a partir del perfil de ejemplo existente,
[Link], ejecutando el mandato siguiente:

artexget -p [Link] > /directory_for_new_profile/custom_no.xml

Puede personalizar los perfiles recién creados; para ello, cambie o elimine los valores de los parámetros
mediante un editor XML o cualquier editor de texto.
Los perfiles personalizados se pueden subir al servidor LDAP con el objeto de que se puedan utilizar
desde varios sistemas AIX. Para subir los perfiles al servidor LDAP, utilice las herramientas que se
proporcionan con LDAP.
Conceptos relacionados
AIX Runtime Expert y LDAP
AIX Runtime Expert puede recuperar perfiles del servidor LDAP (Lightweight Directory Access Protocol).
Perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert se utilizan para establecer valores en un sistema en ejecución, extraer
valores para un sistema en ejecución y comparar valores con respecto a un sistema en ejecución u otro
perfil.
Tareas relacionadas
Obtención de valores de perfil AIX Runtime Expert
Utilice el mandato artexget para buscar información sobre un perfil.
Aplicación de perfiles AIX Runtime Expert
Para establecer un sistema con la configuración y parámetros ajustables de un perfil, aplique un perfil
mediante el mandato artexset.
Información relacionada
Mandato artexget

Modificación de perfiles AIX Runtime Expert


Los perfiles AIX Runtime Expert son archivos XML y se pueden modificar con cualquier editor XML o editor
de texto.
Mediante el mandato artexget se pueden personalizar los perfiles creados por el usuario cambiando los
valores de los parámetros o eliminando algunos de los parámetros que no se necesitan para modificar o
supervisar el perfil.
Para modificar perfiles AIX Runtime Expert, siga estos pasos:
1. En el directorio donde se encuentra custom_all.xml, ejecute los mandatos siguientes para guardar
una copia del perfil:

cp custom_all.xml custom_all_backup.xml

2. En el directorio donde se encuentra custom_all.xml, ejecute el mandato siguiente para editar el


perfil:

vi custom_all.xml

Nota: Puede utilizar cualquier editor XML o de texto.


3. Modifique los valores de los parámetros o elimine los parámetros que no se necesitan para cambiar o
supervisar el perfil.
4. Ejecute el mandato siguiente para verificar si se han guardado correctamente los cambios del perfil,
comparándolos con los valores del sistema actual.

artexdiff -c -r custom_all.xml custom_all_backup.xml

El mandato artexdiff muestra los parámetros que ha modificado el editor. <FirstValue> muestra
el valor del perfil y <SecondValue> muestra el valor del sistema actual.

Gestión del sistema operativo 69


Conceptos relacionados
Perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert se utilizan para establecer valores en un sistema en ejecución, extraer
valores para un sistema en ejecución y comparar valores con respecto a un sistema en ejecución u otro
perfil.
Tareas relacionadas
Obtención de valores de perfil AIX Runtime Expert
Utilice el mandato artexget para buscar información sobre un perfil.
Aplicación de perfiles AIX Runtime Expert
Para establecer un sistema con la configuración y parámetros ajustables de un perfil, aplique un perfil
mediante el mandato artexset.
Información relacionada
Mandato artexdiff

Combinación de perfiles AIX Runtime Expert


Un perfil puede representar un conjunto de controles completo o cualquier subconjunto de controles.
Otro procedimiento útil para modificar perfiles consiste en combinar perfiles que representan un
subconjunto de controles mediante el mandato artxmerge.
Puede utilizar el mandato artexmerge para combinar uno o varios perfiles en un único perfil.
Para combinar perfiles, siga estos pasos:
1. En el directorio donde están almacenados los perfiles, ejecute el mandato siguiente:

artexmerge profile_name1.xml profile_name2.xml > new_profile_name.xml

2. Ejecute el mandato siguiente para ver el perfil y verificar que sea un perfil válido:

artexget nuevo_nombre_perfil.xml

Nota: Si los perfiles que está combinando tienen parámetros duplicados, el proceso de combinación
de perfiles da error. De forma alternativa, al usar el distintivo -f, se utilizan los valores de parámetros
del último perfil.
Información relacionada
Mandato artexmerge

Búsqueda de perfiles AIX Runtime Expert


Utilice el mandato artexlist para buscar perfiles en una vía de acceso determinada y de un servidor
LDAP.
Para buscar perfiles, siga estos pasos:
1. Si el perfil se encuentra en el sistema local, ejecute el mandato siguiente:

artexlist

2. Si el perfil se encuentra en un servidor LDAP, ejecute el mandato siguiente:

artexlist -l

De manera predeterminada, el mandato lista los perfiles en el directorio /etc/security/artex/


samples. Para alterar temporalmente la vía de acceso predeterminada con una variable de entorno,
establezca ARTEX_PROFILE_PATH en una o varias vías de acceso delimitadas por punto y coma, o bien,
establezca una vía de acceso que se pueda pasar como un argumento.
Información relacionada
Mandato artexlist

Obtención de valores de perfil AIX Runtime Expert


Utilice el mandato artexget para buscar información sobre un perfil.

70 AIX Versión 7.2: Gestión del sistema operativo


Al utilizar un perfil, puede visualizar los valores del perfil o del sistema en formatos diferentes (XML, CSV
o texto) con filtros distintos como, por ejemplo, parámetros que necesitan que se realice un rearranque
para que entren en vigor y parámetros que necesitan que se detengan o reinicien algunos servicios.
La obtención de valores del sistema resulta útil en las situaciones siguientes:
Para obtener una instantánea de un sistema
Cuando un sistema se ha configurado de modo correcto, puede guardar su configuración mediante
una instantánea. Posteriormente, puede utilizar dicha instantánea en caso de que se haya modificado
algún parámetro o si no recuerda los parámetros que ha cambiado. El perfil de instantánea se puede
utilizar para devolver el sistema a la configuración que desea.
Para clonar la configuración de un sistema a fin de utilizarla en otros sistemas
Una vez que un sistema se ha configurado y ajustado en un entorno, puede extraer los valores del
sistema en un perfil AIX Runtime Expert y aplicar dicho perfil a otros sistemas.
Para depurar un problema
Cuando se encuentra un problema en un sistema de producción, puede utilizar un perfil para
establecer los mismos valores de sistema en un sistema de prueba y, a continuación, depurar los
problemas en el sistema de prueba.
Para obtener información sobre un perfil, siga estos pasos:
1. Vaya al directorio donde está ubicado el perfil sobre el que desea obtener información.
2. Para obtener información sobre el perfil, ejecute el mandato siguiente:

artexget nombre_de_perfil.xml

Limitación: Cuando un sistema tiene definidos muchos usuarios, los mandatos de AIX Runtime Expert
artexget, artexset y artexdiff aplicados a perfiles como [Link], [Link] o
[Link], tardan más tiempo en completarse.
Conceptos relacionados
Perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert se utilizan para establecer valores en un sistema en ejecución, extraer
valores para un sistema en ejecución y comparar valores con respecto a un sistema en ejecución u otro
perfil.
Tareas relacionadas
Creación de perfiles AIX Runtime Expert
Utilice los ejemplos existentes en el directorio /etc/security/artex/samples para crear un nuevo
perfil con el mandato artexget. Los perfiles de ejemplo son una plantilla con la que puede crear un
perfil, que puede modificar y guardar en un archivo personalizado.
Modificación de perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert son archivos XML y se pueden modificar con cualquier editor XML o editor
de texto.
Información relacionada
Mandato artexget

Aplicación de perfiles AIX Runtime Expert


Para establecer un sistema con la configuración y parámetros ajustables de un perfil, aplique un perfil
mediante el mandato artexset.
Para aplicar un perfil creado por el usuario, siga estos pasos:
1. Vaya al directorio donde está almacenado el perfil que desea aplicar.
2. Para aplicar el perfil al sistema, ejecute el mandato siguiente:

artexset -c nombre_de_perfil.xml

3. Opcional: Si desea aplicar un perfil cada vez que se reinicia el sistema con el objeto de mantener una
configuración coherente, ejecute el mandato siguiente:

Gestión del sistema operativo 71


artexset -b nombre_de_perfil.xml

Nota: Se da soporte a los parámetros restringidos únicamente como parámetros de sólo lectura. Por
lo tanto, los valores de estos parámetros se pueden recuperar con el mandato artexget, pero no se
pueden establecer con el mandato artexset.
Conceptos relacionados
Perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert se utilizan para establecer valores en un sistema en ejecución, extraer
valores para un sistema en ejecución y comparar valores con respecto a un sistema en ejecución u otro
perfil.
Tareas relacionadas
Creación de perfiles AIX Runtime Expert
Utilice los ejemplos existentes en el directorio /etc/security/artex/samples para crear un nuevo
perfil con el mandato artexget. Los perfiles de ejemplo son una plantilla con la que puede crear un
perfil, que puede modificar y guardar en un archivo personalizado.
Modificación de perfiles AIX Runtime Expert
Los perfiles AIX Runtime Expert son archivos XML y se pueden modificar con cualquier editor XML o editor
de texto.
Información relacionada
Mandato artexset

Restablecer perfiles AIX Runtime Expert


Utilice el mandato artexset –u para restablecer los valores de configuración al valor de configuración
anterior de un sistema. Puede aplicar los valores del sistema que se utilizaban antes de aplicar el perfil.
No puede utilizar el mandato rollback si no ha cambiado los valores del sistema durante la sesión
actual.
La retrotracción no se considera como la creación de una nueva imagen de un sistema operativo. Cuando
se utiliza el mandato rollback, no se suprimen ni se crean recursos, sino que se revierten los valores de
configuración del tiempo de ejecución a los valores anteriores del sistema. Con el mandato rollback, no
puede restaurar los valores de una fecha u hora determinadas. La retrotracción sólo se puede realizar a
los valores anteriores del sistema anteriores a la realización de un cambio.
El mandato rollback se puede utilizar en los casos siguientes:
• Probar cambios de configuración en un sistema. Si la nueva configuración no funciona de modo
adecuado, la puede revertir rápidamente a una configuración fiable previa.
• Depurar un sistema. Si un sistema empieza a ejecutarse de modo incorrecto, una retrotracción puede
confirmar si los cambios de configuración forman parte de un problema detectado recientemente.
• Implementar un nuevo perfil a fin de satisfacer alguna situación de excepción especial. Por ejemplo,
una acción especificada sólo se produce una vez al mes en el sistema y, una vez que se ha aplicado al
sistema, desea restaurarlo a su configuración anterior.
Para restaurar los valores anteriores del sistema, lleve a cabo los pasos siguientes:
1. Para retrotraer un perfil, ejecute el mandato siguiente:

artexset -u

2. Para verificar que la retrotracción se ha completado correctamente, ejecute el siguiente mandato para
comparar los valores del sistema:

artexdiff -f txt -r -nombre_perfil.xml

Nota: el nombre_perfil.xml es el nombre del último perfil aplicado al sistema.


Se muestran las diferencias entre el sistema y el perfil.

72 AIX Versión 7.2: Gestión del sistema operativo


Información relacionada
Mandato artexget
Mandato artexlist

Comparación de perfiles AIX Runtime Expert


Utilice el mandato artexdiff para comparar dos perfiles o los valores de un perfil con los valores del
sistema.
Para comparar los perfiles de dos sistemas diferentes, siga estos pasos:
1. Ejecute el mandato siguiente en el sistema 1:

artexget -p [Link] > all_system1.xml

2. Ejecute el mandato siguiente en el sistema 2:

artexget -p [Link] > all_system2.xml

Para verificar si ha cambiado algún parámetro de configuración en un sistema después de un periodo de


tiempo, por ejemplo, si ha estado de vacaciones y desea verificar si se ha efectuado algún cambio durante
su ausencia, ejecute los mandatos siguientes:
• Al regresar de las vacaciones, ejecute el mandato siguiente:

$ artexget -p [Link] > all_before_vacation.xml

• Para ver los cambios de configuración que se han producido mientras estaba de vacaciones, ejecute el
mandato siguiente:

$ artexdiff -c -p all_before_vacation.xml

Información relacionada
Mandato artexget
Mandato artexlist

Grabación de perfiles de AIX Runtime Expert


Puede expandir el ámbito de AIX Runtime Expert añadiendo catálogos y perfiles que puede utilizar el
programa. Debe estar familiarizado con los conceptos de AIX Runtime Expert antes de intentar grabar
nuevos catálogos.
La parte más pequeña de información manejada por AIX Runtime Expert es un parámetro. Los
parámetros pueden ser ajustables, archivos de configuración, variables de entorno, propiedades de
objetos como usuarios, dispositivos o subsistemas (como los objetos se llaman destinos en el contexto
de AIX Runtime Expert).
Los parámetros se agregan en perfiles según el dominio de actividad (como el usuario, tcpi). Los perfiles
son el medio pretendido de interacción entre los usuarios y la infraestructura de AIX Runtime Expert. Los
perfiles son la entrada al mandato artexget que recupera el valor de parámetro en el sistema y
devuelve un perfil. Los perfiles (incluidos los valores) son entradas al mandato artexset que establecen
los parámetros a la lectura del valor en el perfil.

Conceptos en la grabación del perfil de AIX Runtime Expert


Los perfiles de AIX Runtime Expert son archivos XML que contienen una lista de parámetros de
configuración y, opcionalmente, de los valores de los parámetros y de los distintivos de uso.
Los perfiles se pueden ubicar en el sistema que se está ajustando al utilizar los mandatos AIX Runtime
Expert directamente en la línea de mandatos.

Ubicaciones de perfiles
Los perfiles de ejemplo de AIX Runtime Expert se ubican en el directorio /etc/security/artex/
samples.

Gestión del sistema operativo 73


Cuando está grabando un nuevo catálogo para que AIX Runtime Expert dé soporte, se recomienda que
también grabe un perfil de ejemplo que se pueda utilizar como una entrada para el mandato artexget.
Un perfil de ejemplo es un perfil de sólo lectura sin valores asignados para los parámetros. Los perfiles de
ejemplo existentes están ubicados en el directorio /etc/security/artex/samples. De forma
predeterminada, el mandato artexlist lista sólo los perfiles ubicados en el directorio predeterminado,
pero el directorio predeterminado se puede modificar estableciendo la variable de entorno
ARTEX_PROFILE_PATH. Se pueden especificar varios directorios en esta variable de entorno utilizando
el separador :.
Todos los perfiles del directorio samples se fusionan durante la instalación del conjunto de archivos
[Link], para formar el perfil [Link] que se utiliza mediante el mandato snap. Un perfil
que no forme parte del perfil [Link] no debe entregarse en el directorio samples. Un ejemplo de
perfiles que no deben incluirse en el perfil [Link] son los perfiles que tienen el potencial de incluir
miles de parámetros (por ejemplo, si utiliza usuarios como una clase de destino) y perfiles que deben
ejecutarse únicamente en sistemas específicos (por ejemplo, el perfil de atributos vios).

Denominación de perfiles
Los perfiles de AIX Runtime Expert se denominan según los mandatos.
Los perfiles se crean normalmente alrededor de un único mandato o de un conjunto de mandatos. Los
perfiles pueden incluir varios catálogos si los catálogos están muy relacionados. La convención se utiliza
para denominar los archivos según un mandato, es decir, [Link] para el perfil de ejemplo
y [Link] para el catálogo, pero no es obligatorio. Sólo es obligatoria la extensión de
archivos .xml.

Proceso de perfiles
Discute el proceso para grabar un nuevo perfil de AIX Runtime Expert.
Se necesita realizar los siguientes pasos al grabar un nuevo perfil de AIX Runtime Expert:
1. Realizar una lista de los parámetros que desea en el perfil.
2. Crear un elemento <Parameter name=“...”> para cada uno de los parámetros, estableciendo el
atributo name en el nombre utilizado en el elemento <ParameterDef> del archivo de catálogo.
3. Agrupar todos los parámetros definidos en un mismo archivo de catálogo dentro del mismo <Catalog
id=“...”>, estableciendo el atributo id en el mismo ID utilizado en el elemento <Catalog> del archivo
de catálogo.
4. Para cada elemento <Parameter>, haga lo siguiente:
a. Si el parámetro está definido con reboot=true en el archivo de catálogo, añada los atributos
reboot=true y applyType=nextboot.
b. Si el parámetro sólo debe capturarse y no establecerse, añada el atributo readOnly=true.
c. Si el parámetro está definido con un atributo targetClass no vacío en el archivo de catálogo, haga lo
siguiente:
1) Si se desea el descubrimiento de destino para este parámetro, defina un único elemento
<Parameter> para este parámetro y utilice el destino especial <Target class=“” instance=“” >
para este elemento.
2) Si es necesario definir destinos específicos para este parámetro, defina un elemento
<Parameter> para cada destino. Bajo cada elemento <Parameter>, defina los
correspondientes elementos <Target class=“...” instance=“...” /> para especificar el destino
completamente.
5. Probar el perfil ejecutando el mandato artexget –r.

Elementos de perfil AIX Runtime Expert

Elemento <Profile>
El elemento <Profile> es el elemento raíz de todos los archivos de perfil.

74 AIX Versión 7.2: Gestión del sistema operativo


Sintaxis
Se da soporte a los siguientes atributos:

Tabla 2. Atributos
Atributo Obligatorio Tipo Descripción
origin no serie Origen del perfil.
date no dateTime Fecha de creación o
última modificación del
perfil. El formato es
YYYY-MM-
DDThh:mm:ss.
readOnly no booleano Dice si este perfil se
puede utilizar en una
operación set. El valor
predeterminado es
false.
version no serie El número de versión del
perfil.

Se da soporte a los siguientes elementos hijos:

Tabla 3. Elementos hijos


Elemento hijo Obligatorio Número Descripción
<ShortDescription> no 0-1 Descripción textual
corta del catálogo.
<Description> no 0–1 Descripción textual larga
del catálogo.
<Comments> no 0–1 Comentarios
proporcionados por el
usuario.
<Catalog> no 0 – cualquiera Catálogo necesario para
manejar las operaciones
en un perfil.

Atributos
El atributo origin
El atributo origin es un atributo informativo al que se puede asignar los siguientes valores:
• Al crear un perfil de ejemplo, el atributo origin debe estar establecido a reference.
• Cuando se crea un perfil utilizando el mandato artexget, el atributo origin se establece
automáticamente en get.

Elementos hijos
El elemento <Comments> es una serie opcional reservada para otros objetivos. Este elemento no debe
utilizarse cuando se crea un perfil manualmente, y no lo utilizan los mandatos AIX Runtime Expert base.

Ejemplos
1. Un perfil de ejemplo vacío tendría este aspecto:

Gestión del sistema operativo 75


<?xml version="1.0" encoding="UTF-8"?>
<Profile origin="reference" version="2.0.0" readOnly="true">
</Profile>

2. El mandato artexget -r /etc/security/artex/samples/[Link] da como


resultado un perfil similar al siguiente ejemplo:

<?xml version="1.0" encoding="UTF-8"?>


<Profile origin="get" version="2.0.1" date="2010-09-29T[Link]Z">
<Catalog id="smtctlParam" version="2.0">
<Parameter name="enableSMT" value="1"/>
</Catalog>
</Profile>

Información relacionada
Elemento <Catalog>
Elementos <Description> y <ShortDescription>.

Elementos <Description> y <ShortDescription>


Los elementos <Description> y <ShortDescription> se pueden utilizar para proporcionar una descripción
textual para perfiles y parámetros.

Sintaxis
El elemento padre del elemento <ShortDescription> es:
• Elemento <Profile>
El elemento padre del elemento <Description> puede ser:
• Elemento <Profile>
• Elemento <Parameter>
Los elementos <Description> y <ShortDescription> tienen el mismo formato. El texto contenido por el
elemento <Description> es el contenido de serie del código XML.

Uso
Las descripciones de los archivos de perfil no las utiliza actualmente la infraestructura de AIX Runtime
Expert. Los mandatos de AIX Runtime Expert ignoran cualquier comentario incluido en el perfil de
entrada.

Ejemplos
A continuación, se muestra un ejemplo de los elementos <Description> y <ShortDescription>:

<ShortDescription>
Resumen corto de los contenidos del campo.
</ShortDescription>
<Description>
Este campo de texto se puede utilizar para mostrar con todo detalle el uso del elemento padre.
</Description>

Información relacionada
Elemento <Profile>.
Elemento <Parameter>.

Elemento <Catalog>
El elemento <Catalog> indica el nombre del archivo de catálogo que contiene las definiciones de los
elementos hijo <Parameter>.

76 AIX Versión 7.2: Gestión del sistema operativo


Sintaxis
Elemento padre: <Profile>
Se da soporte a los siguientes atributos:

Tabla 4. Atributos
Atributo Obligatorio Tipo Descripción
id sí serie Especifica el id de
catálogo. Este nombre
debería ser exclusivo en
el sistema.
version no serie Especifica la versión del
catálogo utilizado para
crear este perfil.

Se da soporte a los siguientes elementos hijos:

Tabla 5. Elementos hijos


Elemento hijo Obligatorio Número Descripción
<Parameter> no 0 – cualquiera Parámetro incluido en el
catálogo.
<SubCat> no 0 – cualquiera Subcategoría incluida en
el catálogo.
<Seed> no 0 – cualquiera Seed incluido en el
catálogo.

Atributos
Atributo id
El atributo id debe establecerse en el nombre del catálogo que define los parámetros listados bajo el
elemento <Catalog>. El atributo id es el nombre base del archivo de catálogo en el disco, con la
extensión .xml eliminada. Por ejemplo, un perfil utilizará el elemento <Catalog
id=“commandParam”> para hacer referencia al archivo de catálogo [Link].
De forma predeterminada, los archivos de catálogo se buscan en el directorio /etc/security/
artex/catalogs. Sin embargo, es posible, únicamente para el usuario root, buscar en otros
directorios estableciendo la variable de entorno ARTEX_CATALOG_PATH. Se pueden especificar
varios directorios en esta variable de entorno utilizando el separador :.
Atributo version
El atributo version se graba como [Link], donde MM es el número principal y mm es el número
secundario.
El atributo version debe coincidir con la versión del archivo de catálogo al que se hace referencia
(consulte Elemento <Catalog> en la sección Escritura de catálogos de AIX Runtime Expert). Si un
mandato de AIX Runtime Expert se ejecuta en un perfil que hace referencia a un catálogo con la
versión incorrecta, se mostrará el siguiente mensaje de aviso:

0590-218 Catalog version differs from the one referenced in profile


Local catalog version is '2.1'. Version used to build profile was '2.0'

Gestión del sistema operativo 77


Uso
El elemento <Catalog> identifica el archivo de catálogo que contiene la definición de la lista de inicios y
parámetros. Todos los elementos de parámetro e inicios de un perfil deben encontrarse en el elemento
<Catalog> correspondiente.
Un perfil puede hacer referencia a varios catálogos. Por ejemplo, el perfil [Link] se crea durante la
instalación del conjunto de archivos [Link] fusionando un conjunto selecto de otros
perfiles de ejemplo.

Ejemplos
El perfil de los atributos de seguridad [Link] utiliza tres catálogos, y cada catálogo
maneja una de las tablas de seguridad:

<Profile origin="reference" readOnly="true" version="2.0.0">


<Catalog id="privcmdParam" version="2.0"
<Parameter name="privatecommands" />
</Catalog>
<Catalog id="privdevParam" version="2.0">
<Parameter name="privatedevices"/>
</Catalog>
<Catalog id="privfileParam" version="2.0">
<Parameter name="privatefiles" />
</Catalog>
</Profile>

Información relacionada
Elemento <Catalog> (en archivos de catálogo).

Elemento <SubCat>
El elemento <SubCat> proporciona un medio para crear subcategorías lógicas bajo un elemento
<Catalog>.

Sintaxis
Elemento padre: <Catalog>, <SubCat>
Se da soporte a los siguientes atributos:

Tabla 6. Atributos
Atributo Obligatorio Tipo Descripción
id sí serie Especifica el nombre de
la subcategoría. Este
nombre debe ser
exclusivo dentro de un
mismo elemento
<Catalog>.

Se da soporte a los siguientes elementos hijos

Tabla 7. Elementos hijos


Elemento hijo Obligatorio Número Descripción
<Parameter> no 0 – cualquiera Contiene un nombre de
parámetro.
<SubCat> no 0 – cualquiera Subcategoría anidada

78 AIX Versión 7.2: Gestión del sistema operativo


Atributos
El atributo id identifica de forma exclusiva una subcategoría dentro de un catálogo. Un perfil puede incluir
varias subcategorías con el mismo ID, siempre que no se utilicen bajo el mismo elemento <Catalog>.

Elementos hijos
Un elemento <SubCat> puede tener otro <SubCat> como elemento hijo. No hay límite al número de
subcategorías anidadas que puede definir.

Uso
Las subcategorías sólo se incluyen para su legibilidad. No afectan a la forma en que se manejan los
parámetros.

Ejemplos
El perfil [Link] incluye varias subcategorías. A continuación se muestra un ejemplo:

<Profile origin="reference" readOnly="true" version="2.0.0">


<Catalog id="noParam" version="2.0">
<SubCat id="general_network"
<Parameter name="fasttimo"/>
<Parameter name="nbc_limit"/>
</SubCat>
<SubCat id="tcp_network">
<Parameter name="clean_partial_conns"/>
<Parameter name="delayack"/>
</SubCat>
<SubCat id="restricted">
<Parameter name="extendednetstats" readOnly="true"/>
<Parameter name="inet_stack_size" readOnly="true"/>
</SubCat>
</Catalog>
</Profile>

Información relacionada
Elemento <Parameter>.

Elemento <Parameter>
El elemento <Parameter> define un parámetro de configuración.

Sintaxis
Se da soporte a los siguientes atributos:

Tabla 8. Atributos
Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre del
parámetro. Este nombre
debe ser exclusivo
dentro de un catálogo.
value no serie Valor del parámetro, si
se ha definido.

Gestión del sistema operativo 79


Tabla 8. Atributos (continuación)
Atributo Obligatorio Tipo Descripción
applyType no serie Especifica si debe
recuperarse el valor
runtime o next boot del
parámetro o
establecerse si no se
especifica ningún
distintivo. El valor
predeterminado es
runtime.
reboot no booleano Cuando sea true, indica
que es necesario un
rearranque antes de que
sea efectivo un cambio
de valor. El valor
predeterminado es
false.
readOnly no booleano Especifica si el valor del
parámetro no se puede
establecer.
Predeterminado: el valor
es false.
disruptive no booleano Especifica si el método
utilizado para establecer
el parámetro implica
restricciones
disruptivas. El valor
predeterminado es
false.
setDiscover no booleano Especifica si el método
set debe establecerse
en el valor para todas
las instancias
descubiertas de una
clase de destino. El valor
predeterminado es
false.

Se da soporte a los siguientes elementos hijos

Tabla 9. Elementos hijos


Elemento hijo Obligatorio Número Descripción
<Value> no 0-1 Valor del parámetro.
<Target> no 0 - cualquiera Destino al que se aplica
el parámetro.
<Description> no 0-1 Descripción del
parámetro
<Property> no 0 - cualquiera Descripción del
parámetro.

80 AIX Versión 7.2: Gestión del sistema operativo


Atributos

Tabla 10. Atributos


Atributo Descripción
nombre El nombre del parámetro es el único atributo
necesario del elemento <Parameter>. Junto con el
nombre del catálogo especificado en el elemento
padre <Catalog>, el nombre del parámetro
identifica de forma exclusiva una definición de
parámetro en el archivo de catálogo.

value El valor del parámetro se puede especificar como


un atributo o como un elemento hijo.

applyType El atributo applyType puede tomar los valores


runtime (el valor predeterminado) o nextboot.
Este atributo determina el mandato que se utiliza
para manejar el parámetro.
Para operaciones set, applyType=runtime indica
que se debe utilizar el mandato <Set
type=“permanent”> del archivo de catálogo para
establecer el parámetro. applyType=nextboot
indica que se debe utilizar en su lugar el mandato
<Set type=“nextboot”>.
Para las operaciones get, cuando se utiliza el
distintivo –p, applyType=runtime indica que se
debe utilizar el mandato <Get type=“current”>
desde el archivo de catálogo para obtener el
parámetro. <applyType>=nextboot indica que se
debe utilizar en su lugar el mandato <Get
type=“nextboot”>.
El atributo applyType debe establecerse en
nextboot si el atributo reboot se establece en
true.

Gestión del sistema operativo 81


Tabla 10. Atributos (continuación)
Atributo Descripción
reboot Este atributo tiene un valor predeterminado de
false. Cuando se establece en true, significa que el
sistema debe rearrancarse antes de que cualquier
cambio al parámetro sea efectivo. Este atributo
debe coincidir con el atributo reboot definido en el
elemento <ParameterDef> correspondiente del
archivo de catálogo.
Cuando este atributo se establece en true, el
atributo applyType debe establecerse en
nextboot.
Cuando establece un parámetro que tiene
establecido el atributo reboot, se mostrará un aviso
al usuario, afirmando que se necesita una
operación de rearranque:

0590-206 A manual post-operation is


required for the changes to take effect
Please reboot the system

Únicamente establezca el atributo reboot en true


cuando no sea efectivo un cambio en el valor del
parámetro hasta el siguiente rearranque.

readOnly Este atributo indica que el valor del parámetro se


puede leer mediante el mandato artexget, pero
que no se establecerá utilizando el mandato
artexset, ni que se tendrá en cuenta en una
operación de comparación con valores activos
utilizando los mandatos artexdiff. El valor
predeterminado es false.
A continuación se encuentran algunas situaciones
que pueden garantizar el establecimiento del
atributo readOnly en true:
• El parámetro es estático y su valor no se puede
modificar ([Link]., el parámetro memory_frames del
mandato vmo).
• El acceso al parámetro está restringido y no se
recomienda que el usuario lo modifique en
procedimientos automáticos. En este caso, los
métodos de configuración set deben definirse
para este parámetro en el archivo de catálogo,
pero un administrador del sistema debe eliminar
manualmente el atributo readOnly del perfil para
poder establecer el parámetro.

82 AIX Versión 7.2: Gestión del sistema operativo


Tabla 10. Atributos (continuación)
Atributo Descripción
setDiscover Cuando el atributo setDiscover se establece en true
indica que, cuando se llama al mandato artexset
con el distintivo –d, es necesario llamar al mandato
discover para descubrir todas las instancias del
destino y establecerlo todo en el valor almacenado
en el perfil.
El valor predeterminado setDiscover es false. Un
valor de true sólo tiene sentido si el parámetro
tiene clases de destino definidas en el archivo de
catálogo.
No especifique este atributo al crear un perfil de
ejemplo. Los usuarios avanzados deben añadir
este atributo manualmente cuando lo crean
necesario.

Otros atributos
Los atributos type y disruptive son atributos informativos que se establecen automáticamente mediante
el mandato artextget cuando se llama mediante el conector -i. No incluya estos atributos al crear un
perfil de ejemplo.

Ejemplos
1. El siguiente ejemplo es un extracto del catálogo de ejemplo de [Link], que hace hincapié
en el uso de los diversos atributos opcionales:

<Profile origin="reference" readOnly="true" version="2.0.0">


<Catalog id="vmoParam" version="2.1">
<Parameter name="nokilluid"/>
<Parameter name="memory_frames" readOnly="true"/>
<Parameter name="kernel_heap_psize" reboot="true" applyType="nextboot"/>
</Catalog>
</Profile>

2. Si ejecuta el mandato artexget –r en el perfil del ejemplo 1, se muestra el perfil siguiente:

<Profile origin="get" version="2.0.1" date="2011-03-24T[Link]Z">


<Catalog id="vmoParam" version="2.1">
<Parameter name="nokilluid" value="0"/>
<Parameter name="memory_frames" value="393216" readOnly="true"/>
<Parameter name="kernel_heap_psize" value="4096" applyType="nextboot" reboot="true"/>
</Catalog>
</Profile>

Información relacionada
El tema Valores de parámetros.
Elemento <ParameterDef>.

Valores de parámetros
El valor de un parámetro se puede establecer en un perfil, ya sea como atributo, si es lo bastante corto, o
como elemento hijo del elemento <Parameter>.

Uso
Al grabar un perfil de ejemplo, no se debe asignar ningún valor a los parámetros. El valor de un
parámetro, si existe, se incluye automáticamente en el perfil obtenido al ejecutar un mandato artexget.

Gestión del sistema operativo 83


Los valores runtime y nextboot
El concepto de los valores runtime y nextboot es una parte importante de la infraestructura de AIX
Runtime Expert.
El valor runtime del parámetro es su valor actual recuperado en el sistema en el momento en el que se
ejecuta el mandato artexget. El valor nextboot es el valor que tendrá el parámetro tras el siguiente
rearranque del sistema.
Por ejemplo, el parámetro type_of_dump del perfil [Link]. El valor (runtime) actual
de este parámetro puede ser tradicional o asistido por firmware. Si este valor se cambia
(utilizando el mandato artexset o directamente utilizando el mandato sysdumpdev), no será efectivo
hasta el siguiente rearranque. El valor nextboot de este parámetro será entonces el valor modificado.

<Parameter name="type_of_dump" applyType="nextboot" reboot="true" />

Ejemplo
El siguiente ejemplo muestra un parámetro con el valor especificado como atributo, y otro parámetro con
el valor especificado como elemento hijo:

<Profile origin="get" version="2.0.1" date="2010-09-28T[Link]Z">


<Catalog id="[Link]" version="2.0">
<Parameter name="shells">
<Value>
/bin/sh,/bin/bsh,/bin/csh,/bin/ksh,/bin/tsh,
/bin/ksh93,/usr/bin/sh,/usr/bin/bsh,/usr/bin/csh,
/usr/bin/ksh,/usr/bin/tsh,/usr/bin/ksh93,
/usr/bin/rksh,/usr/bin/rksh93,
/usr/sbin/uucp/uucico,/usr/sbin/sliplogin,
/usr/sbin/snappd
</Value>
</Parameter>
<Parameter name="maxlogins" value="32767"/>
</Catalog>
</Profile>

Elemento <Property>
El elemento <Property> asigna un valor a una propiedad de parámetro.

Sintaxis
Elemento padre: <Parameter>
Se da soporte a los siguientes atributos:

Tabla 11. Atributos


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre de
la propiedad.
value no serie Especifica el valor de la
propiedad.

Uso
El elemento <Property> asigna un valor al nombre de propiedad del elemento padre. Este valor se utiliza
cuando la secuencia %p[nombre] se expande durante la generación de línea de mandatos.
El elemento <Property> no se suele añadir manualmente a los perfiles. El elemento se inserta
automáticamente en el perfil de salida cuando se ejecutan los mandatos artexget –r y artexget –n,
en función del mandato definido bajo el elemento <Property> correspondiente del archivo de catálogo.

84 AIX Versión 7.2: Gestión del sistema operativo


Ejemplo
El siguiente ejemplo establece la propiedad nodeId para el parámetro netaddr. El valor de la propiedad
es capturado por el mandato artexget–r y es la salida del mandato uname–f:

<Parameter name="netaddr" value="[Link]">


<Target class="device" instance="en0"/>
<Property name="nodeId" value="8000108390E00009"/>
</Parameter>

Información relacionada
artex_catalog_elem_PropertyDef.dita (en archivos de catálogo).

Elemento <Seed>
El elemento <Seed> define un inicio que se expande en uno o varios elementos <ParameterDef> durante
la operación <Get>.

Sintaxis
Elemento padre: <Catalog>
Está soportado el siguiente atributo:

Tabla 12. Atributo


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre del
elemento de inicio que
coincide con el
elemento SeedDef en el
archivo de catálogo.

Se da soporte a los siguientes elementos hijos:

Tabla 13. Elementos hijo


Elemento hijo Obligatorio Número Descripción
<Parameter> no 0 – cualquiera Los filtros encontraron
parámetros basados en
los nombres de los
parámetros.
<Target> no 0 – cualquiera Los filtros encontraron
parámetros basados en
los destinos.

Uso
El elemento <Seed> descubre los parámetros de manera dinámica durante una operación <Get>.
Cuando se emite el mandato artexget, cada elemento <Seed> del perfil de entrada se expande en uno
o varios elementos <Parameter>. Los perfiles se expanden en función de las reglas definidas en el
elemento <SeedDef> coincidente del archivo de catálogo. Este proceso se denomina descubrimiento de
parámetro. Después de finalizar el proceso de descubrimiento del parámetro, el mandato artexget
prosigue de la forma habitual con el perfil expandido.
Los elementos hijo <Parameter> y <Target> opcionales se utilizan para filtrar los parámetros
descubiertos. Se descartan los parámetros descubiertos que no coinciden con los criterios definidos en el
subelemento <Parameter>. Del mismo modo, se descartarán aquellos parámetros que se apliquen a
destinos que no coincidan con los criterios definidos en el subelemento <Target>.

Gestión del sistema operativo 85


Ejemplos
Este ejemplo utiliza el catálogo devSeed para definir un inicio que se pueda utilizar para encontrar todos
los atributos de todos los dispositivos:

<?xml version="1.0" encoding="UTF-8"?>


<Catalog id="devSeed" version="3.0">
<SeedDef name="devAttr">
<Discover>
<Command>
/usr/sbin/lsdev -F 'name class subclass type' |
while read DEV CLASS SUBCLASS TYPE
do
CAT=devParam.$CLASS.$SUBCLASS.$TYPE
/usr/sbin/lsattr -F attribute -l $DEV |
while read PAR
do
echo "device=$DEV $CAT $PAR"
done
done
</Command>
Mask target="1" catalog="2" name="3">(.*) (.*) (.*)</Mask>
</Discover>
</SeedDef>
</Catalog>

El siguiente perfil se puede utilizar para buscar todos los atributos soportados de todos los dispositivos
soportados:

<?xml version="1.0" encoding="UTF-8"?>


<Profile>
<Catalog id="devSeed" version="3.0">
<Seed name="devAttr"/>
</Catalog>
</Profile>

2. Utilizando el mismo catálogo, se puede utilizar un filtro <Target> para descubrir todos los atributos
compatibles de todos los adaptadores Ethernet:

<?xml version="1.0" encoding="UTF-8"?>


<Profile>
<Catalog id="devSeed" version="3.0">
<Seed name="devAttr">
<Target class="device" match="^en[0-9]+$"/>
</Seed>
</Catalog>
</Profile>

3. Se puede añadir un filtro <Parameter> para capturar únicamente los atributos netaddr, netaddr6,
alias y alias6 de todos los adaptadores Ethernet:

<?xml version="1.0" encoding="UTF-8"?>


<Profile>
<Catalog id="devSeed" version="3.0">
<Seed name="devattr">
<Parameter match="^(netaddr|alias)6?$"/>
<Target class="device" match="^en[0-9]+$"/>
</Seed>
</Catalog>
</Profile>

Información relacionada
El elemento artex_catalog_elem_SeedDef.dita (en archivos de catálogo).

Elemento <Target>
Un elemento <Target> define la instancia de una clase de destino a la que se aplica el parámetro.

Sintaxis
Elemento padre: <Parameter>

86 AIX Versión 7.2: Gestión del sistema operativo


Se permiten varias apariciones del mismo parámetro desde los mismos catálogos si, y sólo si, se aplican a
distintas instancias de su destino.
Se da soporte a los siguientes atributos:

Tabla 14. Atributos


Atributo Obligatorio Tipo Descripción
clase sí serie Especifica el nombre de
la clase de destino.
instance no* serie Especifica el nombre de
la instancia de una
clase.
match no* serie Especifica la expresión
regular como se aplica a
los nombres de
instancia descubiertos.

* Se debe especificar uno y sólo uno de los atributos instance y match.

Uso
Algunos parámetros no se aplican al sistema en su conjunto, sino a un objeto específico. Un ejemplo es el
directorio home de un usuario como se especifica en el perfil [Link]; este parámetro se
aplica a un usuario específico (root, invitado) en un módulo cargable específico (archivos, LDAP). En este
ejemplo, el usuario y el módulo son dos clases de destino. El parámetro home se aplica a instancias
específicas de estas clases de destino. Por ejemplo, la instancia de invitado de la clase de usuario, y la
instancia de archivos de la clase de módulo.
Si los atributos class e instance se establecen en la serie vacía, se realizará un descubrimiento para este
parámetro cuando se ejecute el mandato artexget en tal perfil, cuando el método de descubrimiento
declarado en el archivo de catálogo correspondiente se ejecute, y se cree un parámetro en el perfil de
salida para cada instancia descubierta del parámetro. Consulte el ejemplo 1.
Si se especifican los atributos class e instance, el destino se especificará y el parámetro sólo se aplicará a
la instancia especificada de la clase de destino. Consulte el ejemplo 2.
Si se especifican los atributos class y match, se realizará un descubrimiento como anteriormente, pero
sólo se descubrirán las instancias de destino con un nombre que coincida con la expresión regular
especificada en el atributo match. Consulte el ejemplo 3.
Al grabar un perfil de ejemplo, se deben dejar vacíos los atributos class e instance. Esto significa que, al
encontrar la clase de destino vacía, el mandato artexget descubrirá la lista de las instancias de dicha
clase de destino (todos los usuarios o los subsistemas del sistema) antes de recuperar los valores.
La ejecución del mandato artexset en una clase de destino no descubierto muestra un aviso:

0590-216 Some parameters in the profile require a target discovery and will be ignored

Ejemplos
1. Un ejemplo de un perfil con destinos antes del descubrimiento es el perfil [Link] que
define el directorio inicial de un usuario. El siguiente ejemplo muestra un perfil de ejemplo:

<Profile version="2.0.0" origin="reference" readOnly="true">


<Catalog id="chuserParam" version="2.0">
<Parameter name="home">
<Target class="" instance=""/>
</Parameter>
</Catalog>
</Profile>

Gestión del sistema operativo 87


2. Tras el descubrimiento, el perfil [Link] puede contener una copia del parámetro inicial
para cada usuario descubierto en cada uno de los módulos cargables descubiertos:

<Profile version="2.0.0" origin="get">


<Catalog id="chuserParam" version="2.0">

<Parameter name="home" value="/">


<Target class="user" instance="root"/>
<Target class="module" instance="files"/>
</Parameter>

<Parameter name="home" value="/etc">


<Target class="user" instance="daemon"/>
<Target class="module" instance="files"/>
</Parameter>

...

</Catalog>
</Profile>

3. El siguiente perfil utiliza el atributo match para descubrir el directorio inicial de todos los usuarios con
un nombre que comience con un u en el módulo de archivo:

<Profile version="2.0.0" origin="reference" readOnly="true"


<Catalog id="chuserParam" version="2.0">
<Parameter name="home">
<Target class="user" match="^u"/>
<Target class="module" instance="files"/>
</Parameter>
</Catalog>
</Profile>

Información relacionada
Elemento <Discover> (en archivos de catálogo).

Grabación de catálogos AIX Runtime Expert


Los archivos de catálogo se utilizan internamente mediante la infraestructura de AIX Runtime Expert.
Los archivos de catálogo contienen las definiciones de los parámetros y la información de enlace para los
métodos de configuración que describen los mandatos utilizados para recuperar o establecer valores de
parámetros. Los archivos de catálogo son locales para el sistema que se está ajustando y configurando.

Conceptos de catálogo de AIX Runtime Expert


Los archivos de catálogo contienen toda la información necesaria para realizar operaciones en
parámetros, incluidas definiciones, condiciones de uso y métodos de configuración. Los archivos de
catálogo no deben manipularse directamente por usuarios y sólo se utilizan mediante el motor de imagen
de la memoria de AIX Runtime Expert.
Los catálogos se instalan en un sistema, al mismo tiempo que el motor de imagen de la memoria de AIX
Runtime Expert. Cuando se enlacen nuevos catálogos con componentes o aplicaciones de terceros que
estén instaladas en un sistema, es importante asegurar que están a nivel con el motor de imagen de la
memoria de AIX Runtime Expert instalado.

Ubicación del catálogo


Los archivos de catálogo de AIX Runtime Expert se almacenan en el directorio /etc/security/artex/
catalogs.
El nombre del archivo de catálogo debe coincidir de forma exacta con su atributo id, que lleva la
extensión .xml como sufijo. Por ejemplo, un catálogo denominado [Link] debe tener un
valor de atributo id commandParam.
A fin de poder ser ubicado por el perfil que le hace referencia, el catálogo debe tener el mismo nombre en
el archivo XML del catálogo y en el elemento <Catalog> del archivo XML del perfil. De forma
predeterminada, el motor de imagen de memoria de AIX Runtime Expert busca catálogos en el directorio
predeterminado /etc/security/artex/catalogs. Este comportamiento se puede cambiar,

88 AIX Versión 7.2: Gestión del sistema operativo


únicamente para el usuario root, estableciendo la variable de entorno ARTEX_CATALOG_PATH. Se
pueden especificar varios directorios en esta variable de entorno utilizando el separador :.

Proceso del catálogo


Pasos para grabar un nuevo catálogo de AIX Runtime Expert.
Se necesitan realizar los siguientes pasos al grabar un nuevo catálogo de AIX Runtime Expert:
1. Realizar una lista de parámetros que desea en el archivo de catálogo.
2. Para cada parámetro, cree un elemento <ParameterDef>
3. Si varios parámetros utilizan el mismo mandato para una operación <Get>, <Set>, <Discover> o
<Diff>:
• Defina un elemento <CfgMethod> en la parte superior del catálogo.
• Utilice el atributo cfgmethod para heredarlo desde el método de configuración.
4. Si hay varios parámetros sujetos a la misma restricción, defina un elemento <ConstraintDef> en la
parte superior del catálogo.
5. Para cada parámetro:
a. Defina las operaciones <Get type=“current”> y <Get type=“nextboot”> para cada parámetro, ya
sea directamente bajo el elemento <ParameterDef> o mediante referencia bajo el elemento
<CfgMethod>, o bien utilizando cualquiera de las combinaciones.
b. Defina todas las operaciones <Set> admitidas para cada parámetro, ya sea directamente bajo el
elemento <ParameterDef>, bajo el elemento <CfgMethod> al que se hace referencia o utilizando
cualquier combinación de dichas posibilidades.
c. Si el parámetro requiere un destino:
1) Defina las clases de destino soportadas utilizando el atributo targetClass
2) Defina la operación discover, ya sea directamente bajo el elemento <ParameterDef>, en el
elemento <CfgMethod> al que se hace referencia o utilizado cualquier combinación de dichas
posibilidades. En la mayoría de los casos, el método discover se definirá en un método de
configuración.
d. Si el parámetro requiere un rearranque para que tenga efecto un cambio, añada el atributo
rearranque =true.
e. Si el parámetro está sujeto a una restricción, defina un elemento <ConstraintDef> bajo el elemento
<ParameterDef> o utilice el atributo de restricción para hacer referencia a una restricción
existente.
6. Para probar el archivo de catálogo:
a. Cree un perfil con todos los parámetros definidos en el archivo de catálogo.
b. Utilice el mandato artexget –r para capturar valores y probar las operaciones <Discover> y
<Get>.
c. Utilice el mandato artexset –c –F –R –l all en el perfil resultante para probar las
operaciones <Set> y <Diff>.
d. De forma adicional, los distintivos –g 3 –g COMMANDS pueden añadirse a aquellos dos mandatos
para obtener más información sobre la línea de mandatos generada para realizar la operación
solicitada.

Información relacionada
Consulte el tema sobre el elemento raíz <Catalog>.

Elementos de catálogo de AIX Runtime Expert

Elemento <Catalog>
El elemento <Catalog> es el elemento raíz para todos los archivos de catálogo.

Gestión del sistema operativo 89


Sintaxis
Se da soporte a los siguientes atributos:

Tabla 15. Atributos


Atributo Obligatorio Tipo Descripción
id sí serie Especifica el nombre del
catálogo. Este nombre
debe ser exclusivo en el
sistema.
version no serie Especifica el número de
versión del catálogo.
date no dateTime Especifica la fecha de
creación. El formato es
YYYY-MM-DDThh:mm:ss.
priority no entero Especifica el orden de
ejecución del catálogo
relativo a otros en los
métodos set. El valor
predeterminado es 0.
inherit no serie Especifica el nombre de
un catálogo para
heredar.

Se da soporte a los siguientes elementos hijos. La columna número define el número de apariciones del
hijo que están permitidos:

Tabla 16. Elementos hijo


Elemento hijo Obligatorio Número Descripción
<ShortDescription> no 0–1 Descripción textual
corta para el catálogo.
<Description> no 0–1 Descripción textual larga
para el catálogo.
<SubCat> no 0 – cualquiera Subcategoría
<ParameterDef> no 0 – cualquiera Contiene las
propiedades de un
parámetro.
<ConstraintDef> no 0 – cualquiera Definición de
restricciones de
parámetros
(condiciones y
mandatos disruptivos).
<CfgMethod> no 0 – cualquiera Definición del método
de configuración
<PrereqDef> no 0 – cualquiera Define un requisito
previo.
<PropertyDef> no 0 – cualquiera Define una propiedad.
<SeedDef> no 0 – cualquiera Define un inicio.

90 AIX Versión 7.2: Gestión del sistema operativo


Atributos

Tabla 17. Atributos


Atributo Descripción
id El atributo id debe coincidir con el nombre del archivo de catálogo, sin la
extensión .xml. En los perfiles, se hace referencia al ID de catálogo mediante el
elemento <Catalog>.

Prioridad El atributo priority se utiliza cuando los métodos set de un catálogo específico se
necesitan para ejecutarse antes o después de los métodos set de otros catálogos
cuando se incluyen en el mismo perfil (por ejemplo, el perfil compuesto
[Link]). La prioridad predeterminada de un catálogo es 0.
La regla es que cuando dos catálogos compartan la misma prioridad, sus métodos
set se ejecutan en un orden indefinido. Si un catálogo tiene una prioridad con un
valor positivo, sus métodos set se ejecutan antes que los otros, en el orden de
prioridad descendente. Si un catálogo tiene una prioridad con un valor negativo, sus
métodos set se ejecutan después de los otros, en el orden de prioridad
descendente.

Version El atributo Version está presente en ambos perfiles y catálogos. La versión ayuda a
identificar si los perfiles y catálogos son compatibles con el motor de imagen de la
memoria de AIX Runtime Expert y entre sí. Consulte el atributo Version para
obtener más detalles.

Date Actualmente, el atributo date no se utiliza para el elemento <Catalog>. Se incluye


para un uso y mantenibilidad futuros.
inherit El atributo inherit especifica el nombre de un catálogo desde el que realizar la
herencia, sin la extensión .xml. Todos los elementos definidos en el catálogo
heredado están disponibles en el catálogo principal, como si se definiesen
localmente.

Ejemplo
A continuación se muestra un ejemplo de un catálogo que utiliza el atributo priority. El catálogo
[Link] establece opciones de seguridad y debe establecerse una vez que el resto de los
catálogos se hayan establecido. Por lo tanto, su prioridad se establece en un alto valor negativo.

<Catalog id="aixpertParam" version="2.0" priority="-1000">

Información relacionada
Elemento <ConstraintDef>.
Elemento <CfgMethod>.
Elementos <Description> y <ShortDescription>.
Elemento <ParameterDef>.
Elemento <SubCat>.

Atributo Version

Gestión del sistema operativo 91


Sintaxis
La versión de un catálogo se graba como un atributo en el formato [Link], donde MM es el número
principal y mm es el número secundario.

<Catalog id="commandParam" version="2.0">

Número de versión principal


El número de versión principal es el mismo para todos los catálogos de AIX Runtime Expert instalados en
un sistema, y toda la infraestructura de AIX Runtime Expert, donde se hace referencia. Este número
principal se incrementa en cada cambio principal del esquema XML de los perfiles y catálogos.
Al crear un nuevo catálogo, establezca el número de versión principal al número de versión del motor de
imagen de la memoria de AIX Runtime Expert actual, que se puede encontrar buscando dentro de
cualquiera de los archivos de catálogo estándar que se reciben con el catálogo de archivos
[Link].
Si se invoca un mandato artexget en un perfil cuyo número de versión principal difiere del que se hace
referencia en el motor de imagen de la memoria de AIX Runtime Expert, el mandato fallará con el
siguiente error:

0590-117 Version error


This profile was created on a version unsupported by ARTEX

También se aconseja que un perfil y un catálogo compartan el mismo número de versión principal para
ser compatibles. Un perfil hace referencia a catálogos con un número de versión específico. Si el número
de versión principal del perfil no es el mismo que el número de versión principal del catálogo, cualquier
mandato AIX Runtime Expert mostrará un aviso para informar al usuario de que los resultados pueden ser
impredecibles:

0590-218 Catalog version differs from the one referenced in profile

Número de versión secundario


El número de versión secundario es específico de cada catálogo y se incrementa cada vez que un cambio
principal del catálogo lo hace incompatible con la versión anterior. Un perfil hace referencia a catálogos
con un número de versión específico. Si el número de versión secundario del perfil no es el mismo que el
número de versión secundario del catálogo, cualquier mandato AIX Runtime Expert emitirá un aviso para
informar al usuario de que los resultados pueden ser impredecibles:

0590-218 Catalog version differs from the one referenced in profile

Al crear un nuevo catálogo o perfil de muestra, establezca el número de versión secundario en 0.

Elementos <Description> y <ShortDescription>


Las descripciones son campos de texto informativos opcionales que se pueden añadir a varios elementos
de los archivos de catálogo. Estos campos son opcionales, pero se recomienda que los grabadores del
catálogo los utilicen para documentar el elemento padre.

Sintaxis
El elemento padre de un elemento <ShortDescription> puede ser uno de los siguientes:
• <Catalog>
• <SubCat>
El elemento padre de un elemento <Description> puede ser uno de los siguientes:
• <Catalog>
• <SubCat>

92 AIX Versión 7.2: Gestión del sistema operativo


• <ParameterDef>
• <ConstraintDef>
El contenido de los elementos <Description> y <ShortDescription> es una serie simple o un mensaje
traducido definido por uno de estos elementos: <NLSCatalog>, <NLSSmitHelp> o <NLSCommand>.
Consulte el tema de Soporte de globalización para obtener más información.

Uso
Actualmente, solo se recupera y se muestra la descripción de elementos <ParameterDef> mediante el
mandato artexget con el distintivo -i. Se recomienda proporcionar globalización para el texto incluido
en dichos campos de descripción.
El campo de descripción del resto de los elementos no lo utiliza actualmente la infraestructura de AIX
Runtime Expert, pero debe proporcionar un uso futuro para fines de documentación.

Ejemplo
1. A continuación se muestra un ejemplo sencillo de los campos de descripción:

<ShortDescription>
chuser parameters
</ShortDescription>
<Description>
Parameter definition for the chuser command
</Description>

2. El mismo ejemplo, utilizando mensajes traducidos desde el archivo de mensajes [Link]:

<ShortDescription>
<NLSCatalog catalog="[Link]" setNum="12" msgNum="1">
chuser parameters
</NLSCatalog>
</ShortDescription>
<Description>
<NLSCatalog catalog="[Link]" setNum="12" msgNum="2">
Parameter definition for the chuser command
</NLSCatalog>
</Description>

Soporte de globalización
Esta sección describe cómo se implementa la globalización en los campos descriptivos de los catálogos
de AIX Runtime Expert.

Sintaxis
Elemento padre: <Description>, <ShortDescription>
El elemento padre puede contener uno (y sólo uno) de los siguientes elementos hijos:

Tabla 18. Elementos hijos


Elemento hijo Obligatorio Número Descripción
<NLSCatalog> no 0–1 Serie incluida en un
catálogo de mensajes
<NLSSmitHelp> no 0–1 Serie incluida en un
archivo HTML de ayuda
SMIT
<NLSCommand> no 0–1 Serie emitida por un
mandato AIX

Gestión del sistema operativo 93


Catálogo NLS
El formato de globalización Catálogo NLS se utiliza cuando el mensaje localizado a mostrar se incluye en
un catálogo de mensajes existente en el formato catgets().
El elemento <NLSCatalog> contiene los atributos siguientes:

Tabla 19. Atributos


Atributo Obligatorio Tipo Descripción
catalog sí serie Nombre del catálogo
donde reside el mensaje
setNum sí entero Número del conjunto de
mensajes donde reside
el mensaje
msgNum sí entero Número del mensaje en
el conjunto de mensajes

Si el catálogo de mensajes localizado no existe, se mostrará el mensaje predeterminado en su lugar. El


mensaje predeterminado se incluye, opcionalmente, como contenido del elemento <NLSCatalog>. Es
una práctica recomendada proporcionar un mensaje predeterminado.

Ayuda SMIT de NLS


El formato de globalización Ayuda Smit de NLS se utiliza cuando el mensaje localizado que se va a
mostrar ya existe en un archivo HTML de ayuda SMIT.
El elemento <NLSSmitHelp> contiene el atributo siguiente:

Tabla 20. Atributos


Atributo Obligatorio Tipo Descripción
msgId sí entero El campo help_msg_id
proporcionado en la
stanza SMIT

Si el archivo de ayuda localizado no existe, el mensaje predeterminado se mostrará en su lugar. El


mensaje predeterminado se incluye, opcionalmente, como contenido del elemento <NLSSmitHelp>. Es
una práctica recomendada proporcionar un mensaje predeterminado.

Mandato NLS
El formato de globalización del mandato NLS utiliza cuando el mensaje localizado que se va a mostrar se
emite mediante un mandato AIX. Este es el caso para todos los mandatos de ajuste (como no, vmo) que
proporcionan un distintivo –h para mostrar texto de ayuda para un parámetro específico.
El elemento <NLSCommand> contiene el atributo siguiente:

Tabla 21. Atributo


Atributo Obligatorio Tipo Descripción
mandato mandato serie Expresión del shell a
ejecutar

94 AIX Versión 7.2: Gestión del sistema operativo


Ejemplos
1. Ejemplo del elemento <NLSCatalog> desde el catálogo [Link] de AIX Runtime Expert,
incluido un mensaje predeterminado.

<Description>
<NLSCatalog catalog="[Link]" setNum="10" msgNum="2">
Cambia la definición de un subsistema en la clase de objeto de subsistema.
</NLSCatalog>
</Description>

2. Ejemplo del elemento <NLSSmitHelp>:

<Description>
<NLSSmitHelp msgId="055136"/>
</Description>

3. Ejemplo del elemento <NLSCommand> desde el catálogo [Link]:

<Description>
<NLSCommand command="/usr/sbin/schedo -h maxspin | /usr/bin/tail -n +2"/>
</Description>

Elemento <SubCat>
Las subcategorías, los parámetros opcionales y los subconjuntos dentro de un catálogo se pueden
especificar utilizando el elemento <SubCat> dentro de un archivo de catálogo.

Sintaxis
Elemento padre: <Catalog>, <SubCat>
Se da soporte a los siguientes atributos:

Tabla 22. Atributos


Atributo Obligatorio Tipo Descripción
id sí serie Especifica el nombre de
la subcategoría de
catálogo. Este nombre
debe ser exclusivo por
nombre de catálogo.

Se da soporte a los siguientes elementos hijos:

Tabla 23. Elementos hijos


Elemento hijo Obligatorio Descripción
<ShortDescription> no Descripción textual corta de la
subcategoría.
<Description> no Descripción textual larga de la
subcategoría.
<SubCat> no Subcategoría anidada. Este
elemento se puede dar en varias
ocasiones.
<ParameterDef> no Contiene las propiedades de un
parámetro. Este elemento se
puede dar en varias ocasiones.

Gestión del sistema operativo 95


Atributo
Una subcategoría es local para un catálogo:
• Un id de subcategoría es exclusivo dentro de un archivo de catálogo.
• Varios catálogos pueden hacer uso del mismo identificador de subcategoría.
Las subcategorías definidas en un catálogo deben coincidir exactamente con las subcategorías de las que
se informa en el perfil de muestra asociado.

Información relacionada
Elementos <Description> y <ShortDescription>.
Elemento <SubCat>.
Elemento <ParameterDef>.

Elemento <ParameterDef>
AIX Runtime Expert se define en un archivo de catálogo mediante el elemento <ParameterDef>.

Sintaxis
Elemento padre: <Catalog>, <ParameterDef>
Se da soporte a los siguientes atributos:

Tabla 24. Atributos


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre del
parámetro. Este nombre
debe ser exclusivo por
catálogo.
type sí serie Especifica el tipo de
parámetro, como se ve
desde el motor de
imagen de la memoria.
targetClass no serie Especifica las clases de
destino para el
parámetro, si las hay.
reboot no booleano Cuando sea true, indica
que es necesario un
rearranque. El valor
predeterminado es
false.
cfgmethod no serie Especifica el ID del
método de configuración
definido en el nivel
<Catalog> que contiene
los métodos que utilizar
para este parámetro.
constraint no serie Especifica el ID de una
restricción definida en el
nivel de elemento
<Catalog> del archivo de
catálogo actual.

96 AIX Versión 7.2: Gestión del sistema operativo


Tabla 24. Atributos (continuación)
Atributo Obligatorio Tipo Descripción
priority no entero Rango de ejecución de
este parámetro en el
método set relativo a
otros parámetros de
este catálogo. El valor
predeterminado es 0.

Se da soporte a los siguientes elementos hijos:

Tabla 25. Elementos hijos


Elemento hijo Obligatorio Descripción
<Description> no Descripción textual del
parámetro.
<ConstraintDef> no Definición de restricción de
parámetro (mandatos
disruptivos).
<Get> no Definición del método de
configuración para la operación
get. Este elemento se puede dar
en varias ocasiones.
<Set> no Definición del método de
configuración para la operación
set. Este elemento se puede dar
en varias ocasiones.
<Diff> no Definición del método de
configuración para la operación
diff.
<Discover> no Definición del método de
configuración para el
descubrimiento de destino.

Atributo

Tabla 26. Atributos


Atributo Descripción
nombre El atributo name identifica de forma exclusiva un
parámetro dentro de un archivo de catálogo.
Consulte el tema de atributo de nombre de
parámetro para obtener más información.

Gestión del sistema operativo 97


Tabla 26. Atributos (continuación)
Atributo Descripción
type El atributo type requerido indica el tipo de valor del
parámetro. Los valores soportados son:
• serie, para series alfanuméricas;
• entero, para valores numéricos;
• integer-bi, para valores numéricos con un sufijo
K, M, G, T, P o E opcional, en mayúscula o
minúscula, para “kilo”, “mega”, “giga”, “tera”,
“peta” y “exa”. Estos sufijos se interpretan como
potencias de 1024;
• integer-si, para valores numéricos con un sufijo
SI opcional. Igual que el tipo integer-bi, a
excepción de que los sufijos se interpretan como
potencias de 1000.
• booleano, para valores booleanos. Los valores
soportados son 0 y 1.
• binario, para valores binarios, codificados como
series de base-64 en perfiles.

reboot El valor predeterminado del atributo booleano


‘reboot’ es “false”. Si un cambio de parámetro
requiere que se produzca un reinicio, este
parámetro debe tener su atributo ‘reboot’
establecido en “true”.
El propio AIX Runtime Expert nunca rearranca los
sistemas. De forma predeterminada, el mandato
artexset no forzará el establecimiento de
parámetros de rearranque. Si el perfil contiene
parámetros de rearranque, el mandato fallará:

0590-502: profile has


parameters that require a reboot.
Profile has not been set. Use -l all
flag to force set for all parameters

Si se llama con el distintivo –l adecuado, el


mandato artexset establece el valor y advierte a
los usuarios de que se necesita un reinicio para
que los cambios entren en vigor:

0590-206 A manual post-operation is


required for thechanges to take effect
Please reboot the system

98 AIX Versión 7.2: Gestión del sistema operativo


Tabla 26. Atributos (continuación)
Atributo Descripción
priority De forma predeterminada, los parámetros se
establecen sin orden definido mediante el
mandato artexset. El atributo priority se puede
utilizar para alterar este comportamiento y forzar
que se establezca un parámetro antes o después
de otros parámetros.
La prioridad predeterminada es 0. El atributo
priority se puede utilizar para cambiar esta
prioridad predeterminada a cualquier valor entero
entre -2147483648 y 2147483647. Los
parámetros con una prioridad mayor se ejecutan
antes que parámetros con una prioridad menor. El
orden en que se establecen los parámetros con la
misma prioridad es indefinido.

targetClass Es necesario asociar algunos parámetros con un


destino, como se explica en la sección sobre el
“Elemento de destino” de un perfil. Dichos
parámetros deben tener sus atributos targetClass
establecidos en la lista separada por comas de sus
clases de destino soportadas.

cfgmethod Un elemento <ParameterDef> puede heredar


elementos de la línea de mandatos desde un
elemento <CfgMethod>. Para ello, debe hacer
referencia al atributo id de este método de
configuración con el atributo cfgmethod. Para
obtener más información sobre los métodos de
configuración, consulte la sección sobre el
Elemento <CfgMethod>.

constraint Un elemento <ParameterDef> puede utilizar el


atributo constraint para hacer referencia al atributo
id de un elemento <ConstraintDef>, lo que indica
que el parámetro está sujeto a la restricción. Para
obtener más información sobre las restricciones,
consulte la sección sobre el “Elemento
<ConstraintDef>”.

Ejemplos
1. A continuación se encuentra un ejemplo de una definición de parámetros con un tipo de entero
alternativo: kernel_heap_size, desde el archivo de catálogo [Link]:

<ParameterDef name="kernel_heap_psize" type="integer-bi">

Al extraer el valor de este parámetro a través de un mandato artexget, el resultado es algo así como
(extraído del perfil resultante).

<Parameter name="kernel_heap_psize" value="16M"… />

El valor del parámetro se interpretará de forma diferente, en función del tipo:


• Dado que se declara como del tipo integer-bi, el valor es 16M= 16,777,216.

Gestión del sistema operativo 99


• Si el tipo hubiese sido integer-si, el valor habría sido “16M”=16,000,000.
2. Ejemplo de un parámetro binario: la base de datos de firma fiable [Link] en el catálogo
[Link]:

<ParameterDef name="tsdatabase" type="binary">

3. Ejemplo de un parámetro con un atributo reboot. El tipo de parámetro dump en el catálogo


[Link]:

<ParameterDef name="type_of_dump" type="string" reboot="true">

4. Ejemplo de un parámetro con una clase de destino: el parámetro addr del catálogo
[Link] se aplica a una interfaz de red específica:

<ParameterDef name="addr" type="string" cfgmethod="mktcpip" targetClass="interface">

5. Ejemplo de un parámetro con varias clases de destino: el parámetro de especificación de


denominación de [Link] se aplica a un usuario específico (root, admin, guest, etc.). en un
registro específico (archivos, LDAP).

<ParameterDef name="namingspecification" type="string" reboot="true"


targetClass="user,registry"
cfgmethod="coremgt">

6. Ejemplo de uso del atributo cfgmethod: para la operación <Get type="current">, el parámetro fijo del
catálogo [Link] hereda el elemento <Command> del método de configuración
chlicense, pero también define sus propios <Filter> y <Mask> localmente para esta misma operación:

<CfgMethod id="chlicense">
<Get type="current">
<Command>lslicense -c -A</Command>
</Get>
</CfgMethod>
<ParameterDef name="fixed" cfgmethod="chlicense" type="integer">
<Get type="current">
<Filter>tail -n 1 | cut -d: -f3</Filter>
<Mask value="1">(.*)</Mask>
</Get>
</ParameterDef>

7. Ejemplo de uso del atributo constraint: el parámetro authorizations del catálogo [Link] está
sujeto a la restricción setkst definida anteriormente en un elemento <ConstraintDef>:

<ParameterDef name="authorizations" cfgmethod="cat" constraint="setkst" type="string">

Atributo name
El nombre de un parámetro se dicta normalmente mediante el mandato utilizado para obtener o
establecer el parámetro.
Los nombres de los parámetros deben ser exclusivos dentro de un archivo de catálogo. Se requiere para
asegurar que un elemento <Parameter> de un perfil se pueda asociar con un elemento <ParameterDef>
exclusivo de un archivo de catálogo.
• Si el mandato get muestra varios pares parámetro-valor, el elemento <Mask> se puede utilizar para
extraer varios parámetros desde una única salida de mandato. Sólo es posible si el nombre del
parámetro coincide con el nombre utilizado en la salida del mandato get.
• Si el mandato set acepta varios pares parámetro-valor, las secuencias %n y %v1 se pueden utilizar en
un elemento <Argument> para establecer varios parámetros con un único mandato. Esto sólo es
posible si el nombre del parámetro coincide con el nombre utilizado por el mandato set.

100 AIX Versión 7.2: Gestión del sistema operativo


Ejemplos
1. Ejemplo: el mandato raso –a utilizado en el catálogo [Link] muestra un parámetro por
línea de visualización:

kern_heap_noexec = 0
kernel_noexec = 1
mbuf_heap_noexec = 0
mtrc_commonbufsize = 485

En este caso sencillo, los nombres de parámetros serán kernel_heap_noexec, kernel_noexec, etc.
2. Ejemplo: el mandato utilizado en el método de configuración get del catálogo [Link]
muestra un resultado que es más difícil de analizar. No sólo se integra el nombre del parámetro en una
frase no formateada, sino que se localizan los dos nombres de parámetros y sus valores. Los métodos
de configuración get tendrán que ejecutar el mandato al establecer la variable de entorno LANG=C y,
en cada línea, sustituir las palabras clave mediante nombres de parámetros pertinentes:

Advanced Accounting is not running.


Email notification is off.
The current email address to be used is not set.
Recover CPU accounting time in turbo mode is False.

En el ejemplo anterior, los nombres de variable que se han seleccionado son accounting, email,
email_adddr y turacct.

Información relacionada
• Elemento <Parameter>
• Elemento <Mask>
• Expansión de los elementos de la línea de mandatos

Elemento <ConstraintDef>

Sintaxis
Elemento padre: <Catalog>, <ParameterDef>
Se da soporte a los siguientes atributos:

Tabla 27. Atributos


Atributo Obligatorio Tipo Descripción
id no* serie Especifica el nombre de
las restricciones del
parámetro.

*Es necesario especificar este atributo para los elementos <Constraint> definidos en el nivel de catálogo.
Se da soporte a los siguientes elementos hijos:

Tabla 28. Elementos hijos


Elementos hijos Obligatorio Descripción
<Description> no Descripción textual del mandato
disruptivo.
<PreOp> no Operaciones disruptivas a
ejecutar antes de establecer el
valor de parámetro.

Gestión del sistema operativo 101


Tabla 28. Elementos hijos (continuación)
Elementos hijos Obligatorio Descripción
<PostOp> no Operaciones disruptivas a
ejecutar después de establecer
el valor de parámetro.
<BuiltIn> no Operación disruptiva incorporada
Este elemento se puede dar en
varias ocasiones.

Uso
Algunos parámetros de configuración y de ajuste pueden requerir operaciones disruptivas para que los
cambios de valores tengan efecto. Una operación disruptiva es cualquier operación que pueda
interrumpir temporalmente el acceso a un servicio o a un dispositivo. Las operaciones disruptivas típicas
son el reinicio de un daemon, el desmontaje o el montaje de un sistema de archivos, o el posicionamiento
fuera de línea o en línea de una tarjeta de adaptador de red. El programa AIX Runtime Expert utiliza
restricciones para mostrar que un parámetro necesita operaciones disruptivas para que los cambios
tengan efecto. Se utiliza un elemento <ConstraintDef> para definir una restricción de este tipo.
La restricción se puede definir:
• Dentro de un elemento <ParameterDef>, si la restricción solo se aplica a un único parámetro.
• En el nivel de catálogo, el elemento <ConstraintDef> debe tener un atributo id para permitir que se
haga referencia a la restricción más adelante, en los elementos <ParameterDef>.

Restricción incorporada
El elemento <BuiltIn> no contiene ningún atributo ni elemento hijo.
Las restricciones incorporadas definen operaciones que están codificadas permanentemente en el motor
de imagen de la memoria. En este momento, sólo hay una restricción incorporada definida: bosboot. La
diferencia de las restricciones incorporadas con el resto de las operaciones disruptivas es que el mandato
bosboot nunca lo ejecuta AIX Runtime Expert. El motor de imagen de la memoria sólo avisará de que se
necesita un bosboot para que los cambios tengan efecto.

0590-206 A manual post-operation is required for the changes to take effect


Please perform a bosboot

Restricción PreOp y PostOp


El elemento <PreOp> define mandatos obligatorios (expresiones de shell) que se ejecutarán antes de que
el método de configuración set establezca el valor del parámetro. El elemento <PostOp> define
mandatos obligatorios que se ejecutarán tras la ejecución del método de configuración set.
Un elemento <ConstraintDef> tiene que contener uno o ningún elemento hijo <PreOp> y uno o ningún
elemento hijo <PostOp>.

Ejemplos
1. Ejemplo de una restricción incorporada (a nivel de catálogo)

<ConstraintDef id="bosboot">
<Description>
<NLSCatalog catalog="[Link]" setNum="51" msgNum="3">
bosboot
</NLSCatalog>
</Description>
<Built>Inbosboot</BuiltIn>
</ConstraintDef>

102 AIX Versión 7.2: Gestión del sistema operativo


2. Ejemplo de restricción <PreOp>: restricción clic en el catálogo [Link]. Tenga en
cuenta que, en este ejemplo, el mandato preop no ejecuta nada, sino que sólo comprueba la
presencia de una extensión de kernel necesaria por el mandato set. Si la extensión de kernel no se ha
instalado, la restricción definida en el elemento <PreOp> fallará y el mandato set no se ejecutará:

<ConstraintDef id="clic">
<Description>
<NLSCatalog catalog="[Link]" setNum="48" msgNum="3">
Check that the [Link] kernel extension is installed.
</NLSCatalog>
</Description>
<Pre>Oplslpp -l "clic*"</PreOp>
</ConstraintDef>

3. Ejemplo de restricción <PostOp>: la restricción de las tablas de seguridad de kernel de conjunto en el


catálogo [Link]. Las bases de datos modificadas necesitan cargarse sólo una vez en el
kernel después de que se hayan realizado todas las modificaciones.

<ConstraintDef id="setkst">
<Description>
<NLSCatalog catalog="[Link]" setNum="5" msgNum="3">
Send the authorizations database to the KST (Kernel Security Tables)
</NLSCatalog></Description>
<PostOp>/usr/sbin/setkst -t auth &gt;/dev/null</PostOp>
</ConstraintDef>

Elemento <CfgMethod>

Sintaxis
Elemento padre: <Catalog>
Está soportado el siguiente atributo:

Tabla 29. Atributo


Atributo Obligatorio Tipo Descripción
id sí serie Especifica el nombre del
método de
configuración.

Se da soporte a los siguientes elementos hijos:

Tabla 30. Elementos hijo


Elementos hijos Obligatorio Número Descripción
<Get> no 0–1 Definición del método
de configuración para la
operación get. Este
elemento se puede dar
en varias ocasiones.
<Set> no 0–1 Definición del método
de configuración para la
operación set. Este
elemento se puede dar
en varias ocasiones.
<Diff> no 0–1 Definición del método
de configuración para la
operación diff.

Gestión del sistema operativo 103


Tabla 30. Elementos hijo (continuación)
Elementos hijos Obligatorio Número Descripción
<Discover> no 0–1 Definición del método
de configuración para el
descubrimiento de
destino.
<Property> no 0 – cualquiera Asigna una propiedad a
los parámetros
mediante el método de
configuración.

Uso
El elemento <CfgMethod> define un método de configuración al que, más adelante, puede hacer
referencia un parámetro utilizando el atributo cfgmethod del elemento <ParameterDef>. El parámetro
heredará todos los elementos definidos en el método de configuración al que se hace referencia.
En función del parámetro, el uso de una configuración puede ofrecer varias ventajas sobre la definición
local:
• Simplifica el archivo de catálogo, lo que evita la duplicación de los mismos elementos de la línea de
mandatos para varios parámetros.
• Permite que varios parámetros se traten mediante un único mandato.

Ejemplo
El catálogo [Link] define muchos de los parámetros que utilizan el mismo método de
configuración. A continuación se muestra una versión simplificada de este catálogo:

<Catalog id="vmoParam" version="2.1">


<CfgMethod id="vmo">
<Get type="current">
<Command>/usr/sbin/vmo -a</Command>
<Mask name="1" value="2">[[:space:]]*(.*) = (.*)</Mask>
</Get>

<Get type="nextboot">
<Command>/usr/sbin/vmo -r -a</Command>
<Mask name="1" value="2">[[:space:]]*(.*) = (.*)</Mask>
</Get>

<Set type="permanent">
<Command>/usr/sbin/vmo -p%a</Command>
<Argument>%n=%v1</Argument>
</Set>

<Set type="nextboot">
<Command>/usr/sbin/vmo -r%a</Command>
<Argument>%n=%v1</Argument>
</Set>
</CfgMethod>

<ParameterDef name="ame_maxfree_mem" cfgmethod="vmo" type="integer" />


<ParameterDef name="ame_min_ucpool_size" cfgmethod="vmo" type="integer" />
<ParameterDef name="ame_minfree_mem" cfgmethod="vmo" type="integer" />
...

</Catalog>

Información relacionada
• Generación de línea de mandatos
• Elemento <Get>
• Elemento <Set>

104 AIX Versión 7.2: Gestión del sistema operativo


Elemento <Get>

Sintaxis
Elemento padre: <CfgMethod>, <ParameterDef>
Está soportado el siguiente atributo:

Tabla 31. Atributo


Atributo Obligatorio Tipo Descripción
type sí serie Especifica el tipo del
mandato get (actual o
nextboot).

Se da soporte a los siguientes elementos hijos:

Tabla 32. Elementos hijos


Elementos hijos Obligatorio Número Descripción
<Command> no 0–1 Mandato
<Argument> no 0–1 Argumentos de línea de mandatos
<Stdin> no 0–1 Argumentos soportados por el elemento
<Stdin>
<Filter> no 0–1 Filtro
<Mask> no 0–1 Máscara de captura de salida
<Prereq> no 0 – cualquiera Asigna un requisito previo para la
operación get

Es necesario definir el elemento <Command> para cada parámetro, ya sea en el nivel <CfgMethod> o
directamente, en el nivel <ParameterDef>.

Uso
El elemento <Get> describe cómo se captura el valor de un parámetro concreto. Se puede utilizar
directamente bajo el elemento <ParameterDef> o bajo un elemento <CfgMethod> al que se haga
referencia en el elemento <ParameterDef> mediante el atributo cfgmethod, o bien mediante una
combinación de ambas posibilidades.
Deben definirse dos elementos Get para cada parámetro, uno para cada valor soportado del atributo type:
• Get type=“current” identifica el método que se ejecutará para recuperar el valor de runtime del
parámetro.
• Get type=“nextboot” identifica el método que se ejecutará para recuperar el valor que el parámetro
tendrá después del siguiente rearranque del sistema.
• El método get que se ejecutará dependerá de la operación que se realice:
– Si el mandato artexget se llama con el distintivo –r, se utilizará el método get actual.
– Si el mandato artexget se llama con el distintivo –n, se utilizará el método get nextboot.
– Si el mandato artexget se llama con el distintivo –p, la ejecución del método dependerá de la
entrada de los parámetros en el atributo applyType. El método get actual se utiliza para los
parámetros que tienen su atributo applyType establecido para runtime y el método get nextboot se
utiliza para los parámetros que tienen un atributo applyType de rearranque.

Gestión del sistema operativo 105


Información relacionada
Generación de línea de mandatos
Elemento <Mask>.

Elemento <Set>
El elemento <Set> define cómo crear una línea de mandatos para establecer el valor de un parámetro.

Sintaxis
Elemento padre: <CfgMethod>, <ParameterDef>
Está soportado el siguiente atributo:

Tabla 33. Atributo


Atributo Obligatorio Tipo Descripción
type sí serie Especifica el tipo del
mandato set como
actual o nextboot.

Se da soporte a los siguientes elementos hijos:

Tabla 34. Elementos hijos


Elementos hijos Obligatorio Número Descripción
<Command> no 0–1 Mandato
<Argument> no 0–1 Argumentos de línea de mandatos
<Stdin> no 0–1 Argumentos Stdin
<Prereq> no 0 – cualquiera Asigna un requisito previo a la operación
<Set>

Nota: Es necesario definir el elemento <Command> para cada parámetro, ya sea en el nivel
<CfgMethod> o directamente, en el nivel <ParameterDef>.

Uso
Hay tres tipos de elementos <Set> que se pueden definir para cada parámetro, identificados por su
atributo type obligatorio:
• Set type=“current” define una operación set que sólo cambia el valor del parámetro para la sesión
actual. Cualquier cambio realizado utilizando la operación set se perderá tras un rearranque del
sistema.
• Set type=“nextboot” define una operación set que sólo cambia el valor que tomará el parámetro tras el
siguiente rearranque del sistema. El valor actual no se modifica.
• Set type=“permanent” define una operación set que cambia tanto el valor actual como nextboot del
parámetro.
El tipo de la ejecución de la operación set se decide según los parámetros incluidos cuando se ejecuta el
mandato artexset, según el atributo applyType del parámetro del perfil. La tabla siguiente resume los
métodos set que se ejecutan, en función de los métodos set definidos en el archivo de catálogo según el
atributo applyType para el parámetro:

106 AIX Versión 7.2: Gestión del sistema operativo


Tabla 35. Métodos set: tipos de métodos set definidos y atributo applyType del parámetro
current nextboot permanente runtime nextboot
0 0 0 not set (error) not set (error)
0 0 1 set permanent not set (error)
0 1 0 set nextboot + warning set nextboot
0 1 1 set permanent not set (error)
1 0 0 set current + warning set nextboot
1 0 1 set permanent not set (error)
1 1 0 set current set nextboot set nextboot
1 1 1 set permanent set nextboot

Información relacionada
Generación de línea de mandatos.

Elemento <Diff>
El elemento <Diff> define cómo crear una línea de mandatos para comparar dos valores de un parámetro.

Sintaxis
Elemento padre: <CfgMethod>, <ParameterDef>
Se da soporte a los siguientes elementos hijos:

Tabla 36. Elementos hijos


Elementos hijos Obligatorio Descripción
<Command> no Mandato
<Argument> no Argumentos de línea de mandatos
<Stdin> no Argumentos Stdin
<Filter> no Filtro
<Mask> no Máscara de captura de salida

Nota: Es necesario definir el elemento <Command> para cada parámetro, ya sea en el nivel
<CfgMethod> o directamente, en el nivel <ParameterDef>.

Uso
El elemento <Diff> no suele ser necesario, dado que la infraestructura sabe cómo comparar dos valores
de parámetros internamente, en función del tipo (serie, entero, integer-bi, binario, etc.). Sin embargo, en
caso de que la comparación interna no esté adaptada para un parámetro concreto, es posible utilizar un
mandato externo en su lugar.

Gestión del sistema operativo 107


Ejemplo
El siguiente elemento <Diff> se puede utilizar para la mayoría de los parámetros, si bien la utilización de
la función de comparación interna es más eficaz. El elemento <Diff> utiliza el mandato diff para
comparar dos archivos que contienen los dos valores:

<Diff>
<Command>/usr/bin/diff %f1 %f2; echo $?</Command>
</Diff>

Información relacionada
Generación de línea de mandatos.
Elemento <Mask>.

Elemento <Discover>
El elemento <Discover> define cómo crear una línea de mandatos para descubrir destinos para un
parámetro que los admita.

Sintaxis
Elemento padre: <CfgMethod>, <ParameterDef>
Se da soporte a los siguientes elementos hijos:

Tabla 37. Elementos hijos


Elementos hijos Obligatorio Número Descripción
<Command> no 0–1 Mandato
<Prereq> no 0 – cualquiera Asigna un requisito previo para la
operación discover

Nota: Es necesario definir el elemento <Command> para cada parámetro, ya sea en el nivel
<CfgMethod> o directamente, en el nivel <ParameterDef>.

Uso
Un mandato discover se utiliza para obtener la lista de instancias de destino para un parámetro indicado.
La salida de un mandato discover para un parámetro que da soporte a las clases de destino N tiene el
siguiente formato:

class_1=inst_1_1;class_2=inst_2_1;...;class_N=inst_N_1
class_1=inst_1_2;class_2=inst_2_2;...;
class_N=inst_N_2class_1=inst_1_3;
class_2=inst_2_3;...;class_N=inst_N_3
...

El mandato artexget genera y ejecuta un mandato discover para parámetros que satisfacen uno de los
siguientes criterios:
• Contienen un elemento <Target> con los atributos class e instance vacíos. <Target class=""
instance="" />
• Contienen al menos un elemento <Target> con un atributo match: <Target class="..." match="..." />
El mandato artexset requiere de forma adicional que se satisfagan los siguientes dos criterios:
• El mandato artexset se llama con el distintivo –d.
• El elemento <Parameter> del perfil tiene el atributo setDiscover establecido en true.

108 AIX Versión 7.2: Gestión del sistema operativo


Ejemplos
1. El catálogo [Link] utiliza el siguiente mandato discover para obtener la lista de las
interfaces de red definidas en el sistema:

<Discover>
<Command>
/usr/sbin/lsdev -C -c if -F "name" | /usr/bin/sed -e 's/^/interface=/'
</Command>
</Discover>

Este mandato da el siguiente resultado:

interface=en0
interface=et0
interface=lo0

2. El catálogo [Link] utiliza el siguiente mandato discover para llegar a la lista de todos
los usuarios para todos los módulos de autenticación cargables:

<Discover>
<Command>
/usr/sbin/lsuser -a registry ALL |
/usr/bin/sed -e "s/\(.*\) registry=\(.*\)/module=\2;user=\1/g"
</Command>
</Discover>

Este mandato da el siguiente resultado:

module=LDAP;user=daemon
module=LDAP;user=bin
module=LDAP;user=sys
module=LDAP;user=adm
...
module=files;user=root
module=files;user=daemon
module=files;user=bin
module=files;user=sys
module=files;user=adm
...

Elemento <Command>
El elemento <Command> define el mandato base utilizado para realizar la operación definida por el
elemento padre.

Sintaxis
Elemento padre: <Get>, <Set>, <Diff>, <Discover>, <PrereqDef>, <Prereq>, <PropertyDef>,
<Property>, <Command>

Uso
El contenido del elemento <Command> se expande como se describe en la sección Expansión de los
elementos de la línea de mandatos y se combina con otros elementos de la línea de mandatos para
formar una línea de mandatos completa. Consulte la sección Generación de línea de mandatos para
obtener más detalles.
Algunos caracteres que se encuentran a menudo en expresiones del shell como, por ejemplo, <, > y &, no
se permiten en documentos XML. Estos caracteres deben sustituirse por la correspondiente entidad XML:

Tabla 38. Entidades XML


Carácter Entidad XML
< &lt;
> &gt;

Gestión del sistema operativo 109


Tabla 38. Entidades XML (continuación)
Carácter Entidad XML
& &amp;

De forma alternativa, una sección CDATA se puede utilizar si la expresión contiene muchos de tales
caracteres. Las secciones CDATA comienzan con <![CDATA[ y finalizan con ]]>.
Es necesario definir el elemento <Command> para cada operación soportada de cada parámetro, ya sea
en el nivel <CfgMethod> o en el nivel <ParameterDef>.

Ejemplo
El catálogo [Link] define un parámetro denominado perfil, que representa el contenido del
archivo /etc/profile. Para este parámetro, el elemento <Get> utiliza el mandato cat para capturar el
contenido del archivo /etc/profile:

<ParameterDef name="profile">
<Get type="current">
<Command>/usr/bin/cat /etc/environment</Command>
</Get>
</ParameterDef>

Elemento <Argument>

Sintaxis
Elemento padre: <Get>, <Set>, <Diff>, <PrereqDef>, <Prereq>, <PropertyDef>, <Property>

Uso
El contenido del elemento <Argument> se expande tal y como se describe en la sección Expansión de los
elementos de la línea de mandatos y se combina con los elementos <Command> y/o <Stdin> para formar
una línea de mandatos completa. Consulte la sección Generación de línea de mandatos para obtener más
detalles.
Algunos caracteres que se encuentran a menudo en expresiones del shell como, por ejemplo, <, > y &, no
se permiten en documentos XML. Estos caracteres deben sustituirse por la correspondiente entidad XML:

Tabla 39. Entidades XML


Carácter Entidad XML
< &lt;
> &gt;
& &amp;

De forma alternativa, una sección CDATA se puede utilizar si la expresión contiene muchos de tales
caracteres. Las secciones CDATA comienzan con <![CDATA[ y finalizan con ]]>.

Ejemplo
El catálogo [Link] utiliza el elemento <Argument> para añadir un argumento al mandato vmo
para cada parámetro vmo del perfil:

<CfgMethod id="vmo">
<Set type="permanent">
<Command>/usr/sbin/vmo -p%a</Command>
<Argument> -o %n=%v1</Argument>
</Set>
</CfgMethod>

110 AIX Versión 7.2: Gestión del sistema operativo


Elemento <Stdin>

Sintaxis
Elemento padre: <Get>, <Set>, <Diff>, <PrereqDef>, <Prereq>, <PropertyDef>, <Property>

Uso
El contenido del elemento <Stdin> se expande como se describe en la sección Expansión de los
elementos de la línea de mandatos y los datos resultantes se graban en la entrada estándar de la línea de
mandatos generada para la operación definida en el elemento padre.

Ejemplo
El catálogo [Link] define un parámetro denominado perfil, que representa el contenido del
archivo /etc/profile. Para este parámetro, la operación set graba el valor del parámetro en la entrada
estándar del mandato cat para sobrescribir el archivo /etc/profile:

<ParameterDef name="profile">
<Set type="permanent">
<Command>/usr/bin/cat &gt; /etc/profile</Command>
<Stdin>%v1</Stdin>
</Set>
</Get>

Información relacionada
Generación de línea de mandatos

Elemento <Filter>

Sintaxis
Elemento padre: <Get>, <Diff>, <PropertyDef>, <Property>

Uso
El contenido del elemento <Filter> es un mandato al que se pasa como entrada la salida de la línea de
mandatos generada para la operación definida en el elemento padre.
Algunos caracteres que se encuentran a menudo en expresiones del shell como, por ejemplo, <, > y &, no
se permiten en documentos XML. Estos caracteres deberán sustituirse por la correspondiente entidad
XML:

Tabla 40. Entidades XML


Carácter Entidad XML
< &lt;
> &gt;
& &amp;

De forma alternativa, una sección CDATA se puede utilizar si la expresión contiene muchos de tales
caracteres. Las secciones CDATA comienzan con <![CDATA[ y finalizan con ]]>.

Ejemplo
El catálogo [Link] utiliza el elemento <Filter> para la operación get del parámetro
v4_root_node, a fin de extraer el nodo raíz de la salida del mandato nfds –getnode:

<ParameterDef id="v4_root_node">
<Get type="current">

Gestión del sistema operativo 111


<Command>
/usr/sbin/nfsd -getnodes
</Command>
<Filter>
/usr/bin/awk -F: 'NR == 2 { printf("%s", $1) }'
</Filter>
</Get>
</ParameterDef>

Información relacionada
Generación de línea de mandatos

Elemento <Mask>

Sintaxis
Elemento padre: <Get>, <Diff>, <Discover> (solo bajo un elemento <SeedDef>),<PropertyDef>,
<Property>
Los atributos siguientes se admiten cuando se utilizan en un elemento <Get> o <Diff>:

Tabla 41. Atributos


Atributo Obligatorio Tipo Descripción
nombre no entero Especifica el índice de la
subexpresión que
coincide con el nombre
del parámetro. Los
valores válidos son 1 y
2.
value no entero Especifica el índice de la
subexpresión que
coincide con el valor del
parámetro. Los valores
válidos son 1 y 2.

Los atributos siguientes se admiten cuando se utilizan bajo el subelemento <Discover> de un elemento
<SeedDef>:

Tabla 42. Atributos


Atributo Obligatorio Tipo Descripción
catalog sí entero Especifica el índice de la
subexpresión que
coincide con el nombre
del catálogo. Los valores
válidos son 1, 2 y 3.
nombre sí entero Especifica el índice de la
subexpresión que
coincide con el nombre
del parámetro. Los
valores válidos son 1, 2
y 3.

112 AIX Versión 7.2: Gestión del sistema operativo


Tabla 42. Atributos (continuación)
Atributo Obligatorio Tipo Descripción
destino no entero Especifica el índice de la
subexpresión que
coincide con el destino
del parámetro. Los
valores válidos son 1, 2
y 3.

El atributo siguiente se admite cuando se utiliza bajo los elementos <PropertyDef> o <Property>:

Tabla 43. Atributo


Atributo Obligatorio Tipo Descripción
value no entero Especifica el índice de la
subexpresión que
coincide con el nombre
del parámetro. Se debe
establecer en “1” si se
especifica.

Uso
El elemento <Mask> define una expresión regular que se aplica en cada línea de la salida del mandato
para extraer datos de dichas líneas. Los datos extraídos dependen de dónde se utilice el elemento
<Mask>.
Si no se especifican atributos, se utiliza la última línea en la salida del mandato que coincide con la
expresión regular para extraer los datos. Los datos extraídos es la parte de la línea que coincide con la
expresión regular. Si la utilización se da bajo un elemento <Get> o <Diff>, los datos extraídos se utilizan
como valor de parámetro. Si su uso se produce bajo un elemento <PropertyDef> o <Property>, los datos
extraídos se utilizan como valor de propiedad.
Si sólo se especifica el atributo value, se debe establecer en 1 y la expresión regular debe contener sólo
una subexpresión. Se utiliza la última línea en la salida del mandato que coincide con la expresión regular
para extraer los datos. Los datos extraídos es la parte de la línea que coincide con la primera
subexpresión (y la única). Si la utilización se da bajo un elemento <Get> o <Diff>, los datos extraídos se
utilizan como valor de parámetro. Si su uso se produce bajo un elemento <PropertyDef> o <Property>,
los datos extraídos se utilizan como valor de propiedad.
Si se especifican los atributos name y value, uno de estos atributos se deben establecer en 1 y el otro se
debe establecer en 2, y la expresión regular debe contener dos subexpresiones. Un name y un value se
extrae de cada línea de la salida del mandato que coincide con la expresión regular. Si se utiliza en un
elemento <Get>, el nombre se utiliza como nombre de parámetro y el valor como valor de parámetro. Si
se utiliza en un elemento <Diff>, el nombre se usa como nombre de parámetro y el valor se usa como
resultado de comparación. Utilizando esta función, los valores de varios parámetros se pueden extraer
utilizando un único mandato obtener y varios parámetros pueden compararse con un único mandato
diff.

Si se utiliza en el subelemento <Discover> de un elemento <SeedDef>, será necesario especificar los


atributos de nombre y catálogo. Se extrae un nombre de catálogo y de parámetro de cada línea de la
salida del mandato que coincide con la expresión regular. Si un catálogo que coincide con el nombre del
catálogo extraído se encuentra en el sistema y si contiene una definición para un parámetro que coincide
con el nombre de parámetro extraído, se insertará un parámetro en el perfil. El argumento destino
opcional se puede añadir para extraer una definición de destino para cada parámetro descubierto. La
definición destino debe seguir la lista separada por punto y coma de los formatos de pares
class=instance como el formato class1=instance1;class2=instance2;....

Gestión del sistema operativo 113


Ejemplos
1. El catálogo [Link] utiliza el elemento <Mask> con los atributos name y value para extraer
todos los valores de parámetro desde un único mandato vmo –a:

<CfgMethod id="vmo">
<Get type="current">
<Command>/usr/sbin/vmo -a</Command>
<Mask name="1" value="2">[[:space:]]*(.*) = (.*)</Mask>
</Get>
</CfgMethod>

2. Si el catálogo [Link] se hubiese escrito de tal manera que se utilizase un mandato


independiente para capturar el valor de cada parámetro, el elemento <Mask> podría haberse utilizado
solo con el atributo value especificado, sin atributo name:

<CfgMethod id="vmo">
<Get type="current">
<Command>/usr/sbin/vmo -o %n</Command>
<Mask value="1"> = (.*)</Mask>
</Get>
</CfgMethod>

3. O utilizando una expresión regular que coincida sólo con el valor:

<CfgMethod id="vmo">
<Get type="current">
<Command>/usr/sbin/vmo –o %n</Command>
<Mask>[^ ]*$</Mask>
</Get>
</CfgMethod>

De los tres ejemplos anteriores, el primero es el más eficaz, ya que sólo requiere un único mandato
para capturar todos los parámetros del mandato vmo. Los ejemplos 2 y 3 generarían un mandato
independiente para cada parámetro de mandato vmo, dado que el nombre del parámetro se utiliza en
el elemento <Command>.
4. El siguiente elemento <SeedDef> define un inicio que se puede utilizar para descubrir todos los
atributos de todos los dispositivos. El elemento utiliza un destino para designar el dispositivo que
funcionan en:

<SeedDef name="devAttr">
<Discover>
<Command>
/usr/sbin/lsdev -F 'name class subclass type' |
while read DEV CLASS SUBCLASS TYPE
do
/usr/sbin/lsattr -F attribute -l $DEV |
while read PAR
do
echo device=$DEV devParam.$CLASS.$SUBCLASS.$TYPE $PAR
done
done
</Command>
<Mask target="1" catalog="2" name="3">(.*) (.*) (.*) <Mark>
</Discover>
</SeedDef>

El mandato de descubrimiento imprime cada atributo de dispositivo descubierto en una línea separada,
utilizando el formato siguiente:

device=DeviceName [Link] AttributeName

Por ejemplo,

device=en0 [Link] tcp_recvspace


device=en0 [Link] tcp_sendspace
device=ent0 [Link],l-lan alt_addr
device=ent0 [Link],l-lan chksum_offload

114 AIX Versión 7.2: Gestión del sistema operativo


Información relacionada
Generación de línea de mandatos

Elemento <SeedDef>
El elemento <SeedDef> define un inicio que se puede utilizar en un perfil mediante un elemento <Seed>.

Sintaxis
Elemento padre: <Catalog>
Está soportado el siguiente atributo:

Tabla 44. Atributo


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre del
inicio. Este nombre debe
ser exclusivo por
catálogo.

Se da soporte al siguiente elemento hijo:

Tabla 45. Elemento hijo


Elemento hijo Obligatorio Descripción
<Discover> sí Especifica el mandato que se utiliza para buscar
parámetros.

Uso
Los inicios se utilizan para buscar parámetros de manera dinámica durante una operación get.
Cuando se emite el mandato artexget, cada elemento <Seed> del perfil de entrada se expande en uno
o varios elementos <Parameter>, en función de las reglas definidas en el elemento <SeedDef>
coincidente del archivo de catálogo. Este proceso se denomina descubrimiento de parámetro. El mandato
artexget sigue de forma habitual con el perfil expandido.
El elemento <SeedDef> contiene solo un subelemento <Discover>, que define un mandato que ejecutar,
y una máscara para extraer nombres de parámetro, nombres de catálogo (como listas separadas por
comas, sin la extensión .xml) y, opcionalmente, destinos de la salida del mandato (utilizando el formato
class1=instance1;class2=instance2;... ). Para cada línea de la salida, se carga el primer catálogo de la
lista separada por signos de dos puntos que se encuentra en el sistema. Si una definición de parámetro se
encuentra en este catálogo, se crea un parámetro en el perfil de salida que tenga los destinos que se
hayan extraído de la línea. No se tendrán en cuenta las líneas de la salida del mandato que no coincidan
con la máscara, o para los que no se encuentra el archivo de catálogo, o que no tienen ninguna definición
de parámetro si se encuentra en el archivo de catálogo.

Ejemplos
1. El catálogo siguiente define un elemento <SeedDef> denominado vmoTunables que descubre todos
los inicios vmo ajustables no restringidos soportados por AIX Runtime Expert:

<?xml version="1.0" encoding="UTF-8"?>


<Catalog id="vmoSeed">
<SeedDef name="vmoTunables">
<Discover>
<Command>/usr/sbin/vmo -x | /usr/bin/awk -F, '{ print "vmoParam:" $1 }'</Command>
<Mask catalog="1" name="2">(.*):(.*)/Mask>
</Discover>
</SeedDef>
</Catalog>

Gestión del sistema operativo 115


El mandato de descubrimiento imprime cada ajustable en una línea separada, precedido por el
nombre del catálogo que define los ajustables:

...
vmoParam:enhanced_affinity_vmpool_limit
vmoParam:esid_allocator
vmoParam:force_relalias_lite
vmoParam:kernel_heap_psize
...

El siguiente perfil utiliza el inicio vmo tunables para capturar todos los inicios no restringidos vmo
tunables soportados por AIX Runtime Expert:

<?xml version="1.0" encoding="UTF-8"?>


<Profile>
<Catalog id="vmoSeed">
<Seed name="vmoTunables"/>
</Catalog>
</Profile>

Cuando se ejecuta el mandato artexget –r en el perfil, el mandato genera un perfil similar al


siguiente ejemplo:

<?xml version="1.0" encoding="UTF-8"?>


<Profile>
<Catalog id="vmoParam">
...
<Parameter name="enhanced_affinity_vmpool_limit" value="10"/>
<Parameter name="esid_allocator" value="0"/>
<Parameter name="force_relalias_lite" value="0"/>
<Parameter name="kernel_heap_psize" value="65536" applyType="nextboot" reboot="true"/>
...
</Catalog>
</Profile>

2. El siguiente elemento <SeedDef> define un inicio que se utiliza para descubrir todos los atributos de
todos los dispositivos. El elemento utiliza un inicio de destino para designar el dispositivo que
funcionan en:

<SeedDef name="devAttr">
<Discover>
<Command>
/usr/sbin/lsdev -F 'name class subclass type' |
while read DEV CLASS SUBCLASS TYPE
do
/usr/sbin/lsattr -F attribute -l $DEV |
while read PAR
do
echo device=$DEV devParam.$CLASS.$SUBCLASS.$TYPE:devParam.$CLASS
.$SUBCLASS:devParam.$CLASS $PAR
done
done
</Command>
<Mask target="1" catalog="2" name="3">(.*) (.*) (.*)</Mask>
</Discover>
</SeedDef>

El mandato de descubrimiento imprime cada atributo de dispositivo descubierto en una línea


separada, utilizando el formato siguiente:

device=DeviceName [Link]:[Link]:[Link]
NombreAtributo

Por ejemplo:

device=en0 [Link]:[Link]:[Link] tcp_recvspace


device=en0 [Link]:[Link]:[Link] tcp_sendspace
device=ent0 [Link],l-lan:[Link]:[Link]
alt_addr
device=ent0 [Link],l-lan:[Link]:[Link]
chksum_offload

116 AIX Versión 7.2: Gestión del sistema operativo


Elemento <Prereq>
El elemento <Prereq> asigna un requisito previo a las operaciones <Get>, <Set> y <Discover>.

Sintaxis
Elemento padre: <Get>, <Set> y <Discover>
Está soportado el siguiente atributo:

Tabla 46. Atributo


Atributo Obligatorio Tipo Descripción
id no serie Especifica un
identificador exclusivo

Se da soporte a los siguientes elementos hijos:

Tabla 47. Elementos hijo


Elemento hijo Obligatorio Descripción
<Command> no Mandato
<Argument> no Argumentos de línea de mandatos
<Stdin> no Argumentos soportados por el elemento <Stdin>
<ErrMessage> no Mensaje para imprimir si los requisitos previos
fallan

Nota: El elemento <Command> debe definirse para cada requisito previo: a nivel <ParameterDef>, a
nivel <CfgMethod> o en un elemento <PrereqDef>.

Uso
Prereqs son mandatos que condicionan el proceso de una operación <Get>, <Set> y <Discover> para
parámetros que utilizan estas operaciones <Get>, <Set> y <Discover>. Se ignoran los parámetros para
los que falla un mandato prereq (código de retorno distinto de cero) y se muestra el mensaje de error
definido en el requisito previo.
El elemento <Prereq> asigna un requisito previo a la operación padre <Get>, <Set> o <Discover>. El
requisito previo se define de manera local bajo el elemento <Prereq> o se hereda desde un elemento
<Prereq> o <PrereqDef> de un nivel superior que tiene un atributo id que coincide.
Un parámetro tiene todos los requisitos previos definidos de forma local bajo el elemento
<ParameterDef>. Además, el requisito previo tiene las propiedades definidas en el método de
configuración del parámetro, si se utiliza un método de configuración. La consecuencia es que, si se
define un requisito previo en un elemento <CfgMethod>, a todos los elementos <ParameterDef> que
utilicen el método de configuración se les asignará automáticamente dicho requisito previo (aunque
algunos de estos elementos podrían volver a definir el requisito previo de forma local).
Los elementos <Command>, <Argument>, <Stdin> y <ErrMessage> que definan un requisito previo para
una operación dada se buscarán en este orden:
• En el subelemento <Prereq> de la operación relevante del elemento <ParameterDef>.
• Si el elemento <ParameterDef> tiene un atributo cfgmethod, bajo el subelemento <Prereq> que
contenga un id que coincida de la operación relevante del método de configuración.
• En el elemento <PrereqDef> del catálogo que tiene un ID que coincide.

Gestión del sistema operativo 117


Ejemplo
En el ejemplo siguiente se define un requisito previo que comprueba que los parámetros netaddr y
netaddr6 se apliquen en el mismo sistema en el que se han capturado:

<ParameterDef name="netaddr" type="string" targetClass="device" cfgmethod="attr">


<Set type="permanent">
<Prereq>
<Command>[[ `/usr/bin/uname -f` = %p[nodeId] ]]</Command>
<ErrMessage>Parameter cannot be applied to a different node</ErrMessage>
</Prereq>
</Set>
</ParameterDef>

<ParameterDef name="netaddr6" type="string" targetClass="device" cfgmethod="attr">


<Set type="permanent">
<Prereq>
<Command>[[ `/usr/bin/uname -f` = %p[nodeId] ]]</Command>
<ErrMessage>Parameter cannot be applied to a different node</ErrMessage>
</Prereq>
</Set>
</ParameterDef>

En este ejemplo, la prueba se ejecuta dos veces: una vez para el parámetro netaddr y otra para el
parámetro netaddr6. Este proceso dual se debe a que cada parámetro tiene su propio requisito previo
con su propio elemento <Command>. Consulte, artex_catalog_elem_PrereqDef.dita para obtener un
ejemplo que sólo necesita una ejecución de la prueba

Información relacionada
• artex_catalog_cmdline_gen.dita
• artex_catalog_elem_PrereqDef.dita

Elemento <PrereqDef>
El elemento <PrereqDef> que se puede utilizar posteriormente en un elemento <Prereq>.

Sintaxis
Elemento padre: <Catalog>
Está soportado el siguiente atributo:

Tabla 48. Atributo


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre de
la propiedad.

Se da soporte a los siguientes elementos hijos:

Tabla 49. Elementos hijo


Elemento hijo Obligatorio Descripción
<Command> no Mandato
<Argument> no Argumentos de línea de mandatos
<Stdin> no Los argumentos compatibles con el elemento
<Stdin>
<ErrMessage> no Mensaje que se imprime si falla el requisito previo

Nota: El elemento <Command> debe definirse para cada requisito previo: a nivel <ParameterDef>, a
nivel <CfgMethod> o en un elemento <PrereqDef>.

118 AIX Versión 7.2: Gestión del sistema operativo


Uso
Prereq son mandatos que condicionan la ejecución de las operaciones <Get>, <Set> y <Discover> para
los parámetros que utilizan las operaciones <Get>, <Set> o <Discover>. Se ignoran los parámetros para
los que falla un mandato prereq (código de retorno distinto de cero) y se muestra el mensaje de error
definido en el requisito previo.
El elemento <PrereqDef> define un requisito previo. Estos requisitos previos se podrán asociar más
adelante con una operación de un parámetro o un método de configuración utilizando un elemento
<Prereq> con el mismo atributo id.

Ejemplo
El ejemplo siguiente define el requisito previo nodeId y lo asigna a los parámetros netaddr y netaddr6:

<PrereqDef id="nodeId">
<Command>[[ `/usr/bin/uname -f` = %p[nodeId] ]]</Command>
<ErrMessage>Parameter cannot be applied to a different node</ErrMessage>
</PrereqDef>

<ParameterDef name="netaddr" type="string" targetClass="device" cfgmethod="attr">


<Set type="permanent">
<Prereq id="nodeId"/>
</Set>
<Property name="nodeId"/>
</ParameterDef>

<ParameterDef name="netaddr6" type="string" targetClass="device" cfgmethod="attr">


<Set type="permanent">
<Prereq id="nodeId"/>
</Set>
<Property name="nodeId"/>
</ParameterDef>

En este ejemplo, la prueba se ejecuta solo una vez, porque los dos parámetros utilizan el mismo elemento
<Command> para sus requisitos previos y la línea de mandatos generada es la misma para ambos
parámetros.

Información relacionada
• artex_catalog_cmdline_gen.dita
• artex_catalog_elem_Prereq.dita

Elemento <Property>
El elemento <Property > asigna una propiedad a un parámetro en el método de configuración.

Sintaxis
Elemento padre: <CfgMethod>, <ParameterDef>
Está soportado el siguiente atributo:

Tabla 50. Atributo


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre de
la propiedad.

Se da soporte a los siguientes elementos hijos:

Tabla 51. Elemento hijo


Elemento hijo Obligatorio Descripción
<Command> no Mandato

Gestión del sistema operativo 119


Tabla 51. Elemento hijo (continuación)
Elemento hijo Obligatorio Descripción
<Argument> no Argumentos de línea de mandatos
<Stdin> no Argumentos soportados por el elemento <Stdin>
<Filter> no Filtro
<Mask> no Máscara de captura de salida

Nota: Es necesario definir el elemento <Command> para cada propiedad: al nivel <ParameterDef>, al
nivel <CfgMethod> o en un elemento <PropertyDef>.

Uso
Las propiedades son pares de clave-valor asociadas a un parámetro. El valor de los pares de clave-valor
se recupera a través de los mandatos artexget–r y artexget–n y se guardan en la salida perfil. Los
valores de propiedad que se guardan en un perfil, se pueden insertar en una línea de mandatos utilizando
la secuencia %p [nombre_propiedad].
El elemento <Property> asigna una propiedad a un parámetro o a un método de configuración. La
propiedad se define de manera local bajo el elemento <Property> o se hereda desde un elemento
<Property> o <PropertyDef> de nivel superior que tiene un atributo de nombre que coincide.
Un parámetro tiene todas las propiedades definidas de forma local bajo el elemento <ParameterDef>.
Además, el parámetro cuenta con todas las propiedades definidas en el método de configuración de
parámetros, si se utiliza un método de configuración. La consecuencia es que, si una propiedad se define
bajo un elemento <CfgMethod>, todos los elementos <ParameterDef> que utilicen el método de
configuración contendrán automáticamente dicha propiedad (aunque algunos de ellos pueden volver a
definir la propiedad de forma local).
Los valores de propiedad se extraen de la salida de una línea de mandatos. La línea de mandatos se crea
a partir de la combinación de los elementos <Command>, <Argument>, <Stdin> y <Filter>, tal y como
se describe en la sección Generación de línea de mandatos. Tiene que utilizar uno de los siguientes
valores de propiedad: la salida sin formato de la línea de mandatos o la parte de la salida que coincide
con la máscara, si se especifica un elemento <Mask>.
Los elementos <Command>, <Argument>, <Stdin>, <Filter> y <Mask> que definen una propiedad se
buscan en este orden:
• Bajo el elemento <Property> en el nivel <ParameterDef>.
• Si el elemento <ParameterDef> tiene un atributo cfgmethod, bajo el método de configuración del
elemento <Property> que tiene un atributo name que coincide.
• Bajo el elemento <PropertyDef> del catálogo que tiene un atributo de nombre que coincide.

Ejemplo
El ejemplo siguiente asigna una propiedad nodeId a los parámetros netaddr y netaddr6:

<ParameterDef name="netaddr" type="string" targetClass="device" cfgmethod="attr">


<Property name="nodeId">
<Command>/usr/bin/uname -f/<Command>
<Mask>.*/<Mask>
</Property>
</ParameterDef>

<ParameterDef name="netaddr6" type="string" targetClass="device" cfgmethod="attr">


<Property name="nodeId">
<Command>/usr/bin/uname -f</Command>
<Mask>.*</Mask>
</Property>
</ParameterDef>

120 AIX Versión 7.2: Gestión del sistema operativo


En este ejemplo, la máscara coincide con toda la línea y sólo se utiliza para excluir el carácter nueva línea
al final de la salida del mandato.
En este ejemplo, el mandato uname se ejecuta dos veces: una vez para el parámetro netaddr y otra para
el parámetro netaddr6. El mandato se ejecuta dos veces porque cada parámetro tiene su propia
propiedad con su propio elemento <Command>. Consulte artex_catalog_elem_PropertyDef.dita, para un
ejemplo que sólo necesita una ejecución del mandato uname.

Información relacionada
• artex_catalog_cmdline_gen.dita
• artex_catalog_cmdline_gen_expansion.dita
• artex_catalog_elem_PropertyDef.dita

Elemento <PropertyDef>
El elemento <PropertyDef> define una propiedad que se puede utilizar en un elemento <Property>.

Sintaxis
Elemento padre: <Catalog>
Está soportado el siguiente atributo:

Tabla 52. Atributo


Atributo Obligatorio Tipo Descripción
nombre sí serie Especifica el nombre de
la propiedad.

Se da soporte a los siguientes elementos hijos:

Tabla 53. Elemento hijo


Elemento hijo Obligatorio Descripción
<Command> no Mandato
<Argument> no Argumentos de línea de mandatos
<Stdin> no Argumentos admitidos por los elementos <Stdin>
<Filter> no Filtro
<Mask> no Máscara de captura de salida

Nota: Es necesario definir el elemento <Command> para cada propiedad: al nivel <ParameterDef>, al
nivel <CfgMethod> o en un elemento <PropertyDef>.

Uso
Las propiedades son pares de clave-valor asociadas a un parámetro. El valor de los pares de clave-valor
se recupera a través de los mandatos artexget–r y artexget–n y se guardan en la salida perfil. Los
valores de propiedad que se guardan en un perfil, se pueden insertar en una línea de mandatos utilizando
la secuencia %p [nombre_propiedad].
El elemento <PropertyDef> define una propiedad. Esta propiedad se puede asociar más tarde a un
parámetro o método de configuración utilizando un elemento <Property> con el mismo atributo de
nombre.

Gestión del sistema operativo 121


Ejemplo
El ejemplo siguiente asigna una propiedad nodeId a los parámetros netaddr y netaddr6:

<PropertyDef name="nodeId">
<Command>/usr/bin/uname -f</Command>
<Mask>.*</Mask>
</PropertyDef>

<ParameterDef name="netaddr" type="string" targetClass="device" cfgmethod="attr">


<Property name="nodeId"/>
</ParameterDef>

<ParameterDef name="netaddr6" type="string" targetClass="device" cfgmethod="attr">


<Property name="nodeId"/>
</ParameterDef>

En este ejemplo, el mandato uname solo se ejecuta una vez, porque los dos parámetros utilizan el mismo
elemento <Command> para su propiedad y la línea de mandatos generada es la misma para ambos
parámetros.

Información relacionada
• artex_catalog_cmdline_gen.dita
• artex_catalog_cmdline_gen_expansion.dita
• artex_catalog_elem_Property.dita

Generación de línea de mandatos


La infraestructura de AIX Runtime Expert se basa en mandatos externos para capturar, establecer y,
opcionalmente, comparar valores de parámetros. Este tema explica cómo se crean las líneas de
mandatos según la información de sintaxis proporcionada en los archivos de catálogo.

Operaciones
Para cada parámetro, se pueden definir las operaciones siguientes:
• Get type="current", que se utiliza para capturar el valor actual del parámetro.
• Get type="nextboot", que se utiliza para capturar el valor del parámetro que éste tendrá tras el
rearranque.
• Set type="current", que se utiliza para establecer el valor actual del parámetro. Este valor de
parámetro se pierde al rearrancar.
• Set type="nextboot", que se utiliza para establecer el valor del parámetro que éste tendrá tras el
rearranque.
• Set type="permanent", que se utiliza para establecer el valor actual del parámetro, sabiendo que este
valor permanecerá tras un rearranque.
• Operación diff, que se utiliza para comparar dos valores del parámetro.
• Operación discover, que se utiliza para encontrar destinos para los parámetros que los soportan.
• Propiedad, que se utiliza para capturar una propiedad de un parámetro.
• Requisito previo, que se utiliza para condición de la ejecución de una operación get, set o discover para
un parámetro indicado.
No todas las operaciones necesitan definirse para todos los parámetros. Las dos operaciones get y todas
las operaciones set soportadas por los parámetros deben estar definidas. La operación diff es opcional y,
si no está definida, las comparaciones entre los valores de los parámetros se realizan de manera interna
en función del tipo de parámetro, por ejemplo, serie y entero. La operación discover debe estar definida
sólo para parámetros que tienen destinos. Las propiedades y los requisitos previos sólo están definidos
cuando sea necesario.

122 AIX Versión 7.2: Gestión del sistema operativo


Elementos de línea de mandatos
Para cada operación soportada por un parámetro, se pueden utilizar hasta cinco elementos distintos para
definir cómo se puede crear una línea de mandatos para realizar la operación:
• Elemento <Command>, utilizado para definir el mandato base, para manejar los parámetros.
• Elemento <Stdin>, utilizado para definir los datos que se vayan a grabar en la entrada estándar de la
línea de mandatos.
• Elemento <Argument>, utilizado para insertar datos específicos del parámetro en un elemento
<Command> o <Stdin>.
• Elemento <Filter>, utilizado para filtrar la salida de una línea de mandatos para las operaciones get y
diff.
• Elemento <Mask>, utilizado para extraer datos de la salida de una línea de mandatos para las
operaciones get, diff y property.
Cuando es necesario ejecutar una operación, los elementos <Command>, <Stdin>, <Argument> y
<Filter> definidos para la operación solicitada se combinan para generar un conjunto de líneas de
mandato, tal y como se explica en el tema artex_catalog_cmdline_gen.dita#artex_catalog_cmdline_gen/
CommandLineGenerationAlgorithm. Las líneas de mandatos generadas se ejecutan en un shell. Para las
operaciones get, diff y property, se utiliza el elemento <Mask> para extraer los datos solicitados
(valores de parámetro, resultados de comparación o valores de propiedad) desde la salida del mandato.

Métodos de configuración
Los elementos de la línea de mandatos se pueden definir de forma local dentro de un elemento
<ParameterDef>, o bien heredarse desde un elemento <CfgMethod> al que se hace referencia en el
elemento <ParameterDef> utilizando el atributo cfgmethod.
Se permite la combinación: el conjunto de elementos de la línea de mandatos definidos para una
operación específica de un parámetro específico es la unión de los elementos de la línea de mandatos
definidos localmente bajo el elemento <ParameterDef> y los elementos de la línea de mandatos
definidos para la misma operación en el elemento <CfgMethod> al que hace referencia el atributo
cfgmethod del elemento <ParameterDef>. Si el mismo elemento de la línea de mandatos está definido
tanto localmente como en un método de configuración, tendrá prioridad la definición local.
Por ejemplo, en este archivo de catálogo no optimizado:

<CfgMethod id=”vmo”>
<Get type=”nextboot”>
<Command>/usr/sbin/vmo -r%a</Command>
<Mask name="1" value="2">[[:space:]]*(.*) = (.*)</Mask>
</Get>

<Set type=”permanent”>
<Command>/usr/sbin/vmo –p –o%a</Command>
<Argument> -o %n=%p</Argument>
</Set>

</CfgMethod>

<ParameterDef name=”lgpg_size” cfgmethod=”vmo”>


<Get type=”current”>
<Command>/usr/sbin/vmo -o lgpg_size</Command>
<Mask name="1" value="2">[[:space:]]*(.*) = (.*)</Mask>
</Get>

<Get type=”nextboot”>
<Argument> -o lgpg_size</Argument>
</Get>

</ParameterDef>

Podemos ver que:


• La operación <Get type="current"> se define completamente en el nivel <ParameterDef>.

Gestión del sistema operativo 123


• La operación <Get type="nextboot"> tiene algunos elementos definidos en el nivel <CfgMethod>
(<Command> y <Mask>) y algunos elementos definidos en el nivel <ParameterDef> (<Argument>).
• La operación <Get type="current"> se define completamente en el nivel <CfgMethod>.
La utilización de un método de configuración ofrece dos ventajas principales:
• Simplifica el catálogo. En muchos casos, las definiciones de los parámetros heredan todos los
elementos de la línea de mandatos desde un método de configuración y el elemento <ParameterDef>
queda vacío.
• Permite que distintos parámetros se agrupen en una única línea de mandatos, cuando sea posible.

Algoritmo de generación de línea de mandatos


Las líneas de mandatos se generan utilizando un algoritmo que permita que varios parámetros se agrupen
en un único mandato.
La agrupación de parámetros no es sólo deseable desde un punto de vista de rendimiento y eficiencia,
sino que también es necesaria para determinados parámetros. Por ejemplo, los parámetros vmo
lgpg_regions y lgpg_size, que no se pueden establecer de forma independiente y necesitan establecerse
juntos en una única invocación de mandatos vmo.
El algoritmo de generación de línea de mandatos es funcionalmente equivalente a los pasos siguientes:
1. Cada parámetro del perfil de entrada tiene sus elementos <Command> y <Stdin> parcialmente
expandidos. Durante esta fase, las secuencias %a, %v1[nombre], %v2[nombre], %f1[nombre] y
%f2[nombre] se ignorarán y no se expandirán.
2. Los parámetros que verifican todas las cinco condiciones que aparecen a continuación se agrupan
unidos:
• Los parámetros utilizan el mismo elemento <Command>.
• Los parámetros utilizan el mismo elemento <Stdin>.
• Los parámetros utilizan el mismo elemento <Filter>.
• La expansión del elemento <Command> ejecutada durante el paso 1 creó series idénticas.
• La expansión de su elemento <Stdin> ejecutada durante el paso 1 creó series idénticas.
Ahora, el grupo tiene sus propios elementos <Command> y <Stdin> parcialmente expandidos y su
propio elemento <Filter>, compartido por todos los parámetros del grupo.
3. Para cada grupo de parámetros, los elementos <Command> y <Stdin> del grupo tienen las
secuencias %v1[nombre], %v2[nombre], %f1[nombre] y %f2[nombre] expandidas. El nombre del
parámetro sólo se busca dentro del grupo.
4. Para cada grupo de parámetros, los elementos <Command> y <Stdin> del grupo tienen las
secuencias %a expandidas: cada parámetro del grupo tiene su elemento <Argument> expandido y la
concatenación de estos elementos <Argument> expandidos sustituye a cualquier secuencia %a de
los elementos <Command> y <Stdin>.
El resultado de este proceso es un conjunto de líneas de mandatos, opcionalmente con datos para grabar
en su entrada estándar y un mandato para filtrar su salida.

Expansión de los elementos de la línea de mandatos


Los elementos <Command>, <Stdin> y <Argument> admiten secuencias especiales que se expanden
mediante la infraestructura de AIX Runtime Expert para generar las líneas de mandatos finales.
La tabla que se muestra a continuación es una referencia breve de todas las secuencias soportadas. Para
obtener más detalles sobre una secuencia, consulte las secciones que se muestran a continuación.

Tabla 54. Secuencia


Secuencia Se expande a
%% El carácter % literal.

124 AIX Versión 7.2: Gestión del sistema operativo


Tabla 54. Secuencia (continuación)
Secuencia Se expande a
%a La concatenación de las series Argument
expandidas para todos los parámetros que se
pueden procesar en la misma línea de mandatos.
%n El nombre del parámetro.
%v1 El valor del parámetro.
%v2 El segundo valor del parámetro. Sólo es válido para
operaciones diff.
%f1 El nombre del archivo temporal que contendrá el
valor del parámetro.
%f2 El nombre del archivo temporal que contendrá el
segundo valor del parámetro. Sólo es válido para
operaciones diff.
%v1[nombre] El valor del nombre del parámetro.
%v2[nombre] El segundo valor del nombre del parámetro. Sólo
es válido para operaciones diff.
%f1[nombre] El nombre de un archivo temporal que contendrá el
valor del nombre del parámetro.
%f2[nombre] El nombre de un archivo temporal que contendrá el
segundo valor del nombre del parámetro. Sólo es
válido para operaciones diff.
%t[clase] El nombre de la instancia de destino para la clase
de destino.
%p[nombre] El valor de la propiedad nombre.
%c El id del catálogo.

Escape de secuencias %
Los nombres de parámetros, valores de parámetros y nombres de destinos que se expanden mediante
AIX Runtime Expert se indican entre comillas cuando se utilizan dentro de un elemento <Command> o
dentro de un elemento <Argument> que se vaya a insertar (mediante la secuencia %a) en un elemento
<Command>. Se hace así para asegurar que dichas series se pasen al shell como una única palabra,
aunque incluyan espacios u otros caracteres especiales. De forma adicional, cualquier carácter de comilla
simple dentro de la expresión expandida se escapará adecuadamente.
Los grabadores del catálogo deben tener cuidado de no utilizar las secuencias %n, %v1, %v2,
%v1[nombre], %v2[nombre] o %t[clase] dentro de una serie delimitada. Si dichas secuencias deben
utilizarse dentro de una serie, la serie debe cerrarse antes de la secuencia %, como se muestra en el
ejemplo siguiente:

echo "Parameter "%n" is set to "%v1

De no hacerlo, se producirán líneas de mandatos incorrectas y es un riesgo de seguridad.

La secuencia %%
La secuencia %% se expande al carácter % literal.

Gestión del sistema operativo 125


Por ejemplo, la serie:

/bin/ps -aeF"%%a"

se expande a la siguiente serie:

/bin/ps -aeF"%a"

La secuencia %a
La secuencia %a se puede utilizar en la serie <Command> o en la serie <Stdin>. Se sustituye con la
concatenación de todas las series <Argument> expandidas de todos los parámetros que se pueden tratar
en el mismo mandato (consulte el tema Generación de línea de mandatos para obtener una descripción
formal sobre la agrupación de parámetros).
Por ejemplo, el catálogo siguiente (tenga en cuenta que se podría simplificar utilizando la secuencia %n):

<CfgMethod id=”vmo”>
<Get type=”current”
<Command>/usr/sbin/vmo%a</Command>
</Get>
</CfgMethod>
<ParameterDef name=”lgpg_size” cfgmethod=”vmo”>
<Get type=”current”>
<Argument> -o lgpg_size</Argument>
</Get>
</ParameterDef>
<ParameterDef name=”lgpg_regions” cfgmethod=”vmo”>
<Get type=”current”>
<Argument> -o lgpg_regions</Argument>
</Get>
</ParameterDef>

Y el siguiente perfil:

<Parameter name=”lgpg_size” />


<Parameter name=”lgpg_regions” />

producirán la siguiente línea de mandatos para la operación “get current”:

/usr/sbin/vmo –o lgpg_size –o lgpg_regions

La secuencia %n
La secuencia %n se sustituye por el nombre del parámetro.
Al utilizar la secuencia %n, el ejemplo de la sección %a podría simplificarse como sigue:

<CfgMethod id=”vmo”>
<Get type=”current”>
<Command>/usr/sbin/vmo%a</Command>
<Argument> -o %n</Argument>
</Get>
</CfgMethod>
<ParameterDef name=”lgpg_size” cfgmethod=”vmo” />
<ParameterDef name=”lgpg_regions” cfgmethod=”vmo” />

Con el siguiente perfil:

<Parameter name=”lgpg_size” />


<Parameter name=”lgpg_regions” />

La línea de mandatos siguiente podría generarse para la operación get current:

/usr/sbin/vmo –o ’lgpg_size’ –o ’lgpg_regions’

126 AIX Versión 7.2: Gestión del sistema operativo


Las secuencias %v1 y %v2
La secuencia %v1 se sustituye por el valor del parámetro.
La secuencia %v2 solo es válida para operaciones <Diff> y se sustituye por el segundo valor del
parámetro.
Por ejemplo, el siguiente catálogo:

<CfgMethod id=”vmo”>
<Set type=”permanent”>
<Command>/usr/sbin/vmo -p%a</Command>
<Argument> -o %n=%v1</Argument>
</Set>
</CfgMethod>
<ParameterDef name=”lgpg_size” cfgmethod=”vmo” />
<ParameterDef name=”lgpg_regions” cfgmethod=”vmo” />

con el siguiente perfil:

<Parameter name=”lgpg_size” value=”16M”/>


<Parameter name=”lgpg_regions” value=”128” />

podría generar la siguiente línea de mandatos para la operación set permanent:

/usr/sbin/vmo –p –o ’lgpg_size’=’16M’ –o ’lgpg_regions’=’128’

Las secuencias %f1 y %f2


Las secuencias %f1 y %f2 se sustituyen por el nombre del archivo temporal creado antes de que se
ejecute el mandato. El contenido del archivo es el valor del parámetro para %f1 y el segundo valor del
parámetro para %f2. La secuencia %f2 solo se puede utilizar para operaciones <Diff>.
Por ejemplo, el siguiente catálogo:

<ParameterDef name=”some_file”>
<Diff>
<Command>/usr/bin/diff %f1 %f2</Command>
</Diff>
</ParameterDef>

Cuando se realiza artexdiff entre los dos perfiles, incluido el mismo parámetro con un valor diferente:

<Parameter name=”some_file” value=”foo” />


<Parameter name=”some_file” value=”bar” />

Se crearán dos archivos temporales /tmp/file1 y /tmp/file2 (los nombres de archivos reales serán
distintos) que contienen respectivamente las series “foo” y “bar”, y se ejecutará el siguiente mandato:

/usr/bin/diff /tmp/file1 /tmp/file2

Las secuencias %v1[nombre] y %v2[nombre]


La secuencia %v1[nombre] se sustituye por el valor del nombre del parámetro.
La secuencia %v2[nombre] solo es válida para operaciones <Diff> y se sustituye por el segundo valor del
nombre del parámetro.
Dichas secuencias son útiles cuando un mandato de configuración acepta varios parámetros al mismo
tiempo, pero requiere que algunos de ellos se coloquen en una posición particular de la línea de
mandatos. Este es el caso del mandato chcons, por ejemplo, que requiere que la vía de acceso al archivo
o al dispositivo de la consola vaya en último lugar en la línea de mandatos. Al utilizar la secuencia
%v1[nombre], el catálogo chcons se podría grabar como sigue:

<CfgMethod id=”chcons”>
<Set type=”nextboot”>

Gestión del sistema operativo 127


<Command>/usr/sbin/chcons%a %v1[console_device]</Command>
<Argument> -a %n=%v1</Argument>
</Set>
</CfgMethod>
<ParameterDef name=”console_device” cfgmethod=”chcons” reboot=”true” />
<ParameterDef name=”console_logname” cfgmethod=”chcons” reboot=”true” />
<ParameterDef name=”console_logsize” cfgmethod=”chcons” reboot=”true” />

con el siguiente perfil:

<Parameter name=”console_device” value=”/dev/vty0”/>


<Parameter name=”console_logname” value=”/var/adm/ras/conslog” />
<Parameter name=”console_logverb” value=”9” />

Este catálogo podría generar la siguiente línea de mandatos para la operación set nextboot:

/usr/sbin/chcons –a ’console_logname’=’/var/adm/ras/conslog’ –a ’console_logverb’=’9’ /dev/vty0

Las secuencias %f1[nombre] y %f2[nombre]


Las secuencias %f1[nombre] y %f2[nombre] se sustituyen por el nombre del archivo temporal creado
antes de que se ejecute el mandato. El contenido del archivo es el valor del nombre del parámetro para
%f1[nombre] y el segundo valor del nombre del parámetro para %f2[nombre]. La secuencia %f2[nombre]
solo se puede utilizar para las operaciones <Diff>.

Las secuencias %t[clase]


La secuencia %t[clase] se sustituye por el nombre de la instancia de destino que se trata para la clase de
destino.
La secuencia %t[clase] se utiliza para parámetros que se aplican a un objeto específico, no para todo el
sistema. Un ejemplo de esto es el mandato chuser, cuyos parámetros se aplican a un usuario específico
(root, invitado) para un registro específico (archivos, LDAP). El catálogo para el mandato chuser se
podría grabar como sigue:

<CfgMethod id=”chuser”>
<Set type=”permanent”>
<Command>/usr/bin/chuser –R %t[módulo]%a %t[usuario]</Command>
<Argument> %n=%v1</Argument>
</Set>
</CfgMethod>
<ParameterDef name=”shell” cfgmethod=”chuser” targetClass=”module,user”>
<ParameterDef name=”histsize” cfgmethod=”chuser” targetClass=”module,user” />

Con el perfil siguiente, que establece los parámetros shell y histsize para los usuarios adam y bob en los
registros de archivos y LDAP:

<Parameter name=”shell” value=”/usr/bin/ksh”>


<Target class=”module” instance=”LDAP” />
<Target class=”user” instance=”adam” />
</Parameter>
<Parameter name=”histsize” value=”5000”>
<Target class=”module” instance=”LDAP” />
<Target class=”user” instance=”adam” />
</Parameter>
<Parameter name=”shell” value=”/usr/bin/ksh”>
<Target class=”module” instance=”files” />
<Target class=”user” instance=”adam” />
</Parameter>
<Parameter name=”histsize” value=”5000”>
<Target class=”module” instance=”files” />
<Target class=”user” instance=”adam” />
</Parameter>
<Parameter name=”shell” value=”/usr/bin/bash”>
<Target class=”module” instance=”LDAP” />
<Target class=”user” instance=”bob” />
</Parameter>
<Parameter name=”histsize” value=”10000”>
<Target class=”module” instance=”LDAP” />
<Target class=”user” instance=”bob” />
</Parameter>

128 AIX Versión 7.2: Gestión del sistema operativo


<Parameter name=”shell” value=”/usr/bin/bash”>
<Target class=”module” instance=”files” />
<Target class=”user” instance=”bob” />
</Parameter>
<Parameter name=”histsize” value=”10000”>
<Target class=”module” instance=”files” />
<Target class=”user” instance=”bob” />
</Parameter>

Podría ejecutar los siguientes mandatos:

/usr/bin/chuser –R ’LDAP’ ’shell’=’/usr/bin/ksh’ ’histsize’=’5000’ ’adam’


/usr/bin/chuser –R ’files’ ’shell’=’/usr/bin/ksh’ ’histsize’=’5000’ ’adam’
/usr/bin/chuser –R ’LDAP’ ’shell’=’/usr/bin/bash’ ’histsize’=’10000’ ’bob’
/usr/bin/chuser –R ’files’ ’shell’=’/usr/bin/bash’ ’histsize’=’10000’ ’bob’

Anote cómo se generaron los cuatro mandatos. El motivo es que las secuencias %t[módulo] y %t[usuario]
se utilizaron en la serie <Command>, lo que significa que cada mandato es específico de un módulo y un
usuario concretos. Debido a esto, únicamente se agrupan los parámetros que se aplican al mismo módulo
y usuario.

Secuencia %p [nombre]
La secuencia %p [nombre] se sustituye por el valor especificado en el perfil de entrada para el nombre de
la propiedad. Por ejemplo, los siguientes prerrequisitos utilizan la secuencia %p [nodeId] para comprobar
que el id de nodo del sistema local (devuelto por el mandato uname –f ) coincide con el id de nodo
almacenado en la propiedad de nodeId del perfil:

<PrereqDef id="nodeId">
<Command>[[ `/usr/bin/uname -f` = %p[nodeId] ]]</Command>
<ErrMessage>Parameter cannot be applied to a different node</ErrMessage>
</PrereqDef>

Secuencia %c
La secuencia %c se sustituye por el ID del archivo de catálogo al que pertenece el parámetro. Este es el
id de catálogo especificado en el perfil, que puede ser distinto del ID del catálogo que realmente define el
parámetro si se utiliza la herencia de catálogo.
Por ejemplo, los siguientes prerrequisitos utilizan la secuencia %c para comprobar que uniquetype del
dispositivo de destino coincide con el nombre del archivo de catálogo:

<PrereqDef id="devUniqueType">
<Command>[[ "devParam.`/usr/sbin/lsdev -F uniquetype -l %t[device] | /usr/bin/tr / .`" =
%c ]]</Command>
<ErrMessage>Parameter cannot be applied to a different device type</ErrMessage>
</PrereqDef>

Mandatos y procesos
Un mandato es una petición para realizar una operación o para ejecutar un programa. Un proceso es un
programa o mandato que se ejecuta realmente en el sistema.
Debe utilizar los mandatos para indicar al sistema operativo qué tarea desea efectuar. Cuando se entran
mandatos, un intérprete de mandatos (también conocido como shell) los descifra y dicha tarea se
procesa.
El sistema operativo puede ejecutar distintos procesos al mismo tiempo.
El sistema operativo le permite manipular la entrada y la salida (E/S) de los datos hacia y desde el sistema
utilizando mandatos y símbolos de E/S específicos. Puede controlar la entrada especificando la ubicación
de donde se recogerán datos. Por ejemplo, puede especificar la lectura de la entrada que se escribe en el
teclado (entrada estándar) o la lectura de la entrada desde un archivo. Puede controlar la salida
especificando dónde visualizar o almacenar datos. Por ejemplo, puede especificar grabar datos en la
pantalla (salida estándar) o grabar en un archivo.

Gestión del sistema operativo 129


Mandatos
Algunos mandatos pueden entrarse simplemente escribiendo una palabra. También es posible combinar
mandatos de forma que la salida de un mandato se convierta en la entrada para otro mandato.
La combinación de mandatos de modo que la salida de un mandato se convierta en la entrada de otro se
denomina conexión.
Los distintivos definen de forma más detallada las acciones de los mandatos. Un distintivo es un
modificador que se utiliza con el nombre del mandato en la línea de mandatos, por lo general, precedido
de un guión.
También pueden agruparse los mandatos y almacenarse en un archivo. Estos archivos se conocen como
procedimientos de shell o scripts de shell. En lugar de ejecutar los mandatos individualmente, se ejecuta
el archivo que contiene los mandatos.
Para entrar un mandato, escriba el nombre del mandato en el indicador de mandatos y pulse Intro.

$ NombreMandato

Conceptos relacionados
Funciones del shell
Existen ventajas de utilizar el shell como interfaz para el sistema.
Tareas relacionadas
Creación y ejecución de script de shell
Un script de shell es un archivo que contiene uno o varios mandatos. Gracias a los scripts de shell puede
ejecutar fácilmente mandatos aburridos, secuencias de mandatos largas o complicadas y tareas de
rutina. Al entrar el nombre de un archivo de script de shell, el sistema ejecuta la secuencia de mandatos
que contiene el archivo.

Sintaxis y nombres de mandatos


Aunque algunos mandatos pueden entrarse simplemente escribiendo una palabra, otros mandatos
utilizan distintivos y parámetros. Cada mandato tiene una sintaxis que designa los distintivos y
parámetros obligatorios y opcionales.
El formato general de un mandato es el siguiente:

NombreMandato distintivo(s) parámetro(s)

A continuación se indican algunas normas generales acerca de los mandatos:


• Los espacios entre mandatos, distintivos y parámetros son importantes.
• Pueden entrarse dos mandatos en la misma línea separándolos con un punto y coma (;). Por ejemplo:

$ MandatoUno;MandatoDos

El shell ejecuta los mandatos secuencialmente.


• Los mandatos son sensibles a las mayúsculas y minúsculas. El shell distingue entre letras en
mayúsculas y letras en minúsculas. Para el shell, print no es lo mismo que PRINT o que Print.
• Un mandato muy largo se puede entrar en más de una línea utilizando el carácter de barra inclinada
invertida (\). Una barra inclinada invertida significa continuación de línea para el shell. En el ejemplo
siguiente se muestra un mandato que abarca dos líneas:

$ ls Mail info temp \


(pulse Intro)

> diary
(aparece el indicador >)

El carácter > es el indicador secundario ($ es el indicador primario predeterminado del usuario que no
es root), lo que indica que la línea actual es la continuación de la línea anterior. Tenga en cuenta que
csh (el shell C) no proporciona ningún indicador secundario, la interrupción debe estar en el límite de
una palabra y su indicador primario es %.

130 AIX Versión 7.2: Gestión del sistema operativo


La primera palabra de cada mandato es el nombre del mandato. Algunos mandatos sólo tienen un
nombre de mandato.

Distintivos de los mandatos


Tras el nombre del mandato pueden especificarse varios distintivos. Los distintivos modifican la
operación que realiza un mandato y, en ocasiones, se denominan opciones.
Los distintivos van separados por espacios o tabulaciones y normalmente comienzan por un guión (-). Las
excepciones son ps, tar y ar, que no requieren un guión delante de algunos distintivos. Por ejemplo, en
el siguiente mandato:

ls -a -F

ls es el nombre del mandato y -a -F son los distintivos.


Cuando un mandato utiliza distintivos, se sitúan directamente después del nombre del mandato. Los
distintivos de un solo carácter en un mandato pueden combinarse con un guión. Por ejemplo, el mandato
anterior también puede escribirse de la forma siguiente:

ls -aF

Existen circunstancias en las que un parámetro empieza realmente con un guión (-). En este caso, utilice
el delimitador guión guión (—) delante del parámetro. El delimitador del guión doble — indica al mandato
que el elemento que le sigue no es un distintivo, sino un parámetro.
Por ejemplo, si deseara crear un directorio llamado -tmp y escribiera el mandato siguiente:

mkdir -tmp

El sistema visualizaría un mensaje de error parecido al siguiente:

mkdir: No es un distintivo reconocido: t


Uso: mkdir [-p] [-m modalidad] Directorio ...

La forma correcta de escribir el mandato es la siguiente:

mkdir -- -tmp

Ahora se crea el nuevo directorio, -tmp.

Parámetros de los mandatos


Tras el nombre del mandato puede haber varios distintivos, seguidos de parámetros. A veces, los
parámetros se denominan argumentos u operandos. Los parámetros especifican información que el
mandato necesita para su ejecución.
Si no especifica un parámetro, el mandato podría dar por supuesto un valor predeterminado. Por ejemplo,
en el siguiente mandato:

ls -a temp

ls es el nombre del mandato, -a es el distintivo y temp es el parámetro. Este mandato visualiza todos (-a)
los archivos del directorio temp.
En el ejemplo siguiente:

ls -a

el valor predeterminado es el directorio actual, ya que no se ha especificado ningún parámetro.


En el ejemplo siguiente:

ls temp mail

Gestión del sistema operativo 131


no se proporciona ningún distintivo y temp y mail son parámetros. En este caso, temp y mail son dos
nombres de directorios distintos. El mandato ls visualiza todos los archivos a excepción de los archivos
ocultos de cada uno de estos directorios.
Siempre que un parámetro u opción-argumento sea, o contenga, un valor numérico, el número se
interpretará como entero decimal, a menos que se especifique algo distinto. Los números en el rango de
0 a INT_MAX, tal como se ha definido en el archivo /usr/include/sys/limits.h, se reconocen
sistemáticamente como valores numéricos.
Si un mandato que desea utilizar acepta números negativos como parámetros u opciones-argumentos,
puede utilizar números en el rango de INT_MIN a INT_MAX, tal como se han definido ambos en el
archivo /usr/include/sys/limits.h. Esto no significa necesariamente que todos los números que
están comprendidos dentro de este rango sean semánticamente correctos. Algunos mandatos tienen una
especificación incorporada que permite un rango de números menor, por ejemplo algunos de los
mandatos de impresión. Si se genera un error, el mensaje de error le permite saber que el valor no está en
el rango soportado y no que el mandato es sintácticamente incorrecto.

Sentencias de uso
Las sentencias de uso son una forma de representar la sintaxis del mandato y se componen de símbolos
como, por ejemplo, los corchetes ([ ]), las llaves ({ }) y las barras verticales (|).
A continuación se muestra un ejemplo de una sentencia de uso para el mandato unget:
unget [ -rSID ] [ -s ] [ -n ] Archivo ...
En las sentencias de uso de los mandatos se utilizan los convenios siguientes:
• Los elementos que deben especificarse literalmente en la línea de mandatos aparecen en negrita.
Estos elementos incluyen el nombre del mandato, los distintivos y los caracteres literales.
• Los elementos que representan variables que deben sustituirse por un nombre aparecen en cursiva.
Estos elementos incluyen los parámetros que siguen a los indicadores y los parámetros que el mandato
lee como, por ejemplo, los Archivos y los Directorios.
• Los parámetros delimitados por corchetes son opcionales.
• Los parámetros incluidos entre llaves son obligatorios.
• Los parámetros que no están delimitados por corchetes o por llaves son obligatorios.
• Una barra vertical significa que sólo se elige un parámetro. Por ejemplo, [ a | b ] indica que puede elegir
entre a, b o nada. Del mismo modo, { a | b } indica que debe elegir a o bien b.
• Los puntos suspensivos ( ... ) significan que el parámetro se puede repetir en la línea de mandatos.
• El guión ( - ) representa la entrada estándar.

Mandato shutdown
Si tiene autorización de usuario root, puede utilizar el mandato shutdown para detener el sistema. Si no
tiene autorización para utilizar el mandato shutdown, simplemente finalice la sesión del sistema
operativo y déjelo en ejecución.
Atención: No apague el sistema sin cerrarlo antes. Si apagara el sistema, finalizarían todos los
procesos que se ejecutan en el sistema. Si existen otros usuarios que están trabajando en el
sistema, o si existen trabajos en segundo plano en ejecución, podrían perderse datos. Antes de
detener el sistema, realice los procedimientos de conclusión adecuados.
En el indicador de mandatos, escriba lo siguiente:

shutdown

Cuando se complete el mandato shutdown y el sistema operativo detenga su ejecución, recibirá el


mensaje siguiente:

....Cierre completado....

Consulte el mandato shutdown para ver la sintaxis completa.

132 AIX Versión 7.2: Gestión del sistema operativo


Localización de otro mandato o programa (mandato whereis)
El mandato whereis localiza las secciones correspondientes a fuente, binario y manuales de los archivos
especificados. El mandato intenta localizar el programa deseado en una lista de ubicaciones estándares.
Vea los ejemplos siguientes:
• Para buscar los archivos del directorio actual que no tienen ninguna documentación, escriba lo
siguiente:

whereis -m -u *

• Para buscar todos los archivos que contienen el nombre Mail, escriba lo siguiente:

whereis Mail

El sistema mostrará una información parecida a esta:

Mail: /usr/bin/Mail /usr/lib/[Link]

Visualización de información acerca de un mandato (mandato man)


El mandato man visualiza información acerca de los mandatos, las subrutinas y los archivos.
El formato general del mandato man es el siguiente:

man NombreMandato

Para obtener información acerca del mandato pg, escriba lo siguiente:

man pg

El sistema mostrará una información parecida a esta:

Mandato pg

Objetivo

Formatea archivos en la pantalla.

Sintaxis

pg [ - Número ] [ -c ] [ -e ] [ -f ] [ -n ] [ -p Serie ]
[ -s ] [ +NúmeroLínea | +/Patrón/ ] [ Archivo ... ]

Descripción

El mandato pg lee un nombre de archivo del parámetro Archivo y


graba el archivo en salida estándar, una pantalla cada vez. Si
especifica un - (guión) como parámetro Archivo o ejecuta el mandato pg
sin opciones, el mandato pg lee la entrada estándar. A cada
pantalla le sigue un indicador. Si pulsa la tecla Intro,
se visualiza otra página. Los submandatos utilizados con el mandato pg
le permiten revisar o buscar en el archivo.

Visualización de la función de un mandato (mandato whatis)


El mandato whatis busca un mandato, una llamada al sistema, una función de biblioteca o un nombre de
archivo especial determinado, según lo especificado en el parámetro Mandato, en una base de datos que
se crea utilizando el mandato catman -w.
Para obtener información acerca del mandato catman -w, consulte catman -w. El mandato whatis
visualiza la línea de cabecera de la sección de manuales. A continuación puede emitir el mandato man
para obtener información adicional. Para obtener información acerca del mandato man, consulte man.
El mandato whatis es equivalente a utilizar el mandato man -f.
Para averiguar qué hace el mandato ls, escriba lo siguiente:

whatis ls

Gestión del sistema operativo 133


El sistema mostrará una información parecida a esta:

ls(1) -Muestra el contenido de un directorio.

Listado de los mandatos entrados anteriormente (mandato history)


Utilice el mandato history para listar los mandatos que ha entrado anteriormente.
El mandato history es un mandato incorporado del shell Korn que lista los 16 últimos mandatos que se
han entrado. El shell Korn guarda los mandatos que ha entrado en un archivo histórico de mandatos, por
lo general denominado $HOME/.sh_history. La utilización de este mandato le ahorra tiempo cuando
tiene que repetir un mandato anterior.
Por omisión, el shell Korn guarda el texto de los 128 últimos mandatos para usuarios que no son root y de
los 512 últimos mandatos para el usuario root. El tamaño del archivo histórico (que se especifica
mediante la variable de entorno HISTSIZE) no está limitado, aunque un tamaño de archivo histórico muy
grande puede dar lugar a que el inicio del shell Korn sea lento.
Nota: El shell Bourne no soporta el mandato history.
Para listar los mandatos que ha entrado anteriormente, en el indicador de mandatos escriba lo siguiente:

history

El mandato history que él mismo entra muestra una lista con los 16 mandatos anteriormente entrados.
El sistema mostrará una información parecida a esta:

928 ls
929 mail
930 printenv MAILMSG
931 whereis Mail
932 whatis ls
933 cd /usr/include/sys
934 ls
935 man pg
936 cd
937 ls | pg
938 lscons
939 tty
940 ls *.txt
941 printenv MAILMSG
942 pwd
943 history

El listado muestra en primer lugar la posición del mandato en el archivo $HOME/.sh_history y luego el
mandato.
Para listar los cinco mandatos anteriores, en el indicador de mandatos escriba lo siguiente:

history -5

Se visualiza una lista similar a la siguiente:

939 tty
940 ls *.txt
941 printenv MAILMSG
942 pwd
943 history
944 history -5

El mandato history seguido de un número muestra una lista de todos los mandatos entrados
anteriormente, empezando por el número de mandato indicado.
Para listar los mandatos desde el número 938, en el indicador de mandatos escriba lo siguiente:

history 938

Se visualiza una lista similar a la siguiente:

134 AIX Versión 7.2: Gestión del sistema operativo


938 lscons
939 tty
940 ls *.txt
941 printenv MAILMSG
942 pwd
943 history
944 history -5
945 history 938

Conceptos relacionados
Shells del sistema operativo
La interfaz con el sistema operativo se denomina shell.
Sustitución del histórico de mandatos
Utilice el mandato incorporado fc para listar o editar partes del archivo histórico. Para seleccionar una
parte del archivo a editar o listar, especifique el número del primer carácter o caracteres del mandato.

Repetición de mandatos utilizando el alias r


Para repetir mandatos anteriores, utilice el alias del shell Korn r.
Escriba r y pulse Intro y podrá especificar el número o el primer carácter o caracteres del mandato.
Si desea listar las pantallas que están actualmente disponibles en el sistema, escriba lsdisp en el
indicador. El sistema devuelve la información en la pantalla. Si desea que vuelva a mostrarse la misma
información, en el indicador de mandatos escriba lo siguiente:

El sistema vuelve a ejecutar el mandato que se ha entrado más recientemente. En este ejemplo, se
ejecuta el mandato lsdisp.
Para repetir el mandato ls *.txt, en el indicador, escriba lo siguiente:

r ls

El alias del shell Korn r localiza el mandato más reciente que empieza por el carácter o caracteres
especificados.

Sustitución de series utilizando el alias r


Puede utilizar el alias del shell Korn r para modificar un mandato antes de ejecutarlo.
En este caso, se puede utilizar un parámetro de sustitución con el formato Antiguo=nuevo para modificar
el mandato antes de ejecutarlo.
Los ejemplos siguientes muestran cómo utilizar el alias r:
• Si la línea de mandatos 940 es ls *.txt, y desea ejecutar ls *.exe, en el indicador escriba lo
siguiente:

r txt=exe 940

Con ello se ejecutará el mandato 940, sustituyéndose exe por txt.


• Si el mandato de la línea 940 es el mandato más reciente que empieza por la letra minúscula l, también
puede escribir lo siguiente:

r txt=exe l

Nota: Sólo se sustituye la primera ocurrencia de la serie Antigua por la serie Nueva. Si se entra el alias de
shell Korn r sin un número de mandato o carácter específico, la sustitución se efectúa en el mandato
entrado anteriormente.

Edición del histórico de mandatos


El mandato incorporado del shell Korn fc se utiliza para listar o editar partes del archivo histórico de
mandatos.

Gestión del sistema operativo 135


Para seleccionar una parte del archivo a editar o listar, especifique el número del primer carácter o
caracteres del mandato. Puede especificar un solo mandato o un rango de mandatos.
Si no especifica un programa editor como argumento para el mandato incorporado del shell Korn fc, se
utiliza el editor especificado por la variable FCEDIT. Si no se ha definido la variable FCEDIT, se utiliza el
editor /usr/bin/ed. El mandato o mandatos editados se imprimen y ejecutan cuando sale del editor.
Utilice el mandato printenv para visualizar el valor de la variable FCEDIT.
A continuación se muestran ejemplos de cómo editar el histórico de mandatos:
• Si desea ejecutar el mandato:

cd /usr/tmp

que es muy similar a la línea de mandatos 933, en el indicador de mandatos escriba lo siguiente:

fc 933

En este punto, aparece el editor por omisión con la línea de mandatos 933. Debe cambiar
include/sys por tmp y, cuando salga del editor, se ejecutará el mandatos editado.
• También puede especificar el editor que desea utilizar en el mandato fc. Por ejemplo, si desea editar
un mandato utilizando el editor /usr/bin/vi, en el indicador, escriba lo siguiente:

fc -e vi 933

En este punto, aparece el editor vi con la línea de mandatos 933.


• También puede especificar un rango de mandatos para editar. Por ejemplo, si desea editar los
mandatos del 930 al 940, en el indicador de mandatos escriba lo siguiente:

fc 930 940

En este punto, aparece el editor por omisión con las líneas de mandato 930 a 940. Cuando salga del
editor, todos los mandatos que aparezcan en el editor se ejecutan secuencialmente.

Creación de un alias de mandato (mandatos de shell alias)


Un alias le permite crear un nombre abreviado para un mandato, un nombre de archivo o cualquier texto
del shell. Utilizando alias, puede ahorrarse tiempo cuando efectúa tareas de proceso frecuente. Puede
crear un alias de mandato.
Utilice el mandato incorporado del shell Korn alias para definir un palabra como alias para algún
mandato. Puede utilizar alias para redefinir mandatos incorporados, pero no para redefinir palabras
reservadas.
El primer carácter de un nombre de alias puede ser cualquier carácter imprimible, a excepción de los
metacaracteres. Los caracteres restantes deben ser los mismos que los de un nombre de archivo válido.
El formato para crear un alias es el siguiente:

alias Nombre=
Serie

donde el parámetro Nombre especifica el nombre del alias y el parámetro Serie especifica una serie de
caracteres. Si la Serie contiene espacios en blanco, especifíquela entre comillas.
A continuación se proporcionan ejemplos sobre cómo crear un alias:
• Para crear un alias para el mandato rm -i (le pregunta antes de suprimir los archivos), en el indicador
de mandatos escriba lo siguiente:

alias rm="/usr/bin/rm -i"

En este ejemplo, siempre que especifique el mandato rm, el mandato real ejecutado es /usr/bin/rm
-i.

136 AIX Versión 7.2: Gestión del sistema operativo


• Para crear un alias denominado dir para el mandato ls -alF | pg (que visualiza información
detallada de todos los archivos del directorio actual, incluyendo los archivos invisibles; marca los
archivos ejecutables con un * y los directorios con una /; y se desplaza por la pantalla), escriba lo
siguiente en el indicador:

alias dir="/usr/bin/ls -alF | pg"

En este ejemplo, siempre que especifique el mandato dir, el mandato real ejecutado es /usr/bin/ls
-alF | pg.
• Para que se visualicen todos los alias de que dispone, en el indicador de mandatos escriba lo siguiente:

alias

El sistema mostrará una información parecida a esta:

rm="/usr/bin/rm -i"
dir="/usr/bin/ls -alF | pg"

Conceptos relacionados
Alias de mandatos en el shell Korn o shell POSIX
El shell Korn o el shell POSIX le permiten crear alias para personalizar mandatos.

Soporte internacional de caracteres en formateo de texto


Puede utilizar mandatos de formateo de texto para trabajar con texto compuesto por el juego de
caracteres ampliado internacional que se utiliza para idiomas europeos.
El juego de caracteres ampliado internacional proporciona los caracteres y símbolos utilizados en muchos
idiomas europeos, además de un subconjunto ASCII compuesto de los caracteres, dígitos y puntuación
del idioma inglés.
Todos los caracteres del juego de caracteres ampliado europeo tienen formatos ASCII. Estos formatos
pueden utilizarse para representar los caracteres ampliados en la entrada; por otra parte, los caracteres
puede escribirse directamente con un dispositivo como, por ejemplo, un teclado que dé soporte a los
caracteres ampliados europeos.
Los siguientes mandatos de formateo de texto aceptan todos los idiomas internacionales que utilizan
caracteres de un solo byte. Estos mandatos se encuentran en /usr/bin. (Los mandatos que se
identifican con un asterisco (*) dan soporte al proceso de texto en varios idiomas.

addbib* hyphen pic* pstext


checkmm ibm3812 ps4014 refer*
checknr* ibm3816 ps630 roffbib*
col* ibm5587G* psbanne soelim*
colcrt ibm5585H-T* psdit sortbib*
deroff* indxbib* psplot tbl*
enscript lookbib* psrev troff*
eqn* makedev* psroff vgrind
grap* neqn* psrv xpreview*
hplj nroff*

Los mandatos de formateo de texto y los paquetes de macros que no están en la lista anterior no se han
habilitado para procesar los caracteres internacionales.
Conceptos relacionados
Soporte de caracteres de varios bytes en formateo de texto
Determinados mandatos de formateo de texto se pueden utilizar para procesar texto para idiomas
multibyte.

Formato de texto con caracteres ampliados de un solo byte


Si el dispositivo de entrada que utiliza da soporte a los caracteres del juego de caracteres ampliado para
idiomas europeos, puede escribirlos directamente.

Gestión del sistema operativo 137


De lo contrario, utilice el siguiente formato de escape ASCII para representar dichos caracteres:
El formato \[N ], donde N es el código hexadecimal de 2 o de 4 dígitos del carácter.
Nota: El formato NCesc \<xx> ya no está soportado.
Al texto que contiene caracteres ampliados se le da salida de acuerdo con los convenios de formateo del
idioma en uso. Los caracteres que no están definidos para la interfaz a un dispositivo de salida específico
no generan salida ni indicación de errores.
Aunque los nombres de las peticiones, paquetes de macros y mandatos están basados en el inglés, la
mayoría de ellos pueden aceptar entrada (por ejemplo, nombres de archivos y parámetros) que incluya
caracteres del juego de caracteres ampliado europeo.
Respecto a los mandatos nroff y troff y sus predecesores, la entrada del mandato debe ser ASCII o se
producirá un error de sintaxis no recuperable. Los caracteres internacionales, de un solo byte o de varios
bytes, pueden escribirse cuando éstos se especifican entre comillas y dentro de otro texto que tenga que
formatearse. Por ejemplo, utilizando macros desde el mandato pic:

define foobar % AlgúnTexto %

Después de la directiva define, el nombre especificado, foobar, debe ser ASCII. Sin embargo, el texto
de sustitución, AlgúnTexto, puede contener caracteres que no sean ASCII.

Soporte de caracteres de varios bytes en formateo de texto


Determinados mandatos de formateo de texto se pueden utilizar para procesar texto para idiomas
multibyte.
Estos mandatos se identifican con un asterisco (*) en la lista de Soporte internacional de caracteres en
formateo de texto. Los mandatos de formateo de texto que no están en la lista no se han habilitado para
procesar caracteres internacionales.
Los caracteres de varios bytes pueden escribirse directamente, si el dispositivo de entrada da soporte a
éstos. En caso contrario, puede escribir cualquier carácter de varios bytes en el formato ASCII \[N], donde
la N es la codificación hexadecimal de 2, 4, 6, 7 u 8 dígitos del carácter.
Aunque los nombres de las peticiones, macros y mandatos están basados en el inglés, la mayoría de ellos
pueden aceptar entrada (por ejemplo, nombres de archivos y parámetros) que incluya cualquier tipo de
carácter multibyte.
Si ya está familiarizado con la utilización de mandatos de formateo de texto de un solo byte, la lista
siguiente resume las características que son indicativas o exclusivas para los escenarios multibyte:
• El texto no está delimitado por guiones.
• Se requieren tipos de formatos especiales para salida numérica multibyte. Están disponibles los tipos
de formato japoneses.
• Se da salida al texto en líneas horizontales, rellenadas de izquierda a derecha.
• El espaciado de caracteres es constante, de forma que los caracteres se alineen automáticamente en
columnas.
• Los caracteres que no están definidos para la interfaz a un dispositivo de salida específico no generan
salida ni indicación de errores.
Conceptos relacionados
Soporte internacional de caracteres en formateo de texto
Puede utilizar mandatos de formateo de texto para trabajar con texto compuesto por el juego de
caracteres ampliado internacional que se utiliza para idiomas europeos.

Visualización de un calendario
Puede grabar un calendario en la salida estándar utilizando el mandato cal.
El parámetro Mes denomina el mes para el que se desea el calendario. Puede ser un número de 1 a 12
para los meses de enero a diciembre, respectivamente. Si no se especifica el Mes, el mandato cal toma
el valor predeterminado del mes actual.

138 AIX Versión 7.2: Gestión del sistema operativo


El parámetro Año denomina el año para el que se desea el calendario. Puesto que el mandato cal puede
mostrar un año para cada año de 1 a 9999, teclee el año completo en lugar de sólo los dos últimos
dígitos. Si no especifica el Año, el mandato cal toma el valor predeterminado del año actual.
Lo siguiente son ejemplos del modo de utilizar el mandato cal:
1. Para visualizar un calendario de febrero de 2002 en la estación de trabajo, teclee:

cal 2 2002

2. Pulse Intro.
3. Para imprimir un calendario del año 2002, teclee:

cal 2002 | qprt

4. Pulse Intro.

Visualización de mensajes de recordatorio


Puede visualizar un mensaje de recordatorio al leer un archivo denominado calendar. Este archivo se
crea en el directorio padre con el mandato calendar. El mandato graba en salida estándar cualquier
línea del archivo que contiene la fecha del día actual o del día siguiente.
Puede leer un archivo denominado calendar, que el usuario crea en el directorio padre con el mandato
filepath. El mandato graba en salida estándar cualquier línea del archivo que contiene la fecha del día
actual o del día siguiente.
El mandato calendar reconoce formatos de fecha como, por ejemplo, 7 de dic. o 12/7. También
reconoce el asterisco de carácter especial (*) cuando va seguido de una barra inclinada (/). Por ejemplo,
interpreta */7 como el séptimo día de cada mes.
Los viernes, el mandato calendar graba todas las líneas que contienen las fechas para viernes, sábado,
domingo y lunes. Sin embargo, el mandato no reconoce los días festivos. En los días festivos, el mandato
funciona del modo habitual y sólo proporciona la planificación del día siguiente.

Uso de un archivo de calendario típico


Un archivo calendar típico puede tener un aspecto similar al siguiente:

*/25 - Preparar informe mensual


12 agosto - Vuelo a Madrid
23 agosto - reunión de la junta directiva
Marta ausente - 8/23, 8/24, 8/25
8/24 - pago coche
sab agos/25 - excursión a la playa
27 agosto - Reunión con García
28 agosto - Reunión con Domínguez

Para ejecutar el mandato calendar, escriba:

calendario

Si hoy es viernes, 24 de agosto, el mandato calendar muestra lo siguiente:

*/25 - Preparar informe mensual


Marta ausente - 8/23, 8/24, 8/25
8/24 - pago coche
sab agos/25 - excursión a la playa
27 agosto - Reunión con García

Uso de un archivo de calendario que contiene una sentencia de inclusión


Un archivo calendar que contiene una sentencia de inclusión puede tener un aspecto similar al
siguiente:

#include </tmp/out>
1/21 -Revisión anual

Gestión del sistema operativo 139


1/21 -Reunión de proyecto semanal
1/22 *Reunión con Martínez en Barcelona*
Cita con el médico - 1/23
1/23 -Boda de Vinh

Para ejecutar el mandato calendar, escriba:

calendario

Si hoy es miércoles, 21 de enero, el mandato calendar muestra lo siguiente:

21 de enero Fiesta de despedida de David


22 de enero Reunión de accionistas en Bilbao
1/21 -Revisión anual
1/21 -Reunión de proyecto semanal
1/22 *Reunión con Martínez en Barcelona*

Los resultados del mandato calendar indican el archivo /tmp/out contenido en las líneas siguientes:

21 de enero Fiesta de despedida de David


22 de enero Reunión de accionistas en Bilbao

Descomposición de un número en factores


El mandato factor le permite descomponer números en factores.
Cuando se llama sin especificar un valor para el parámetro Number, el mandato factor espera a que el
usuario entre un número positivo inferior a 1E14 (100,000,000,000,000). A continuación, graba los
factores principales de dicho número en la salida estándar. Muestra cada factor por orden, así como el
número correspondiente de veces en caso de que el mismo factor se utilice varias veces. Para salir, entre
0 (cero) o cualquier carácter no numérico.
Cuando se llama con un argumento, el mandato factor determina los factores principales del parámetro
Number, graba los resultados en la salida estándar y efectúa la salida.
Lo siguiente es un ejemplo de cómo calcular factores:
1. Para calcular los factores principales del número 123, escriba:

factor 123

2. Pulse Intro. Se muestra lo siguiente:

123 3 41

Localización de un mandato por palabra clave


Puede visualizar las secciones de las páginas man en cuyo título contienen cualquiera de las palabras
clave dadas utilizando el mandato apropos.
El mandato apropos considera que cada palabra por separado no es sensible a las mayúsculas y
minúsculas. También se muestran las palabras que forman parte de otras palabras. Por ejemplo, cuando
se busca la palabra compila, el mandato apropos también encuentra todas las instancias de la palabra
compilador.
Nota: la base de datos que contiene las palabras clave es /usr/share/man/whatis, que primero se
debe generar con el mandato catman -w.
El mandato apropos es equivalente a utilizar el mandato man con la opción -k.
Por ejemplo, para buscar las secciones del manual que contengan la palabra password en sus títulos,
ejecute el mandato siguiente:

apropos password

Procesos
Un programa o mandato que se ejecuta realmente en el sistema recibe la denominación de proceso.

140 AIX Versión 7.2: Gestión del sistema operativo


Los procesos existen en jerarquías de padre-hijo. Un proceso iniciado por un programa o mandato es un
proceso padre; un proceso hijo es el producto del proceso padre. Un proceso padre puede tener varios
procesos hijo, pero un proceso hijo sólo puede tener un padre.
El sistema asigna un número de identificación de proceso (número PID) a cada proceso cuando se inicia.
Si inicia el mismo programa varias veces, tendrá un número PID distinto cada vez.
Cuando se inicia un proceso en un sistema, el proceso utiliza una parte de los recursos disponibles en el
sistema. Cuando está ejecutándose más de un proceso, un planificador que está incorporado al sistema
operativo proporciona a cada proceso su parte de tiempo del sistema, basándose en las prioridades
establecidas. Estas prioridades pueden cambiarse mediante la utilización de los mandatos nice o
renice.
Nota: Para cambiar la prioridad de un proceso por una más alta, debe tener autorización de usuario root.
Todos los usuarios pueden reducir las prioridades de un proceso que inician utilizando el mandato nice o
de un proceso que ya han iniciado utilizando el mandato renice.
La lista siguiente describe los tipos de procesos:
Procesos en primer plano y en segundo plano
Los procesos que necesitan que un usuario los inicie o que interactúe con ellos se denominan
procesos en primer plano. Los procesos que se ejecutan con independencia de un usuario se
denominan procesos en segundo plano. Los programas y los mandatos se ejecutan como procesos en
primer plano por omisión. Para ejecutar un proceso en segundo plano, coloque un ampersand (&) al
final del nombre del mandato que utiliza para iniciar el proceso.
Procesos daemon
Los daemons son procesos que se ejecutan de forma desatendida. Están constantemente en el
segundo plano y están disponibles siempre. Los daemons suelen iniciarse cuando se arranca el
sistema y se ejecutan hasta que se detiene el sistema. Un proceso daemon efectúa servicios del
sistema y está disponible siempre para más de una tarea o usuario. El usuario root o el shell root
inicia los procesos daemon y sólo puede detenerlos el usuario root. Por ejemplo, el proceso qdaemon
proporciona acceso a los recursos del sistema como las impresoras. Otro daemon habitual es el
daemon sendmail.
Procesos zombie
Un proceso zombie es un proceso finalizado que ya no se ejecuta pero que sigue reconociéndose en la
tabla de procesos (en otras palabras, tiene un número PID). Ya no se asigna espacio del sistema a
dicho proceso. Los procesos zombie han sido cerrados o han salido y siguen existiendo en la tabla de
procesos hasta que muere el proceso padre o se apaga el sistema y se reinicia. Los procesos zombie
se visualizan como <defunct> cuando se listan por el mandato ps.

Arranque del proceso


Puede iniciar un proceso en primer plano desde una estación de pantalla entrando el nombre de un
programa o el nombre de un mandato en el indicador del sistema.
Tras iniciarse un proceso en primer plano, el proceso interactúa con el usuario en la estación de pantalla
hasta que se completa. Esto significa que no puede producirse ninguna otra interacción (como, por
ejemplo, entrar otro mandato) en la estación de pantalla hasta que el proceso haya finalizado o hasta que
lo interrumpa.
Un solo usuario puede ejecutar más de un proceso al mismo tiempo, hasta un valor máximo por omisión
de 40 procesos por usuario.
Inicio de un proceso en primer plano
Para iniciar un proceso en primer plano, entre el nombre del mandato con los parámetros y distintivos
adecuados:

$ NombreMandato

Gestión del sistema operativo 141


Inicio de un proceso en segundo plano
Para ejecutar un proceso en el fondo, escriba el nombre del mandato con los parámetros y distintivos
adecuados, seguido de un ampersand (&):

$ NombreMandato&

Cuando un proceso se ejecuta en segundo plano, puede realizar tareas adicionales entrando otros
mandatos en la estación de pantalla.
Generalmente, los procesos en segundo plano son más útiles para mandatos que tardan mucho en
ejecutarse. Sin embargo, puesto que aumentan la cantidad total de trabajo que efectúa el procesador,
los procesos en segundo plano pueden reducir la velocidad del resto del sistema.
La mayoría de los procesos dirigen la salida a salida estándar, aunque se ejecuten en segundo plano.
A menos que se haya redirigido, la salida estándar se presenta en el dispositivo de pantalla. Puesto
que la salida de un proceso en segundo plano puede interferir con otros trabajos del sistema, es útil
redirigir la salida de los procesos en segundo plano a un archivo o a una impresora. De este modo,
podrá ver la salida cuando lo desee.
Nota: Bajo ciertas circunstancias, un proceso puede generar su salida en una secuencia diferente
cuando se ejecuta en el fondo a cuando se ejecuta en primer plano. Puede que los programadores
deseen utilizar la subrutina fflush para garantizar que la salida se produzca en el orden correcto,
con independencia de si el proceso se ejecuta en primer plano o en segundo plano.
Mientras se ejecuta un proceso en el fondo, puede comprobar su estado con el mandato ps.

Mandato para comprobar el estado de procesos (mandato ps)


Cuando el sistema está en ejecución, también están ejecutándose procesos. Puede utilizar el mandato ps
para averiguar qué procesos están ejecutándose y visualizar información sobre estos procesos.
El mandato ps tiene varios distintivos que le permiten especificar qué procesos deben listarse y qué
información acerca de cada proceso debe visualizarse.
Para que se muestren todos los procesos que están ejecutándose en el sistema, escriba lo siguiente en el
indicador de mandatos:

ps -ef

El sistema visualiza información similar a la siguiente:

USER PID PPID C STIME TTY TIME CMD


root 1 0 0 Jun 28 - 3:23 /etc/init
root 1588 6963 0 Jun 28 - 0:02 /usr/etc/biod 6
root 2280 1 0 Jun 28 - 1:39 /etc/syncd 60
mary 2413 16998 2 [Link] - 0:05 aixterm
mary 11632 16998 0 [Link] lft/1 0:01 xbiff
mary 16260 2413 1 [Link] pts/1 0:00 /bin/ksh
mary 16469 1 0 [Link] lft/1 0:00 ksh /usr/lpp/X11/bin/xinit
mary 19402 16260 20 [Link] pts/1 0:00 ps -ef

A continuación se muestran las definiciones de las columnas de la salida anterior:

Eleme Descripción
nto
USER El nombre de inicio de sesión del usuario
PID ID del proceso
PPID ID del proceso padre
C Utilización de CPU del proceso
STIME Hora de inicio del proceso
TTY Estación de trabajo controladora del proceso

142 AIX Versión 7.2: Gestión del sistema operativo


Eleme Descripción
nto
TIME Tiempo total de ejecución del proceso
CMD Mandato

En el ejemplo anterior, el ID de proceso para el mandato ps -ef es 19402. El ID de proceso padre es


16260, el mandato /bin/ksh.
Si el listado es muy largo, la parte superior se desplaza fuera de la pantalla. Para visualizar la lista de
modo que se muestre una página (pantalla) cada vez, conecte el mandato ps con el mandato pg. En el
indicador de mandatos, escriba lo siguiente:

ps -ef | pg

Para visualizar información sobre el estado de todos los procesos que se ejecutan en el sistema, escriba
lo siguiente en el indicador de mandatos:

ps gv

Este formato del mandato lista estadísticas de cada proceso activo. La salida de este mandato tiene un
aspecto similar al siguiente:

PID TTY STAT TIME PGIN SIZE RSS LIM TSIZ TRS %CPU %MEM COMMAND
0 - A 0:44 7 8 8 xx 0 0 0.0 0.0 swapper
1 - A 1:29 518 244 140 xx 21 24 0.1 1.0 /etc/init
771 - A 1:22 0 16 16 xx 0 0 0.0 0.0 kproc
1028 - A 0:00 10 16 8 xx 0 0 0.0 0.0 kproc
1503 - A 0:33 127 16 8 xx 0 0 0.0 0.0 kproc
1679 - A 1:03 282 192 12 32768 130 0 0.7 0.0 pcidossvr
2089 - A 0:22 918 72 28 xx 1 4 0.0 0.0 /etc/sync
2784 - A 0:00 9 16 8 xx 0 0 0.0 0.0 kproc
2816 - A 5:59 6436 2664 616 8 852 156 0.4 4.0 /usr/lpp/
3115 - A 0:27 955 264 128 xx 39 36 0.0 1.0 /usr/lib/
3451 - A 0:00 0 16 8 xx 0 0 0.0 0.0 kproc
3812 - A 0:00 21 128 12 32768 34 0 0.0 0.0 usr/lib/lpd/
3970 - A 0:00 0 16 8 xx 0 0 0.0 0.0 kproc
4267 - A 0:01 169 132 72 32768 16 16 0.0 0.0 /etc/sysl
4514 lft/0 A 0:00 60 200 72 xx 39 60 0.0 0.0 /etc/gett
4776 pts/3 A 0:02 250 108 280 8 303 268 0.0 2.0 -ksh
5050 - A 0:09 1200 424 132 32768 243 56 0.0 1.0 /usr/sbin
5322 - A 0:27 1299 156 192 xx 24 24 0.0 1.0 /etc/cron
5590 - A 0:00 2 100 12 32768 11 0 0.0 0.0 /etc/writ
5749 - A 0:00 0 208 12 xx 13 0 0.0 0.0 /usr/lpp/
6111 - T 0:00 66 108 12 32768 47 0 0.0 0.0 /usr/lpp/

Establecimiento de la prioridad inicial de un proceso (mandato nice)


Puede establecer la prioridad inicial de un proceso en un valor inferior que la prioridad de planificación
base.
Para establecer la prioridad inicial de un proceso en un valor inferior a la prioridad de planificación base,
utilice el mandato nice para iniciar el proceso.
Nota: Para ejecutar un proceso en una prioridad superior que la prioridad de planificación base, debe
tener autorización de usuario root.
Para establecer la prioridad inicial de un proceso, escriba lo siguiente:

nice -n Número SerieMandato

donde Número es un número comprendido entre el 0 y el 39, siendo 39 la prioridad más baja. El valor de
nice es el valor decimal de la prioridad de planificación del sistema de un proceso. Cuanto mayor sea el
número, menor será la prioridad. Si utiliza cero, el proceso se ejecutará en la prioridad de planificación
base. SerieMandato es el mandato y los distintivos y parámetros que desea ejecutar.
También puede utilizar el mandato smit nice para efectuar esta tarea.

Gestión del sistema operativo 143


Cambio de la prioridad de un proceso en ejecución (mandato renice)
Puede cambiar la prioridad de planificación de un proceso en ejecución por un valor más alto o más bajo
que el valor de la prioridad de planificación básica utilizando el mandato renice desde la línea de
mandatos. Este mandato cambia el valor de nice de un proceso.
Nota: Para ejecutar un proceso con una prioridad más alta o para cambiar la prioridad para un proceso
que no ha iniciado, debe tener autorización de usuario root.
Para cambiar la prioridad de un proceso en ejecución, escriba lo siguiente:

renice
Prioridad -p IDProceso

donde Prioridad es un número dentro del rango comprendido entre -20 y 20. Cuanto mayor sea el
número, menor será la prioridad. Si utiliza cero, el proceso se ejecutará en la prioridad de planificación
base. IDProceso es el PID para el que desea cambiar la prioridad.
También puede utilizar el mandato smit renice para efectuar esta tarea.

Cancelación de procesos en primer plano


Si inicia un proceso en primer plano y, luego, decide que no desea que se complete, puede cancelarlo
pulsando la tecla de interrupción (Inter). Dicha tecla suele ser Control-C o Control-Retroceso.
Nota: La INTERRUPCIÓN (Control-C) no cancela los procesos de fondo. Para cancelar un proceso en
segundo plano, deberá utilizar el mandato kill.
La mayoría de mandatos simples se ejecutan con tanta rapidez que finalizan antes de tener tiempo para
cancelarlos. Por lo tanto, los ejemplos de esta sección utilizan un mandato que tarda más de unos
segundos en ejecutarse: find / -type f. Este mandato visualiza los nombres de vías de acceso para
todos los archivos del sistema. No es necesario que estudie el mandato find para poder completar este
apartado; aquí se utiliza simplemente para demostrar cómo trabajar con procesos.
En el ejemplo siguiente, el mandato find inicia un proceso. Una vez que el proceso se ejecuta durante
algunos segundos, puede cancelarlo pulsando la tecla de interrupción:

$ find / -type f
/usr/sbin/acct/lastlogin
/usr/sbin/acct/prctmp
/usr/sbin/acct/prdaily
/usr/sbin/acct/runacct
/usr/sbin/acct/sdisk
/usr/sbin/acct/shutacct INTERRUPT (Ctrl-C)
$ _

El sistema devuelve el indicador a la pantalla. Ahora puede entrar otro mandato.


Tareas relacionadas
Lista de asignaciones de teclas de control para el terminal (mandato stty)
Para visualizar los valores del terminal, utilice el mandato stty. Fíjese especialmente en las teclas que
utiliza el terminal para teclas de control.

Mandato del teclado para detener un proceso en primer plano


Es posible detener un proceso, pero no puede eliminarse su ID de proceso (PID) de la tabla de procesos.
Puede detener un proceso en primer plano pulsando Control-Z desde el teclado.
Nota: Control-Z funciona en el shell Korn (ksh) y el shell C (csh), pero no en el shell Bourne (bsh).

Reinicio de un proceso detenido


Este procedimiento describe cómo reiniciar un proceso que se ha detenido con Control-Z.
Nota: Control-Z funciona en el shell Korn (ksh) y el shell C (csh), pero no en el shell Bourne (bsh). Para
reiniciar un proceso detenido, debe ser el usuario que inició el proceso o tener autorización de usuario
root.
1. Para que se muestren todos los procesos que están en ejecución o que se han detenido, pero no los
procesos que se han matado, escriba lo siguiente:

144 AIX Versión 7.2: Gestión del sistema operativo


ps -ef

Puede que desee interconectar este mandato por medio de un mandato grep para restringir la lista a
los procesos entre los que probablemente se encontrará el que desea iniciar. Por ejemplo, si desea
reiniciar una sesión vi, podría escribir lo siguiente:

ps -ef | grep vi

Este mandato sólo visualiza líneas de la salida del mandato ps que contengan la palabra vi. La salida
tendría este aspecto:

UID PID PPID C STIME TTY TIME COMMAND


root 1234 13682 0 [Link] - 0:01 vi test
root 14277 13682 1 [Link] - 0:00 grep vi

2. En la salida del mandato ps, busque el proceso que desea reiniciar y anote su número PID. En este
ejemplo, el PID es 1234.
3. Para enviar la señal CONTINUE al proceso detenido, escriba lo siguiente:

kill -19 1234

Sustituya el PID de su proceso por 1234. El número -19 indica la señal CONTINUE. Este mandato
reinicia el proceso en segundo plano. Si el proceso puede ejecutarse como proceso en segundo plano,
el procedimiento habrá finalizado. Si el proceso debe ejecutarse como proceso en primer plano (como
correspondería a una sesión vi), debe continuar con el paso siguiente.
4. Para llevar el proceso a primer plano, escriba lo siguiente:

fg 1234

Una vez más, sustituya el PID de su proceso por 1234. El proceso debe estar ejecutándose ahora en
primer plano. (Ahora está en la sesión de edición de vi).

Planificación de un proceso para su posterior ejecución


Puede establecer un proceso como proceso por lotes para que se ejecute en segundo plano en el
momento planificado.
Los mandatos at y smit le permiten entrar los nombres de mandatos que se ejecutarán en un momento
posterior y le permiten especificar cuándo deben ejecutarse los mandatos.
Nota: Los archivos /var/adm/cron/[Link] y /var/adm/cron/[Link] controlan si puede
utilizar el mandato at. Una persona con autorización de usuario root puede crear, editar o suprimir dichos
archivos. Las entradas en dichos archivos son nombres de inicio de sesión de usuario con un nombre en
cada línea. A continuación se muestra un ejemplo de un archivo [Link]:

root
nick
dee
sarah

Si existe el archivo [Link], sólo los usuarios cuyos nombres de inicio de sesión se listan en él pueden
utilizar el mandato at. Un administrador del sistema puede impedir explícitamente que un usuario utilice
el mandato at listando el nombre de inicio de sesión del usuario en el archivo [Link]. Si sólo existe el
archivo [Link], cualquier usuario cuyo nombre no aparezca en el archivo puede utilizar el mandato at.
No podrá utilizar el mandato at si se da alguna de las condiciones siguientes:
• El archivo [Link] y el archivo [Link] no existen (sólo tiene permiso el usuario root).
• El archivo [Link] existe, pero el nombre de inicio de sesión del usuario no está listado en el mismo.
• El archivo [Link] existe, pero el nombre de inicio de sesión del usuario está listado en el mismo.
Si no existe el archivo [Link] y tampoco existe el archivo [Link] o está vacío, sólo una persona con
autorización de usuario root puede someter un trabajo con el mandato at.

Gestión del sistema operativo 145


La sintaxis del mandato at le permite especificar una serie de fecha, una serie de hora y de día o bien una
serie incremental que especifique el momento en el que desea que se ejecute el proceso. También le
permite especificar qué shell o cola debe utilizar. Los siguientes ejemplos muestran algunas utilizaciones
usuales del mandato.
Por ejemplo, si el nombre de inicio de sesión es alberto y tiene un script llamado WorkReport que
desea ejecutar a medianoche, realice lo siguiente:
1. Escriba la hora a la que desea que el programa empiece a ejecutarse:

a medianoche

2. Escriba los nombres de los programas que desea ejecutar, pulsando Intro después de cada nombre.
Cuando escriba el apellido, pulse el carácter de fin de archivo (Control-D) para señalizar el fin de la
lista.

WorkReport^D

Después de pulsar Control-D, el sistema visualiza información similar a la siguiente:

job alberto.741502800.a at Vie Jul 6 [Link] CDT 2002.

Al programa WorkReport se le proporciona el número de trabajo alberto.741502800.a y se


ejecutará el día 6 de julio a medianoche.
3. Para que se listen los programas que ha enviado para que se ejecuten posteriormente, escriba lo
siguiente:

at -l

El sistema mostrará una información parecida a esta:

alberto.741502800.a Vie Jul 6 [Link] CDT 2002

Consulte el mandato at para ver la sintaxis completa.


Tareas relacionadas
Listado de todos los procesos planificados (mandato at o atq)
Utilice el distintivo -l con el mandato at o con el mandato atq para listar todos los procesos planificados.
Eliminación de un proceso de la planificación
Puede eliminar un proceso planificado con el mandato at utilizando el distintivo -r.

Listado de todos los procesos planificados (mandato at o atq)


Utilice el distintivo -l con el mandato at o con el mandato atq para listar todos los procesos planificados.
Ambos mandatos generan la misma salida; sin embargo, el mandato atq puede ordenar los procesos en
el mismo período de tiempo que el mandato at se emite y únicamente visualiza el número de procesos
de la cola.
Puede listar todos los procesos planificados de estas formas:
• Con el mandato at desde la línea de mandatos
• Con el mandato atq
Mandato at
Para listar los procesos planificados, escriba lo siguiente:

at -l

Este mandato lista todos los procesos planificados de la cola. Si es usted un usuario root, este
mandato lista todos los procesos planificados de todos los usuarios. Para obtener información
detallada acerca de la sintaxis, consulte el mandato at.

146 AIX Versión 7.2: Gestión del sistema operativo


Mandato atq
Vea los ejemplos siguientes sobre cómo utilizar el mandato atq:
• Para listar los procesos planificados en la cola, escriba lo siguiente:

atq

• Si es usted un usuario root, puede listar los procesos planificados de la cola de un usuario
determinado escribiendo:

atq NombreUsuario

• Para listar el número de procesos planificados en la cola, escriba lo siguiente:

atq -n

Tareas relacionadas
Planificación de un proceso para su posterior ejecución
Puede establecer un proceso como proceso por lotes para que se ejecute en segundo plano en el
momento planificado.
Eliminación de un proceso de la planificación
Puede eliminar un proceso planificado con el mandato at utilizando el distintivo -r.

Eliminación de un proceso de la planificación


Puede eliminar un proceso planificado con el mandato at utilizando el distintivo -r.
Consulte el ejemplo siguiente sobre cómo utilizar el mandato at o atq:
1. Para eliminar un proceso planificado, debe conocer su número de proceso.
Puede obtener el número de proceso utilizando el mandato at -l o el mandato atq.
2. Cuando conozca el número de proceso que desea eliminar, escriba lo siguiente:

at -r NúmeroProceso

También puede utilizar el mandato smit rmat para efectuar esta tarea.
Tareas relacionadas
Listado de todos los procesos planificados (mandato at o atq)
Utilice el distintivo -l con el mandato at o con el mandato atq para listar todos los procesos planificados.
Planificación de un proceso para su posterior ejecución
Puede establecer un proceso como proceso por lotes para que se ejecute en segundo plano en el
momento planificado.

Eliminación de un proceso en segundo plano (mandato kill)


Si la tecla de interrupción (Inter) no detiene el proceso en primer plano o si decide, después de haber
iniciado un proceso en segundo plano, que no desea que el proceso se complete, puede cancelar el
proceso con el mandato kill.
Antes de poder cancelar un proceso utilizando el mandato kill, primero deberá conocer su número PID.
El formato general del mandato kill es el siguiente:

kill IDProceso

Nota:
• Para eliminar un proceso, debe tener autorización de root o ser el usuario que ha iniciado el proceso. La
señal por omisión para un proceso del mandato kill es -15 (SIGTERM).
• Para eliminar un proceso zombie, debe eliminar su proceso padre.

Gestión del sistema operativo 147


1. Utilice el mandato ps para determinar el ID de proceso que desea eliminar. Puede que desee
interconectar este mandato por medio de un mandato grep para que sólo se listen los procesos
deseados. Por ejemplo, si desea el ID de proceso de una sesión vi, podría escribir lo siguiente:

ps -l | grep vi

2. En el ejemplo siguiente, emite el mandato find para ejecutar el proceso en segundo plano. A
continuación decide cancelar el proceso. Emita el mandato ps para que se listen los números PID.

$ find / -type f > [Link] &


[1] 21593
$ ps
PID TTY TIME COMMAND
1627 pts3 0:00 ps
5461 pts3 0:00 ksh
17565 pts3 0:00 -ksh
21593 pts3 0:00 find / -type f
$ kill 21593
$ ps
PID TTY TIME COMMAND
1627 pts3 0:00 ps
5461 pts3 0:00 ksh
17565 pts3 0:00 -ksh
[1] + Terminated 21593 find / -type f > [Link] &

El mandato kill 21593 finaliza el proceso find de fondo y el segundo mandato ps no devuelve
información de estado acerca del PID 21593. El sistema no visualizará el mensaje de terminación
hasta que escriba el mandato siguiente, a menos que ese mandato sea cd.
El mandato kill le permite cancelar los procesos en segundo plano. Puede que desee utilizarlo si se
da cuenta de que ha colocado un proceso en segundo plano por error o si observa que la ejecución de
un proceso tarda demasiado.
El mandato kill también puede utilizarse en smit escribiendo lo siguiente:

smit kill

Resumen de mandatos para mandatos y procesos


Los siguientes mandatos sirven para mandatos y procesos.

Tabla 55. Resumen de mandatos para mandatos


Elemento Descripción
alias Mandato de shell que imprime una lista de alias en la salida estándar
history Mandato de shell que visualiza la lista de sucesos históricos
man Visualiza información en línea acerca de los mandatos, subrutinas y archivos
whatis Describe la función que realiza un mandato
whereis Localiza el fuente, binario o manual de los programas instalados

Tabla 56. Resumen de mandatos para procesos


Elemento Descripción
at Ejecuta mandatos con posterioridad, lista todos los procesos planificados o elimina un
proceso de la planificación
atq Visualiza la cola de trabajos que están a la espera de ejecutarse
kill Envía una señal a los procesos que están en ejecución
nice Ejecuta un mandato en una prioridad más bajo o más alta.
ps Muestra el estado actual de los procesos
renice Altera la prioridad de los procesos que están en ejecución

148 AIX Versión 7.2: Gestión del sistema operativo


Gestión del sistema colgado
La gestión del sistema colgado permite a los usuarios ejecutar aplicaciones importantes para la actividad
continuamente mientras mejora la disponibilidad de la aplicación. La detección del sistema colgado alerta
al administrador del sistema de posibles problemas y permite al administrador iniciar la sesión como root
o rearrancar el sistema para resolver el problema.
Mandato shconf
El mandato shconf se invoca cuando se habilita la Detección de cuelgue del sistema. El mandato
shconf configura los sucesos que se supervisan y las acciones que se realizan si se producen esos
sucesos. Puede especificar cualquiera de las siguientes acciones, el nivel de prioridad que se debe
comprobar, el tiempo de espera mientras ningún proceso ni hebra se ejecuta a una prioridad inferior o
igual, el dispositivo de terminal para la acción de aviso y la acción del mandato getty:
• Registrar un error en el archivo errlog
• Visualizar un mensaje de aviso en la consola del sistema (consola alfanumérica) o en una TTY
especificada
• Rearrancar el sistema
• Proporcionar un getty especial para permitir al usuario iniciar la sesión como root y ejecutar mandatos
• Ejecutar un mandato
Para las opciones Ejecutar un mandato y Otorgar getty especial, la detección de sistema colgado
ejecuta el mandato getty especial o el mandato especificado en la prioridad más alta. El mandato getty
especial imprime un mensaje de aviso de que hay un getty de recuperación en ejecución en la prioridad
0. La tabla siguiente captura las distintas acciones y los parámetros predeterminados asociados para la
detección de cuelgue de prioridad. Sólo se habilita una acción para cada tipo de detección.

Opción Habilitación Prioridad Tiempo de espera


excedido (segundos)
Registrar un error en el archivo errlog inhabilitada 60 120
Visualizar un mensaje de aviso inhabilitada 60 120
Proporcionar un getty de recuperación enabled 60 120
Ejecutar un mandato inhabilitada 60 120
Rearrancar el sistema inhabilitada 39 300

Nota: Cuando se ha habilitado Ejecutar getty de recuperación en una consola, el mandato shconf
añade el distintivo -u al mandato getty en el inittab asociado al inicio de sesión de la consola.
Para la detección de ES perdida, puede establecer el valor de tiempo de espera excedido y habilitar las
acciones siguientes:

Opción Habilitación
Visualizar un mensaje de aviso inhabilitada
Rearrancar el sistema inhabilitada

Daemon shdaemon
El daemon shdaemon es un proceso que init inicia y se ejecuta en la prioridad 0 (cero). Está al cargo del
manejo de la detección de sistema colgado recuperando la información de configuración, iniciando
estructuras de trabajo e iniciando los tiempos de detección establecidos por el usuario.
Conceptos relacionados
Detección de cuelgue de prioridad
AIX puede detectar las condiciones de cuelgue del sistema e intentar recuperar estas situaciones,
basándose en acciones definidas por el usuario.

Gestión del sistema operativo 149


Detección del cuelgue de E/S perdida
AIX puede detectar las condiciones de cuelgue del sistema e intentar recuperar estas situaciones,
basándose en acciones definidas por el usuario.

Configuración de la detección de sistema colgado


Puede gestionar la configuración de la detección de sistema colgado desde la herramienta de gestión
SMIT.
Las opciones de menú de SMIT permiten habilitar o inhabilitar el mecanismo de detección, visualizar el
estado actual de la característica y cambiar o mostrar la configuración actual. Las vías rápidas para los
menús de detección de sistema colgado son:
smit shd
Gestionar detección de sistema colgado
smit shstatus
Estado de detección de sistema colgado
smit shpriocfg
Cambiar/Mostrar características de detección de problemas de prioridad
smit shreset
Restaurar configuración de problemas de prioridad predeterminada
smit shliocfg
Cambiar/Mostrar características de detección de E/S perdida
smit shlioreset
Restaurar configuración de detección de E/S perdida predeterminada
También puede gestionar la detección de sistema colgado utilizando el mandato shconf.

Detección de cuelgue de prioridad


AIX puede detectar las condiciones de cuelgue del sistema e intentar recuperar estas situaciones,
basándose en acciones definidas por el usuario.
Todos los procesos (también conocidos como hebras) se ejecutan en una prioridad. Esta prioridad está
invertida numéricamente en el rango de 0 a 126. Cero es la prioridad más alta y 126 es la prioridad más
baja. La prioridad predeterminada para todas las hebras es 60. Cualquier usuario puede bajar la prioridad
de un proceso con el mandato nice. Cualquier persona con autorización de root también puede elevar la
prioridad de un proceso.
El planificador de kernel siempre toma la hebra ejecutable con la prioridad más alta para colocarla en una
CPU. Por lo tanto, es posible que un número de hebras suficiente de prioridad alta colapsen
completamente la máquina de modo que las hebras de baja prioridad no se puedan ejecutar nunca. Si las
hebras en ejecución están en una prioridad superior al valor predeterminado de 60, se pueden bloquear
todos los shells normales e inicios de sesión hasta el punto en que el sistema parezca colgado.
La característica Detección del cuelgue del sistema proporciona un mecanismo para detectar esta
situación y facilitar al administrador del sistema un medio de recuperación. Esta característica se
implementa como un daemon (shdaemon) que se ejecuta en la prioridad de proceso más alta. Este
daemon consulta al kernel la hebra de prioridad más baja ejecutada en un intervalo especificado. Si la
prioridad está por encima de un umbral configurado, el daemon puede realizar varias acciones. Cada una
de esas acciones se puede habilitar independientemente, y cada una se puede configurar para activarse
en cualquier prioridad y durante cualquier intervalo de tiempo. Las acciones y sus valores
predeterminados son:

Acción Habilitado Prioridad [Link]. Dispositivo


predeter. predeter. predeter. predeterm.

1) Registrar un error no 60 2
2) Mensaje de consola no 60 2 /dev/console
3) Shell inicio sesión sí 60 2 /dev/tty0
de prioridad alta
4) Ejecutar mandato no 60 2
a prioridad alta
5) Cuelgue y rearran. no 39 5

150 AIX Versión 7.2: Gestión del sistema operativo


Conceptos relacionados
Gestión del sistema colgado
La gestión del sistema colgado permite a los usuarios ejecutar aplicaciones importantes para la actividad
continuamente mientras mejora la disponibilidad de la aplicación. La detección del sistema colgado alerta
al administrador del sistema de posibles problemas y permite al administrador iniciar la sesión como root
o rearrancar el sistema para resolver el problema.

Detección del cuelgue de E/S perdida


AIX puede detectar las condiciones de cuelgue del sistema e intentar recuperar estas situaciones,
basándose en acciones definidas por el usuario.
Debido a errores de E/S, la vía de acceso de E/S puede bloquearse y afectar a las demás E/S de esa vía de
acceso. En estas circunstancias es esencial que el sistema operativo alerte al usuario y ejecute las
acciones definidas por el usuario. Como parte de la detección y notificación de E/S perdida, shdaemon,
con ayuda del Gestor de volúmenes lógicos, supervisa los almacenamientos intermedios de E/S durante
un periodo de tiempo y comprueba si alguna E/S está pendiente durante un periodo de tiempo demasiado
largo. Si el tiempo de espera excede del tiempo de espera umbral definido en el archivo shconf, se
detecta una E/S perdida y se realizan más acciones. La información acerca de E/S perdida se documenta
en el registro de errores. También basándose en los valores del archivo shconf, el sistema puede
rearrancar para recuperar la situación de E/S perdida.
Para la detección de E/S perdida, puede establecer el valor de tiempo de espera y también habilitar las
siguientes acciones:

Acción Habilitado predeterminado Dispositivo predeterminado


Mensaje de consola no /dev/console
Cuelgue y rearranque no -

Para obtener más información acerca de la detección de cuelgue del sistema, consulte el apartado
“Gestión del sistema colgado ” en la página 149.
Conceptos relacionados
Gestión del sistema colgado
La gestión del sistema colgado permite a los usuarios ejecutar aplicaciones importantes para la actividad
continuamente mientras mejora la disponibilidad de la aplicación. La detección del sistema colgado alerta
al administrador del sistema de posibles problemas y permite al administrador iniciar la sesión como root
o rearrancar el sistema para resolver el problema.

Gestión de procesos
El proceso es la entidad que el sistema operativo utiliza para controlar el uso de los recursos del sistema.
Las hebras pueden controlar el consumo de tiempo del procesador pero la mayoría de herramientas de
gestión del sistema siguen necesitando que el usuario haga referencia al proceso en el que se ejecuta una
hebra, en lugar de la propia hebra.
Hay herramientas disponibles para:
• Observar la creación, la cancelación, la identidad y el consumo de recursos de los procesos.
– El mandato ps se utiliza para informar de los ID de procesos, los usuarios, el consumo de tiempo de
CPU y otros atributos.
– El mandato who -u informa del ID de procesos de shell de los usuarios que han iniciado la sesión.
– El mandato svmon se utiliza para informar del consumo de memoria real de los procesos.
– El mecanismo del mandato acct graba registros cuando termina el proceso que resume el uso de
recursos del proceso.
• Controlar el nivel de prioridad en el contiende un proceso para la CPU.
– El mandato nice hace que se ejecute un mandato con la prioridad de proceso especificada.
– El mandato renice cambia la prioridad de un proceso determinado.

Gestión del sistema operativo 151


• Terminar los procesos que están fuera de control.
– El mandato kill envía una señal de terminación a uno o varios procesos.

Supervisión de procesos
Puede gestionar procesos como administrador del sistema.
El mandato ps es la herramienta principal para observar los procesos del sistema. La mayoría de
distintivos del mandato ps se encuentran en una de dos categorías:
• Distintivos que especifican los tipos de procesos que se deben incluir en la salida
• Distintivos que especifican los atributos de estos procesos que se deben visualizar
Las variables más útiles en general de ps para la gestión del sistema son:

Elemento Descripción
ps -ef Lista todos los procesos que no son de kernel, con los ID de usuario, el ID de
proceso, el uso de CPU reciente, el uso total de CPU y el mandato que ha iniciado
el proceso (incluyendo sus parámetros).
ps -fu IDUsuario Lista todos los procesos que son propiedad de IDUsuario, con el ID de proceso, el
uso reciente de CPU, el uso total de CPU y el mandato que ha iniciado el proceso
(incluyendo sus parámetros).

Para identificar los usuarios actuales que utilizan más tiempo de CPU, puede especificar:

ps -ef | egrep -v "STIME|$LOGNAME" | sort +3 -r | head -n 15

Este mandato lista, en orden descendente, los 15 procesos que utilizan más CPU cuyo propietario es otro
usuario.
Para usos más especializados, las dos tablas siguientes están pensadas para identificar la tarea de elegir
los distintivos ps resumiendo los efectos de los distintivos.

Distintivos de especificación de procesos


-A -a -d -e -G -g -k -p -t -U -u a g t x
Todos los Y - - - - - - - - - Y - -
procesos
No los - Y - - - - - - - - - - -
líderes de
grupo de
procesos ni
asociados
con un
terminal
No líderes - - Y - - - - - - - - - -
de grupo de
procesos
No procesos - - - Y - - - - - - - - -
de kernel
Miembros - - - - Y - - - - - - - -
de grupos
de procesos
especificad
os

152 AIX Versión 7.2: Gestión del sistema operativo


Distintivos de especificación de procesos (continuación)
-A -a -d -e -G -g -k -p -t -U -u a g t x
Procesos de - - - - - Y - - - - - - -
kernel
Los - - - - - - Y - - - - - -
especificad
os en lista
de número
de procesos
Los - - - - - - - Y (n - - - Y (1 -
asociados tty) tty)
con las tty
de la lista
Procesos - - - - - - - - Y - - - -
especificad
os por el
usuario
Procesos - - - - - - - - - Y - - -
con
terminales
No - - - - - - - - - - - - Y
asociados
con una tty

Distintivos de selección de columnas


Predeterminado1 -f -l -U Predeterminado e l s u v
-u 2
PID Y Y Y Y Y Y Y Y Y Y
TTY Y Y Y Y Y Y Y Y Y Y
TIME Y Y Y Y Y Y Y Y Y Y
CMD Y Y Y Y Y Y Y Y Y Y
USER - Y - - - - - - Y -
UID - - Y Y - - Y - - -
PPID - Y Y - - - Y - - -
C - Y Y - - - Y - - -
STIME - Y - - - - - - Y -
F - - Y - - - - - - -
S/STAT - - Y - Y Y Y Y Y Y
PIR - - Y - - - Y - - -
NI/NICE - - Y - - - Y - - -
ADDR - - Y - - - Y - - -
SIZE - - - - - - - - Y -
SZ - Y - - - Y - Y - -

Gestión del sistema operativo 153


Distintivos de selección de columnas (continuación)
Predeterminado1 -f -l -U Predeterminado e l s u v
-u 2
WCHAN - - Y - - - Y - - -
RSS - - - - - - Y - Y Y
SSIZ - - - - - - - Y - -
%CPU - - - - - - - - Y Y
%MEM - - - - - - - - Y Y
PGIN - - - - - - - - - Y
LIM - - - - - - - - - Y
TSIZ - - - - - - - - - Y
TRS - - - - - - - - - Y
Entorno (después del mandato) - - - - - Y - - - -

Si ps se proporciona sin distintivos o con un distintivo de especificación de proceso que empieza por un
signo menos, las columnas que se visualizan son las que aparecen para Predeterminado1. Si el mandato
se proporciona con un distintivo de especificación de proceso que no empieza por un signo menos, se
visualizan las columnas de Predeterminado2. El distintivo -u o -U es un distintivo de especificación de
proceso y de selección de columnas.
Estas son unas breves descripciones del contenido de las columnas:

Elemento Descripción
PID ID del proceso
TTY Terminal o pseudoterminal asociada al proceso
TIME Tiempo de CPU acumulado consumido, en minutos y segundos
CMD Mandato que el proceso está ejecutando
USER Nombre de inicio de sesión del usuario al que pertenece el proceso
UID ID de usuario numérico del usuario al que pertenece el proceso
PPID ID del proceso padre de este proceso
C Tiempo de CPU utilizado recientemente
STIME Hora en que se ha iniciado el proceso, si es inferior a 24 horas. De lo contrario, la
fecha en que se ha iniciado el proceso
F Valor hexadecimal de ocho caracteres que describe los distintivos asociados al
proceso (consulte la descripción detallada del mandato ps)
S/STAT Estado del proceso (consulte la descripción detallada del mandato ps)
PRI Valor de prioridad actual del proceso
NI/NICE Valor nice para el proceso
ADDR Número de segmento de la pila del proceso
SIZE (Distintivo -v) el tamaño virtual de la sección de datos del proceso (en kilobytes)
SZ (Distintivos -l y l) el tamaño en kilobytes de la imagen de la memoria del proceso.
WCHAN Suceso en el cual espera el proceso

154 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
RSS Suma de los números de páginas de segmentos de trabajo y de segmentos de código
en memoria multiplicado por 4
SSIZ Tamaño de la pila de kernel
%CPU Porcentaje de tiempo desde que ha empezado el proceso que ha utilizado la CPU
%MEM Nominalmente, el porcentaje de memoria real utilizada por el proceso, esta medición
no se correlaciona con ninguna otra estadística de memoria
PGIN Número de entradas de página provocadas por anomalías de página. Puesto que
todas las E/S se clasifican como anomalías de página, es básicamente una medición
del volumen de E/S
LIM Siempre xx
TSIZ Tamaño de la sección de texto del archivo ejecutable
TRS Número de páginas de segmentos de código multiplicado por 4
Entorno Valor de todas las variables de entorno para el proceso

Modificación de la prioridad de procesos


Básicamente, si ha identificado un proceso que utiliza demasiado tiempo de CPU, puede reducir su
prioridad efectiva aumentando su valor nice con el mandato renice.
Por ejemplo:

renice +5 IDProc

El valor nice del proceso IDProc aumentaría del valor normal 20 de un proceso de primer plano a 25.
Debe tener autorización de root para restablecer el valor nice del proceso IDProc en 20. Escriba:

renice -5 IDProc

Terminación de procesos
Normalmente, se utiliza el mandato kill para finalizar un proceso.
El mandato kill envía una señal al proceso desasignado. Según el tipo de señal y la naturaleza del
programa que se ejecutan en el proceso, éste puede finalizar o continuar en ejecución. Las señales que se
envían son:

Elemento Descripción
SIGTERM (señal 15) es una petición al programa de que termine. Si el programa tiene un manejador
de señal para SIGTERM que no termina realmente la aplicación, es posible que este
mandato kill no surta efecto. Se trata de la señal predeterminada enviada por kill.
SIGKILL (señal 9) es una directriz para matar el proceso inmediatamente. Esta señal no se puede
capturar ni pasar por alto.

Normalmente, es mejor emitir SIGTERM en lugar de SIGKILL. Si el programa tiene un manejador para
SIGTERM, se puede limpiar y terminar ordenadamente. Escriba:

kill -term IDProceso

(-term se puede omitir.) Si el proceso no responde a SIGTERM, escriba:

kill -kill IDProceso

Puede observar ocasionalmente procesos disueltos, también denominados zombies, en la tabla de


procesos. Estos procesos ya no se ejecutan, no tienen asignado espacio de sistema, pero conservan su

Gestión del sistema operativo 155


número PID. Puede reconocer un proceso residual en la tabla de procesos porque aparece <defunct>
en la columna CMD. Por ejemplo:

UID PID PPID C STIME TTY TIME CMD


.
.
.
lee 22392 20682 0 Jul 10 - 0:05 xclock
lee 22536 21188 0 Jul 10 pts/0 0:00 /bin/ksh
lee 22918 24334 0 Jul 10 pts/1 0:00 /bin/ksh
lee 23526 22536 22 0:00 <defunct>
lee 24334 20682 0 Jul 10 ? 0:00 aixterm
lee 24700 1 0 Jul 16 ? 0:00 aixterm
root 25394 26792 2 Jul 16 pts/2 0:00 ksh
lee 26070 24700 0 Jul 16 pts/3 0:00 /bin/ksh
lee 26792 20082 0 Jul 10 pts/2 0:00 /bin/ksh
root 27024 25394 2 [Link] pts/2 0:00 ps -ef

Los procesos zombie continúan existiendo en la tabla de procesos hasta que el proceso padre muere o se
cierra y reinicia el sistema. En el ejemplo que se muestra arriba, el proceso padre (PPID) es el mandato
ksh. Cuando se sale del shell Korn, los procesos disueltos se eliminan de la tabla de procesos.
A veces, algunos de estos procesos disueltos se recopilan en la tabla de procesos porque una aplicación
tiene varios procesos hijo bifurcados y no ha salido. Si se convierte en un problema, la solución más
sencilla es modificar la aplicación para que su subrutina sigaction pase por alto la señal SIGCHLD.
Información relacionada
Mandato sigaction

Vinculación o desvinculación de un proceso


Puede vincular un proceso a un procesador o desvincular un proceso vinculado previamente.
Debe tener autorización de root para vincular o desvincular un proceso del que no es propietario.
En sistemas de multiprocesador, puede vincular un proceso a un procesador o desvincular un proceso
vinculado previamente de:
• SMIT
• línea de mandatos
Nota: Aunque la vinculación de un proceso a un procesador puede mejorar el rendimiento para el
proceso vinculado (al reducir las pérdidas de memoria caché de hardware), la sobreutilización de este
recurso puede provocar la sobrecarga de procesadores individuales mientras se infrautilizan otros. Los
cuellos de botella resultantes podrían reducir la productividad y el rendimiento globales. Durante las
operaciones normales, es mejor permitir al sistema operativo asignar procesos a los procesadores
automáticamente, distribuyendo la carga del sistema por todos los procesadores. Vincule solamente
los procesos que sabe que tendrán ventajas si se ejecutan en un solo procesador.

Tareas de vinculación o desvinculación de un proceso


Tarea Vía rápida de SMIT Mandato o archivo
Vinculación de un proceso smit bindproc bindprocessor -q
Desvinculación de un proceso smit ubindproc bindprocessor -u

Arreglos para procesos retenidos o no deseados


Los procesos retenidos o no deseados pueden provocar problemas en el terminal. Algunos problemas
generan mensajes en la pantalla que ofrecen información acerca de las posibles causas.
Para realizar los procedimientos siguientes, debe disponer de un segundo terminal, un módem o un inicio
de sesión de red. Si no dispone de ninguno de ellos, arregle el problema de terminal rearrancando la
máquina.
Elija el procedimiento adecuado para arreglar el problema de terminal:

156 AIX Versión 7.2: Gestión del sistema operativo


Liberación de un terminal que se ha llenado de procesos
Se puede detener un proceso retenido o no deseado.
Identifique y detenga los procesos retenidos o no deseados haciendo lo siguiente:
1. Determine los procesos activos que se ejecutan en la pantalla, para ello escriba el siguiente mandato
ps:

ps -ef | pg

El mandato ps muestra el estado del proceso. El distintivo -e graba información acerca de todos los
procesos (excepto los procesos de kernel) y el distintivo f genera un listado completo de procesos
incluyendo el nombre y los parámetros del mandato cuando se ha creado el proceso. El mandato pg
limita la salida a una sola página cada vez, por lo que la información no se desplaza rápidamente fuera
de la pantalla.
Los procesos sospechosos son los procesos del sistema o del usuario que utilizan cantidades
excesivas de recurso del sistema como, por ejemplo, CPU o espacio de disco. Los procesos del
sistema como sendmail, routed y lpd se descontrolan frecuentemente. Utilice el mandato ps -u para
comprobar el uso de CPU.
2. Determine quién ejecuta procesos en la máquina utilizando el mandato who:

who

El mandato who visualiza información acerca de todos los usuarios que hay actualmente en este
sistema como, por ejemplo, el nombre de inicio de sesión, el nombre de estación de trabajo, la fecha y
la hora de inicio de sesión.
3. Determine si debe detener, suspender o cambiar la prioridad de un proceso de usuario.
Nota: Debe tener autorización de root para detener los procesos de los que no es propietario. Si
termina o cambia la prioridad de un proceso de usuario, póngase en contacto con el propietario del
proceso y explique lo que ha hecho.
• Detenga el proceso utilizando el mandato kill. Por ejemplo:

kill 1883

El mandato kill envía una señal a un proceso en ejecución. Para detener un proceso, especifique el
ID del proceso (PID), que es 1883 en este ejemplo. Utilice el mandato ps para determinar el número
de PID de los mandatos.
• Suspenda el proceso y ejecútelo en el fondo utilizando el carácter de ampersand (&). Por ejemplo:

/u/bin1/prog1 &

& indica que desea que este proceso se ejecute en el fondo. En un proceso de fondo, el shell no
espera que el mandato se complete para devolver el indicador de shell. Cuando un proceso necesite
más de unos segundos para completarse, ejecute el mandato en el fondo escribiendo un & al final de
la línea de mandatos. Los trabajos que se ejecutan en el fondo aparecen en el mandato ps normal.
• Cambie la prioridad de los procesos que han llenado el terminal utilizando el siguiente mandato
renice:

renice 20 1883

El mandato renice modifica la prioridad de planificación de uno o varios procesos en ejecución.


Cuanto más alto es el número, menor es la prioridad, siendo 20 la más baja.
En el ejemplo anterior, renice vuelve a planificar el número de proceso 1883 con la prioridad más
baja. Se ejecutará cuando haya una cantidad pequeña de tiempo de procesador no utilizado
disponible.

Respuesta a mensajes de la pantalla


Utilice este procedimiento para responder a los mensajes de la pantalla y realizar la recuperación.

Gestión del sistema operativo 157


1. Asegúrese de que la variable de entorno DISPLAY está establecida correctamente. Utilice uno de los
métodos siguientes para comprobar el entorno de DISPLAY:
• Utilice el mandato setsenv para visualizar las variables de entorno.

setsenv

El mandato setsenv visualiza el entorno de estado protegido al iniciar la sesión.


Determine si se ha establecido la variable DISPLAY. En el ejemplo siguiente, la variable DISPLAY no
aparece, lo que indica que la variable DISPLAY no está establecida en un valor específico.

SYSENVIRON:
NAME=casey
TTY=/dev/pts/5
LOGNAME=casey
LOGIN=casey

O BIEN
• Cambie el valor de la variable DISPLAY. Por ejemplo, para establecerla en la máquina denominada
bastet y el terminal 0, especifique:

DISPLAY=bastet:0
export DISPLAY

Si no se establece específicamente, la variable de entorno DISPLAY es de forma predeterminada


unix:0 (la consola). El valor de la variable está en el formato nombre:número donde nombre es el
nombre de sistema principal de una máquina determinada y número es el número de servidor de X
en el sistema nombrado.
2. Restablezca los valores predeterminados del terminal utilizando el siguiente mandato stty:

stty sane

El mandato stty sane restaura la “corrección” de los controladores de terminal. El mandato genera
una salida de código de restablecimiento de terminal adecuado a partir del archivo /etc/termcap
(o /usr/share/lib/terminfo si está disponible).
3. Si la tecla de retorno no funciona correctamente, restáurela escribiendo:

^J stty sane ^J

^J representa la secuencia de teclas Control-J.

Ejecución de múltiples colas utilizando las variables de entorno RT_MPC y RT_GRQ


El uso de múltiples colas aumenta la afinidad de las hebras del procesador, pero en una situación
especial es aconsejable contrarrestar este efecto.
Normalmente, cuando sólo hay una cola de ejecución, una hebra que se ha activado (la hebra que se
activa) por otra hebra en ejecución (la hebra activadora) puede utilizar inmediatamente la CPU en la que
se ejecuta la hebra activadora. Cuando hay varias colas de ejecución, es posible que la hebra que se
activa esté en la cola de ejecución de otra CPU que no pueda observar la hebra que se activa hasta la
siguiente decisión de planificación. En este caso se puede producir un retraso de hasta 10 ms.
Es similar a los casos de ejemplo de releases anteriores de este sistema operativo que se pueden haber
producido utilizando la opción bindprocessor. Si todas las CPU están constantemente ocupadas, y hay
varias hebras interdependientes que se activan, se disponen de dos opciones.
• La primera opción, que utiliza una cola de ejecución, es establecer la variable de entorno RT_GRQ=ON
que fuerza el despacho de las hebras seleccionadas desvinculadas fuera de la cola de ejecución global.
• Alternativamente, los usuarios pueden elegir la opción de kernel de tiempo real (escriba el mandato
bosdebug -R on y después bosboot) y la variable de entorno RT_MPC=ON para los procesos

158 AIX Versión 7.2: Gestión del sistema operativo


seleccionados. Es esencial mantener un registro de rendimiento de los sistema para supervisar de
cerca el impacto de cualquier ajuste que intenta.

Contabilidad del sistema


El programa de utilidad de contabilidad del sistema permite recopilar datos e informar acerca del uso
individual y de grupo de distintos recursos del sistema.
Esta información de contabilidad se puede utilizar para facturar a los usuarios los recursos del sistema
que utilizan y para supervisar aspectos seleccionados de la operación del sistema. Para ayudar a la
facturación, el sistema de contabilidad proporciona totales del uso de recursos definidos por miembros
del grupo adm y, si se incluye el mandato chargefee, factores de la tarifa de facturación.
El sistema de contabilidad también proporciona datos para valorar la adecuación de las asignaciones de
recursos actuales, establecer límites y cuotas de recursos, prever las necesidades futuras y pedir
provisiones para impresoras y otros dispositivos.
La siguiente información ayuda a comprender cómo se debe implementar el programa de utilidad de
contabilidad en el sistema.

Informes de datos de contabilidad


Después de recopilar varios tipos de datos de contabilidad, los registros se procesan y se convierten en
informes.
Los mandatos de contabilidad convierten automáticamente los registros a notación científica cuando los
números crecen. Un número se representa en notación científica con el formato siguiente:
Basee+Exp
Basee-Exp
que es el número igual al número Base multiplicado por 10 y elevado a la +Exp o -Exp potencia. Por
ejemplo, la notación científica 1,345e+9 es igual a 1,345x109 o [Link]. Y la notación científica
1,345e-9 es igual a 1,345x10-9 o 0,000000001345.
Conceptos relacionados
Datos de contabilidad de procesos
El sistema de contabilidad recopila datos sobre el uso de recursos para cada proceso mientras se ejecuta.

Informes de contabilidad diarios


Para generar un informe diario, utilice el mandato runacct.
Este mandato resume datos en un archivo ASCII denominado /var/adm/acct/sum(x)/rprtMMDD.
MMDD especifica el mes y el día en que se ha ejecutado el informe. El informe cubre los temas siguientes:
• Informe diario
• Informe de uso diario
• Resumen de mandatos diario
• Resumen de totales de mandatos mensual
• Último inicio de sesión

Informe diario
Los informes de contabilidad diarios contienen datos sobre el tiempo de conexión, los procesos, el uso de
disco, el uso de impresora y las tarifas que se deben cargar.
El mandato acctmerg fusiona los datos de contabilidad brutos sobre el tiempo de conexión, los
procesos, el uso de disco, el uso de impresora y las tarifas que se deben cargar en informes diarios. El
mandato runacct lo llama como parte de su operación diaria, el mandato acctmerg produce lo
siguiente:
/var/adm/acct/nite(x)/dacct
Un informe intermedio que se genera cuando se llena uno de los archivos de entrada.

Gestión del sistema operativo 159


/var/adm/acct/sum(x)/tacct
Un informe de totales acumulados en formato tacct. El mandato monacct utiliza este archivo para
generar el resumen mensual ASCII.
El mandato acctmerg puede convertir registros entre los formatos ASCII y binario y fusionar registros de
diferentes orígenes en un solo registro para cada usuario. Para obtener más información acerca del
mandato acctmerg, consulte acctmerg.
La primera línea del informe diario empieza con las horas de inicio y finalización de los datos recopilados
en el informe, una lista de sucesos a nivel de sistema incluyendo cualquier cierre, rearranque y cambio a
nivel de ejecución existentes. También se indica la duración total con el número total de minutos
incluidos en el periodo de contabilidad (normalmente 1440 minutos, si el informe se ejecuta cada 24
horas). El informe contiene la siguiente información:

Elemento Descripción
LÍNEA Consola, tty o pty en uso
MINUTOS Número total de minutos que se ha utilizado la línea
PORCENT Porcentaje de tiempo del periodo de contabilidad que se ha utilizado la línea
AJE
NÚM. Número de nuevas sesiones de inicio de sesión iniciadas
SESIÓN
NÚM. ACT Igual que NÚM. SESIÓN
NÚM. El número de finalizaciones de sesión más las interrupciones realizadas en la línea
DESACT

Informe de contabilidad de uso diario


El informe de uso diario es un informe de resumen del uso del sistema por ID de usuario durante el
periodo de contabilidad.
Algunos campos se dividen en tiempo de horas punta y no punta, según defina el administrador de
contabilidad en el directorio /usr/lib/acct/holidays. El informe contiene la siguiente información:

Elemento Descripción
UID ID de usuario
NOMBRE DE CONEXIÓN Nombre de usuario
CPU (PUNTA/NPUNTA) El tiempo total de CPU para todos los procesos del usuario en
minutos
MEMK (PUNTA/NPUNTA) Total de memoria utilizada por los procesos en ejecución, en
kilobyte-minutos
CONEXIÓN (PUNTA/NPUNTA) Tiempo de conexión total (el tiempo que el usuario ha estado
conectado) en minutos
BLOQUES DE DISCO Cantidad promedio total de espacio de disco utilizado por el
usuario en todos los sistemas de archivos cuya contabilidad está
habilitada
TARIFAS Tarifas totales especificadas con el mandato chargefee
NÚM. DE PROCESOS Número total de procesos que pertenecen a este usuario
NÚM. DE SESIONES Número de sesiones de inicio de sesión diferenciadas para este
usuario
NÚM. DE EJEMPLOS DE DISCO Número de veces que se han ejecutado ejemplos de disco
durante el periodo de contabilidad. Si no se es propietario de
ningún BLOQUE DE DISCO, el valor será cero.

160 AIX Versión 7.2: Gestión del sistema operativo


Informe de contabilidad de resumen de mandatos diario
El informe de resumen de mandatos diario muestra todos los mandatos ejecutados durante el periodo de
contabilidad, una línea por cada nombre de mandato exclusivo.
La tabla se clasifica por MEMKMIN TOTAL (descrito abajo) y la primera línea incluye la información del
total para todos los mandatos. Los datos indicados para cada mandato son acumulativos para todas las
ejecuciones del mandato durante el periodo de contabilidad. Las columnas de esta tabla incluyen la
siguiente información:

Elemento Descripción
NOMBRE DE El mandato que se ha ejecutado
MANDATO
NÚMERO DE Número de veces que se ha ejecutado el mandato
MANDATOS
MEMKMIN Memoria total utilizada para la ejecución del mandato, en kilobyte-minutos
TOTAL CPU-MIN Total de tiempo de CPU utilizado por el mandato en minutos
TOTAL REAL-MIN Total de tiempo real transcurrido para el mandato en minutos
TAMAÑO-K Tamaño promedio de memoria utilizado por el mandato por minuto de CPU
PROMEDIO
CPU-MIN PROMEDIO Número promedio de minutos de CPU por ejecución del mandato
FACTOR Medición del acaparamiento de CPU por el mandato mientras está activo. Es la
ACAPARAMIENTO proporción de TOTAL CPU-MIN con respecto a TOTAL REAL-MIN
CARACTERES Número de caracteres transferidos por el mandato con lecturas y grabaciones
TRANSFERIDOS del sistema
BLOQUES LEÍDOS Número de lecturas y grabaciones de bloque físico realizadas por el mandato

Informe de contabilidad de resumen de totales de mandatos mensual


El resumen de totales de mandatos mensual, creado por el mandato monacct, proporciona información
acerca de todos los mandatos ejecutados desde el informe mensual anterior.
Los campos e información significan lo mismo que los del resumen de mandatos diario.

Último inicio de sesión


El informe de último inicio de sesión visualiza dos campos para cada ID de usuario. El primer campo es
AA-MM-DD e indica el inicio de sesión más reciente para el usuario especificado. El segundo campo es el
nombre de la cuenta del usuario.
Un campo de fecha de 00-00-00 indica que el ID de usuario nunca ha iniciado la sesión.

Resumen de informe de contabilidad


Puede generar un informe que resuma los datos de contabilidad brutos.
Para resumir datos de contabilidad brutos, utilice el mandato sa. Este mandato lee los datos de
contabilidad brutos, normalmente recopilados en el archivo /var/adm/pacct, y los datos de resumen
de uso actual del archivo /var/adm/savacct, si existen datos de resumen. Combina esta información
en un nuevo informe de resumen de uso y depura el archivo de datos brutos a fin de liberar espacio para
la recopilación de más datos.
Requisitos previos
El mandato sa necesita un archivo de entrada de datos de contabilidad brutos como, por ejemplo, el
archivo pacct (archivo de contabilidad de procesos). Para recopilar datos de contabilidad brutos, debe
tener configurado un sistema de contabilidad y debe estar en ejecución.
Procedimiento

Gestión del sistema operativo 161


La finalidad del mandato sa es resumir la información de contabilidad de procesos y visualizar o
almacenar esa información. El uso más sencillo del mandato visualiza una lista de estadísticas de cada
proceso que se ha ejecutado durante el periodo del archivo pacct que se lee. Para generar esta lista,
escriba:

/usr/sbin/sa

Para resumir la información de contabilidad y fusionarla en el archivo de resumen, escriba:

/usr/sbin/sa -s

El mandato sa ofrece muchos distintivos adicionales que especifican cómo se procesa y visualiza la
información de contabilidad. Consulte la descripción del mandato sa para obtener más información.
Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Informe mensual
Puede generar un informe de contabilidad mensual.
El daemon cron llama al mandato monacct que genera lo siguiente:

Elemento Descripción
/var/adm/acct/fiscal Un informe de resumen periódico a partir del informe /var/adm/
acct/sum/tacct por el mandato monacct. El mandato monacct
puede estar configurado para ejecutarse mensualmente o al final de
un periodo fiscal.

Informes de tiempo de conexión


Los registros de contabilidad incluyen registros de inicio de sesión, fin de sesión, cierre del sistema y
último inicio de sesión.
El mandato runacct llama a dos mandatos, acctcon1 y acctcon2, para procesar los registros de inicio
de sesión, fin de sesión y cierre del sistema que se recopilan en el archivo /var/adm/wtmp. El mandato
acctcon1 convierte estos registros en registros de sesión y los graba en el archivo /var/adm/acct/
nite(x)/lineuse. Después, el mandato acctcon2 convierte los registros de sesión en un registro de
totales de contabilidad, /var/adm/logacct, que el mandato acctmerg añade a los informes diarios.
Para obtener información acerca de estos mandatos, consulte runacct, acctcon1 y acctcon2.
Si ejecuta el mandato acctcon1 desde la línea de mandatos, debe incluir el distintivo -l para producir el
informe de uso de línea, /var/adm/acct/nite(x)/lineuse. Para producir un informe global de la
sesión para el periodo de contabilidad, /var/adm/acct/nite(x)/reboots, utilice el mandato
acctcon1 con el distintivo -o.
El mandato lastlogin produce un informe que proporciona la última fecha en la que cada usuario ha
iniciado la sesión. Para obtener información acerca del mandato lastlogin, consulte lastlogin.
Conceptos relacionados
Datos de contabilidad de tiempo de conexión
Los datos de tiempo de conexión se recopilan por los mandatos init y login.
Datos de contabilidad de uso de disco
Mucha de la información de contabilidad se recopila a medida que se consumen los recursos. El mandato
dodisk, ejecutado según lo especificado por el daemon cron, graba periódicamente los registros de uso
de disco para cada usuario en el archivo /var/adm/acct/nite(x)/dacct.

Informe de contabilidad de uso de disco


Los registros de uso de disco recopilados en el archivo /var/adm/acct/nite(x)/dacct se fusionan
en los informes de contabilidad diarios mediante el mandato acctmerg.
Para obtener información acerca del mandato acctmerg, consulte acctmerg.

162 AIX Versión 7.2: Gestión del sistema operativo


Informe de contabilidad de uso de impresora
El registro ASCII del archivo /var/adm/qacct se puede convertir en un registro de total de contabilidad
que el mandato acctmerg añade al informe diario.
Para obtener información acerca del mandato acctmerg, consulte acctmerg.
Conceptos relacionados
Datos de contabilidad de uso de impresora
La recopilación de los datos de uso de impresora es un esfuerzo cooperativo entre el mandato enq y el
daemon de puesta en cola.

Informe de contabilidad de tarifas


Si ha utilizado el mandato chargefee para cargar a los usuarios los servicios como, por ejemplo,
restauraciones de archivos, consultoría o materiales, se graba un registro ASCII de totales de
contabilidad en el archivo /var/adm/fee. El mandato acctmerg añade este archivo a los informes
diarios.

Para obtener información acerca de los mandatos chargefee y acctmerg, consulte chargefee y
acctmerg.
Conceptos relacionados
Datos de contabilidad de tarifas
Puede generar un registro ASCII de totales de contabilidad en el archivo /var/adm/fee.

Informes de contabilidad fiscal


Generalmente, los informes de contabilidad fiscal se recopilan mensualmente utilizando el mandato
monacct.
El informe se almacena en /var/adm/acct/fiscal(x)/fiscrptMM donde MM es el mes en que se ha
ejecutado el mandato monacct. Este informe incluye información similar a los informes diarios
resumidos para todo el mes.

Informes de actividad del sistema de contabilidad


Puede crear un informe que muestre la actividad del sistema de contabilidad.
Para generar un informe sobre la actividad del sistema, utilice el mandato prtacct. Este mandato lee la
información de un archivo de totales de contabilidad (formato de archivo tacct) y produce salida
formateada. Los archivos de totales de contabilidad incluyen los informes diarios sobre el tiempo de
conexión, el tiempo de proceso, el uso de disco y el uso de impresora.
Requisitos previos
El mandato prtacct necesita un archivo de entrada en formato de archivo tacct. Esto implica que debe
haber configurado un sistema de contabilidad y que debe estar en ejecución o que debe haber ejecutado
el sistema de contabilidad en el pasado.
Procedimiento
Genere un informe sobre la actividad del sistema entrando:

prtacct -f Especificación -v Cabecera Archivo

Especificación es la lista de números de campo separados mediante comas o los rangos utilizados por el
mandato acctmerg. El distintivo -v produce salida detallada donde los números de coma flotante se
visualizan en notación de precisión superior. Cabecera es el título que desea que aparezca en el informe y
es opcional. Archivo es el nombre completo de vía de acceso del archivo de totales de contabilidad que se
va a utilizar como entrada. Puede especificar más de un archivo.
Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Gestión del sistema operativo 163


Soporte de nombres de usuario superiores a ocho caracteres
Para mantener la compatibilidad con todos los scripts de versiones anteriores, el soporte de nombres de
usuario largos no está habilitado de forma predeterminada en la contabilidad. En vez de esto, todos los ID
de usuario se truncan en los ocho primeros caracteres.
Para habilitar el soporte de nombres de usuario largos, se ha proporcionado a la mayoría de mandatos el
distintivo adicional -X, que les permite aceptar y generar ID de usuario superiores a ocho caracteres (en
los formatos ASCII y binario). Además, cuando se habilita el soporte de nombres de usuario largos, los
mandatos y scripts procesarán los archivos de los directorios /var/adm/acct/sumx, /var/adm/acct/
nitex y /var/adm/acct/fiscalx, en lugar de utilizar /var/adm/acct/sum, /var/adm/acct/nite
y /var/adm/acct/fiscal.

Mandatos de contabilidad
Los mandatos de contabilidad funcionan de diferentes maneras.
Algunos mandatos:
• Recopilan datos o generan informes para un tipo específico de contabilidad: tiempo de conexión,
proceso, uso de disco, uso de impresora o uso de mandatos.
• Llaman a otros mandatos. Por ejemplo, el mandato runacct, que normalmente se ejecuta
automáticamente por el daemon cron, llama a muchos mandatos que recopilan y procesan datos de
contabilidad y preparan informes. Para obtener la contabilidad automáticamente, primero debe
configurar el daemon cron para que ejecute el mandato runacct. Consulte el mandato crontab para
obtener más información acerca de cómo configurar el daemon cron para someter mandatos a
intervalos planificados regularmente. Para obtener información acerca de estos mandatos, consulte
runacct, cron daemon y crontab.
• Realizan las funciones de mantenimiento y aseguran la integridad de los archivos de datos activos.
• Permiten que los miembros del grupo adm realicen tareas ocasionales como, por ejemplo, visualizar
registros específicos, especificando un mandato en el teclado.
• Permiten que un usuario visualice información específica. Sólo hay un mandato de usuario, el mandato
acctcom, que visualiza resúmenes de contabilidad de procesos.

Mandatos que se ejecutan automáticamente


Varios mandatos recopilan automáticamente datos de contabilidad.
Normalmente varios mandatos ejecutados por el daemon cron recopilan datos de contabilidad
automáticamente. Estos mandatos son:
runacct
Maneja el procedimiento de contabilidad diario principal. El mandato runacct normalmente iniciado
por el daemon cron durante horas no punta, llama a otros mandatos de contabilidad para procesar
los archivos de datos activos y generar resúmenes de mandatos y uso de recursos, clasificados por
nombre de usuario. También llama al mandato acctmerg para generar archivos de informes de
resumen diarios y al mandato ckpacct para mantener la integridad de los archivos de datos activos.
ckpacct
Maneja el tamaño del archivo pacct. Es mejor tener varios archivos pacct más pequeños si debe
reiniciar el procedimiento runacct después de una anomalía en el proceso de estos registros. El
mandato ckpacct comprueba el tamaño del archivo de datos activo /var/adm/pacct, y si el
archivo es superior a 500 bloques, el mandato invoca al mandato turnacct switch para desactivar
temporalmente la contabilidad de procesos. Los datos se transfieren a un nuevo archivo
pacct, /var/adm/pacct x. (x es un entero que aumenta cada vez que se crea un nuevo archivo
pacct.) Si el número de bloques de disco libres cae por debajo de 500, el mandato ckpacct llama al
mandato turnacct off para desactivar la contabilidad de procesos.
dodisk
Llama al mandato acctdisk y al mandato diskusg o al mandato acctdusg para grabar registros de
uso de disco en el archivo /var/adm/acct/nite/dacct. Estos datos se fusionan posteriormente
en informes diarios.

164 AIX Versión 7.2: Gestión del sistema operativo


dodisk
Llama al mandato acctdisk y al mandato diskusg o al mandato acctdusg para grabar registros de
uso de disco en el archivo /var/adm/acct/nite/dacct. Estos datos se fusionan posteriormente
en informes diarios.
monacct
Genera un resumen periódico a partir de informes diarios.
sa1
Recopila y almacena datos binarios en el archivo /var/adm/sa/sa dd, donde dd es el día del mes.
sa2
Graba un informe diario en el archivo /var/adm/sa/sadd, donde dd es el día del mes. El mandato
elimina los informes del archivo /var/adm/sa/sadd que han estado ahí más de una semana.
Otros mandatos se ejecutan automáticamente por otros procedimientos que no son el daemon cron:
startup
Cuando se añade al archivo /etc/rc, el mandato startup inicia procedimientos de arranque para el
sistema de contabilidad.
shutacct
Registra el tiempo que la contabilidad ha estado desactivada llamando al mandato acctwtmp para
grabar una línea en el archivo /var/adm/wtmp. Después, llama al mandato turnacct off para
desactivar la contabilidad de procesos.

Mandatos del teclado


Un miembro del grupo adm puede especificar los mandatos siguientes desde el teclado.
ac
Imprime los registros de tiempo de conexión. Este mandato se proporciona para compatibilidad con
los sistemas de Berkeley Software Distribution (BSD).
acctcom
Visualiza resúmenes de contabilidad de procesos. Este mandato también está disponible para los
usuarios.
acctcon1
Visualiza resúmenes de tiempo de conexión. Se deben utilizar los distintivos -l o -o.
accton
Activa y desactiva la contabilidad de procesos.
chargefee
Carga al usuario una tarifa predeterminada por unidades de trabajo realizadas. El mandato acctmerg
añade los cargos al informe diario.
fwtmp
Convierte los archivos entre los formatos binario y ASCII.
last
Visualiza información acerca de inicios de sesión anteriores. Este mandato se proporciona para
compatibilidad con sistemas BSD.
lastcomm
Visualiza información acerca de los últimos mandatos que se han ejecutado. Este mandato se
proporciona para compatibilidad con sistemas BSD.
lastlogin
Visualiza la hora en que cada usuario ha iniciado la sesión por última vez.
pac
Prepara registros de contabilidad de impresora/trazador. Este mandato se proporciona para
compatibilidad con sistemas BSD.
prctmp
Visualiza el registro de una sesión.

Gestión del sistema operativo 165


prtacct
Visualiza los archivos de totales de contabilidad.
sa
Resume la información de contabilidad bruta para ayudar a gestionar grandes volúmenes de
información de contabilidad. Este mandato se proporciona para compatibilidad con sistemas BSD.
sadc
Informa sobre varias acciones del sistema local como, por ejemplo, el uso de almacenamiento
intermedio, la actividad de E/S de disco y cinta, los contadores de actividad de dispositivo TTY y los
contadores de acceso a archivos.
sar
Graba en salida estándar el contenido de los contadores de actividad acumulados seleccionados del
sistema operativo. El mandato sar sólo informa de las actividades locales.
time
Imprime el tiempo real, el tiempo de usuario y el tiempo del sistema necesario para ejecutar un
mandato.
timex
Informa en segundos del tiempo transcurrido, el tiempo de usuario y el tiempo de ejecución.
Conceptos relacionados
Recopilación e informe de datos del sistema
Puede configurar el sistema para que recopile datos y genere informes automáticamente.

Archivos de contabilidad
Los dos directorios de contabilidad principales son el directorio /usr/sbin/acct, donde se almacenan
todos los programas en lenguaje C y procedimientos de shell necesarios para ejecutar el sistema de
contabilidad, y el directorio /var/adm, que contiene los archivos de datos, informes y resúmenes.
Los archivos de datos de contabilidad pertenecen a miembros del grupo adm, y todos los archivos de
datos activos (por ejemplo, wtmp y pacct) residen en el directorio inicial de adm /var/adm.

Archivos de datos de contabilidad


Los siguientes archivos están en el directorio /var/adm.

Elemento Descripción
/var/adm/diskdiag Salida de diagnóstico durante la ejecución de programas
de contabilidad de disco
/var/adm/dtmp Salida del mandato acctdusg
/var/adm/fee Salida del mandato chargefee, en registros tacct ASCII
/var/adm/pacct Archivo de contabilidad de procesos activos
/var/adm/wtmp Archivo de contabilidad de procesos activos
/var/adm/Spacct .mmdd Archivos de contabilidad de procesos para mmdd durante
la ejecución del mandato runacct.

Archivos de informe y resumen de contabilidad


Algunos subdirectorios son necesarios antes de habilitar el sistema de contabilidad.
Los archivos de informe y resumen residen en un subdirectorio /var/adm/acct. Debe crear los
siguientes subdirectorios antes de habilitar el sistema de contabilidad.
/var/adm/acct/nite(x)
Contiene archivos que el mandato runacct vuelve a utilizar diariamente
/var/adm/acct/sum(x)
Contiene archivos de resumen acumulado que el mandato runacct actualiza diariamente
/var/adm/acct/fiscal(x)
Contiene archivos de resumen mensual que el mandato monacct crea.

166 AIX Versión 7.2: Gestión del sistema operativo


Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Inicio del mandato runacct para contabilidad


Puede iniciar el mandato runacct.
Requisitos previos
1. Debe tener el sistema de contabilidad instalado.
2. Debe tener autorización de usuario root o grupo adm.
Notas:
1. Si llama al mandato runacct sin parámetros, el mandato supone que es la primera vez que se ejecuta
el mandato hoy. Por lo tanto, debe incluir el parámetro mmdd cuando reinicie el programa runacct,
para que el mes y el día sean correctos. Si no especifica un estado, el programa runacct lee el
archivo /var/adm/acct/nite(x)/statefile para determinar el punto de entrada para el
proceso. Para alterar temporalmente el archivo /var/adm/acct/nite(x)/statefile, especifique
el estado deseado en la línea de mandatos.
2. Cuando realice la tarea siguiente, puede necesitar utilizar el nombre completo de vía de acceso /usr/
sbin/acct/runacct en lugar del nombre de mandato simple, runacct.
Procedimiento
Para iniciar el mandato runacct, escriba lo siguiente:

nohup runacct 2> \


/var/adm/acct/nite/accterr &

Esta entrada hace que el mandato pase por alto todas las señales INTR y QUIT mientras realiza el
proceso de fondo. Redirige toda la salida de error estándar al archivo /var/adm/acct/nite/accterr.

Reinicio del mandato runacct para contabilidad


Si el mandato runacct no es satisfactorio, puede reiniciarlo.
Los requisitos previos para este procedimiento son:
• Debe tener el sistema de contabilidad instalado.
• Debe tener autorización de usuario root o grupo adm.
Nota: Las causas más comunes de que falle el mandato runacct son porque:
• El sistema se desactiva.
• El sistema de archivos /usr se queda sin espacio.
• El archivo /var/adm/wtmp contiene registros con indicaciones de fecha y hora incoherentes.
Si el mandato runacct no es satisfactorio, haga lo siguiente:
1. Compruebe en el archivo /var/adm/acct/nite(x)/active mmdd si hay mensajes de error.
2. Si existen el archivo activo y los archivos de bloqueo en acct/nite, compruebe el archivo accterr,
donde se redirigen los mensajes de error cuando el daemon cron llama al mandato runacct.
3. Realice las acciones necesarias para eliminar errores.
4. Reinicie el mandato runacct.
5. Para reiniciar el mandato runacct para una fecha específica, escriba lo siguiente:

nohup runacct 0601 2>> \


/var/adm/acct/nite/accterr &

Este programa reinicia runacct para el 1 de junio (0601). El programa runacct lee el
archivo /var/adm/acct/nite/statefile para averiguar con qué estado debe empezar. Toda la
salida de error estándar se añade al archivo /var/adm/acct/nite/accterr.

Gestión del sistema operativo 167


6. Para reiniciar el programa runacct en un estado especificado, por ejemplo, en el estado MERGE,
escriba lo siguiente:

nohup runacct 0601 MERGE 2>> \


/var/adm/acct/nite/accterr &

Archivos del mandato runacct


El mandato runacct genera archivos de informe y resumen.
Los siguientes archivos de informe y resumen, producidos por el mandato runacct, son especialmente
interesantes:

Elemento Descripción
/var/adm/acct/nite(x)/ Contiene estadísticas de uso para cada línea de terminal del sistema.
lineuse Este informe es muy útil para detectar líneas incorrectas. Si la
proporción entre el número de finalizaciones e inicios de sesión
excede en aproximadamente 3 a 1, hay una gran posibilidad de que
una línea falle.
/var/adm/acct/nite(x)/ Contiene el archivo de totales de contabilidad para el día anterior.
daytacct
/var/adm/acct/sum(x)/ Contiene la acumulación del archivo nite/daytacct de cada día y
tacct se puede utilizar para la facturación. El mandato monacct reinicia el
archivo cada mes o periodo fiscal.
/var/adm/acct/sum(x)/cms Contiene la acumulación de los resúmenes de mandatos de cada día.
El mandato monacct lee esta versión binaria del archivo y la depura.
La versión ASCII es nite/cms.
/var/adm/acct/sum(x)/ Contiene el resumen de mandatos diario. Se almacena una versión
daycms ASCII en nite/daycms.
/var/adm/acct/sum(x)/ Contiene un registro de la última vez que se ha utilizado cada ID de
loginlog usuario.
/var/adm/acct/sum(x)/ El archivo contiene una copia del informe diario guardado por el
rprt mmdd mandato runacct.

Archivos del directorio /var/adm/acct/nite(x)


Los archivos siguientes se encuentran en el directorio /var/adm/acct/nite(x).

Elemento Descripción
active El mandato runacct lo utiliza para registrar mensajes de aviso y
error de progreso e impresión. El archivo active. mmdd es una
copia del archivo active realizada por el programa runacct
después de que detecte un error.
cms Resumen ASCII de totales de mandatos utilizado por el mandato
prdaily.
[Link] Conecta registros de totales de contabilidad.
ctmp Conecta registros de sesión.
daycms Resumen ASCII de mandatos diarios utilizado por el mandato
prdaily.
daytacct Registros de totales de contabilidad para un día.
dacct Registros de totales de contabilidad de disco, creados por el
mandato dodisk.

168 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
accterr Salida de diagnóstico generada durante la ejecución del mandato
runacct.
lastdate Último día en que se ha ejecutado runacct, en formato fecha +%m
%d.
lock1 Se utiliza para controlar el uso en serie del mandato runacct.
lineuse Informe de uso de línea tty utilizado por el mandato prdaily.
log Salida de diagnóstico del mandato acctcon1.
logmmdd Igual que log después de que el mandato runacct detecte un error.
reboots Contiene las fechas de inicio y finalización de wtmp, y un listado de
los reinicios del sistema.
statefile Se utiliza para registrar el estado actual durante la ejecución del
mandato runacct.
tmpwtmp El archivo wtmp corregido por el mandato wtmpfix.
wtmperror Contiene mensajes de error de wtmpfix.
wtmperrmmdd Igual que wtmperror después de que el mandato runacct detecte
un error.
[Link] Contiene el archivo wtmp del día anterior. Se ha eliminado durante la
limpieza del mandato runacct.

Archivos del directorio /var/adm/acct/sum(x)


Los archivos siguientes se encuentran en el directorio /var/adm/acct/sum(x).

Elemento Descripción
cms Archivo de resumen de totales de mandatos para el periodo fiscal actual, en formato
binario.
cmsprev Archivo de resumen de mandatos sin la última actualización.
daycms Archivo de resumen de mandatos para el día anterior, en formato binario.
lastlogin Archivo creado por el mandato lastlogin.
[Link] Versión concatenada de todos los archivos pacct para mmdd. Este archivo se elimina
después del rearranque del sistema por el mandato remove. Para obtener información
acerca del mandato remove, consulte remove.
rprtmmdd Salida guardada del mandato prdaily.
tacct Archivo de totales de contabilidad acumulados para el periodo fiscal actual.
tacctprev Igual que tacct sin la última actualización.
tacctmmdd Archivo de totales de contabilidad para mmdd.

Archivos del directorio /var/adm/acct/fiscal(x)


Los siguientes archivos se encuentran en el directorio /var/adm/acct/fiscal(x).

Elemento Descripción
cms? Archivo de resumen de totales de mandatos para el periodo fiscal, especificado por ?, en
formato binario.
fiscrpt? Informe similar al del mandato prdaily para el periodo fiscal, especificado por ?, en
formato binario

Gestión del sistema operativo 169


Elemento Descripción
tacct? Archivo de totales de contabilidad para el periodo fiscal, especificado por ?, en formato
binario.

Formatos de archivos de contabilidad


La siguiente tabla resume la salida y los formatos de los archivos de contabilidad.

Elemento Descripción
wtmp Produce el archivo de contabilidad de procesos activos. El formato del archivo wtmp se
define en el archivo utmp.h. Para obtener información acerca del archivo utmp.h,
consulte utmp.h.
ctmp Produce registros de sesión de conexión. El formato se describe en el archivo ctmp.h.
pacct* Produce registros de contabilidad de procesos activos. El formato de la salida se define
en el archivo /usr/include/sys/acct.h.
Spacct* Produce archivos de contabilidad de procesos para mmdd durante la ejecución del
mandato runacct. El formato de estos archivos se define en el archivo sys/acct.h.
daytacct Produce registros de totales de contabilidad para un día. El formato del archivo se define
en el formato del archivo tacct.
sum/tacct Produce un archivo binario que acumula los resúmenes de mandatos de cada día. El
formato de este archivo se define en el archivo de cabecera /usr/include/sys/
acct.h.
ptacct Produce versiones concatenadas de archivos pacct. El formato de estos archivos se
definen en el archivo tacct.
ctacct Produce registros de totales de contabilidad de conexión. La salida de este archivo se
define en el archivo tacct.
cms Produce un resumen de totales de mandatos de contabilidad utilizado por el mandato
prdaily, en formato binario. La versión ASCII es nite/cms.
daycms Resumen de mandatos diarios utilizado por el mandato prdaily, en formato binario. La
versión ASCII es nite/daycms.

Administración de la contabilidad del sistema


Hay varias tareas que puede llevar a cabo para la contabilidad del sistema. Estas tareas incluyen
configurar un sistema de contabilidad, mostrar el uso de CPU y visualizar procesos de contabilidad.

Configuración de un sistema de contabilidad


Se puede configurar un sistema de contabilidad.
Debe tener autorización de root para completar este procedimiento.
A continuación se presenta una visión general de los pasos que se deben seguir para configurar un
sistema de contabilidad. Consulte los mandatos y los archivos indicados en estos pasos para obtener
información más específica.
1. Utilice el mandato nulladm para garantizar que cada archivo tenga el permiso de acceso correcto: el
permiso de lectura (r) y grabación (w) para el propietario y grupo del archivo y el permiso de lectura (r)
para otros:

/usr/sbin/acct/nulladm wtmp pacct

Esto proporciona acceso a los archivos pacct y wtmp.


2. Actualice el archivo /etc/acct/holidays para incluir las horas que designe como punta y para
reflejar la planificación de las fiestas del año.

170 AIX Versión 7.2: Gestión del sistema operativo


Nota: Las líneas de comentarios pueden aparecer en cualquier lugar del archivo siempre que el primer
carácter de la línea sea un asterisco (*).
a. Para definir las horas punta, rellene los campos de la primera línea de datos (la primera línea que
no es un comentario), utilizando un reloj de 24 horas. Esta línea consiste en tres campos de 4
dígitos, por el orden siguiente:
1) Corriente año
2) Principio de la hora punta (hhmm)
3) Fin de la hora punta (hhmm)
Los blancos iniciales se pasan por alto. Puede especificar la medianoche como 0000 o 2400.
Por ejemplo, para especificar el año 2000, si la hora punta empieza a las 8:00 de la mañana y
finaliza a las 5:00 de la tarde, especifique:

2000 0800 1700

b. Para definir las fiestas de la compañía durante el año, rellene la siguiente línea de datos. Cada línea
contiene cuatro campos, en el orden siguiente:
1) Día del año
2) Mes
3) Día del mes
4) Descripción del día de fiesta
El campo de día del año contiene el número del día en el que cae la fiesta y debe ser un número de
1 a 365 (366 en los años bisiestos). Por ejemplo, el 1 de febrero es el día 32. Los otros tres campos
sólo son informativos y se tratan como comentarios.
A continuación, encontrará un ejemplo de dos líneas:

1 Jan 1 New Year's Day


332 Nov 28 Thanksgiving Day

3. Active el proceso de contabilidad añadiendo la línea siguiente al archivo /etc/rc o suprimiendo el


símbolo de comentario (#) situado delante de la línea si ya existe:

/usr/bin/su - adm -c /usr/sbin/acct/startup

El procedimiento startup registra la hora en que se ha activado la contabilidad y limpia los archivos de
contabilidad del día anterior.
4. Identifique todos los sistemas de archivos que desea incluir en la contabilidad del disco añadiendo la
línea siguiente a la stanza para el sistema de archivos en el archivo /etc/filesystems:

account = true

5. Especifique un archivo de datos para utilizarlo para los datos de impresora añadiendo la siguiente
línea a la stanza de cola del archivo /etc/qconfig:

acctfile = /var/adm/qacct

6. Como usuario adm, cree los directorios /var/adm/acct/nite, /var/adm/acct/fiscal


y /var/adm/acct/sum para recopilar los registros diarios y del periodo fiscal:

su - adm
cd /var/adm/acct
mkdir nite fiscal sum
exit

Para nombres de usuarios largos, utilice los mandatos siguientes en su lugar:

su - adm
cd /var/adm/acct

Gestión del sistema operativo 171


mkdir nitex fiscalx sumx
exit

7. Establezca la ejecución automática de procedimientos de contabilidad diarios editando el


archivo /var/spool/cron/crontabs/adm para que incluya los mandatos dodisk, ckpacct y
runacct.
Por ejemplo:

0 2 * * 4 /usr/sbin/acct/dodisk
5 * * * * /usr/sbin/acct/ckpacct
0 4 * * 1-6 /usr/sbin/acct/runacct
2>/var/adm/acct/nite/accterr

Para nombres de usuario largos, añada las siguientes líneas en su lugar:

0 2 * * 4 /usr/sbin/acct/dodisk -X
5 * * * * /usr/sbin/acct/ckpacct
0 4 * * 1-6 /usr/sbin/acct/runacct -X
2>/var/adm/acct/nitex/accterr

La primera línea inicia la contabilidad del disco a las 2:00 de la mañana (0 2) de cada jueves (4). La
segunda línea inicia una comprobación de la integridad de los archivos de datos activos 5 minutos
después de cada hora (5 *) todos los días (*). La tercera línea ejecuta la mayoría de los
procedimientos de contabilidad y procesa los archivos de datos activos a las 4:00 de la mañana (0 4)
cada día de lunes a sábado (1-6). Si estas horas no encajan con las horas en que opera el sistema,
ajuste las entradas.
Nota: Debe tener autorización de usuario root para editar el archivo /var/spool/cron/crontabs/
adm.
8. Establezca el resumen de contabilidad mensual para que se ejecute automáticamente incluyendo el
mandato monacct en el archivo /var/spool/cron/crontabs/adm.
Por ejemplo, escriba:

15 5 1 * * /usr/sbin/acct/monacct

Para los nombres de usuarios largos, añada la siguiente línea en su lugar:

15 5 1 * * /usr/sbin/acct/monacct -X

Asegúrese de planificar este procedimiento lo suficientemente temprano para que finalice el informe.
Este ejemplo inicia el procedimiento a las 5:15 de la mañana el primer día de cada mes.
9. Para someter el archivo cron editado, escriba:

crontab /var/spool/cron/crontabs/adm

Conceptos relacionados
Recopilación e informe de datos del sistema
Puede configurar el sistema para que recopile datos y genere informes automáticamente.
Informes de actividad del sistema de contabilidad
Puede crear un informe que muestre la actividad del sistema de contabilidad.
Resumen de informe de contabilidad
Puede generar un informe que resuma los datos de contabilidad brutos.
Tareas relacionadas
Visualización del tiempo de proceso de los procesos de contabilidad activos
Puede visualizar el tiempo de proceso de los procesos activos.
Visualización del tiempo de proceso de los procesos de contabilidad finalizados
Puede visualizar el tiempo de proceso de los procesos finalizados.
Visualización del uso de CPU para cada proceso de contabilidad
Puede visualizar informes formateados acerca del uso de CPU por usuario con el mandato acctprc1.

172 AIX Versión 7.2: Gestión del sistema operativo


Visualización de la contabilidad de uso de CPU para cada usuario
Puede visualizar un informe formateado acerca del uso de CPU por usuario con una combinación de los
mandatos acctprc1 y prtacct.
Visualización de los registros de contabilidad del uso de impresora o trazador
Puede visualizar los registros de contabilidad del uso de la impresora o el trazador con el mandato pac.
Referencia relacionada
Archivos de informe y resumen de contabilidad
Algunos subdirectorios son necesarios antes de habilitar el sistema de contabilidad.

Visualización de la actividad del sistema de contabilidad


Puede visualizar información formateada acerca de la actividad del sistema con el mandato sar.
Para visualizar las estadísticas de la actividad del sistema, el mandato sadc debe estar en ejecución.
Nota: El método típico de ejecutar el mandato sadc es colocar una entrada para el mandato sa1 en el
archivo crontab raíz. El mandato sa1 es una variante de procedimiento de shell del mandato sadc
diseñado para funcionar con el daemon cron.
Para visualizar información básica de la actividad del sistema, escriba:

sar 2 6

donde el primer número es los segundos entre intervalos de muestreo y el segundo número es los
intervalos que se deben visualizar. La salida de este mandato se parece a esta:

arthurd 2 3 000166021000 05/28/92

[Link] %usr %sys %wio %idle


[Link] 4 9 0 88
[Link] 1 10 0 89
[Link] 1 11 0 88
[Link] 1 11 0 88
[Link] 3 9 0 88
[Link] 2 10 0 88

Average 2 10 0 88

El mandato sar también ofrece varios distintivos para visualizar una matriz extensa de estadísticas del
sistema. Para ver todas las estadísticas disponibles, utilice el distintivo -A. Para ver una lista de
estadísticas disponibles y los distintivos para visualizarlas, consulte el mandato sar.
Nota: Para grabar un informe diario de la actividad del sistema en /var/adm/sa/sadd, incluya una
entrada en el archivo crontab raíz para el mandato sa2. El mandato sa2 es una variante de
procedimiento de shell para el mandato sar diseñado para funcionar con el daemon cron.

Visualización de la actividad del sistema de contabilidad mientras se ejecuta un mandato


Puede visualizar información formateada acerca de la actividad del sistema mientras se ejecuta un
mandato determinado.
Los distintivos -o y -p del mandato timex necesitan que la contabilidad del sistema esté activada.
Puede utilizar los mandatos time y timex para visualizar información formateada acerca de la actividad
del sistema mientras se ejecuta un mandato determinado.
Para visualizar el tiempo transcurrido, el tiempo de usuario y el tiempo de ejecución del sistema para un
mandato determinado, escriba:

time NombreMandato

O bien

timex NombreMandato

Gestión del sistema operativo 173


Para visualizar la actividad total del sistema (todos los elementos de datos informados por el mandato
sar) durante la ejecución de un mandato determinado, escriba:

timex -s NombreMandato

El mandato timex tiene dos distintivos adicionales. El distintivo -o informa del número total de bloques
leídos o grabados por el mandato y todos sus hijos. El distintivo -p lista todos los registros de contabilidad
de proceso para un mandato y todos sus hijos.

Visualización del tiempo de proceso de los procesos de contabilidad activos


Puede visualizar el tiempo de proceso de los procesos activos.
El mandato acctcom lee la entrada en formato de registro total de contabilidad (formato de archivo
acct). Esto implica que la contabilidad de procesos está activada o que ha ejecutado la contabilidad de
procesos en el pasado.
El mandato ps ofrece diversos distintivos para adaptar la información visualizada.
Para producir una lista completa de todos los procesos activos excepto los procesos de kernel, escriba:

ps -ef

También puede visualizar una lista de todos los procesos asociados a terminales. Para ello, escriba:

ps -al

Ambos usos visualizan varias columnas para cada proceso, incluyendo el tiempo de CPU actual para el
proceso en minutos y segundos.
Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Visualización del tiempo de proceso de los procesos de contabilidad finalizados


Puede visualizar el tiempo de proceso de los procesos finalizados.
El mandato acctcom lee la entrada en formato de registro total de contabilidad (formato de archivo
acct). Esto implica que la contabilidad de procesos está activada o que ha ejecutado la contabilidad de
procesos en el pasado.
Las funciones de contabilidad de procesos se activan con el mandato startup, que normalmente se
inicia en la inicialización del sistema con una llamada al archivo /etc/rc. Cuando las funciones de
contabilidad de proceso están en ejecución, se graba un registro en /var/adm/pacct (un archivo de
registros de totales de contabilidad) para cada proceso finalizado que incluye el tiempo de inicio y
detención del proceso. Puede visualizar la información de tiempo de proceso de un archivo pacct con el
mandato acctcom. Este mandato tiene diversos distintivos que permiten flexibilidad al especificar los
procesos que se deben visualizar.
Por ejemplo, para ver todos los procesos que se han ejecutado durante un número mínimo de segundos
de CPU o más, utilice el distintivo -O, escriba:

acctcom -O 2

Esto visualiza registros para cada proceso que se ha ejecutado durante 2 segundos como mínimo. Si no
especifica un archivo de entrada, el mandato acctcom lee la entrada del directorio /var/adm/pacct.
Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Visualización del uso de CPU para cada proceso de contabilidad


Puede visualizar informes formateados acerca del uso de CPU por usuario con el mandato acctprc1.

174 AIX Versión 7.2: Gestión del sistema operativo


El mandato acctprc1 necesita que la entrada esté en formato del registro de totales de contabilidad
(formato de archivo acct). Esto implica que la contabilidad de procesos está activada o que ha ejecutado
la contabilidad de procesos en el pasado.
Para producir un informe formateado del uso de CPU por proceso, escriba:

acctprc1 </var/adm/pacct

Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Visualización de la contabilidad de uso de CPU para cada usuario


Puede visualizar un informe formateado acerca del uso de CPU por usuario con una combinación de los
mandatos acctprc1 y prtacct.
El mandato acctprc1, acctprc2, o accton necesita que la entrada esté en formato del registro de totales
de contabilidad (formato de archivo acct). Esto implica que la contabilidad de procesos está activada o
que ha ejecutado la contabilidad de procesos en el pasado.
Para mostrar el uso de CPU para cada usuario, siga estos pasos:
1. Genere un archivo de salida del uso de CPU por proceso escribiendo:

acctprc1 </var/adm/pacct >[Link]

El archivo /var/adm/pacct es la salida predeterminada para los registros de contabilidad de


procesos. Puede especificar un archivo pacct de archivado en su lugar.
2. Genere un archivo de registros de totales de contabilidad binario a partir de la salida del paso anterior,
escribiendo:

acctprc2 <[Link] >/var/adm/acct/nite/daytacct

Nota: El archivo daytacct se fusiona con otros registros de totales de contabilidad mediante el
mandato acctmerg para producir el registro resumen diario, /var/adm/acct/sum(x)/tacct.
3. Utilice el mandato Visualización de la contabilidad de uso de CPU para cada usuario para visualizar un
informe formateado de uso de CPU resumido por el usuario escribiendo:

prtacct </var/adm/acct/nite/daytacct

Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Visualización del uso de tiempo de conexión para contabilidad


Puede visualizar el tiempo de conexión para todos los usuarios, usuarios individuales y por inicio de
sesión individual con el mandato ac.
El mandato ac extrae la información de inicio de sesión del archivo /var/adm/wtmp, por lo que este
archivo debe existir. Si el archivo no se ha creado, se devuelve el siguiente mensaje de error:

No /var/adm/wtmp

Si el archivo se llena demasiado, se crean archivos wtmp adicionales; puede visualizar la información de
tiempo de conexión de estos archivos especificándolos con el distintivo -w. Para obtener más
información acerca del mandato ac, consulte ac.
Para visualizar el tiempo de conexión total para todos los usuarios, escriba:

/usr/sbin/acct/ac

Gestión del sistema operativo 175


Este mandato visualiza un solo número decimal que es la suma total del tiempo de conexión, en minutos,
de todos los usuarios que han iniciado la sesión durante el periodo del archivo wtmp actual.
Para visualizar el tiempo de conexión total para uno o varios usuarios determinados, escriba:

/usr/sbin/acct/ac Usuario1 Usuario2 ...

Este mandato visualiza un solo número decimal que es la suma total del tiempo de conexión, en minutos,
del usuario o usuarios que ha especificado para cualquier inicio de sesión durante el periodo del archivo
wtmp actual.
Para visualizar el tiempo de conexión de un usuario individual más el tiempo de conexión total, escriba:

/usr/sbin/acct/ac -p Usuario1 Usuario2 ...

Este mandato visualiza un número decimal para cada usuario especificado igual al tiempo de conexión
total, en minutos, para ese usuario durante el periodo del archivo wtmp actual. También visualiza un
número decimal que es la suma total del tiempo de conexión para todos los usuarios especificados. Si no
se ha especificado ningún usuario en el mandato, la lista incluye todos los usuarios que han iniciado la
sesión durante el periodo del archivo wtmp.

Visualización de la utilización de espacio de disco para contabilidad


Puede visualizar información de utilización de espacio de disco con el mandato acctmerg.
Para visualizar información de la utilización del espacio de disco, el mandato acctmerg necesita entrada
de un archivo dacct (contabilidad de disco). La recopilación de registros de contabilidad de uso de disco
la realiza el mandato dodisk.
Para visualizar información de la utilización de espacio de disco, escriba:

acctmerg -a1 -2,13 -h </var/adm/acct/nite(x)/dacct

Este mandato visualiza registros de contabilidad de disco, que incluyen el número de bloques de 1 KB
utilizados por cada usuario.
Nota: El mandato acctmerg siempre lee la entrada estándar y puede leer hasta nueve archivos
adicionales. Si no conduce entrada al mandato, debe redirigir la entrada de un archivo; el resto de los
archivos se puede especificar sin redirección.

Visualización de los registros de contabilidad del uso de impresora o trazador


Puede visualizar los registros de contabilidad del uso de la impresora o el trazador con el mandato pac.
• Para recopilar información del uso de impresora, debe tener un sistema de contabilidad configurado y
en ejecución. Consulte el apartado “Configuración de un sistema de contabilidad” en la página 170 para
ver las directrices.
• La impresora o el trazador cuyos registros desea contabilizar deben tener una cláusula acctfile= en
la stanza de impresora del archivo /etc/qconfig. El archivo especificado en la cláusula acctfile=
debe otorgar los permisos de lectura y grabación al usuario root o grupo printq.
• Si se especifica el distintivo -s del mandato pac, el mandato vuelve a grabar el nombre de archivo de
resumen añadiendo _sum al nombre de vía de acceso especificado por la cláusula acctfile= en el
archivo /etc/qconfig. Este archivo debe existir y otorgar permisos de lectura y grabación al usuario
root o grupo printq.
Para visualizar la información del uso de la impresora para todos los usuarios de una impresora
determinada, escriba:

/usr/sbin/pac -PPrinter

Si no especifica una impresora, la variable de entorno PRINTER nombra la impresora predeterminada. Si


la variable PRINTER no está definida, el valor predeterminado es lp0.
Para visualizar la información del uso de la impresora para determinados usuarios de una impresora
determinada, escriba:

176 AIX Versión 7.2: Gestión del sistema operativo


/usr/sbin/pac -PPrinter Usuario1 Usuario2 ...

El mandato pac ofrece otros distintivos para controlar la información que se visualiza.
Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.

Actualización del archivo holidays


El archivo holidays se queda obsoleto tras la última fiesta que se lista o cuando cambia el año. Puede
actualizar el archivo holidays.
El mandato acctcon1 (iniciado desde el mandato runacct) envía correo a las cuentas root y adm
cuando el archivo /usr/lib/acct/holidays se queda obsoleto.
Actualice el archivo holidays obsoleto editando el archivo /var/adm/acct/holidays para diferenciar
entre las horas punta y las que no lo son.
Se supone que las horas punta son el periodo en que el sistema está más activo como, por ejemplo, los
días laborables. Los sábados y los domingos siempre son horas no punta para el sistema de contabilidad,
como cualquier otro día festivo de la lista.
El archivo de fiestas contiene tres tipos de entradas: comentarios, el año y el periodo de horas punta y
una lista de fiestas parecida a la del ejemplo siguiente:

* Prime/Non-Prime Time Table for Accounting System


*
* Curr Prime Non-Prime
* Year Start Start
1992 0830 1700
*
* Day of Calendar Company
* Year Date Holiday
*
* 1 Jan 1 New Year's Day
* 20 Jan 20 Martin Luther King Day
* 46 Feb 15 President's Day
* 143 May 28 Memorial Day
* 186 Jul 3 4th of July
* 248 Sep 7 Labor Day
* 329 Nov 24 Thanksgiving
* 330 Nov 25 Friday after
* 359 Dec 24 Christmas Eve
* 360 Dec 25 Christmas Day
* 361 Dec 26 Day after Christmas

La primera línea que no es un comentario debe especificar el año actual (cuatro dígitos) y el principio y el
fin de la hora punta, como cuatro dígitos cada uno. El concepto de hora punta y no punta sólo afecta a la
manera en que los programas de contabilidad procesan los registros de contabilidad.
Si la lista de fiestas es demasiado larga, el mandato acctcon1 genera un error y necesitará reducir la
lista. Es seguro con 20 fiestas o menos. Si desea añadir más fiestas, simplemente edite el archivo de
fiestas cada mes.

Recopilación de datos de contabilidad


Una vez que haya configurado la contabilidad del sistema podrá empezar a recopilar y procesar los
diferentes tipos de datos de contabilidad.

Recopilación e informe de datos del sistema


Puede configurar el sistema para que recopile datos y genere informes automáticamente.
Para que los datos se recopilen automáticamente, un miembro del grupo adm debe haberse configurado
como sistema de contabilidad. La configuración del sistema de contabilidad permite que el daemon cron
ejecute los mandatos que generan datos acerca de:
• La cantidad de tiempo que cada usuario pasa con una sesión iniciada en el sistema
• El uso de la unidad de proceso, la memoria y los recursos de E/S

Gestión del sistema operativo 177


• La cantidad de espacio de disco ocupado por los archivos de cada usuario
• El uso de impresoras y trazadores
• Las veces que se da un mandato específico.
El sistema graba un registro de cada sesión y proceso cuando se completan. Estos registros se convierten
en registros de totales de contabilidad (tacct) ordenados por usuario y fusionados en un informe diario.
Periódicamente, los informes diarios se combinan para producir totales para el periodo fiscal definido.
Los métodos para recopilar e informar de los datos y los distintos mandatos y archivos de contabilidad se
explican en las secciones siguientes.
Aunque la mayoría de los datos de contabilidad se recopilan y procesan automáticamente. un miembro
del grupo adm puede especificar determinados mandatos desde el teclado para obtener información
específica.
Tareas relacionadas
Configuración de un sistema de contabilidad
Se puede configurar un sistema de contabilidad.
Referencia relacionada
Mandatos del teclado
Un miembro del grupo adm puede especificar los mandatos siguientes desde el teclado.

Datos de contabilidad de tiempo de conexión


Los datos de tiempo de conexión se recopilan por los mandatos init y login.
Cuando inicia la sesión, el programa login graba un registro en el archivo /etc/utmp. Este registro
incluye el nombre de usuario, la fecha y la hora del inicio de sesión y el puerto de inicio de sesión. Los
mandatos como, por ejemplo, who, utilizan este archivo para averiguar los usuarios que han iniciado la
sesión en distintas pantallas. Si existe el archivo de contabilidad de tiempo de conexión /var/adm/
wtmp, el mandato login le añade una copia de este registro de inicio de sesión. Para obtener
información acerca de los mandatos init y login, consulte init y login.
Cuando finaliza el programa de inicio de sesión (normalmente cuando se finaliza la sesión) el mandato
init registra el fin de la sesión grabando otro registro en el archivo /var/adm/wtmp. Los registros de fin
de sesión difieren de los registros de inicio de sesión en que el nombre de usuario está en blanco. Los
registros de inicio y fin de sesión tienen el formato descrito en el archivo utmp.h. Para obtener
información acerca del archivo utmp.h, consulte utmp.h.
El mandato acctwtmp también graba entradas especiales en el archivo /var/adm/wtmp relativas a los
cierres y arranques del sistema.
Conceptos relacionados
Informes de tiempo de conexión
Los registros de contabilidad incluyen registros de inicio de sesión, fin de sesión, cierre del sistema y
último inicio de sesión.

Datos de contabilidad de procesos


El sistema de contabilidad recopila datos sobre el uso de recursos para cada proceso mientras se ejecuta.
Estos datos incluyen:
• Los números de usuario y grupo bajo los cuales se ejecuta el proceso
• Los ocho primeros caracteres del nombre del mandato
• Una clave numérica de 64 bits que representa la clase del Gestor de carga de trabajo a la que pertenece
el proceso
• El tiempo transcurrido y el tiempo de procesador utilizado por el proceso
• Uso de memoria
• El número de caracteres transferidos
• El número de bloques de disco leídos o grabados para el proceso

178 AIX Versión 7.2: Gestión del sistema operativo


El mandato accton registra estos datos en un archivo especificado, normalmente el archivo /var/adm/
pacct. Para obtener más información acerca del mandato accton, consulte accton.
Los mandatos relacionados son startup, shutacct, dodisk, ckpacct y turnacct. Para obtener
información acerca de estos mandatos, consulte startup, shutacct, dodisk, ckpacct y turnacct.
Conceptos relacionados
Informes de datos de contabilidad
Después de recopilar varios tipos de datos de contabilidad, los registros se procesan y se convierten en
informes.

Informes de contabilidad de procesos


Dos mandatos procesan los datos relacionados con la facturación que se han recopilado en /var/adm/
pacct o en otro archivo especificado.
El mandato acctprc1 convierte el ID de usuario en un nombre de usuario y graba registros ASCII que
contienen los elementos facturables (tiempo de CPU de horas punta y horas no punta, tamaño medio de
memoria y datos de E/S). El mandato acctprc2 transforma esos registros en registros totales de
contabilidad que el mandato acctmerg añade a los informes diarios. Para obtener más información
acerca del mandato acctmerg, consulte acctmerg.
Los datos de contabilidad del proceso también proporcionan información que puede utilizar para
supervisar el uso de recursos del sistema. El mandato acctcms resume el uso de recursos por nombre de
mandato. Esta información proporciona información sobre las veces que se ha ejecutado el mandato, la
cantidad de tiempo de procesador y de memoria que se ha utilizado, y la intensidad con que se han
utilizado los recursos (también denominado factor de acaparamiento). El mandato acctcms produce
estadísticas a largo plazo sobre la utilización del sistema, proporcionando información sobre el uso total
del sistema y la frecuencia con la que se utilizan los mandatos. Para obtener más información acerca del
mandato acctcms, consulte acctcms.
El mandato acctcom maneja los mismos datos que el mandato acctcms, pero proporciona información
detallada acerca de cada proceso. Puede visualizar todos los registros de contabilidad del proceso o
seleccionar los procesos con un interés determinado. Los criterios de selección incluyen la carga
impuesta por el proceso, el periodo de tiempo en que ha finalizado el proceso, el nombre del mandato, el
usuario o el grupo que ha invocado el proceso, el nombre de la clase de WLM a la que ha pertenecido el
proceso y el puerto en el que se ha ejecutado el proceso. A diferencia de otros mandatos de contabilidad,
acctcom se puede ejecutar por todos los usuarios. Para obtener información acerca del mandato
acctcom, consulte acctcom.

Datos de contabilidad de uso de disco


Mucha de la información de contabilidad se recopila a medida que se consumen los recursos. El mandato
dodisk, ejecutado según lo especificado por el daemon cron, graba periódicamente los registros de uso
de disco para cada usuario en el archivo /var/adm/acct/nite(x)/dacct.
Para ello, el mandato dodisk llama a otros mandatos. Según la minuciosidad de la búsqueda de
contabilidad, se pueden utilizar los mandatos diskusg o acctdusg para recopilar datos. El mandato
acctdisk se utiliza para grabar un registro de totales de contabilidad. A su vez, el mandato acctmerg
utiliza el registro de totales de contabilidad para preparar el informe de contabilidad diario.
El mandato dodisk carga a un usuario los enlaces con los archivos encontrados en el directorio de inicio
de sesión del usuario y divide uniformemente los cargos para cada archivo entre los enlaces. Esto
distribuye el coste de la utilización de un archivo entre todos los que lo han utilizado y elimina los cargos
de los usuarios que renuncian a acceder a un archivo. Para obtener más información acerca del mandato
dodisk y el daemon cron, consulte dodisk y cron.
Conceptos relacionados
Informes de tiempo de conexión
Los registros de contabilidad incluyen registros de inicio de sesión, fin de sesión, cierre del sistema y
último inicio de sesión.

Gestión del sistema operativo 179


Datos de contabilidad de uso de impresora
La recopilación de los datos de uso de impresora es un esfuerzo cooperativo entre el mandato enq y el
daemon de puesta en cola.
El mandato enq pone en cola el nombre del usuario, el número de trabajo y el nombre del archivo que se
debe imprimir. Tras imprimir el archivo, el mandato qdaemon graba un registro ASCII en un archivo,
normalmente el archivo /var/adm/qacct, que contiene el nombre del usuario, el número de usuario y el
número de páginas impresas. Puede clasificar estos registros y convertirlos en registros de totales de
contabilidad. Para obtener información acerca de estos mandatos, consulte enq y qdaemon.
Conceptos relacionados
Informe de contabilidad de uso de impresora
El registro ASCII del archivo /var/adm/qacct se puede convertir en un registro de total de contabilidad
que el mandato acctmerg añade al informe diario.

Datos de contabilidad de tarifas


Puede generar un registro ASCII de totales de contabilidad en el archivo /var/adm/fee.
Puede especificar el mandato chargefee para generar un registro ASCII de totales de contabilidad en el
archivo /var/adm/fee. El mandato acctmerg añadirá este archivo a los informes diarios.
Para obtener información acerca de los mandatos chargefee y acctmerg, consulte chargefee y
acctmerg.
Conceptos relacionados
Informe de contabilidad de tarifas
Si ha utilizado el mandato chargefee para cargar a los usuarios los servicios como, por ejemplo,
restauraciones de archivos, consultoría o materiales, se graba un registro ASCII de totales de
contabilidad en el archivo /var/adm/fee. El mandato acctmerg añade este archivo a los informes
diarios.

Resolución de problemas de la contabilidad del sistema


Utilice los siguientes métodos de resolución de problemas para solucionar algunos de los problemas
básicos que pueden producirse al utilizar la contabilidad del sistema. Si la información de resolución de
problemas no resuelve su problema, póngase en contacto con el representante de servicio.

Arreglo de errores de tacct


Si utiliza el sistema de contabilidad para cargar a los usuarios los recursos del sistema, la integridad del
archivo /var/adm/acct/sum/tacct es bastante importante. En ocasiones, aparecen misteriosos
registros tacct que contienen números negativos, números de usuario duplicados o el número de usuario
65.535. Estos problemas se pueden arreglar.
Debe tener autorización de usuario root o grupo adm.
Para aplicar un parche al archivo tacct, siga estos pasos:
1. Vaya al directorio /var/adm/acct/sum escribiendo:

cd /var/adm/acct/sum

2. Utilice el mandato prtacct para comprobar el archivo de totales de contabilidad, tacctprev,


escribiendo:

prtacct tacctprev

El mandato prtacct formatea y visualiza el archivo tacctprev de modo que puede comprobar el
tiempo de conexión, el tiempo de proceso, el uso de disco y el uso de impresora.
3. Si el archivo tacctprev parece correcto, cambie el último archivo tacct .mmdd del formato binario
al formato ASCII. En el ejemplo siguiente, el mandato acctmerg convierte el archivo [Link]
en un archivo ASCII denominado [Link]:

acctmerg -v < [Link] > [Link]

180 AIX Versión 7.2: Gestión del sistema operativo


Nota: El mandato acctmerg con el distintivo -a también produce salida ASCII. El distintivo -v genera
una notación más precisa para números de coma flotante.
El mandato acctmerg se utiliza para fusionar los informes de registros de contabilidad intermedios en
un informe de totales acumulados (tacct). Estos totales acumulados son la fuente a partir de la cual el
mandato monacct produce el informe de resumen mensual ASCII. Puesto que el procedimiento del
mandato monacct elimina todos los archivos [Link], se vuelve a crear el archivo tacct
fusionando estos archivos.
4. Edite el archivo [Link] para eliminar los registros incorrectos y grabar los registros de usuario
duplicados en otro archivo escribiendo:

acctmerg -i < [Link] > [Link]

5. Cree el archivo tacct de nuevo escribiendo:

acctmerg tacctprev < [Link] > tacct

Arreglo de errores de wtmp


El archivo /var/adm/wtmp, o "who temp", puede generar problemas en la operación diaria del sistema
de contabilidad. Los errores de wtmp se pueden arreglar.
Debe tener autorización de usuario root o grupo adm para seguir este procedimiento.
Cuando se cambia una fecha y el sistema está en modalidad de múltiples usuarios, los registros de
cambio de fecha se graban en el archivo /var/adm/wtmp. Cuando se encuentra un cambio de fecha, el
mandato wtmpfix ajusta las indicaciones de la hora en los registros de wtmp. Algunas combinaciones de
cambios de fecha y reinicios del sistema pueden pasar desapercibidos para el mandato wtmpfix y hacer
que el mandato acctcon1 falle y el mandato runacct envíe correo a las cuentas root y adm indicando
fechas incorrectas.
Para arreglar los errores de wtmp, siga este procedimiento:
1. Vaya al directorio /var/adm/acct/nite escribiendo:

cd /var/adm/acct/nite

2. Convierta el archivo wtmp binario en un archivo ASCII que pueda editar escribiendo:

fwtmp < [Link] > [Link]

El mandato fwtmp convierte wtmp de formato binario a ASCII.


3. Edite el archivo [Link] ASCII para suprimir los registros dañados o todos los registros desde el
principio del archivo hasta la fecha necesaria escribiendo:

vi [Link]

4. Convierta el archivo [Link] ASCII de nuevo al formato binario escribiendo:

fwtmp -ic < [Link] > [Link]

5. Si el archivo wtmp no se puede reparar, utilice el mandato nulladm para crear un archivo wtmp vacío.
Esto impide cualquier carga en tiempo de conexión.

nulladm wtmp

El mandato nulladm crea el archivo especificado con permisos de lectura y grabación para el
propietario y grupo del archivo, y permisos de lectura para otros usuarios. Garantiza que el propietario
y el grupo del archivo sean adm.
Tareas relacionadas
Arreglo de errores de contabilidad
Puede corregir las incoherencias de fecha e indicación de la hora.

Gestión del sistema operativo 181


Arreglo de permisos incorrectos de archivo de contabilidad
Para utilizar el sistema de contabilidad, la propiedad y los permisos del archivo deben ser correctos.
Debe tener autorización de usuario root o grupo adm para seguir este procedimiento.
La cuenta administrativa adm es propietaria del mandato y los scripts de contabilidad,
excepto /var/adm/acct/accton que es propiedad de root.
Para arreglar los permisos incorrectos de archivos de contabilidad, siga este procedimiento:
1. Para comprobar los permisos de archivos utilizando el mandato ls, escriba:

ls -l /var/adm/acct

-rws--x--- 1 adm adm 14628 Mar 19 08:11 /var/adm/acct/fiscal


-rws--x--- 1 adm adm 14628 Mar 19 08:11 /var/adm/acct/nite
-rws--x--- 1 adm adm 14628 Mar 19 08:11 /var/adm/acct/sum

2. Ajuste los permisos de archivos con el mandato chown, si es necesario.


Los permisos son 755 (todos los permisos para el propietario y los permisos de lectura y ejecución
para todos los otros). Además, el propio directorio debe estar protegido contra grabación de otros.
Por ejemplo:
a. Vaya al directorio /var/adm/acct escribiendo:

cd /var/adm/acct

b. Cambie la propiedad para los directorios sum, nite y fiscal a la autorización de grupo adm
escribiendo:

chown adm sum/* nite/* fiscal/*

Para impedir interferencias de los usuarios que intentan evitar cargos, deniegue el permiso de
grabación para otros en estos archivos. Cambie el propietario del grupo de mandatos accton por
adm, y los permisos por 710, es decir, ningún permiso para otros. Los procesos propiedad de adm
pueden ejecutar el mandato accton, pero los usuarios normales no.
3. El archivo /var/adm/wtmp también debe ser propiedad de adm. Si /var/adm/wtmp es propiedad de
root, verá el mensaje siguiente durante el arranque:

/var/adm/acct/startup: /var/adm/wtmp: Permiso denegado

Para corregir la propiedad de /var/adm/wtmp, cambie la propiedad al grupo adm escribiendo el


mandato siguiente:

chown adm /var/adm/wtmp

Arreglo de errores de contabilidad


Puede corregir las incoherencias de fecha e indicación de la hora.
Debe tener autorización de usuario root o grupo adm para seguir este procedimiento.
El proceso del archivo /var/adm/wtmp puede dar lugar a que se envíen por correo avisos a root. El
archivo wtmp contiene información recopilada por /etc/init y /bin/login y los scripts de
contabilidad los utilizan principalmente para calcular el tiempo de conexión (la duración de tiempo que
un usuario permanece con la sesión iniciada). Desafortunadamente, los cambios de fecha confunden al
programa que procesa el archivo wtmp. Como resultado, el mandato runacct envía correo a root y adm
quejándose de cualquier error después de un cambio de una fecha desde la última vez que se ha
ejecutado la contabilidad.
1. Determine si ha recibido algún error.
El mandato acctcon1 genera mensajes de error que el mandato runacct envía por correo a adm y
root.

182 AIX Versión 7.2: Gestión del sistema operativo


Por ejemplo, si el mandato acctcon1 se equivoca después de un cambio de fecha y no puede
recopilar tiempos de conexión, adm puede recibir un correo parecido al siguiente mensaje:

Lun Ene 6 [Link] CST 1992


acctcon1: horas erróneas: antigua: Mar Ene 7 [Link] 1992
nueva: Lun Ene 6 [Link] 1992
acctcon1: horas erróneas: antigua: Mar Ene 7 [Link] 1992
nueva: Lun Ene 6 [Link] 1992
acctcon1: horas erróneas: antigua: Mar Ene 7 [Link] 1992
nueva: Lun Ene 6 [Link] 1992

2. Ajuste el archivo wtmp escribiendo:

/usr/sbin/acct/wtmpfix wtmp

El mandato wtmpfix examina si hay incoherencias de fecha e indicación de la hora en el archivo wtmp
y corrige los problemas que pueden hacer que acctcon1 falle. Sin embargo, algunos cambios de
fecha pueden pasar desapercibidos para wtmpfix.
3. Ejecute la contabilidad antes del cierre o inmediatamente después del arranque.
Si se utiliza el mandato runacct en esos momentos, se minimiza el número de entradas con horas
incorrectas. El mandato runacct continúa enviando correo a las cuentas de root y adm, hasta que
edite el script runacct, busque la sección WTMPFIX y ponga como comentario la línea en la que se
envía el registro del archivo a las cuentas root y adm.
Tareas relacionadas
Arreglo de errores de wtmp
El archivo /var/adm/wtmp, o "who temp", puede generar problemas en la operación diaria del sistema
de contabilidad. Los errores de wtmp se pueden arreglar.

Errores de contabilidad encontrados al ejecutar el mandato runacct


Puede encontrar errores al ejecutar el mandato runacct.
Nota: Debe tener autorización de usuario root o grupo adm para ejecutar el mandato runacct.
El mandato runacct procesa archivos que con frecuencia son muy grandes. El procedimiento implica
varios pases a través de determinados archivos y consume bastantes recursos del sistema mientras tiene
lugar. Puesto que el mandato runacct consume muchos recursos, normalmente se ejecuta por la
mañana temprano, cuando puede ocupar la máquina y no interrumpir a nadie.
El mandato runacct es un script dividido en diferentes etapas. Las etapas permiten reiniciar el mandato
donde se ha detenido, sin tener que volver a ejecutar todo el script.
Cuando runacct encuentra problemas, envía mensajes de error a diferentes destinos según el error que
se ha producido. Normalmente, envía una fecha y un mensaje a la consola dándole instrucciones para que
busque en el archivo activeMMDD (por ejemplo, active0621 para el 21 de junio) que está en el
directorio /usr/adm/acct/nite. Cuando el mandato runacct termina anormalmente, mueve todo el
archivo active a activeMMDD y añade un mensaje que describe el problema.
Revise las siguientes tablas de mensajes de error para ver los errores que puede encontrar al ejecutar el
mandato runacct.
Nota:
• La abreviatura MMDD significa el mes y el día como, por ejemplo, 0102 para el 2 de enero. Por ejemplo,
un error irrecuperable durante el proceso de CONNECT1 el 2 de enero crea el archivo active0102 que
contiene el mensaje de error.
• La abreviatura "Mensaje EE" significa mensaje de error estándar como, por ejemplo:

********* ERRORES ACCT : vea active0102 *********

Gestión del sistema operativo 183


Estado preliminar y mensajes de error del mandato runnacct
Estado Mandato ¿Irrecuperable? Mensaje de error Destinos
pre runacct sí * 2 CRONS o consola, correo,
PROBLEMAS ACCT active
* ERROR: se
han encontrado
bloqueos,
ejecución
cancelada
anormalmente
pre runacct sí runacct: consola, correo,
Espacio active
insuficiente
en /usr (nnn
bloques);
Terminando el
procedimiento
pre runacct sí Mensaje EE; consola, correo,
ERROR: activeMMDD
contabilidad
ya en
ejecución para
'fecha':
compruebe
última fecha
pre runacct no * CONTABILIDAD consola
DEL SISTEMA
INICIADA *
pre runacct no reiniciando consola activa,
contabilidad consola
para 'fecha'
en ESTADO
pre runacct no reiniciando active
contabilidad
para 'fecha'
en estado
(argumento $2)
el estado
anterior era
ESTADO
pre runacct sí Mensaje EE; consola, correo,
Error: se ha activeMMDD
llamado a
runacct con
argumentos que
no son válidos

184 AIX Versión 7.2: Gestión del sistema operativo


Estados y mensajes de error del mandato runacct
Estado Mandato ¿Irrecuperabl Mensaje de error Destinos
e?
SETUP runacct no ls -l fee active
pacct* /var/ad
m/wtmp
SETUP runacct sí Mensaje EE; consola, correo,
ERROR: el activeMMDD
conmutador de
turnacct ha
devuelto
rc=error
SETUP runacct sí Mensaje EE; activeMMDD
ERROR:
SpacctMMDD ya
existe las
definiciones
de archivo
probablemente
ya se ejecutan
SETUP runacct sí Mensaje EE; consola, correo,
ERROR: activeMMDD
wtmpMMDD ya
existe:
ejecute la
definición
manualmente
WTMPFIX wtmpfix no Mensaje EE; activeMMDD,
ERROR: errores wtmperrorMMDD
de wtmpfix vea
xtmperrorMMDD
WTMPFIX wtmpfix no proceso de active
wtmp
completado
CONNECT1 acctcon1 no Mensaje EE; consola, correo,
(errores del activeMMDD
registro
acctcon1)
CONNECT2 acctcon2 no conexión de active
contabilidad
completada
PROCESS runacct no AVISO: la active
contabilidad
ya se ejecuta
para pacctN
PROCESS acctprc1 no proceso de active
acctprc2 contabilidad
completado
para
SpacctNMMDD

Gestión del sistema operativo 185


Estados y mensajes de error del mandato runacct (continuación)
Estado Mandato ¿Irrecuperabl Mensaje de error Destinos
e?
PROCESS runacct no todo el active
proceso de
contabilidad
completado
para fecha
MERGE acctmerg no fusión de active
tacct para
crear dayacct
completada
FEES acctmerg no tasas active
fusionadas O
sin tasas
DISK acctmerg no registros de active
disco
fusionados O
sin registros
de disco
MERGEACCT acctmerg no AVISO: active
volviendo a
crear sum/
tacct
MERGEACCT acctmerg no sum/tacct active
actualizado
CMS runacct no AVISO: active
volviendo a
crear sum/cms
CMS acctcms no resúmenes de active
mandatos
completados
CLEANUP runacct no contabilidad active
del sistema
completada el
'fecha'
CLEANUP runacct no *CONTABILIDAD consola
DEL SISTEMA
COMPLETADA*
<wrong> runacct sí Mensaje EE; consola, correo,
ERROR: estado activeMMDD
no válido,
compruebe
ESTADO

Nota: La etiqueta <wrong> de la tabla anterior no representa un estado, sino un estado distinto al estado
correcto que se ha grabado en el archivo de estado /usr/adm/acct/nite/statefile.

186 AIX Versión 7.2: Gestión del sistema operativo


Resumen de destinos de mensajes
Destino Descripción
consola El dispositivo /dev/console
correo Mensaje enviado por correo a las cuentas root y adm
active El archivo /usr/adm/acct/nite/active
activeMMDD El archivo /usr/adm/acct/nite/activeMMDD
wtmperrMMDD El archivo /usr/adm/acct/nite/wtmperrorMMDD
ESTADO Estado actual en el archivo /usr/adm/acct/nite/
statefile
fd2log Cualquier otro mensaje de error

Controlador de recursos del sistema


El Controlador de recursos del sistema (SRC) proporciona un conjunto de mandatos y subrutinas para
facilitar la creación y control de subsistemas al gestor y programador del sistema.
Un subsistema es cualquier programa o proceso, o conjunto de programas o procesos, que normalmente
es capaz de funcionar independientemente o con un sistema de control. Un subsistema está diseñado
como una unidad para proporcionar una función designada.
SRC se ha diseñado para minimizar la necesidad de intervención del operador. Proporciona un
mecanismo para controlar los procesos de subsistema utilizando una línea de mandatos común y la
interfaz C. Este mecanismo incluye lo siguiente:
• Interfaz de usuario coherente para iniciar, detener y consultar el estado
• Registro cronológico de la terminación anómala de subsistemas
• Programa de notificación llamado en la terminación anómala del sistema de procesos relacionados
• Rastreo de un subsistema, un grupo de subsistemas o un subservidor
• Soporte para el control de operaciones en un sistema remoto
• Renovación de un subsistema (como después de un cambio de los datos de configuración).
SRC es útil si desea una forma común de iniciar, detener y recopilar información de estado de los
procesos.
Conceptos relacionados
Introducción a AIX para los gestores del sistema BSD
Las siguientes sugerencias pueden ayudar a los gestores del sistema Berkeley Software Distribution
(BSD) a empezar la gestión de AIX.

Componentes de subsistemas
Las propiedades y los componentes de un subsistema son los siguientes.
Un subsistema puede tener una o varias de las propiedades siguientes:
• Se conoce en el sistema por su nombre
• Requiere un entorno de ejecución más complejo que una subrutina o un programa no privilegiado
• Incluye programas de aplicación y bibliotecas, así como código de subsistema
• Controla recursos que se pueden iniciar y detener por el nombre
• Requiere notificación si un proceso relacionado no es satisfactorio, para realizar la limpieza o recuperar
recursos
• Requiere más control operativo que un simple proceso de daemon
• Necesita estar controlado por un operador remoto

Gestión del sistema operativo 187


• Implementa subservidores para gestionar recursos específicos
• No se pone automáticamente en el fondo.
Unos cuantos ejemplos de subsistemas son ypserv, ntsd, qdaemon, inetd, syslogd y sendmail.
Nota: Consulte cada subsistema específico para conocer los detalles de sus posibilidades de SRC.
Utilice el mandato lssrc -a para listar los subsistemas activos e inactivos del sistema.
A continuación se definen los grupos de subsistemas y subservidores:
Grupo de subsistemas
Un grupo de subsistemas es un grupo de subsistemas especificados. La agrupación de subsistemas
permite el control de varios subsistemas a la vez. Unos cuantos ejemplos de grupos de subsistemas
son TCP/IP, Servicios SNA, Network Information System (NIS) y Network File Systems (NFS).
Subservidor
Un subservidor es un programa o proceso que pertenece a un subsistema. Un subsistema puede tener
varios subservidores y es responsable de iniciar, detener y proporcionar el estado de los
subservidores. Los subservidores sólo se pueden definir para un subsistema con un tipo de
comunicación de zócalos y colas de mensajes IPC. Los subsistemas que utilizan las comunicaciones
de señales no soportan subservidores.
Los subservidores se inician cuando sus subsistemas padre se inician. Si intenta iniciar un subservidor
y su subsistema padre no está activo, el mandato startsrc también inicia el subsistema.

Jerarquía SRC
La jerarquía del Controlador de recursos del sistema empieza por el sistema operativo seguido por un
grupo de subsistemas (por ejemplo, tcpip), que contiene un subsistema (por ejemplo, el daemon inetd),
que a su vez puede ser propietario de varios subservidores (por ejemplo, el daemon ftp y el mandato
finger).

Mandatos de administración de SRC


Puede administrar SRC desde la línea de mandatos.
Los mandatos de administración de SRC son:

Elemento Descripción
Daemon srcmstr daemon Inicia el Controlador de recursos del sistema
Mandato startsrc Inicia un subsistema, un grupo de subsistemas o un subservidor
Mandato stopsrc Detiene un subsistema, un grupo de subsistemas o un subservidor
Mandato refresh Renueva un subsistema
Mandato traceson Activa el rastreo de un subsistema, un grupo de subsistemas o un
subservidor
Mandato tracesoff Desactiva el rastreo de un subsistema, un grupo de subsistemas o un
subservidor
Mandato lssrc Obtiene el estado de un subsistema.

Inicio del Controlador de recursos del sistema


El Controlador de recursos del sistema (SRC) se inicia durante la inicialización del sistema con un registro
para el daemon /usr/sbin/srcmstr en el archivo /etc/inittab.
Los requisitos previos para iniciar SRC son los siguientes:
• Para la lectura y grabación del archivo /etc/inittab se requiere autorización de usuario root.
• Para el mandato mkitab se necesita autorización de usuario root.
• El daemon srcmstr debe existir en el archivo /etc/inittab.

188 AIX Versión 7.2: Gestión del sistema operativo


El archivo /etc/inittab predeterminado ya contiene ese registro, por lo que es posible este
procedimiento no sea necesario. También puede iniciar SRC desde la línea de mandatos, un perfil o un
script de shell, pero hay varias razones para iniciarlo durante la inicialización:
• El inicio de SRC desde el archivo /etc/inittab permite al mandato init reiniciar SRC si se detiene
por cualquier razón.
• SRC está diseñado para simplificar y reducir la cantidad de intervención del operador necesaria para
controlar los subsistemas. El inicio de SRC desde cualquier otro origen diferente del archivo /etc/
inittab es contraproducente para ese objetivo.
• El archivo /etc/inittab predeterminado contiene un registro para iniciar el subsistema de
planificación de impresión (qdaemon) con el mandato startsrc. En las instalaciones típicas, también
se inician otros subsistemas con los mandatos startsrc del archivo /etc/inittab. Puesto que el
mandato srcmstr necesita que SRC esté en ejecución, la eliminación del daemon srcmstr del
archivo /etc/inittab hace que estos mandatos startsrc fallen.
Nota: Este procedimiento sólo es necesario si el archivo /etc/inittab no contiene un registro para el
daemon srcmstr.
1. Cree un registro para el daemon srcmstr en el archivo /etc/inittab utilizando el mandato
mkitab.
Por ejemplo, para crear un registro idéntico al que aparece en el archivo /etc/inittab
predeterminado, escriba:

mkitab -i fbcheck srcmstr:2:respawn:/usr/sbin/srcmstr

El distintivo -i fbcheck asegura que el registro se inserte antes de todos los registros de subsistemas.
2. Indique al mandato init que vuelva a procesar el archivo /etc/inittab escribiendo:

telinit q

Cuando init vuelve a visitar el archivo /etc/inittab, procesa el registro que se acaba de entrar
para el daemon srcmstr e inicia SRC.
Conceptos relacionados
Control de subsistemas
Se puede utilizar el mandato traceson para activar y el mandato traceoff para desactivar el rastreo de
un recurso del Controlador de recursos del sistema (SRC) como, por ejemplo, un subsistema, un grupo de
subsistemas o un subservidor.
Tareas relacionadas
Renovación de un subsistema o grupo de subsistemas
Utilice el mandato refresh para indicar a un recurso del Controlador de recursos del sistema (SRC)
como, por ejemplo, un subsistema o un grupo de subsistemas, que se renueve.

Inicio o detención de un subsistema, un grupo de sistemas o un subservidor


Utilice el mandato startsrc para iniciar un recurso del Controlador de recursos del sistema (SRC) como,
por ejemplo, un subsistema, un grupo de subsistemas o un subservidor. Utilice el mandato stopsrc para
detener un recurso SRC como un subsistema, un grupo de subsistemas o un subservidor.
Los siguientes son requisitos previos para iniciar o detener un subsistema, un grupo de subsistemas o un
subservidor:
• Para iniciar o detener un recurso SRC, SRC debe estar en ejecución. SRC normalmente se inicia durante
la inicialización del sistema. El archivo /etc/inittab predeterminado, que determina los procesos
que se inician durante la inicialización, contiene un registro del daemon srcmstr (SRC). Para ver si SRC
está en ejecución, escriba ps -A y busque un proceso denominado srcmstr.
• El usuario o proceso que inicia un recurso SRC debe tener autorización de usuario root. El proceso que
inicializa el sistema (mandato init) tiene autorización de usuario root.
• El usuario o proceso que detiene un recurso SRC debe tener autorización de usuario root.
El mandato startsrc se puede utilizar:

Gestión del sistema operativo 189


• Desde el archivo /etc/inittab por lo que el recurso se inicia durante la inicialización del sistema
• Desde la línea de mandatos
• Con SMIT
Cuando inicie un grupo de subsistemas, todos sus subsistemas también se inicia. Al iniciar un
subsistema, todos los subservidores también se inician. Cuando se inicia un subservidor, su subsistema
padre también se inicia si aún no está en ejecución.
Cuando se detiene un subsistema, todos sus subservidores también se detienen. Sin embargo, cuando se
detiene un subservidor, el estado de su subsistema padre no se cambia.
Los mandatos startsrc y stopsrc contienen distintivos que permiten realizar peticiones en sistemas
principales locales o remotos. Consulte el mandato srcmstr para ver los requisitos de configuración para
dar soporte a peticiones de SRC remotas.

Inicio o detención de tareas del subsistema


Tarea vía rápida de Mandato o archivo
SMIT
Iniciar un subsistema smit /bin/startsrc -s
startssys SubsystemName, o edite /etc/
inittab
Detener un subsistema smit /bin/stopsrc -s SubsystemName
stopssys

Información relacionada
mandato stopsrc
mandato startsrc
mandato srcmstr

Visualización del estado de un subsistema o subsistemas


Utilice el mandato lssrc para visualizar el estado de un recurso del Controlador de recursos del sistema
(SRC) como, por ejemplo, un subsistema, un grupo de subsistemas o un subservidor.
Todos los subsistemas pueden devolver un informe de estado breve que incluye el grupo al que
pertenece el subsistema, si el subsistema está activo y el ID del proceso (PID). Si un subsistema no utiliza
el método de comunicación de señales, se puede programar para que devuelva un informe de estado
largo que contenga información de estado adicional.
El mandato lssrc proporciona distintivos y parámetros para especificar el subsistema por nombre o PID,
para listar todos los subsistemas, para pedir un informe de estado corto o largo y para solicitar el estado
de los recursos SRC localmente o en sistemas principales remotos.
Consulte el mandato srcmstr para ver los requisitos de configuración para dar soporte a peticiones de
SRC remotas.

Tareas de visualización del estado de subsistemas


Tarea Vía rápida de Mandato o archivo
SMIT
Visualización del estado de un subsistema (formato largo) smit qssys lssrc -l -s
NombreSubsistema
Visualización del estado de todos los subsistemas smit lsssys lssrc -a
Visualización del estado de todos los subsistemas de un lssrc -h
sistema principal en particular NombreSistemaPrincip
al -a

190 AIX Versión 7.2: Gestión del sistema operativo


Renovación de un subsistema o grupo de subsistemas
Utilice el mandato refresh para indicar a un recurso del Controlador de recursos del sistema (SRC)
como, por ejemplo, un subsistema o un grupo de subsistemas, que se renueve.
Los requisitos previos para renovar un subsistema o grupo de subsistemas son:
• SRC debe estar en ejecución.
• El recurso que desea renovar no debe utilizar el método de comunicaciones de señales.
• El recurso que desea renovar debe estar programado para responder a la petición de renovación.
El mandato refresh proporciona distintivos y parámetros para especificar el subsistema por nombre o
PID. Puede utilizarlo para pedir que se renueve un subsistema o grupo de subsistemas, localmente o en
sistemas principales remotos. Consulte el mandato srcmstr para ver los requisitos de configuración
para dar soporte a peticiones de SRC remotas.

Renovación de un subsistema o grupo de subsistemas


Tarea Vía rápida de Mandato o archivo
SMIT
Renovación de un subsistema smit refresh refresh -s Subsistema

Tareas relacionadas
Inicio del Controlador de recursos del sistema
El Controlador de recursos del sistema (SRC) se inicia durante la inicialización del sistema con un registro
para el daemon /usr/sbin/srcmstr en el archivo /etc/inittab.

Control de subsistemas
Se puede utilizar el mandato traceson para activar y el mandato traceoff para desactivar el rastreo de
un recurso del Controlador de recursos del sistema (SRC) como, por ejemplo, un subsistema, un grupo de
subsistemas o un subservidor.
Utilice el mandato traceson para activar el rastreo de un recurso del Controlador de recursos del
sistema (SRC) como, por ejemplo, un subsistema, un grupo de subsistemas o un subservidor.
Utilice el mandato tracesoff para desactivar el rastreo de un recurso del Controlador de recursos del
sistema (SRC) como, por ejemplo, un subsistema, un grupo de subsistemas o un subservidor.
Los mandatos traceson y traceoff se pueden utilizar para activar o desactivar remotamente en un
sistema principal específico. Consulte el mandato srcmstr para obtener información de los requisitos de
configuración para las peticiones de SRC remotas.
Requisitos previos

• Para activar o desactivar el rastreo de un recurso SRC, SRC debe estar en ejecución.
• El recurso que desea rastrear no debe utilizar el método de comunicaciones de señales.
• El recurso que desea rastrear debe estar programado para responder a la petición de rastreo.

Tareas de activación y desactivación del subsistema, grupo de subsistemas o subservidor


Tarea Vía rápida de SMIT Mandato o archivo
Activación del rastreo en smit tracessyson traceson -s Subsistema
subsistemas (formato corto)
Activación del rastreo en smit tracessyson traceson -l -s Subsistema
subsistemas (formato largo)
Desactivación del rastreo de smit tracessysoff tracesoff -s Subsistema
subsistemas

Tareas relacionadas
Inicio del Controlador de recursos del sistema

Gestión del sistema operativo 191


El Controlador de recursos del sistema (SRC) se inicia durante la inicialización del sistema con un registro
para el daemon /usr/sbin/srcmstr en el archivo /etc/inittab.

Archivos del sistema operativo


Los archivos se utilizan para toda la entrada y salida (E/S) de información del sistema operativo, para
estandarizar el acceso al software y al hardware.
La entrada se produce cuando se modifica el contenido de un archivo o se graba en él. La salida se
produce cuando se lee el contenido de un archivo o se transfiere a otro archivo. Por ejemplo, para crear
una copia impresa de un archivo, el sistema lee información del archivo de texto y graba esa información
en el archivo que representa la impresora.

Tipos de archivos
Los tipos de archivos reconocidos por el sistema son normal, directorio o especial. No obstante, el
sistema operativo utiliza muchas variaciones de estos tipos básicos.
A continuación se indican los tipos básicos de archivos existentes:

Elemento Descripción
normal Almacena datos (texto, binario y ejecutable)
directorio Contiene la información que se utiliza para acceder a otros archivos
especial Define un archivo de conducto FIFO (primero en entrar, primero en salir) o un dispositivo
físico

Todos los tipos de archivos reconocidos por el sistema se enmarcan en una de estas categorías. No
obstante, el sistema operativo utiliza muchas variaciones de estos tipos básicos.
Archivos normales
Los archivos normales son los archivos más comunes y se utilizan para contener datos. Los archivos
normales están en formato de archivos de texto o de archivos binarios:
Archivos de texto
Los archivos de texto son archivos normales que contienen información almacenada en formato
ASCII y que el usuario puede leer. Puede visualizar e imprimir dichos archivos. Las líneas de un
archivo de texto no deben contener caracteres NUL y ninguna puede exceder de {LINE_MAX}
bytes de longitud, incluido el carácter de nueva línea.
El término archivo de texto no impide la inclusión de caracteres de control o de otros caracteres
no imprimibles (diferentes de NUL). Por lo tanto, los programas de utilidad estándar que listan
archivos de texto como entradas o como salidas o bien son capaces de procesar los caracteres
especiales o bien son capaces de describir explícitamente sus limitaciones dentro de sus
secciones individuales.
Archivos binarios
Los archivos binarios son archivos normales que contienen información que el sistema puede leer.
Los archivos binarios podrían ser archivos ejecutables que indicaran al sistema que ha de realizar
un trabajo. Los mandatos y los programas se almacenan en archivos binarios ejecutables. Los
programas de compilación especial convierten texto ASCII en código binario.
Los archivos de texto y binarios sólo se diferencian en que los archivos de texto tienen líneas de
menos de {LINE_MAX} bytes, sin ningún carácter NUL, cada una de las cuales termina con un
carácter de nueva línea.
Archivos de directorios
Los archivos de directorio contienen la información que el sistema necesita para acceder a todos los
tipos de archivos, pero los archivos de directorio no contienen los datos reales del archivo. En
consecuencia, los directorios ocupan menos espacio que un archivo normal y proporcionan a la
estructura de sistema de archivos flexibilidad y profundidad. Cada entrada de directorio representa

192 AIX Versión 7.2: Gestión del sistema operativo


un archivo o un subdirectorio. Cada entrada contiene el nombre del archivo y el número de referencia
de nodo de índice (número de i-nodo) del archivo. El número de inodo apunta al nodo de índice
exclusivo que se ha asignado al archivo. El número de inodo describe la ubicación de los datos que se
asocian al archivo. Un grupo independiente de mandatos crea y controla los directorios.
Archivos especiales
Los archivos especiales definen dispositivos para el sistema o son archivos temporales creados por
procesos. Los tipos básicos de archivos especiales son FIFO (primero en entrar, primero en salir), de
bloques y de caracteres. Los archivos FIFO también se denominan conductos. Los conductos se crean
mediante un proceso para permitir temporalmente las comunicaciones con otro proceso. Estos
archivos dejan de existir cuando termina el primer proceso. Los archivos de bloque y los archivos de
caracteres definen dispositivos.
Cada archivo tiene un conjunto de permisos (denominado modalidades de acceso) que determina
quién puede leer, modificar o ejecutar el archivo.
Conceptos relacionados
Modalidades de acceso a archivos y a directorios
Cada archivo tiene un propietario. En el caso de archivos nuevos, el usuario que crea el archivo es el
propietario de dicho archivo. El propietario asigna una modalidad de acceso al archivo. Las modalidades
de acceso otorgan a otros usuarios del sistema permiso para leer, modificar o ejecutar el archivo. Sólo el
propietario del archivo o los usuarios con autorización root pueden cambiar la modalidad de acceso de un
archivo.

Convenios de denominación de archivos


El nombre de cada archivo debe ser exclusivo en el directorio en el que se almacena. Esto garantiza que
el archivo tiene también un nombre de vía de acceso exclusivo en el sistema de archivos.
A continuación se proporcionan las directrices de la denominación de archivos:
• Un nombre de archivo puede tener una longitud de hasta 255 caracteres y puede contener letras,
números y caracteres de subrayado.
• El sistema operativo es sensible a las mayúsculas y minúsculas, lo que significa que distingue las letras
mayúsculas y las letras minúsculas de los nombres de los archivos. Por lo tanto, FILEA, FiLea y filea
son tres nombres de archivos distintos, aunque residan en el mismo directorio.
• Los nombres de los archivos deben ser todo lo descriptivos y significativos que sea posible.
• Los directorios siguen los mismos convenios de denominación que los archivos.
• Existen algunos caracteres que tienen un significado especial para el sistema operativo. Evite utilizar
estos caracteres cuando especifique el nombre de los archivos. Dichos caracteres son los siguientes:

/ \ " ' * ; - ? [ ] ( ) ~ ! $ { } &lt > # @ & | separador espacio nueva línea

• Un nombre de archivo estará oculto en un listado de directorios normal si empieza por un punto (.).
Cuando se especifica el mandato ls con el distintivo -a, los archivos ocultos se listan junto con los
archivos y directorios normales.

Nombres de vías de acceso de archivos


El nombre de la vía de acceso de cada archivo y directorio del sistema de archivos se compone de los
nombres de cada directorio que precede al archivo o directorio en la estructura de árbol.
Puesto que todas las vías de acceso de un sistema de archivos tienen como origen el directorio /(root),
cada archivo del sistema de archivos tiene una relación exclusiva con el directorio raíz, que se conoce
como nombre absoluto de vía de acceso. Los nombres absolutos de vías de acceso empiezan por un
símbolo de barra inclinada (/). Por ejemplo, el nombre absoluto de la vía de acceso del archivo h podría
ser /B/C/h. Tenga en cuenta que, en el sistema, pueden existir dos archivos denominados h. Puesto que
las vías de acceso absolutas de los dos archivos son distintas, /B/h y /B/C/h, cada archivo denominado
h tiene un nombre exclusivo dentro del sistema. Cada componente de un nombre de vía de acceso es un
vía de acceso excepto el componente final. El componente final de un nombre de vía de acceso puede ser
un nombre de archivo.

Gestión del sistema operativo 193


Nota: Los nombres de vía de acceso no pueden exceder de 1023 caracteres de longitud.

Patrones de coincidencia con comodines y metacaracteres


Los caracteres comodín son un método muy eficaz para especificar varios nombres de archivos o de
directorios.
Los caracteres comodín son el asterisco (*) e interrogante (?). Los metacaracteres son los corchetes de
apertura y cierre ([ ]), el guión (-) y el signo de exclamación (!).

Coincidencia de patrones utilizando el carácter comodín *


Utilice el asterisco (*) para buscar la coincidencia de cualquier secuencia o serie de caracteres.
El (*) indica cualquier carácter, incluida la ausencia de caracteres.
Vea los ejemplos siguientes:
• Si tiene los siguientes archivos en el directorio:

1test 2test afile1 afile2 bfile1 file file1 file10 file2 file3

y tan solo desea hacer referencia a los archivos que empiezan por file, utilice:

file*

Los archivos seleccionados serían: file, file1, file10, file2 y file3.


• Para hacer referencia únicamente a los archivos que contienen la palabra file, utilice:

*file*

Los archivos seleccionados serían: afile1, afile2, bfile1, file, file1, file10, file2 y file3.

Coincidencia de patrones utilizando el carácter comodín ?


Utilice el ? como sustitución de cualquier carácter.
El ? indica cualquier carácter individual. Vea los ejemplos siguientes:
• Para hacer referencia únicamente a los archivos que empiezan por file y que acaban con un carácter
simple, utilice:

file?

Los archivos seleccionados serían: file1, file2, file3.


• Para hacer referencia únicamente a los archivos que empiezan por file y que acaban con dos caracteres
simples, utilice:

file??

El archivo seleccionado sería: file10.

Coincidencia de patrones utilizando metacaracteres de shell [ ]


Los metacaracteres ofrecen otro tipo de notación de comodín que delimita los caracteres deseados entre
[ ]. Es como utilizar el ?, pero le permite elegir caracteres específicos para la búsqueda de
coincidencias.
Los [ ] también le permiten especificar un rango de valores mediante la utilización del guión (-). Para
especificar todas las letras del alfabeto, utilice [[:alpha:]] . Para especificar todas las letras
minúsculas del alfabeto, utilice [[:lower:]] .
Vea los ejemplos siguientes:
• Para hacer referencia únicamente a los archivos que finalizan por 1 o por 2, utilice:

*file[12]

Los archivos seleccionados serían: afile1, afile2, file1 y file2.

194 AIX Versión 7.2: Gestión del sistema operativo


• Para que sólo se haga referencia a los archivos que empiezan por cualquier número, utilice lo siguiente:

[0123456789]* o [0-9]*

Los archivos seleccionados serían: 1test y 2test.


• Para hacer referencia únicamente a los archivos que no empiezan por a, utilice:

[!a]*

Los archivos seleccionados serían: 1test, 2test, bfile1, file, file1, file10, file2 y file3.

Patrones de coincidencia en contraste con expresiones normales


Las expresiones normales le permiten seleccionar series específicas de un conjunto de series de
caracteres. La utilización de expresiones normales suele asociarse al proceso de texto.
Las expresiones normales pueden representar una amplia gama de posibles series. Aunque muchas
expresiones normales pueden interpretarse de forma distinta según el escenario actual, las
características de internacionalización hacen que no haya diferencias entre textos de diferentes países.
Vea los ejemplos de la siguiente comparación:

Tabla 57. Ejemplos de expresiones regulares


Coincidencia de patrones Expresión regular
* .*
? .
[!a] [^a]
[abc] [abc]
[[:alpha:]] [[:alpha:]]

Información relacionada
mandato awk

Administración de archivos
Existen muchas formas de trabajar con los archivos del sistema. Normalmente debe crear un archivo de
texto con un editor de texto.
Los editores comunes del entorno UNIX son vi y ed. Puesto que están disponibles varios editores de
texto, puede elegir el editor que le resulte más cómodo.
También puede crear archivos utilizando la redirección de la entrada y la salida. Puede enviar la salida de
un mandato a un nuevo archivo o añadirla a un archivo existente.
Después de crear y modificar archivos, puede que tenga que copiar o mover archivos de un directorio a
otro, cambiar el nombre de los archivos para distinguir las distintas versiones de un archivo o especificar
nombres distintos para el mismo archivo. Cuando trabaje en distintos proyectos, puede que también
tenga que crear directorios.
Asimismo, también es posible que necesite suprimir determinados archivos. El directorio puede llenarse
rápidamente de archivos que contienen información antigua o inútil. Para liberar espacio de
almacenamiento en el sistema, asegúrese de que suprime archivos que ya no se necesitan.

Supresión de archivos (mandato rm)


Utilice el mandato rm para eliminar archivos que ya no necesita.
El mandato rm elimina las entradas para un archivo, grupo de archivos o archivos seleccionados
determinados que se han especificado de una lista de un directorio. Cuando se utiliza el mandato rm no
se necesitan la confirmación de usuario, el permiso de lectura y el permiso de grabación antes de eliminar

Gestión del sistema operativo 195


un archivo. Sin embargo, el usuario debe disponer del permiso de grabación para el directorio que
contiene el archivo.
Lo siguiente son ejemplos del modo de utilizar el mandato rm:
• Para suprimir el archivo denominado myfile, escriba lo siguiente:

rm myfile

• Para suprimir todos los archivos del directorio mydir, uno a uno, escriba lo siguiente:

rm -i mydir/*

Cuando se muestre cada nombre de archivo, escriba y y pulse Intro para suprimir el archivo. O bien,
para conservar el archivo, pulse Intro.

Cómo mover y renombrar archivos (mandato mv)


Utilice el mandato mv para mover archivos y directorios de un directorio a otro o para renombrar un
archivo o directorio. Si mueve un archivo o directorio a un nuevo directorio sin especificar un nuevo
nombre, mantiene su nombre original.
Atención: El mandato mv puede sobrescribir varios archivos existentes a menos que se
especifique el distintivo -i. El distintivo -i le solicita que lo confirme antes de sobrescribir un
archivo. El distintivo -f no solicita confirmación. Si se especifican ambos distintivos, -f e -i en
combinación, tiene prioridad el último distintivo especificado.
Cómo mover archivos con el mandato mv
Lo siguiente son ejemplos del modo de utilizar el mandato mv:
• Para mover un archivo a otro directorio y proporcionarle un nuevo nombre, escriba lo siguiente:

mv intro manual/chap1

De este modo, el archivo intro se mueve al directorio manual/chap1. El nombre intro se elimina
del directorio actual y el mismo archivo aparece como chap1 en el directorio manual.
• Para mover un archivo a otro directorio, manteniendo el mismo nombre, escriba lo siguiente:

mv chap3 manual

De este modo, el archivo chap3 se mueve al archivo manual/chap3.


Cómo renombrar archivos con el mandato mv
Utilice el mandato mv para cambiar el nombre de un archivo sin moverlo a otro directorio.
Para renombrar un archivo, escriba lo siguiente:

mv appendix apndx.a

De este modo, el archivo appendix se renombra como apndx.a. Si ya existe un archivo denominado
apndx.a, su contenido anterior se sustituye por el contenido del archivo appendix.

Copia de archivos (mandato cp)


Utilice el mandato cp para crear una copia del contenido del archivo o directorio especificado mediante
los parámetros ArchivoOrigen o DirectorioOrigen en el archivo o directorio especificado mediante los
parámetros ArchivoDestino o DirectorioDestino.
Si el archivo especificado como ArchivoDestino existe, la copia se graba sobre el contenido original de
dicho archivo sin mostrar ningún aviso. Si va a copiar varios ArchivosOrigen, el destino debe ser un
directorio.
Si existe un archivo con el mismo nombre en el nuevo destino, el archivo copiado sobrescribe el archivo
en el nuevo destino. Por lo tanto, se aconseja asignar un nuevo nombre para la copia del archivo con el fin
de asegurarse de que no exista un archivo con el mismo nombre en el directorio de destino.

196 AIX Versión 7.2: Gestión del sistema operativo


Para situar una copia del ArchivoOrigen en un directorio, especifique una vía de acceso a un directorio
existente para el parámetro DirectorioDestino. Los archivos mantienen sus nombres respectivos cuando
se copian a un directorio a menos que se especifique un nuevo nombre de archivo al final de la vía de
acceso. El mandato cp también copia directorios completos a otros directorios si se especifican los
distintivos -r o -R.
También puede copiar archivos de dispositivos especiales mediante el distintivo -R. Al especificar -R, los
archivos especiales se vuelven a crear en el nuevo nombre de vía de acceso. Si se especifica -r, el
mandato cp intenta copiar los archivos especiales en archivos normales.
Lo siguiente son ejemplos del modo de utilizar el mandato cp:
• Para realizar una copia de un archivo en el directorio actual, escriba lo siguiente:

cp prog.c [Link]

De este modo, se copia prog.c en [Link]. Si el archivo [Link] aún no existe, el mandato cp lo
crea. Si existe, el mandato cp lo sustituye por una copia del archivo prog.c.
• Para copiar un archivo del directorio actual en otro directorio, escriba lo siguiente:

cp jones /home/nick/clients

De este modo, el archivo jones se copia en /home/nick/clients/jones.


• Para copiar todos los archivos de un directorio en un nuevo directorio, escriba lo siguiente:

cp /home/janet/clients/* /home/nick/customers

De este modo, sólo se copian los archivos del directorio clients en el directorio customers.
• Para copiar un conjunto específico de archivos a otro directorio, escriba lo siguiente:

cp jones lewis smith /home/nick/clients

De este modo, se copian los archivos jones, lewis y smith del directorio de trabajo actual en el
directorio /home/nick/clients.
• Para utilizar caracteres comodín para copiar archivos, escriba lo siguiente:

cp programs/*.c .

De este modo, se copian los archivos del directorio programs que terminan por .c en el directorio
actual, indicado mediante un solo punto (.). Debe dejar un espacio en blanco entre la c y el punto final.

Búsqueda de archivos (mandato find)


Utilice el mandato find para buscar de forma recursiva en el árbol de directorio cada Vía de acceso
especificada, realizando búsquedas de archivos que coincidan con una expresión booleana escrita con los
términos proporcionados en el texto siguiente.
La salida del mandato find depende de los términos especificados mediante el parámetro Expresión.
Lo siguiente son ejemplos del modo de utilizar el mandato find:
• Para listar todos los archivos del sistema de archivos con el nombre .profile, escriba lo siguiente:

find / -name .profile

De este modo, se busca en todo el sistema de archivos y se escriben los nombres de vía de acceso
completos de todos los archivos denominados .profile. La barra inclinada (/) indica al mandato find
que realice búsquedas en el directorio /(root) y todos sus subdirectorios.
Para ahorrar tiempo, limite la búsqueda especificando los directorios en los que cree que pueden estar
los archivos.

Gestión del sistema operativo 197


• Para listar archivos que tienen un código de permiso específico de 0600 en el árbol de directorio actual,
escriba lo siguiente:

find . -perm 0600

De este modo, se listan los nombres de los archivos que sólo tienen permiso de lectura y grabación del
usuario. El punto (.) indica al mandato find que realice búsquedas en el directorio actual y sus
subdirectorios. Para obtener una explicación de los códigos de permisos, consulte el mandato chmod.
• Para buscar archivos con códigos de permisos determinados en varios directorios, escriba lo siguiente:

find manual clients proposals -perm -0600

De este modo, se listan los nombres de los archivos que tienen permiso de lectura y grabación del
usuario y, posiblemente, otros permisos. La búsqueda se realiza en los directorios manual, clients y
proposals y sus subdirectorios. En el ejemplo anterior, -perm 0600 sólo selecciona los archivos
cuyos códigos de permisos coinciden con 0600 exactamente. En este ejemplo, -perm -0600
selecciona archivos con códigos de permisos que permiten los accesos indicados mediante 0600 y
otros accesos por encima del nivel 0600, lo que también coincide con los códigos de permisos 0622 y
2744.
• Para listar todos los archivos del directorio actual que han cambiado durante el periodo de 24 horas
actual, escriba lo siguiente:

find . -ctime 1

• Para buscar archivos con varios enlaces, escriba lo siguiente:

find . -type f -links +1

De este modo, se listan los nombres de los archivos (-type f) que tienen más de un enlace (-links
+1).
Nota: Cada directorio tiene, como mínimo, dos enlaces: la entrada en el directorio padre y su propia
entrada .(punto). Para obtener más información sobre enlaces de varios archivos, consulte el mandato
ln.
• Para buscar todos los archivos que tienen exactamente 414 bytes de longitud, escriba lo siguiente:

find . -size 414c

Visualización del tipo de archivo (mandato file)


Utilice el mandato file para leer los archivos que especifica el parámetro File o -fFileList, realizar una
serie de pruebas en cada uno e intentar clasificar los archivos por tipo. A continuación, el mandato graba
los tipos de archivos en salida estándar.
Si parece que un archivo está en ASCII, el mandato file examina los 512 primeros bytes y determina el
idioma. Si parece que un archivo no está en ASCII, el mandato file intenta determinar, además, si se
trata de un archivo de datos binarios o de un archivo de texto que contiene caracteres ampliados.
Si el parámetro File especifica un archivo de módulo de objeto o ejecutable y el número de versión es
mayor que 0, el mandato file muestra la indicación de versión.
El mandato file utiliza el archivo /etc/magic para identificar archivos que tienen un número mágico;
es decir, cualquier archivo que contenga una constante de tipo serie o numérico que indique el tipo.
Lo siguiente son ejemplos del modo de utilizar el mandato file:
• Para visualizar el tipo de información que contiene el archivo denominado myfile, escriba lo siguiente:

file myfile

De este modo, se muestra el tipo de archivo de myfile (por ejemplo, directorio, datos, texto ASCII,
origen de programa C o archivo archivador).

198 AIX Versión 7.2: Gestión del sistema operativo


• Para visualizar el tipo de cada archivo denominado en el archivo [Link], que contiene una
lista de nombres de archivo, escriba lo siguiente:

file -f [Link]

De este modo, se muestra el tipo de cada archivo denominado en el archivo [Link]. Cada
nombre de archivo se debe visualizar en una línea separada.
• Para crear el archivo [Link] que contiene todos los nombres de archivo en el directorio
actual, escriba lo siguiente:

ls > [Link]

Edite el archivo [Link] según desee.

Mandatos para visualizar el contenido de archivos (mandatos pg, more, page y cat)
Los mandatos pg, more y page le permiten ver el contenido de un archivo y controlar la velocidad a la
que han de visualizarse los archivos.
También puede utilizar el mandato cat para visualizar el contenido de uno o más archivos en la pantalla.
La combinación del mandato cat y del mandato pg le permite leer el contenido de un archivo,
mostrándose una pantalla completa cada vez.
También puede visualizar el contenido de los archivos utilizando la redirección de la entrada y la salida.
Conceptos relacionados
Redirección de la entrada y la salida
El sistema operativo AIX permite manipular la entrada y salida (E/S) de datos hacia y desde el sistema
utilizando mandatos y símbolos de E/S específicos.

Utilización del mandato pg


Utilice el mandato pg para leer los archivos nombrados en el parámetro Archivo y los graba en salida
estándar, una pantalla cada vez.
Si especifica un guión (-) como el parámetro Archivo o ejecuta el mandato pg sin opciones, el mandato
pg lee la entrada estándar. A cada pantalla le sigue un indicador. Si pulsa la tecla Intro, se mostrará otra
pantalla. Los submandatos utilizados con el mandato pg le permiten revisar contenido que ya ha pasado.
Por ejemplo, para ver el contenido del archivo myfile de modo que se muestra una página cada vez,
escriba lo siguiente:

pg myfile

Utilización de los mandatos more o page


Utilice el mandato more o page para visualizar texto continuo, mostrándose una pantalla cada vez.
Hace una pausa después de cada pantalla e imprime el nombre de archivo y el porcentaje completado
(por ejemplo, myfile (7%)) en la parte inferior de la pantalla. Si, a continuación, pulsa la tecla Intro, el
mandato more visualiza una línea adicional. Si pulsa la barra espaciadora, el mandato more visualiza otra
pantalla de texto.
Nota: En algunos modelos de terminal, el mandato more borra la pantalla, en lugar de desplazarla, antes
de visualizar la siguiente pantalla de texto.
Por ejemplo, para ver un archivo denominado myfile, escriba lo siguiente:

more myfile

Pulse la barra espaciadora para ver la pantalla siguiente.

Mandato cat
Utilice el mandato cat para leer cada parámetro Archivo por orden y grabarlo en salida estándar.
Vea los ejemplos siguientes:

Gestión del sistema operativo 199


• Para visualizar el contenido del archivo notes, escriba lo siguiente:

cat notes

Si el archivo tiene más de 24 líneas de longitud, parte del archivo se desplaza fuera de la pantalla. Para
que un archivo se visualice página por página, utilice el mandato pg.
• Para visualizar el contenido de los archivos notes, notes2 y notes3, escriba lo siguiente:

cat notes notes2 notes3

Búsqueda de series de texto en archivos (mandato grep)


Utilice el mandato grep para buscar el archivo especificado para el patrón indicado mediante el
parámetro Patrón y grabar cada línea coincidente en salida estándar.
Lo siguiente son ejemplos del modo de utilizar el mandato grep:
• Para buscar un archivo denominado pgm.s para un patrón que contiene algunos de los caracteres
comodín *, ^, ?, [, ], \(, \), \{, y \}, en este caso, las líneas que empiezan por cualquier letra en mayúscula
o minúscula, escriba lo siguiente:

grep "^[a-zA-Z]" pgm.s

De este modo, se muestran todas las líneas del archivo pgm.s que empiezan por una letra.
• Para visualizar todas las líneas de un archivo denominado sort.c que no coinciden con un patrón
concreto, escriba lo siguiente:

grep -v bubble sort.c

De este modo, se muestran todas las líneas que no contienen la palabra bubble en el archivo sort.c.
• Para visualizar todas las líneas en la salida del mandato ls que coinciden con la serie staff, escriba lo
siguiente:

ls -l | grep staff

Clasificación de archivos de texto (mandato sort)


Utilice el mandato sort para ordenar alfabéticamente líneas de los archivos especificados por los
parámetros Archivo y grabar el resultado en la salida estándar.
Si el parámetro Archivo especifica varios archivos, el mandato sort concatena los archivos y los ordena
alfabéticamente como un archivo.
Nota: el mandato sort es sensible a las mayúsculas y minúsculas, y clasifica las letras en mayúsculas
antes que las minúsculas (este comportamiento depende del entorno local).
En los ejemplos siguientes, el contenido del archivo denominado names es el siguiente:

marta
carlos
joyce
endrica
melanie

y el contenido del archivo denominado states es el siguiente:

texas
colorado
ohio

• Para visualizar el contenido ordenado del archivo denominado names, escriba lo siguiente:

ordenar nombres

El sistema mostrará una información parecida a esta:

200 AIX Versión 7.2: Gestión del sistema operativo


carlos
endrica
joyce
marta
melanie

• Para visualizar el contenido ordenado de los archivos names y states, escriba lo siguiente:

ordenar estados nombres

El sistema mostrará una información parecida a esta:

colorado
carlos
endrica
joyce
marta
melanie
ohio
texas

• Para sustituir el contenido original del archivo denominado names por el contenido ordenado, escriba lo
siguiente:

sort -o names names

De este modo, se sustituye el contenido del archivo names por los mismos datos, pero en el orden de
clasificación.

Comparación de archivos (mandato diff)


Utilice el mandato diff para comparar archivos de texto. Puede comparar archivos únicos o el contenido
de directorios.
Cuando el mandato diff se ejecuta en archivos normales, y cuando compara archivos de texto de
directorios diferentes, el mandato diff indica las líneas que se deben cambiar en el archivo de modo que
coincidan.
Lo siguiente son ejemplos del modo de utilizar el mandato diff:
• Para comparar dos archivos, escriba lo siguiente:

diff [Link] chap1

Muestra las diferencias entre los archivos [Link] y chap1.


• Para comparar dos archivos e ignorar las diferencias con respecto a la cantidad de espacio en blanco,
escriba lo siguiente:

diff -w [Link] prog.c

Si los dos archivos sólo difieren en el número de espacios y separadores entre palabras, el mandato
diff -w considera que los archivos son iguales.

Cálculo de las palabras, líneas y bytes de los archivos (mandato wc)


Utilice el mandato wc para contar el número de líneas, palabras y bytes de los archivos especificados por
el parámetro Archivo.
Si no se especifica un archivo en el parámetro Archivo, se utiliza la entrada estándar. El mandato graba el
resultado en salida estándar y mantiene un recuento total de todos los archivos indicados. Si se
especifican distintivos, el orden de los distintivos determina el orden de la salida. Una palabra se define
como una serie de caracteres delimitados por espacios, tabulaciones o caracteres de nueva línea.
Cuando se especifican archivos en la línea de mandatos, los nombres de éstos se imprimen junto con los
recuentos.
Vea los ejemplos siguientes:

Gestión del sistema operativo 201


• Para visualizar el número de líneas, de palabras y de bytes del archivo denominado chap1, escriba lo
siguiente:

wc chap1

Con ello se visualiza el número de líneas, palabras y bytes del archivo chap1.
• Para visualizar sólo el número de bytes y de palabras, escriba lo siguiente:

wc -cw chap*

Esto muestra el número de bytes y palabras de cada archivo cuyo nombre comience por chap y
muestra los totales.

Visualización de las primeras líneas de los archivos (mandato head)


Utilice el mandato head para grabar en la salida estándar las primeras líneas de cada archivo
especificado o de la entrada estándar.
Si no se especifica ningún distintivo con el mandato head, por omisión se visualizan las 10 primeras
líneas.
Por ejemplo, para que se visualicen las cinco primeras línea del archivo Test, escriba lo siguiente:

head -5 Test

Visualización de las últimas líneas de los archivos (mandato tail)


Utilice el mandato tail para grabar el archivo especificado por el parámetro Archivo en la salida
estándar empezando en un punto especificado.
Vea los ejemplos siguientes:
• Para visualizar las 10 últimas líneas del archivo notes, escriba lo siguiente:

tail notes

• Para especificar el número de líneas que se deben empezar a leer desde el final del archivo notes,
escriba lo siguiente:

tail -20 notes

• Para visualizar el archivo notes mostrándose una página cada vez, empezando desde el byte número
200, escriba lo siguiente:

tail -c +200 notes | pg

• Para seguir el crecimiento del archivo denominado accounts, escriba lo siguiente:

tail -f accounts

Esto visualiza las 10 últimas líneas del archivo accounts. El mandato tail va visualizando líneas a
medida que se añaden al archivo accounts. La visualización seguirá produciéndose hasta que pulse la
secuencia de teclas que detiene la visualización (Control-C).

Corte de secciones de archivos de texto (mandato cut)


Utilice el mandato cut para grabar en la salida estándar los bytes, caracteres o campos seleccionados en
cada línea de un archivo.
Vea los ejemplos siguientes:
• Para visualizar varios campos de cada línea de un archivo, escriba lo siguiente:

cut -f1,5 -d: /etc/passwd

202 AIX Versión 7.2: Gestión del sistema operativo


Esto muestra el nombre de inicio de sesión y los campos de nombre de usuario completos del archivo
de contraseñas del sistema. Son los campos primero y quinto (-f1,5) separados por caracteres de dos
puntos (-d:).
• Si el aspecto del archivo /etc/passwd es el siguiente:

su:*:0:0:Usuario con privilegios especiales:/:/usr/bin/sh


daemon:*:1:1::/etc:
bin:*:2:2::/usr/bin:
sys:*:3:3::/usr/src:
adm:*:4:4:system administrator:/var/adm:/usr/bin/sh
pierre:*:200:200:Pierre Harper:/home/pierre:/usr/bin/sh
joan:*:202:200:Joan Brown:/home/joan:/usr/bin/sh

el mandato cut produce:

su:Usuario con privilegios especiales


daemon:
bin:
sys:
adm:system administrador
pierre:Pierre Harper
joan:Joan Brown

Pegado de secciones de archivos de texto (mandato paste)


Utilice el mandato paste para fusionar las líneas de hasta 12 archivos en un único archivo.
Vea los ejemplos siguientes:
• Si dispone de un archivo llamado names que contiene el siguiente texto:

rachel
jerry
mark
linda
scott

y de otro archivo llamado places que contiene el texto siguiente:

New York
Austin
Chicago
Boca Raton
Seattle

y otro archivo llamado dates que contiene el siguiente texto:

February 5
March 13
June 21
July 16
November 4

Para pegar el texto de los archivos names, places y dates, escriba lo siguiente:

paste names places dates > npd

Esto crea un archivo llamado npd que contiene los datos del archivo names en una columna, el archivo
places en otra columna y el archivo dates en una tercera columna. Ahora, el archivo npd contiene lo
siguiente:

rachel New York February 5


jerry Austin March 13
mark Chicago June 21
linda Boca Raton July 16
scott Seattle November 4

Un carácter de tabulación separa el nombre, el lugar y la fecha en cada línea. Estas columnas no están
alineadas, ya que las detenciones del tabulador se han definido en cada octava columna.
• Para separar las columnas con un carácter distinto de una tabulación, escriba lo siguiente:

Gestión del sistema operativo 203


paste -d"!@" names places dates > npd

Esto alterna ! y @ como separadores de columnas. Si los archivos names, places y dates son iguales
a los del ejemplo 1, el archivo npd contiene lo siguiente:

rachel!New York@February 5
jerry!Austin@March 13
mark!Chicago@June 21
linda!Boca Raton@July 16
scott!Seattle@November 4

• Para listar el directorio actual en cuatro columnas, escriba lo siguiente:

ls | paste - - - -

Cada guión (-) indica al mandato paste que cree una columna que contenga los datos que se han leído
de la entrada estándar. La primera línea se sitúa en la primera columna, la segunda línea en la segunda
columna, etc.

Numeración de las líneas de archivos de texto (mandato nl)


Utilice el mandato nl para leer el archivo especificado (por omisión, la entrada estándar), numerar las
líneas de la entrada y grabar las líneas numeradas en la salida estándar.
Vea los ejemplos siguientes:
• Para numerar solamente las líneas que no están en blanco, escriba lo siguiente:

nl chap1

Con ello se muestra un listado numerado de chap1, donde sólo se numeran las líneas que no están en
blanco de las secciones del cuerpo.
• Para numerar todas las líneas, escriba lo siguiente:

nl -ba chap1

Con ello se numeran todas las líneas del archivo denominado chap1, incluidas las líneas en blanco.

Eliminación de columnas de archivos de texto (mandato colrm)


Utilice el mandato colrm para eliminar las columnas especificadas de un archivo. La entrada se toma de
la entrada estándar. La salida se envía a la salida estándar.
Si se llama al mandato con un parámetro, se eliminarán las columnas de cada línea, desde la columna
especificada hasta la última columna. Si se llama al mandato con dos parámetros, se eliminarán las
columnas, desde la primera columna especificada hasta la segunda columna especificada.
Nota: La numeración de las columnas empieza por la columna 1.
Vea los ejemplos siguientes:
• Para eliminar columnas del archivo [Link], escriba lo siguiente:

colrm 6 < [Link]

Si [Link] contiene:

123456789

el mandato colrm muestra:

12345

Enlaces de archivo y directorio


Los enlaces son conexiones entre un nombre de archivo y un número de referencia de nodo de índice
(número de inodo), la representación interna de un archivo. Puesto que las entradas de directorio

204 AIX Versión 7.2: Gestión del sistema operativo


contienen nombres de archivos emparejados con números de inodo, cada entrada de directorio es un
enlace.
El número de inodo identifica realmente al archivo, no al nombre de archivo. Mediante la utilización de
enlaces, cualquier número de inodo o archivo puede conocerse por muchos nombres distintos. Por
ejemplo, el número de inodo 798 contiene una memorándum acerca de las ventas de junio de la oficina
de Omaha. Actualmente, la entrada de directorio para este memorándum es la siguiente:

Número de Nombre de archivo


inodo
798 memorándum

Puesto que esta información está relacionada con la información que se almacena en los directorios
sales y omaha, el enlace se utiliza para compartir la información donde es necesario. Por medio de la
utilización del mandato ln se crean los enlaces con dichos directorios. Ahora, el archivo tiene tres
nombres de archivo, que son los siguientes:

Número de Nombre de archivo


inodo
798 memorándum
798 sales/june
798 omaha/junesales

Cuando utiliza el mandato pg o cat para ver el contenido de cualquiera de los tres nombres de archivos,
se visualiza la misma información. Si edita el contenido del número de inodo de cualquiera de los tres
nombres de archivos, el contenido de los datos que visualizarán todos los archivos reflejarán los cambios
realizados.

Tipos de enlaces
Hay dos tipos de enlaces: fijo y simbólico.
Los enlaces se crean con el mandato ln y pueden ser de los tipos siguientes:

Elemento Descripción
enlace fijo Permite el acceso a los datos de un archivos desde un nombre de archivo nuevo. Los
enlaces fijos garantizan la existencia de un archivo. Cuando se elimina el último enlace
fijo, se suprimen el número de inodo y sus datos. Sólo pueden crearse enlaces fijos
entre archivos que se encuentran en el mismo sistema de archivos.
enlace Permite el acceso a datos de otros sistemas de archivos desde un nombre de archivo
simbólico nuevo. El enlace simbólico es un tipo especial de archivo que contiene un nombre de
vía de acceso. Cuando un proceso encuentra un enlace simbólico, puede que el
proceso busque en dicha vía de acceso. Los enlaces simbólicos no protegen a un
archivo para evitar su supresión del sistema de archivos.

Nota: El usuario que crea un archivo conserva su propiedad con independencia del número de enlaces
que se creen. Sólo el propietario del archivo o el usuario root pueden establecer la modalidad de acceso
para dicho archivo. Sin embargo, pueden realizarse cambios en el archivo desde un nombre de archivo
enlazado con la modalidad de acceso adecuada.
Un archivo o directorio existirá en tanto que exista un enlace fijo con el número de inodo de ese archivo.
En el largo listado visualizado por el mandato ls -l, se proporciona el número de enlaces fijos con cada
archivo y subdirectorio. El sistema operativo trata todos los enlaces fijos de igual modo,
independientemente del enlace que se haya creado primero.

Enlace de archivos (mandato ln)


El enlace de archivos utilizando el mandato ln es la forma correcta de trabajar con los mismos datos en
más de un lugar.

Gestión del sistema operativo 205


Los enlaces se crean al proporcionar nombres alternativos al archivo original. La utilización de enlaces
permite compartir un archivo grande, por ejemplo una base de datos o una lista de correo, entre muchos
usuarios sin tener que hacer copias de dicho archivo. Los enlaces no sólo ahorran espacio de disco, sino
que los cambios efectuados se reflejan automáticamente en todos los archivos enlazados.
El mandato ln enlaza el archivo designado en el parámetro ArchivoOrigen con el archivo designado en el
parámetro ArchivoDestino o con el mismo nombre de archivo en otro directorio especificado por el
parámetro DirectorioDestino. Por omisión, el mandato ln crea enlaces fijos. Para utilizar el mandato ln a
fin de crear enlaces simbólicos, añada el distintivo -s.
Nota: No se pueden enlazar archivos entre sistemas de archivos sin utilizar el distintivo -s.
Si va a enlazar un archivo con un nombre nuevo, puede listar únicamente un archivo. Si va a enlazar con
un directorio, puede listar más de un archivo.
El parámetro ArchivoDestino es opcional. Si no designa un archivo de destino, el mandato ln crea un
archivo en el directorio actual. El archivo nuevo hereda el nombre del archivo designado en el parámetro
ArchivoOrigen.
Vea los ejemplos siguientes:
• Para crear un enlace con un archivo denominado chap1, escriba lo siguiente:

ln -f chap1 intro

Ello enlaza chap1 con el nuevo nombre, intro. Cuando se utiliza el distintivo -f, se crea el nombre de
archivo intro, si no existe. Si intro existe, el archivo se sustituye por un enlace con chap1. El nombre
de archivo chap1 y el nombre de archivo intro harán referencia al mismo archivo.
• Para enlazar un archivo denominado index con el mismo nombre en otro directorio denominado
manual, escriba lo siguiente:

ln index manual

Ello enlaza index con el nuevo nombre, manual/index.


• Para enlazar varios archivos con nombres de otro directorio, escriba lo siguiente:

ln chap2 jim/chap3 /home/manual

Esto enlaza chap2 con el nuevo nombre /home/manual/chap2 y jim/chap3 con /home/manual/
chap3.
• Para utilizar el mandato ln con caracteres de patrones de coincidencia, escriba lo siguiente:

ln manual/* .

Nota: Debe dejar un espacio en blanco entre el asterisco y el punto.


Esto enlaza todos los archivos del directorio manual en el directorio actual, punto (.),
proporcionándoles los mismos nombres que tienen en el directorio manual.
• Para crear un enlace simbólico, escriba lo siguiente:

ln -s /tmp/toc toc

Esto crea el enlace simbólico, toc, en el directorio actual. El archivo toc apunta al archivo /tmp/toc. Si
existe el archivo /tmp/toc, el mandato cat toc lista su contenido.
• Para obtener resultados idénticos sin diseñar el parámetro ArchivoDestino, escriba lo siguiente:

ln -s /tmp/toc

Mandato para eliminar archivos enlazados


El mandato rm elimina el enlace del nombre de archivo que indique.

206 AIX Versión 7.2: Gestión del sistema operativo


Cuando se suprime un nombre de archivo de varios nombres de archivos con enlaces fijos, el archivo no
se suprime completamente, pues sigue existiendo con otro nombre. Cuando se ha eliminado el último
enlace con un número de inodo, los datos también se eliminan. El número de inodo está disponible a
continuación para su reutilización en el sistema.

Archivos DOS
El sistema operativo AIX permite trabajar con archivos DOS en el sistema.
Copie en un disquete los archivos DOS con los que desee trabajar. El sistema puede leer estos archivos
en un directorio del sistema operativo base en el formato correcto y nuevamente en el disquete en
formato de DOS.
Nota: Los caracteres comodín * y ? (asterisco y signo de interrogación) no funcionan correctamente con
los mandatos que se explican en este apartado (aunque sí funcionan correctamente con el shell del
sistema operativo base). Si no especifica una extensión de archivo, el nombre de archivo se interpreta
como si hubiera especificado una extensión en blanco.

Copia de archivos DOS en archivos del sistema operativo base


Utilice el mandato dosread para copiar el archivo DOS especificado en el archivo especificado del
sistema operativo base.
Nota: Se utilizan los convenios de denominación de archivos DOS con una excepción. Puesto que el
carácter de barra inclinada invertida (\) puede tener un significado especial para el sistema operativo
base, utilice un carácter de barra inclinada (/) como delimitador para especificar nombres de
subdirectorio en un nombre de vía de acceso DOS.
Vea los ejemplos siguientes:
• Para copiar un archivo de texto denominado [Link] de un disquete DOS en el sistema de archivos
operativo base, escriba lo siguiente:

dosread -a [Link] chap1

Esto copia el archivo de texto DOS \[Link] del dispositivo predeterminado /dev/fd0 en el
archivo del sistema operativo base chap1 del directorio actual.
• Para copiar un archivo binario de un disquete DOS en el sistema de archivos operativo base, escriba lo
siguiente:

dosread -D/dev/fd0 /survey/[Link] /home/fran/testdata

Esto copia el archivo de datos DOS \SURVEY\[Link] de /dev/fd0 en el archivo del sistema
operativo base /home/fran/testdata.

Copia de archivos del sistema operativo base en archivos DOS


Utilice el mandato doswrite para copiar el archivo especificado del sistema operativo base en el archivo
DOS especificado.
Nota: Se utilizan los convenios de denominación de archivos DOS con una excepción. Puesto que el
carácter de barra inclinada invertida (\) puede tener un significado especial para el sistema operativo
base, utilice un carácter de barra inclinada (/) como delimitador para especificar nombres de
subdirectorio en un nombre de vía de acceso DOS.
Vea los ejemplos siguientes:
• Para copiar un archivo de texto denominado chap1 del sistema de archivos operativo base en un
disquete DOS, escriba lo siguiente:

doswrite -a chap1 [Link]

Esto copia el archivo del sistema operativo base chap1 en el directorio actual para el archivo de texto
DOS \[Link] en /dev/fd0.

Gestión del sistema operativo 207


• Para copiar un archivo binario denominado /survey/[Link] desde el sistema de archivos
operativo base en un disquete DOS, escriba lo siguiente:

doswrite -D/dev/fd0 /home/fran/testdata /survey/[Link]

Esto copia el archivo de datos del sistema operativo base /home/fran/testdata en el archivo DOS
\SURVEY\[Link] en /dev/fd0.

Supresión de archivos DOS


Utilice el mandato dosdel para suprimir el archivo DOS especificado.
Nota: Se utilizan los convenios de denominación de archivos DOS con una excepción. Puesto que el
carácter de barra inclinada invertida (\) puede tener un significado especial para el sistema operativo
base, utilice el carácter de barra inclinada (/) como delimitador para especificar nombres de subdirectorio
en un nombre de vía de acceso DOS.
El mandato dosdel convierte los caracteres en minúsculas del nombre del archivo o directorio en
caracteres en mayúsculas antes de comprobar el disco. Puesto que se supone que todos los nombres de
archivo son nombres completos (no relativos) de vías de acceso, no es necesario añadir la barra inclinada
inicial (/).
Por ejemplo, para suprimir un archivo DOS denominado [Link] del dispositivo predeterminado
(/dev/fd0), escriba lo siguiente:

dosdel [Link]

Visualización del contenido de un directorio DOS


Utilice el mandato dosdir para visualizar información acerca de los archivos o directorios DOS
especificados.
Nota: Se utilizan los convenios de denominación de archivos DOS con una excepción. Puesto que el
carácter de barra inclinada invertida (\) puede tener un significado especial para el sistema operativo
base, utilice el carácter de barra inclinada (/) como delimitador para especificar nombres de subdirectorio
en un nombre de vía de acceso DOS.
El mandato dosdir convierte los caracteres en minúsculas del nombre del archivo o directorio en
caracteres en mayúsculas antes de comprobar el disco. Puesto que se presupone que todos los nombres
de archivos son nombres de vías de acceso completos (no relativos), no es necesario añadir la barra
inclinada inicial (/).
Por ejemplo, para leer un directorio de los archivos DOS en /dev/fd0, escriba lo siguiente:

dosdir

El mandato devuelve los nombres de los archivos e información acerca del espacio del disco, de forma
similar a como se muestra a continuación.

[Link]
[Link]
[Link]
[Link]
Espacio libre: 312320 bytes

Resumen de mandatos para archivos


Los siguientes mandatos son para archivos, procedimientos de manejo de archivos y archivos DOS.
También existe una lista de mandatos para enlazar archivos y directorios.

Tabla 58. Mandatos para archivos


Elemento Descripción
* Comodín, sustituye a cualquier carácter

208 AIX Versión 7.2: Gestión del sistema operativo


Tabla 58. Mandatos para archivos (continuación)
Elemento Descripción
? Comodín, sustituye a cualquier carácter individual
[ ] Metacaracteres, sustituye a caracteres delimitados.

Tabla 59. Mandatos para procedimientos de manejo de archivos


Elemento Descripción
cat Concatena o visualiza archivos
cmp Compara dos archivos
colrm Extrae columnas de un archivo
cp Copia archivos
cut Graba los bytes, caracteres o campos seleccionados de cada línea de un archivo
diff Compara archivos de texto
file Determina el tipo de archivo
find Busca archivos que tengan una expresión coincidente
grep Busca un patrón en un archivo
head Visualiza las primeras líneas o bytes de un archivo o archivos
more Visualiza texto continuo, pantalla por pantalla, en una pantalla de visualización
mv Mueve archivos
nl Numera las líneas de un archivo
pg Formatea archivos en la pantalla
rm Elimina (elimina el enlace de) archivos o directorios
paste Fusiona las líneas de varios archivos o las líneas siguientes en un archivo
sort Ordena archivos, fusiona archivos que ya se han ordenado y comprueba los archivos
para determinar si se han ordenado
tail Graba un archivo en la salida estándar, empezando por un punto especificado
wc Cuenta el número de líneas, de palabras y de bytes de un archivo

Tabla 60. Mandato para enlazar archivos y directorios


Elemento Descripción
ln Enlaza archivos y directorios

Tabla 61. Mandatos para archivos DOS


Elemento Descripción
dosdel Suprime archivos de DOS
dosdir Lista el directorio de los archivos de DOS
dosread Copia archivos de DOS en archivos del Sistema operativo base
doswrite Copia archivos del Sistema operativo base en archivos de DOS

Gestión del sistema operativo 209


Shells del sistema operativo
La interfaz con el sistema operativo se denomina shell.
El shell es la capa más externa del sistema operativo. Los shells incorporan un lenguaje de programación
para controlar procesos y archivos, además de iniciar y controlar otros programas. El shell gestiona la
interacción entre el usuario y el sistema operativo solicitándole la entrada, interpretando dicha entrada
para el sistema operativo y gestionando cualquier resultado de salida procedente del sistema operativo.
Los shells ofrecen un método para comunicarse con el sistema operativo. Esta comunicación tiene lugar
de forma interactiva (la entrada desde el teclado se ejecuta inmediatamente) o como un script de shell.
Un script de shell es una secuencia de mandatos del shell y del sistema operativo que se almacena en un
archivo.
Cuando se inicie la sesión en el sistema, éste localizará el nombre de un programa de shell a ejecutar.
Después de ejecutarse, el shell visualiza un indicador de mandatos. Este indicador suele ser un $ (signo
de dólar). Cuando escriba un mandato en el indicador y pulse la tecla Intro, el shell evaluará el mandato e
intentará ejecutarlo. Según las instrucciones del mandato, el shell grabará la salida del mandato en la
pantalla o lo dirigirá a la salida. A continuación, restaura el indicador de mandatos para que escriba otro
mandato.
Una línea de mandatos es la línea en la que escribe. Contiene el indicador del shell. El formato básico de
cada línea es el siguiente:

$ Mandato Argumento(s)

El shell considera que la primera palabra de un línea de mandatos (hasta el primer espacio en blanco) es
el primer mandato y que todas las palabras posteriores son argumentos.
Nota: Cuando se mueve o cambia el nombre de libc.a, se visualiza el error Matado desde el shell
porque no hay ningún archivo libc.a disponible para que el sistema cargue y ejecute los programas de
utilidad. El mandato recsh, invoca el shell de recuperación, que proporciona la posibilidad de cambiar el
nombre a libc.a si se mueve accidentalmente.
Tareas relacionadas
Listado de los mandatos entrados anteriormente (mandato history)
Utilice el mandato history para listar los mandatos que ha entrado anteriormente.

Conceptos del shell


Antes de empezar a trabajar con los diferentes tipos de shells que están disponibles para AIX, debe
conocer la terminología y las características básicas.

Shells disponibles
Los siguientes shells se proporcionan con AIX.
• Shell Korn (se inicia con el mandato ksh)
• Shell Bourne (se inicia con el mandato bsh)
• Shell restringido (una versión limitada del shell Bourne que se inicia con el mandato Rsh)
• Shell POSIX (también denominado shell Korn y que se inicia con el mandato psh)
• Shell restringido para el shell Korn (ksh y ksh93). Los shells ksh y ksh93 se proporcionan con sus
equivalentes de shell restringido rksh y rksh93.
• Shell por omisión (se inicia con el mandato sh)
• Shell C (se inicia con el mandato csh )
• Shell fiable (una versión limitada del shell Korn que se inicia con el mandato tsh)
• Shell remoto (se inicia con el mandato rsh)
El shell de inicio de sesión hace referencia al shell que se carga cuando inicia la sesión del sistema. El
shell de inicio de sesión se establece en el archivo /etc/passwd. El shell Korn es el shell de inicio de
sesión del sistema operativo estándar y es compatible con las versiones anteriores del shell Bourne.

210 AIX Versión 7.2: Gestión del sistema operativo


El shell Korn (/usr/bin/ksh) se define como el shell por defecto. El shell por omisión o estándar hace
referencia a los shells que se inician y cuyo enlace se establece con el mandato /usr/bin/sh. El shell
Bourne (/usr/bin/sh) se puede sustituir como el shell por omisión. El shell POSIX, que se invoca
mediante el mandato /usr/bin/psh, reside como un enlace con el mandato /usr/bin/sh.
Conceptos relacionados
shell Bourne
El shell Bourne es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos.
Mandatos del shell Korn o shell POSIX
El shell Korn es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Se
ajusta a la Interfaz de Sistema Operativo Portable para Entornos del Sistema (POSIX), un estándar
internacional para sistemas operativos.

Terminología acerca de los shells


Los términos y definiciones de esta tabla sirven de ayuda para comprender los shells.

Elemento Descripción
blank Un blanco es uno de los caracteres de la clase de caracteres blancos definida
en la categoría LC_CTYPE. En el shell POSIX, un blanco es una tabulación o un
espacio.
mandato incorporado Un mandato que el shell ejecuta sin tener que buscarlo y que crea un proceso
separado.
mandato Una secuencia de caracteres en la sintaxis del lenguaje del shell. El shell lee
cada uno de los mandatos y lleva a cabo la acción deseada directamente o
llamando a programas de utilidad independientes.
comentario Cualquier palabra que empiece por una almohadilla (#). La palabra y todos los
caracteres que le siguen, hasta el siguiente carácter de nueva línea, se pasan
por alto.
identificador Una secuencia de letras, dígitos o subrayados del conjunto de caracteres
portables, que comienzan por una letra o subrayado. El primer carácter de un
identificador no debe ser un dígito. Los identificadores se utilizan como
nombres para alias, funciones y parámetros especificados.

Gestión del sistema operativo 211


Elemento Descripción
lista Secuencia de uno o más conductos separados por uno de los símbolos
siguientes: punto y coma (;), ampersand (&), doble ampersand (&&) o doble
barra (||). Opcionalmente, la lista puede acabar con uno de los símbolos
siguientes: punto y coma (;), ampersand (&) o barra ampersand (|&).
;
Procesa secuencialmente el conducto anterior. El shell ejecuta cada
mandato por orden y espera a que se complete el último mandato.
&
Procesa asíncronamente el conducto anterior. El shell ejecuta cada
mandato por orden, procesando el conducto en segundo plano sin esperar
a que se complete.
|&
Procesa asíncronamente el área de interconexión de memoria anterior y
establece un conducto bidireccional con el shell padre. El shell ejecuta
cada mandato por orden, procesando el conducto en segundo plano sin
esperar a que se complete. El shell padre puede leer y grabar en la salida
estándar del mandato creado utilizando los mandatos read -p y print -p.
Sólo uno de dichos mandatos puede estar activo al mismo tiempo.
&&
Procesa la lista que sigue a este símbolo sólo si el conducto anterior
devuelve un valor de salida cero (0).
||
Procesa la lista que sigue a este símbolo solo si el conducto anterior
devuelve un valor de salida distinto de cero.
El punto y coma (;), ampersand (&) y barra ampersand (|&) tienen una
prioridad menor que el doble ampersand (&&) y la doble barra (||). Los
símbolos ;, & y |& tienen igual prioridad entre sí. Los símbolos && y || tienen
la misma prioridad. Para delimitar dos mandatos en una lista, pueden utilizarse
uno o más caracteres de nueva línea en lugar de un carácter de punto y coma.
Nota: El símbolo |& sólo es válido en el shell Korn.

metacaracteres Cada metacarácter tiene un significado especial para el shell y provoca la


terminación de una palabra a no ser que esté limitada. Los metacaracteres son:
conducto (|), ampersand (&), punto y coma (;), signo menor que (<), signo
mayor que (>), paréntesis izquierdo ((), paréntesis derecho ()), signo de dólar
($), acento grave (`), barra inclinada invertida (\), comilla simple ('), comillas
dobles ("), carácter de nueva línea, carácter de espacio y carácter de
tabulación. Todos los caracteres delimitados entre comillas simples se
consideran delimitados y el shell los interpreta literalmente. El significado
especial de los metacaracteres se conserva si no se delimitan. (Los
metacaracteres también se denominan metacaracteres de analizador en el
shell C.)
lista de asignación de Incluye una o más palabras con el formato Identificador=Valor en el que los
parámetros espacios que aparecen alrededor del signo de igual (=) deben estar
compensados. Es decir, deben utilizarse blancos iniciales y finales o sin
blancos.
Nota: En el shell C, la lista de asignación de parámetros tiene el formato
setIdentificador=Valor. Los espacios alrededor del signo igual (=) son
necesarios.

212 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
conducto Secuencia de uno o más mandatos separados por un conducto (|). Cada
mandato del conducto, excepto posiblemente el último mandato, se ejecuta
como un proceso independiente. No obstante, la salida estándar de cada
mandato que está conectado mediante un conducto pasa a ser la entrada
estándar del siguiente mandato de la secuencia. Si se delimita una lista entre
paréntesis, se ejecuta como un solo mandato que funciona en un subshell
independiente.
si la palabra reservada ! no precede al conducto, el estado de la salida será el
estado de salida del último mandato especificado en el conducto. De lo
contrario, el estado de salida es el operador lógico NOT del estado de salida del
último mandato. Es decir, si el último mandato devuelve cero, el estado de
salida será 1. Si el último mandato devuelve un valor superior a cero, el estado
de salida será cero.
El formato de un conducto es el siguiente:

[!] mandato1 [ | mandato2 ...]

Nota: En versiones anteriores del shell Bourne se utilizaba el acento circunflejo


(^) para indicar un conducto.

variable de shell Un nombre o un parámetro al que se asigna un valor. Asigne una variable
escribiendo el nombre de variable, un signo igual que (=) y, a continuación, el
valor. El nombre de la variable se puede sustituir por el valor asignado
precediendo el nombre de la variable con un signo de dólar ($). Las variables
son especialmente útiles para crear una notación abreviada para un nombre de
vía de acceso largo, como $HOME para el directorio inicial. Una variable
predefinida es aquella a que el shell asigna su valor. Una variable definida por
el usuario es aquella a la que un usuario asigna su valor.
mandato simple Una secuencia de listas y redirecciones de asignaciones de parámetros
opcionales en cualquier orden. Van, opcionalmente, seguidos de mandatos,
palabras y redirecciones. Terminan con ;, |, &, ||, &&, |& o un carácter de
nueva línea. El nombre del mandato se pasa como parámetro 0 (tal como
define la subrutina exec). El valor de un mandato simple es su estado de salida
de cero si termina normalmente o distinto de cero si termina anormalmente.
Las subrutinas sigaction, sigvec o signal incluyen una lista de valores del
estado de salida de señal.
subshell Un shell que se ejecuta como un hijo del shell de inicio de sesión o shell actual.
carácter comodín También se conoce como carácter de coincidencia de patrón. El shell los asocia
con valores asignados. Los comodines básicos son ?, *, [set] y [!set]. Los
caracteres comodín son especialmente útiles cuando se realiza una sustitución
de nombre de archivo.
palabra Una secuencia de caracteres que no contiene blancos. Las palabras están
separadas por uno o más metacaracteres.

Especificación de un shell para un archivo de script


Cuando ejecuta un script de shell ejecutable en el shell Korn (el shell POSIX) o el shell Bourne, los
mandatos del script se ejecutan bajo el control del shell actual (el shell desde el que se inicia el script), a
menos que se especifique otro shell. Cuando se ejecuta un script de shell ejecutable en el shell C, los
mandatos del script se ejecutan bajo el control del shell Bourne (/usr/bin/bsh), a menos que se
especifique otro shell.
Puede ejecutar un script de shell es un shell específico; para ello, incluya el shell en el script de shell.

Gestión del sistema operativo 213


Para ejecutar un script de shell ejecutable en un shell específico, escriba #!VíaAcceso en la primera
línea del script de shell y, a continuación, pulse Intro. Los caracteres #! identifican el tipo de archivo. La
variable VíaAcceso especifica el nombre de vía de acceso del shell desde el que se ejecuta el script de
shell.
Por ejemplo, para ejecutar el script bsh en el shell Bourne, escriba lo siguiente:

#!/usr/bin/bsh

Cuando un mandato de shell precede a un nombre de archivo de script de shell, el shell especificado en la
línea de mandatos altera temporalmente a cualquier shell especificado en el propio archivo de script. Por
lo tanto, al escribir ksh myfile y pulsar Intro, se ejecuta el archivo denominado myfile bajo el control
del shell Korn, aunque la primera línea de myfile sea #!/usr/bin/csh.

Funciones del shell


Existen ventajas de utilizar el shell como interfaz para el sistema.
Las principales ventajas de interactuar con el sistema por medio de un shell son las siguientes:
• Sustitución de comodines en nombres de archivos (coincidencia de patrones)
Ejecuta mandatos en un grupo de archivos especificando un patrón de coincidencia, en lugar de
especificar un nombre de archivo real.
Para obtener más información, consulte:
– “Sustitución de nombre de archivo en el shell Korn o shell POSIX” en la página 237
– “Sustitución de nombres de archivo en el shell Bourne” en la página 273
– “Sustitución de nombres de archivo en el shell C” en la página 291
• Proceso en segundo plano
Define tareas prolongadas que se ejecutarán en segundo plano, liberando el terminal para el proceso
interactivo concurrente.
Para obtener más información, consulte el mandato bg en los apartados siguientes:
– “Control de trabajos en el shell Korn o el shell POSIX” en la página 254
– “Mandatos incorporados del shell C” en la página 300
Nota: El shell Bourne no soporta el control de trabajos.
• Creación de alias de mandatos
Proporciona un alias a un mandato o frase. Cuando el shell encuentra un seudónimo en la línea de
mandatos o en un script de shell, sustituye el texto al que se refiere el seudónimo.
Para obtener más información, consulte:
– “Alias de mandatos en el shell Korn o shell POSIX” en la página 268
– “Sustitución de alias en el shell C” en la página 289
Nota: El shell Bourne no soporta la creación de alias de mandatos.
• Histórico de mandatos
Registra los mandatos que especifica en un archivo histórico. Puede utilizar este archivo para acceder,
modificar y volver a emitir fácilmente cualquier mandato listado.
Para obtener más información, consulte el mandato history en los apartados siguientes:
– “Histórico de mandatos del shell Korn o shell POSIX” en la página 268
– “Mandatos incorporados del shell C” en la página 300
– “Sustitución del histórico en el shell C” en la página 310
Nota: El shell Bourne no soporta el mandato history.
• Sustitución de nombres de archivos

214 AIX Versión 7.2: Gestión del sistema operativo


Genera automáticamente una lista de nombres de archivo en una línea de mandatos utilizando
caracteres coincidentes con un patrón.
Para obtener más información, consulte:
– “Sustitución de nombre de archivo en el shell Korn o shell POSIX” en la página 237
– “Sustitución de nombres de archivo en el shell Bourne” en la página 273
– “Sustitución de nombres de archivo en el shell C” en la página 291
• Redirección de la entrada y la salida
Redirige la entrada del teclado y redirige la salida a un archivo o dispositivo distinto del terminal. Por
ejemplo, la entrada para un programa puede obtenerse de un archivo y redirigirse a la impresora o a
otro archivo.
Para obtener más información, consulte:
– “Redirección de la entrada y la salida en el shell Korn o POSIX” en la página 238
– “Redirección de la entrada y la salida en el shell Bourne” en la página 273
– “Redirección de la entrada y la salida en el shell C” en la página 313
• Conductos
Enlaza cualquier número de mandatos para componer un programa complejo. La salida estándar de un
programa pasa a ser la entrada estándar del siguiente.
Para obtener más información, consulte la definición de conducto en el apartado “Terminología acerca
de los shells” en la página 211 .
• Sustitución de variables de shell
Almacena datos de variables definidas por el usuario y variables de shell predefinidas.
Para obtener más información, consulte:
– “Sustitución de parámetros en el shell Korn o shell POSIX” en la página 235
– “Sustitución de variables en el shell Bourne” en la página 283
– “Sustitución de variables en el shell C” en la página 290
Conceptos relacionados
Mandatos
Algunos mandatos pueden entrarse simplemente escribiendo una palabra. También es posible combinar
mandatos de forma que la salida de un mandato se convierta en la entrada para otro mandato.

Clases de caracteres
Puede utilizar clases de caracteres para que coincidan con nombres de archivos.
Puede utilizar clases de caracteres para que coincidan con nombres de archivos, de la manera siguiente:

[[:clasecaracteres:]]

Este formato indica al sistema que debe buscar caracteres simples que pertenezcan a la clase
especificada. Las clases definidas corresponden a subrutinas ctype, tal como se indica a continuación:

Clase de carácter Definición


alnum Caracteres alfanuméricos
alpha Letras mayúsculas y minúsculas
blank Espacio o tabulador horizontal
cntrl Caracteres de control
digit Dígitos
graph Caracteres gráficos

Gestión del sistema operativo 215


Clase de carácter Definición
lower Letras minúsculas
print Caracteres imprimibles
punct Caracteres de puntuación
space Espacio, tabulación horizontal, retorno de carro, nueva línea, tabulación
vertical o carácter de salto de página
upper Caracteres en mayúsculas
xdigit Dígitos hexadecimales

shell restringido
El shell restringido se utiliza para definir nombres de inicio de sesión y entornos de ejecución cuyas
posibilidades están más controladas que las del shell Bourne.
El mandato Rsh o bsh -r abre el shell restringido. El comportamiento de estos mandatos es idéntico al
del mandato bsh, a excepción de que no están permitidas las acciones siguientes:
• Cambiar de directorio (con el mandato cd)
• Establecer el valor de las variables PATH o SHELL
• Especificar nombres de vías de acceso o de mandatos que contengan una barra inclinada (/)
• Redirigir la salida
Si el shell restringido determina que un mandato a ejecutar es un procedimiento de shell, utiliza el shell
Bourne para ejecutar el mandato. De este modo, es posible proporcionar a un usuario procedimientos
shell que accedan a la plena capacidad del shell Bourne al mismo tiempo que impone un menú limitado
de mandatos. En esta situación se supone que el usuario no tiene permisos de grabación y ejecución en el
mismo directorio.
Si se especifica el parámetro Archivo [Parámetro] al iniciar el shell Bourne, el shell ejecuta el archivo de
script identificado en el parámetro Archivo, incluyendo los parámetros especificados. El archivo de script
especificado debe tener permiso de lectura. Los valores setuid y setgid de los archivos de script se
pasan por alto. El shell lee a continuación los mandatos. Si utiliza el distintivo -c o -s, no especifique un
archivo de script.
Cuando se inicia con el mandato Rsh, el shell aplica las restricciones después de interpretar los
archivos .profile y /etc/environment. Por lo tanto, la persona encargada de escribir el
archivo .profile tiene control total sobre las acciones del usuario, pues realiza las acciones de
configuración y sitúa al usuario en un directorio adecuado (probablemente, distinto del directorio de inicio
de sesión). Un administrador puede crear un directorio de mandatos en el directorio /usr/rbin que el
mandato Rsh puede utilizar cambiando la variable PATH para que contenga el directorio. Si se inicia con
el mandato bsh -r, el shell aplica restricciones al interpretar los archivos .profile.
Cuando se llama con el nombre Rsh, el shell restringido lee el archivo .profile del usuario
($HOME/.profile). Actúa como un shell Bourne normal mientras realiza esta operación, a excepción de
que una interrupción genera una salida inmediata en lugar de un retorno al nivel de los mandatos.
El shell Korn se puede iniciar como un shell restringido con el mandato ksh- r.
Los inodos para ksh y rksh y los inodos para ksh93 y rksh93 son iguales.

Creación y ejecución de script de shell


Un script de shell es un archivo que contiene uno o varios mandatos. Gracias a los scripts de shell puede
ejecutar fácilmente mandatos aburridos, secuencias de mandatos largas o complicadas y tareas de
rutina. Al entrar el nombre de un archivo de script de shell, el sistema ejecuta la secuencia de mandatos
que contiene el archivo.
Puede crear un script de shell utilizando un editor de texto. El script puede contener mandatos del
sistema operativo y mandatos incorporados del shell.

216 AIX Versión 7.2: Gestión del sistema operativo


Los pasos siguientes son directrices generales para la grabación de scripts de shell:
1. Utilizando un editor de texto, cree y guarde un archivo. Puede incluir cualquier combinación de
mandatos del sistema operativo y del shell en el archivo de script de shell. Por norma, los scripts de
shell que no se han configurado para que los utilicen varios usuarios se almacenan en el directorio
$HOME/bin.
Nota: El sistema operativo no da soporte a las subrutinas setuid o setgid en un script de shell.
2. Utilice el mandato chmod para permitir que sólo el usuario ejecute el archivo. Por ejemplo, si el archivo
se denomina script1, escriba lo siguiente:

chmod u=rwx script1

3. Escriba el nombre de script en la línea de mandatos para ejecutar el script de shell. Para ejecutar el
script de shell script1, escriba lo siguiente:

script1

Nota: Puede ejecutar el script de shell sin convertirlo en ejecutable si un mandato de shell (ksh, bsh o
csh) precede al nombre de archivo del script de shell en la línea de mandatos. Por ejemplo, para
ejecutar un archivo no ejecutable denominado script1 bajo el control del shell Korn, escriba lo
siguiente:

ksh script1

Conceptos relacionados
Mandatos
Algunos mandatos pueden entrarse simplemente escribiendo una palabra. También es posible combinar
mandatos de forma que la salida de un mandato se convierta en la entrada para otro mandato.

Shell Korn
El shell Korn (mandato ksh) es compatible con las versiones anteriores del shell Bourne (mandato bsh) y
contiene la mayoría de las características del shell Bourne así como algunas de las mejores
características del shell C.

Variables establecidas por el shell Korn o shell POSIX


El shell establece las siguientes variables.

Elemento Descripción
subrayado(_) Indica inicialmente el nombre absoluto de vía de acceso del shell o script que
se ejecuta a medida que se pasa en el entorno. Consiguientemente, se asigna el
último argumento del mandato anterior. Este parámetro no se define para
mandatos que son asíncronos. Este parámetro también se utiliza para contener
el nombre del archivo MAIL coincidente cuando se comprueba si existe correo.
ERRNO Especifica un valor que define la subrutina que ha fallado más recientemente.
Este valor depende del sistema y está destinado a propósitos de depuración.
LINENO Especifica el número de la línea actual en el script o función que se ejecuta.
OLDPWD Indica el directorio de trabajo anterior que ha establecido el mandato cd.
OPTARG Especifica el valor del último argumento de opción que ha procesado el
mandato incorporado normal getopts.
OPTIND Especifica el índice del último argumento de opción que el mandato
incorporado normal getopts ha procesado.
PPID Identifica el número de proceso del shell padre.
PWD Indica el directorio de trabajo actual que ha establecido el mandato cd.

Gestión del sistema operativo 217


Elemento Descripción
RANDOM Genera un entero aleatorio, uniformemente distribuido entre 0 y 32767. La
secuencia de números aleatorios puede inicializarse asignando un valor
numérico a la variable RANDOM.
REPLY Se establece por la sentencia select y por el mandato incorporado normal read
cuando no se proporcionan argumentos.
SECONDS Especifica el número de segundos desde que se devolvió la llamada del shell. Si
a esta variable se asigna un valor, el valor que se devuelve cuando se haga
referencia a éste es el valor que se ha asignado más el número de segundos
transcurrido desde la asignación.

Variables utilizadas por el shell Korn o shell POSIX


El shell utiliza las siguientes variables.

Elemento Descripción
CDPATH Indica la vía de acceso de búsqueda para el mandato cd (cambiar directorio).
COLUMNS Define la anchura de la ventana de edición para las modalidades de edición del shell
y para la impresión de las listas de selección, select.
EDITOR Si el valor de este parámetro finaliza en emacs, gmacs o vi, y no se ha establecido la
variable VISUAL con el mandato incorporado especial set, se activa la opción
correspondiente.
ENV Si se define esta variable, la sustitución de parámetros se efectúe sobre el valor que
genera el nombre de vía de acceso del script que se ejecutará cuando se llame a este
shell. Este archivo suele utilizarse para definiciones de alias y funciones. Esta
variable se ignora para shell no interactivos.
FCEDIT Especifica el nombre del editor por omisión del mandato incorporado normal fc.
FPATH Especifica la vía de búsqueda para definiciones de funciones. Se buscará en esta vía
de acceso cuando se haga referencia a una función con el distintivo -u y cuando no
se encuentre un mandato. Si se encuentra un archivo ejecutable, se lee y se ejecuta
en el entorno actual.
HISTFILE Si esta variable se establece al invocarse el shell, el valor es el nombre de la vía de
acceso del archivo que va a utilizarse para almacenar el histórico de mandatos.
El proceso de inicialización para el archivo histórico puede depender de los
archivos de arranque del sistema dado que algunos archivos de arranque pueden
contener mandatos que prevalezcan de modo efectivo sobre los valores que el
usuario haya especificado para HISTFILE y HISTSIZE. Por ejemplo, los mandatos de
definición de funciones están registrados en el archivo histórico. Si el
administrador del sistema incluye definiciones de función en un archivo de arranque
del sistema que se llama antes del archivo ENV o antes de establecer las variables
HISTFILE o HISTSIZE, el archivo history se inicializa antes de que el usuario pueda
influir en sus características.

HISTSIZE Si se define esta variable cuando se llame al shell, el número de mandatos


especificados anteriormente a los que este shell puede acceder será mayor o igual a
este número. El valor predeterminado es 128 mandatos para usuarios que no son
root y 512 mandatos para el usuario root.

218 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
HOME Indica el nombre del directorio de inicio de sesión, que pasa a ser el directorio actual
después de que finalice el inicio de sesión. El programa login inicializa esta
variable. El mandato cd utiliza el valor del parámetro $HOME como valor
predeterminado. Utilizando esta variable en lugar de un nombre de vía de acceso
explícito en un procedimiento de shell permite que el procedimiento se ejecute
desde un directorio distinto sin alteraciones.
IFS Especifica los IFS (separadores de campos internos), generalmente espacio,
tabulación y nueva línea, que se utilizan para separar palabras del mandato que
resultan de la sustitución del mandato o del parámetro y para separar palabras con
el mandato incorporado normal read. El primer carácter del parámetro IFS se utiliza
para separar argumentos para la sustitución $*.
LANG Proporciona un valor predeterminado para las variables LC_*.
LC_ALL Altera temporalmente el valor de las variables LANG y LC_*.
LC_COLLATE Determina el comportamiento de la expresión de rango dentro de la coincidencia de
patrón.
LC_CTYPE Define la clasificación de caracteres, conversión de mayúsculas y minúsculas y otros
atributos de caracteres.
LC_MESSAGES Determina el idioma en que están escritos los mensajes.
LINES Determina la longitud de columna para la impresión de listas de selección. Las listas
de selección se imprimen verticalmente hasta que se han llenado aproximadamente
dos tercios de las líneas que especifica la variable LINES.
MAIL Especifica el nombre de la vía de acceso utilizada por el sistema de correo para
detectar la llegada de correo nuevo. Si esta variable se establece en el nombre de un
archivo de correo y no se ha establecido la variable MAILPATH, el shell informa al
usuario acerca de la existencia de correo nuevo en el archivo especificado.
MAILCHECK Especifica la frecuencia (en segundos) con que el shell comprobará si existen
cambios en la hora de modificación de cualquiera de los archivos que especifican las
variables MAILPATH o MAIL. El valor predeterminado es 600 segundos. Cuando haya
transcurrido el tiempo, el shell buscará antes de emitir el siguiente indicador.
MAILPATH Especifica una lista de nombres de archivo separados por dos puntos. Si se ha
establecido esta variable, el shell informará al usuario de cualquier modificación
realizada en los archivos especificados que se haya producido durante el período, en
segundos, tal como especifica la variable MAILCHECK. Cada nombre de archivo
puede ir seguido de ? y del mensaje que ha de imprimirse. El mensaje se someterá a
la sustitución de variables con la variable $_ definida como el nombre del archivo
que ha cambiado. El mensaje por omisión es tiene correo en $_.
NLSPATH Determina la ubicación de los catálogos de mensajes para el proceso de
LC_MESSAGES.
PATH Indica la vía de búsqueda para mandatos, que es una lista ordenada de nombres de
vías de acceso de directorios separadas por dos puntos. El shell busca en dichos
directorios en el orden especificado cuando busca mandatos. Una serie nula en
cualquier parte de la lista representa el directorio actual.
PS1 Especifica la serie que se utilizará como indicador principal del sistema. El valor de
este parámetro se expande para la sustitución de parámetros con el fin de definir la
serie del indicador principal que, por omisión, es un signo $. El carácter ! de la serie
del indicador principal se sustituye por el número del mandato.

Gestión del sistema operativo 219


Elemento Descripción
PS2 Especifica el valor de la serie de indicador secundario, que es, de forma
predeterminada, un >.
PS3 Especifica el valor de la serie del indicador de selección que se utiliza dentro de un
bucle select que, por omisión es #? .
PS4 El valor de esta variable se expande para sustitución de parámetros y preceder a
cada línea de un rastreo de ejecución. Si se omite, el indicador de rastreo de
ejecución es un signo +.
SHELL Especifica el nombre de la vía de acceso del shell, que se conserva en el entorno.
SHELL PROMPT Cuando se utiliza interactivamente, el shell solicita el valor del parámetro PS1 antes
de leer un mandato. Si en cualquier momento se entra una nueva línea y el shell
requiere más entrada para poder completar un mandato, el shell emite el indicador
secundario (el valor del parámetro PS2).
TMOUT Especifica el número de segundos que un shell permanece inactivo antes de
finalizar. Si la variable TMOUT se ha establecido en un valor mayor que cero (0), el
shell saldrá si no se entra un mandato dentro del número de segundos indicado tras
la emisión del indicador PS1. (Tenga en cuenta que el shell puede compilarse con un
límite máximo que no puede superarse para este valor).
Nota: Una vez transcurrido el periodo de tiempo de espera, se produce una pausa de
60 segundos antes de la salida del shell.

VISUAL Si el valor de esta variable termina por emacs, gmacs o vi, se activa la opción
correspondiente.

El shell proporciona los valores predeterminados a los parámetros PATH, PS1, PS2, MAILCHECK, TMOUT e
IFS, pero el shell no establece los parámetros HOME, SHELL, ENV y MAIL (aunque el mandato login
establece parámetro HOME).

Sustitución de mandato en el shell Korn o shell POSIX


El shell Korn o el shell POSIX, le permite realizar la sustitución de mandatos. En la sustitución de
mandatos, el shell ejecuta un mandato especificado en un entorno de subshell y sustituye dicho mandato
por su salida.
Para ejecutar la sustitución de mandatos en el shell Korn o en el shell POSIX, escriba lo siguiente:

$(mandato)

o, para la versión que incluye los acentos graves, escriba lo siguiente:

`mandato`

Nota: Aunque ksh acepta la sintaxis de acentos graves, los estándares de X/Open Portability Guide Issue
4 y POSIX la consideran obsoleta. En estos estándares se recomienda que las aplicaciones portátiles,
utilicen la sintaxis $(mandato).
El shell expande la sustitución del mandato ejecutando el mandato en un entorno de subshell y
reemplazando la sustitución del mandato (el texto del mandato más el delimitador $( ) o los acentos
graves) por la salida estándar del mandato, eliminando las secuencias de uno o más caracteres de nueva
línea al final de la sustitución.
En el ejemplo siguiente, los caracteres $( ) que rodean al mandato indican que la salida del mandato
whoami se sustituye:

echo Mi nombre es: $(whoami)

Puede realizar la misma sustitución de mandatos con:

220 AIX Versión 7.2: Gestión del sistema operativo


echo Mi nombre es: `whoami`

La salida de ambos ejemplos para el usuario dee es:

Mi nombre es: dee

También puede sustituir expresiones aritméticas especificándolas entre ( ). Por ejemplo, el mandato:

echo Cada hora contiene $((60 * 60)) segundos

produce el resultado siguiente:

Cada hora contiene 3600 segundos

El shell Korn o el shell POSIX elimina todos los caracteres de nueva línea finales al realizar la sustitución
del mandato. Por ejemplo, si el directorio actual contiene los archivos file1, file2 y file3, el
mandato:

echo $(ls)

elimina los caracteres de nueva línea y produce la salida siguiente:

file1 file2 file3

Para conservar los caracteres de nueva línea, inserte el mandato sustituido entre " ":

echo "$(ls)"

Evaluación aritmética en el shell Korn o shell POSIX


El mandato incorporado normal let del shell Korn o del shell POSIX le permite realizar la aritmética de
enteros.
Las constantes están en formato [Base]Número. El parámetro Base es un número decimal comprendido
entre el 2 y el 36, inclusive, que representa la base aritmética. El parámetro Número es un número de esa
base. Si omite el parámetro Base, el shell utiliza una base de 10.
Las expresiones aritméticas utilizan la misma sintaxis, prioridad y asociación de las expresiones del
lenguaje de programación C. Tienen soporte todos los operadores integrales, a excepción del signo más
doble (++), el guión doble (—), el signo de interrogación-dos puntos (?: ) y la coma (,). En la tabla
siguiente se indican los operadores válidos del shell Korn o del shell POSIX, ordenados de mayor a menor
prioridad:

Operador Definición
- Menos unitario
! Negación lógica
~ Negación bitwise
* Multiplicación
/ División
% Resto
+ Suma
- Resta
<<, >> Desplazamiento a la izquierda, desplazamiento a la
derecha
<=,>=, <>, ==, != Comparación

Gestión del sistema operativo 221


Operador Definición
& AND bitwise
^ OR exclusivo bitwise
| OR bitwise
&& AND lógico
|| OR lógico
= *=, /=, &= +=, -=, <<=, > >=, &=, ^=, |= Asignación

Muchos operadores aritméticos como, por ejemplo, *, &, < y >, tienen un significado especial para el shell
Korn o el shell POSIX. Estos caracteres deben estar delimitados. Por ejemplo, para multiplicar el valor
actual de y por 5 y reasignar el nuevo valor a y, utilice la expresión:

let "y = y * 5"

La especificación de la expresión entre comillas elimina el significado especial del carácter *.


Puede agrupar operaciones dentro de las expresiones del mandato let para forzar la agrupación. Por
ejemplo, en la expresión:

let "z = q * (z - 10)"

el mandato multiplica q por el valor reducido de z.


El shell Korn o el shell POSIX incluye un formato alternativo del mandato let si sólo va a evaluarse una
única expresión. El shell trata a los mandatos que se especifican entre (( )) como si fueran expresiones
especificadas entre comillas. Por lo tanto, la expresión:

((x = x / 3))

equivale a:

let "x = x / 3"

Se hace referencia a los parámetros designados por nombre en una expresión aritmética sin utilizar la
sintaxis de sustitución de parámetros. Cuando se hace referencia a un parámetro definido, su valor se
evalúa como si fuera una expresión aritmética.
Especifique una representación de enteros interna de un parámetro nombrado con el distintivo -i del
mandato incorporado especial typeset. Con la utilización del distintivo -i, la evaluación aritmética se
realiza en el valor de cada asignación para un parámetro nombrado. Si no especifica una base aritmética,
la primera asignación al parámetro determina la base aritmética. Esta base se utiliza cuando tiene lugar la
sustitución del parámetro.
Conceptos relacionados
Mandatos del shell Korn o shell POSIX
El shell Korn es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Se
ajusta a la Interfaz de Sistema Operativo Portable para Entornos del Sistema (POSIX), un estándar
internacional para sistemas operativos.
Parámetros del shell Korn
A continuación se explican los parámetros del shell Korn

Subdivisión de campos en el shell Korn o shell POSIX


Tras la realización de la sustitución de mandatos, el shell Korn explora los resultados de las sustituciones
de los caracteres de separación de campos que ha encontrado en la variable IFS (Separador interno de
campos). Donde se encuentren dichos caracteres, el shell subdivide las sustituciones en argumentos
independientes.

222 AIX Versión 7.2: Gestión del sistema operativo


El shell retiene los argumentos nulos explícitos ("" o '') y elimina los argumentos nulos implícitos (que
son el resultado de los parámetros que no tienen valores).
• Si el valor de IFS es un carácter de espacio, tabulación o nueva línea, o si aún no se ha establecido, se
pasará por alto cualquier secuencia de caracteres de espacio, tabulación o nueva línea que aparezca al
principio o al final de la entrada y cualquiera de estos caracteres que aparezca dentro de la entrada
delimitará un campo. Por ejemplo, la entrada siguiente genera dos campos, school y days:

<newline><space><tab>school<tab><tab>days<space>

• De lo contrario, y si el valor de IFS no es nulo, se aplican las normas siguientes, por orden. El espacio en
blanco IFS se utiliza para indicar cualquier secuencia (cero o más instancias) de caracteres de espacio
en blanco que están en el valor IFS (por ejemplo, si IFS contiene espacio/coma/tabulación, cualquier
secuencia de caracteres de espacio y tabulación se considera un espacio en blanco IFS).
1. IFS espacio en blanco se pasa por alto al principio y al final de la entrada.
2. Cada ocurrencia de un carácter IFS en la entrada que no es un espacio en blanco IFS, junto con
cualquier espacio en blanco IFS, delimita un campo.
3. La longitud no cero del espacio en blanco IFS delimita un campo.

Lista de mandatos incorporados especiales del shell Korn o el shell POSIX


Los mandatos especiales están incorporados en el shell Korn y el shell POSIX y se ejecutan en el proceso
de shell.

Elemento Descripción
: (dos puntos) Expande únicamente argumentos.
. (punto) Lee un archivo especificado y, a continuación, ejecuta los mandatos.
break Sale del bucle de delimitación for, while, until o select, si existe uno.
continue Reanuda la siguiente iteración del bucle de delimitación for, while, until o select.
eval Lee los argumentos como entrada al shell y ejecuta el mandato o mandatos resultantes.
exec Ejecuta el mandato que especifica el parámetro Argumento, en lugar de este shell, sin
crear un nuevo proceso.
exit Sale del shell cuyo estado de salida especifica el parámetro n.
export Marca nombres para exportación automática al entorno de mandatos ejecutados
sucesivamente.
newgrp Equivalente al mandato exec/usr/bin/newgrp [Grupo ...].
readonly Marca los nombres especificados como de sólo lectura.
return Hace que el shell vuelva al script de invocación.
set A menos que se especifiquen opciones o argumentos, graba los nombres y los valores
de todas las variables de shell en el orden de clasificación del entorno local actual.
shift Cambia el nombre de los parámetros posicional.
times Imprime las horas de usuario y del sistema acumuladas correspondientes al shell y a los
procesos que se ejecutan desde el shell.
trap Ejecuta el mandato especificado cuando el shell recibe la señal o señales especificadas.
typeset Define atributos y valores para parámetros de shell.
unset Elimina el establecimiento de los valores y atributos de los parámetros especificados.

Conceptos relacionados
Mandatos incorporados del shell Korn o POSIX

Gestión del sistema operativo 223


Los mandatos especiales se crean en el shell Korn y en el shell POSIX y se ejecutan en el proceso de
shell.

Mandatos incorporados normales del shell Korn o el shell POSIX


La lista siguiente muestra los mandatos incorporados normales del shell Korn o el shell POSIX.

Elemento Descripción
alias Imprime una lista de los alias en la salida estándar.
bg Establece los trabajos especificados como trabajos en segundo plano.
cd Cambia el directorio actual por el directorio especificado o sustituye la serie actual por la
serie especificada.
echo Graba series de caracteres en salida estándar.
fc Selecciona un rango de mandatos del último mandato de variable HISTSIZE escribiendo en
el terminal. Vuelve a ejecutar el mandato especificado tras la realización de la sustitución
antiguo por nuevo.
fg Establece el trabajo especificado como trabajo en primer plano.
getopts Comprueba el parámetro Argumento en busca de opciones legales.
jobs Lista información acerca de cada trabajo especificado.
kill Envía la señal TERM (terminar) a los trabajos o procesos especificados.
let Evalúa expresiones aritméticas especificadas.
print Imprime la salida del shell.
pwd Equivalente al mandato print -r -$PWD.
read Acepta la entrada del shell.
ulimit Establece o visualiza los límites de recursos de proceso del usuario tal como se ha definido
en el archivo /etc/security/limits.
umask Determina los permisos de archivo.
unalias Elimina los parámetros que están en la lista de nombres de la lista de alias.
wait Espera al trabajo especificado y termina.
whence Indica la forma en que se interpretará cada nombre especificado si éste se utiliza como un
nombre de mandato.

Para obtener más información, consulte el apartado “Mandatos incorporados del shell Korn o POSIX” en
la página 241.
Conceptos relacionados
Mandatos incorporados del shell Korn o POSIX
Los mandatos especiales se crean en el shell Korn y en el shell POSIX y se ejecutan en el proceso de
shell.

Expresiones condicionales para el shell Korn o shell POSIX


Una expresión condicional se utiliza con el mandato compuesto [[ para probar los atributos de los
archivos y para comparar series.
La subdivisión de palabras y la sustitución del nombre del archivo no se realizan en las palabras que
aparecen entre [[ y ]]. Cada expresión se construye a partir de una o más de las siguientes expresiones
unitarias o binarias:

224 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
-a Archivo Verdadero, si el archivo especificado es un enlace simbólico que señala a otro
archivo que existe.
-b Archivo Verdadero, si existe el archivo especificado y es un archivo especial de bloque.
-c Archivo Verdadero, si el archivo especificado existe y es un archivo especial de caracteres.
-d Archivo Verdadero, si existe el archivo especificado y es un directorio.
-e Archivo Verdadero, si existe el archivo especificado.
-f Archivo Verdadero, si existe el archivo especificado y es un archivo ordinario.
-g Archivo Verdadero, si el archivo especificado existe y se ha establecido su bit setgid.
-h Archivo Verdadero, si existe el archivo especificado y es un enlace simbólico.
-k Archivo Verdadero, si existe el archivo especificado y se ha definido su bit reversible.
-n Serie Verdadero, si la longitud de la serie especificada es distinta de cero.
-o Opción Verdadero, si la opción especificada está activada.
-p Archivo Verdadero, si existe el archivo especificado y es un archivo especial FIFO o un
conducto.
-r Archivo Verdadero, si el archivo especificado existe y el proceso actual puede leerlo.
-s Archivo Verdadero, si existe el archivo especificado y su tamaño es mayor que 0.
-t Verdadero, si está abierto un número de descriptor de archivo especificado y está
DescriptorArchivo asociado con un dispositivo de terminal.
-u Archivo Verdadero, si el archivo especificado existe y se ha establecido su bit setuid.
-w Archivo Verdadero, si existe el archivo especificado y el bit de grabación está activado. No
obstante, no será posible grabar el archivo en un sistema de archivos de sólo
lectura aunque su prueba indique que es verdadero.
-x Archivo Verdadero, si el archivo especificado existe y el distintivo execute se ha activado.
Si el archivo especificado existe y es un directorio, el proceso actual tiene permiso
para buscar en el directorio.
-z Serie Verdadero, si la longitud de la serie especificada es 0.
-L Archivo Verdadero, si existe el archivo especificado y es un enlace simbólico.
-O Archivo Verdadero, si existe el archivo especificado y el propietario es el ID de usuario
vigente de este proceso.
-G Archivo Verdadero, si existe el archivo especificado y su grupo coincide con el ID de grupo
vigente de este proceso.
-S Archivo Verdadero, si existe el archivo especificado y es un socket.
Archivo1 -nt Verdadero, si Archivo1 existe y es más reciente que Archivo2.
Archivo2
Archivo1 -ot Verdadero, si Archivo1 existe y es más antiguo que Archivo2.
Archivo2
Archivo1 -ef Verdadero, si Archivo1 y Archivo2 existen y hacen referencia al mismo archivo.
Archivo2
Serie1 = Serie2 Verdadero, si Serie1 es igual a Serie2.
Serie1 != Serie2 Verdadero, si Serie1 no es igual a Serie2.
Serie = Patrón Verdadero, si la serie especificada coincide con el patrón especificado.

Gestión del sistema operativo 225


Elemento Descripción
Serie != Patrón Verdadero, si la serie especificada no coincide con el patrón indicado.
Serie1 < Serie2 Verdadero, si Serie1 aparece antes que Serie2 basándose en el valor ASCII de sus
caracteres.
Serie1 > Serie2 Verdadero, si Serie1 aparece después de Serie2 basándose en el valor ASCII de sus
caracteres.
Expresión1 -eq Verdadero, si Expresión1 es igual a Expresión2.
Expresión2
Expresión1 -ne Verdadero, si Expresión1 no es igual a Expresión2.
Expresión2
Expresión1 -lt Verdadero, si Expresión1 es menor que Expresión2.
Expresión2
Expresión1 -gt Verdadero, si Expresión1 es mayor que Expresión2.
Expresión2
Expresión1 -le Verdadero, si Expresión1 es menor que o igual a Expresión2.
Expresión2
Expresión1 -ge Verdadero, si Expresión1 es mayor que o igual a Expresión2.
Expresión2

Nota: En cada una de las expresiones anteriores, si la variable Archivo es similar a /dev/fd/n, donde n
es un entero, la prueba se aplica al archivo abierto cuyo número de descriptores es n.
Puede crear una expresión compuesta a partir de estas partes primitivas, más pequeñas, utilizando
cualquiera de las expresiones siguientes, que se indican en orden de mayor a menor prioridad.

Elemento Descripción
(Expresión) Verdadero, si la expresión especificada es verdadera. Se utiliza para agrupar
expresiones.
! Expresión Verdadero, si la expresión especificada es falsa.
Expresión1 && Verdadero, si Expresión1 y Expresión2 son verdaderas.
Expresión2
Expresión1 || Expresión2 Verdadero, si Expresión1 o bien Expresión2 es verdadera.

Delimitación de caracteres en el shell Korn o el shell POSIX


Cuando desee que el shell Korn o el shell POSIX lea un carácter como un carácter normal, en lugar de
hacerlo con cualquier significado asociado normal, debe delimitarlo.
Cada metacarácter tiene un significado especial para el shell y, a menos que se limite, provoca la
terminación de una palabra. El shell Korn o el shell POSIX considera los caracteres siguientes como
metacaracteres, los cuales deben especificarse entre delimitadores si van a representarse a sí mismos:
• conducto (|)
• ampersand (&)
• punto y coma (;)
• signo menor que (<) y signo mayor que (>)
• paréntesis izquierdo (() y paréntesis derecho ())
• signo de dólar ($)
• acento grave (`) y comilla simple (')
• barra inclinada invertida (\)
• comillas dobles (")

226 AIX Versión 7.2: Gestión del sistema operativo


• carácter de nueva línea
• carácter de espacio
• carácter de tabulación
Para anular el significado especial de un metacarácter, utilice uno de los mecanismos de delimitación de
la lista siguiente.

Elemento Descripción
Barra inclinada invertida Una barra inclinada invertida (\) que no está delimitada conserva el
valor literal del carácter siguiente, excepto cuando se trata de un
carácter de nueva línea. Si a continuación de la barra inclinada
invertida va un carácter de nueva línea, el shell lo interpreta como
continuación de línea.
Comillas simples La especificación de caracteres entre comillas simples (' ')
conserva el valor literal de cada carácter especificado entre
comillas simples. No puede existir ninguna comilla simple dentro
de las comillas simples.
Una barra inclinada invertida no se puede utilizar para eludir el
significado de una comilla simple dentro de una serie delimitada
entre comillas simples. Un carácter delimitador intercalado se
puede crear escribiendo, por ejemplo: 'a'\''b', lo cual produce
a'b.

Comillas dobles La especificación de los caracteres entre comillas dobles (" ")
conserva el valor literal de todos los caracteres delimitados entre
comillas dobles, excepto en el caso de los caracteres del signo de
dólar, del acento grave y de la barra inclinada invertida, tal como se
muestra a continuación:
$
El signo de dólar mantiene su significado especial introduciendo
expansión de parámetros, una forma de sustitución de
mandatos, y la expansión aritmética.
Los caracteres de entrada de la serie delimitada que también se
especifican entre $( y el correspondiente ) no quedan
afectados por las comillas dobles, pero definen al mandato cuya
salida sustituye a $(...) al expandirse la palabra.
Dentro de la serie de caracteres especificados dentro de ${ y la
correspondiente }, debe existir un número par de comillas
dobles o comillas simples no eludidas, si existe alguna. Para
eludir un literal { o }, debe especificarse antes un carácter de
barra inclinada invertida.
`
El acento grave conserva su significado especial introduciendo
la otra forma de sustitución de caracteres. La parte de la serie
delimitada, desde el acento grave y los caracteres iniciales
hasta el siguiente acento grave no precedido de una barra
inclinada invertida, define al mandato cuya salida sustituye a
` ... ` al expandirse la palabra.
\
La barra inclinada invertida conserva su significado especial
como carácter de escape sólo cuando va seguida de uno de los
caracteres siguientes: $, `, ", \ o un carácter de nueva línea.

Gestión del sistema operativo 227


Una comilla doble deben ir precedida de una barra inclinada invertida para que puedan incluirse entre
comillas dobles. Cuando utiliza comillas dobles, si una barra inclinada invertida va inmediatamente
seguida de un carácter que se interpretaría como un carácter con significado especial, la barra inclinada
invertida se suprime y el siguiente carácter se toma literalmente. Si una barra inclinada invertida no
precede a un carácter que tendría un significado especial, se deja en su lugar intacta y el carácter que
sigue inmediatamente permanece también intacto. Por ejemplo:

"\$" -> $
"\a" -> \a

Las condiciones siguientes se aplican a los metacaracteres y caracteres de delimitación en el shell Korn o
shell POSIX:
• El significado del signo de dólar, asterisco ($*) y del signo de dólar, arroba ($@) es el mismo cuando no
están delimitados, cuando se utilizan como un valor de asignación de parámetro o cuando se utilizan
como un nombre de archivo.
• Cuando se utilizan como un argumento de mandato, comillas dobles, signo de dólar, asterisco, comillas
dobles ("$*") equivalen a "$1d$2d...", donde d es el primer carácter del parámetro IFS.
• Comillas dobles, arroba, asterisco, comillas ("$@") equivalen a "$1" "$2" ....
• Dentro de los acentos graves (``), la barra inclinada invertida delimita los caracteres de la barra
inclinada invertida (\), la comilla simple (') y el signo de dólar ($). Si los acentos graves se especifican
entre comillas dobles (" "), la barra inclinada invertida también delimita el carácter de comillas dobles.
• La sustitución de parámetros y mandatos tiene lugar dentro de las comillas dobles (" ").
• El significado especial de las palabras reservadas o alias se elimina delimitando cualquiera de los
caracteres de la palabra reservada. No puede especificar delimitadores en los nombres de las funciones
o en los nombres de los mandatos incorporados.

Shell Korn restringido


El shell Korn restringido se utiliza para definir nombres de inicio de sesión y entornos de ejecución cuyas
posibilidades están más controladas que las del shell Korn normal.
El mandato rksh o ksh -r abre el shell Korn restringido. El comportamiento de estos mandatos es
idéntico al del mandato ksh, a excepción de que no están permitidas las acciones siguientes:
• Cambiar el directorio de trabajo actual
• Establecer el valor de las variables SHELL, ENV o PATH
• Especificar el nombre de vía de acceso de un mandato que contiene una / (barra inclinada)
• Redirigir la salida de un mandato con > (signo mayor que), >| (signo mayor que, conducto), <> (signo
menor que, signo mayor que) o >> (dos signos mayor que).
Si el shell Korn restringido determina que un mandato que debe ejecutarse es un procedimiento de shell,
utiliza el shell Korn para ejecutar el mandato. De este modo, es posible proporcionar a un usuario final
procedimientos de shell que accedan a la plena capacidad del shell Korn al mismo tiempo que impone un
menú limitado de mandatos. En esta situación se supone que el usuario no tiene permisos de grabación y
ejecución en el mismo directorio.
Si se especifica el parámetro Archivo [Parámetro] al iniciarse el shell Korn, el shell ejecuta el archivo de
script que el parámetro Archivo identifica, incluidos los parámetros especificados. El archivo de script
especificado debe tener permiso de lectura. Los valores setuid y setgid de los archivos de script se
pasan por alto. El shell lee a continuación los mandatos. Si utiliza el distintivo -c o -s, no especifique un
archivo de script.
Cuando se inicia con el mandato rksh, el shell aplica las restricciones tras interpretar los
archivos .profile y /etc/environment. Por lo tanto, la persona encargada de escribir el
archivo .profile tiene control total sobre las acciones del usuario, pues realiza las acciones de
configuración y sitúa al usuario en un directorio adecuado (probablemente, distinto del directorio de inicio
de sesión). Un administrador puede crear un directorio de mandatos en el /usr/rbin que el mandato

228 AIX Versión 7.2: Gestión del sistema operativo


rksh puede utilizar cambiando la variable PATH para que contenga el directorio. Si se inicia con el
mandato ksh -r, el shell aplica restricciones al interpretar los archivos .profile.
Cuando se llama con el mandato rksh, el shell restringido Korn lee el archivo .profile del usuario
($HOME/.profile). Actúa como el shell Korn normal mientras realiza esta operación, salvo en que una
interrupción genera una salida inmediata en lugar de un retorno al nivel de los mandatos.

Palabras reservadas en el shell Korn o el shell POSIX


Las siguientes palabras reservadas tienen un significado especial para el shell Korn o el shell POSIX.

! case do
done elif else
esac fi for
function if in
select then time
until while {
} [[ ]]

Las palabras reservadas sólo se reconocen cuando aparecen sin delimitadores y cuando la palabra se
utiliza como lo siguiente:
• Primera palabra de un mandato
• Primera palabra que sigue a una de las palabras reservadas que no sea case, for ni in
• Tercera palabra de un mandato case o for (sólo in es válida en este caso)

Shell Korn ampliado (ksh93)


Además del shell Korn del sistema predeterminado (/usr/bin/ksh), AIX proporciona una versión
ampliada disponible como shell Korn /usr/bin/ksh93. Esta versión ampliada es compatible con la
versión predeterminada actual e incluye algunas funciones adicionales que no están disponibles en el
shell Korn /usr/bin/ksh.
Es posible que algunos scripts se ejecuten de modo diferente en el shell Korn ksh93 que en el shell
predeterminado porque el manejo de variables es algo distinto en los dos shells.
Nota: Hay disponible una versión restringida del shell Korn ampliado, denominada rksh93.
Las siguientes características no están disponibles en el shell Korn /usr/bin/ksh, pero sí en el shell
Korn /usr/bin/ksh93:

Elemento Descripción
Mejoras Puede utilizar las funciones libm (funciones matemáticas que normalmente están en
aritméticas el lenguaje de programación C), en expresiones aritméticas, tales como $ value=$
((sqrt(9))). Están disponibles más operadores aritméticos, incluyendo los
operadores unitarios +, ++, -- y la construcción ?: (por ejemplo, "x ? y : z"), así
como el operador , (coma). Las bases aritméticas se soportan hasta base 64. La
aritmética de coma flotante también está soportada. "typeset -E" (exponencial) se
puede utilizar para especificar el número de dígitos significativos y "typeset -F"
(flotante) se puede utilizar para especificar el número de espacios decimales para la
variable aritmética. Ahora la variable SECONDS se redondea a la centésima de
segundo, en lugar de al segundo.
Variables Las variables compuestas reciben soporte. Una variable compuesta permite a un
compuestas usuario especificar varios valores en un solo nombre de variable. Se asigna a cada
variable una variable de subscripción, separada de la variable padre con un punto
( .). Por ejemplo:

$ myvar=( x=1 y=2 )


$ print "${myvar.x}"
1

Gestión del sistema operativo 229


Elemento Descripción
Asignaciones Se da soporte a las asignaciones compuestas al inicializar conjuntos, tanto para
compuestas conjuntos indexados como para conjuntos asociativos. Los valores de asignación se
especifican entre paréntesis, tal como se muestra en el ejemplo siguiente:

$ numbers=( cero uno dos tres )


$ print ${numbers[0]} ${numbers[3]}
cero tres

Conjuntos Un conjunto asociativo es un conjunto con una cadena de caracteres como índice.
asociativos
El mandato typeset utilizado con un distintivo -A permite especificar conjuntos
asociativos en ksh93. Por ejemplo:

$ typeset -A teammates
$ teammates=( [john]=smith [mary]=jones )
$ print ${teammates[mary]}
jones

Referencias de El mandato typeset utilizado con el distintivo -n permite asignar un nombre de


nombres de variable como referencia a otra. De esta manera, la modificación del valor de una
variables variable modificará a su vez el valor de la variable a la que hace referencia. Por
ejemplo:

$ greeting="hola"
$ typeset -n welcome=greeting # establece la referencia
$ welcome="buenos días" # prevalece sobre el valor anterior
$ print $greeting
buenos días

Expansiones de Las construcciones de expansión de parámetros disponibles son las siguientes:


parámetros
• ${!varname} es el nombre de la propia variable.
• ${!varname[@]} nombra los índices para el conjunto varname.
• ${param:offset} es una subserie de param, que empieza en offset.
• ${param:offset:num} es una subserie de param , que empieza en offset, para
num número de caracteres.
• ${@:offset} indica todos los parámetros posicionales que empiezan en offset.
• ${@:offset:num} indica los parámetros posicionales num que empiezan desde
offset.
• ${param/pattern/repl} evalúa param, sustituyendo la primera aparición de
pattern con repl.
• ${param//pattern/repl} evalúa param, sustituyendo cada aparición de pattern
con repl.
• ${param/#pattern/repl} si param empieza por pattern, param se sustituye por
repl.
• ${param/%pattern/repl} si param finaliza en pattern, param se sustituye por
repl.

230 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
Funciones de Una función de disciplina es una función que está asociada con una variable
disciplina específica. Esto permite al usuario definir una función y llamar a la misma cada vez
que se hace referencia a dicha variable, se define o deja de estar definida. Estas
funciones adoptan el formato [Link], donde varname es el nombre de la
variable y function es la función de disciplina. Las funciones de disciplina predefinidas
son get, set y unset.
• La función [Link] se invoca cada vez que se hace referencia a varname. Si se
establece la variable especial .[Link] en esta función, el valor de varname se
cambia por este valor. Un ejemplo sencillo es la hora:

$ function [Link]
> {
> .[Link]=$(date +%r)
> }
$ print $time
[Link] AM
$ print $time # cambiará en unos segundos
[Link] AM

• La función [Link] se invoca cada vez que se establece varname. La


variable .[Link] recibe el valor que se le asignó. El valor asignado a varname es el
valor de .[Link] cuando se completa la función. Por ejemplo:

$ function [Link]
> {
> let .[Link]="
$ {.[Link]} + 1"
> }
$ adder=0
$ echo $adder
1
$ adder=$adder
$ echo $adder
2

• La función [Link] se ejecuta cada vez que se elimina el establecimiento de


la variable varname. En realidad, la variable no está sin establecer, a menos que se
haya dejado sin establecer en la propia función; de lo contrario, conserva su valor.
En todas las funciones de disciplina, la variable especial .[Link] se define como el
nombre de la variable, mientras que .[Link] se define como el valor de
subscripción de variables, en caso de que sea aplicable.

Entornos de Las funciones declaradas con el formato function myfunc se ejecutan en un


función entorno de función separado y soportan variables locales. Las funciones declaradas
como myfunc() se ejecutan en el mismo entorno que el shell padre.
Variables Las variables que empiezan por .sh. están reservadas por el shell y tienen un
significado especial. Consulte la descripción de Funciones de disciplina, en esta
misma tabla, para ver una explicación de .[Link], .[Link] y .[Link].
También está disponible .[Link], que representa la versión del shell.
Valores de Los valores de retorno de los mandatos son los siguientes:
retorno de
• Si no se encuentra el mandato a ejecutar, el valor de retorno se establece en 127.
mandatos
• Si se encuentra el mandato a ejecutar, pero éste no es ejecutable, el valor de
retorno es 126.
• Si se ejecuta el mandato, pero termina con una señal, el valor de retorno es 256 y el
número de señal.

Gestión del sistema operativo 231


Elemento Descripción
Normas de En primer lugar se buscan los mandatos incorporados, seguidos de todas las
búsqueda PATH funciones (incluidas las que están en los directorios FPATH), seguidas de otros
mandatos incorporados.
Histórico del El mandato hist le permite visualizar y editar el histórico de los mandatos de shells.
shell En el shell ksh, se utiliza el mandato fc. El mandato fc es un alias de hist. Las
variables son HISTCMD, que se incrementa en uno por cada mandato ejecutado en el
histórico actual de shell, y HISTEDIT, que especifica el editor que se debe utilizar
cuando se usa el mandato hist.
Mandatos El shell Korn ampliado contiene los mandatos incorporados siguientes:
incorporados
• El mandato builtin lista todos los mandatos incorporados disponibles.
• El mandato printf funciona de manera similar a la rutina de biblioteca C printf().
Consulte el mandato printf.
• disown bloquea el shell para que no envíe un SIGHUP al mandato especificado.
• El mandato getconf funciona igual que el mandato autónomo /usr/bin/
getconf . Consulte el mandato getconf.
• El mandato incorporado read tiene los distintivos siguientes:
– read -d {char} permite especificar un delimitador de caracteres en lugar de la
nueva línea predeterminada.
– read -t {seconds} permite especificar un límite de tiempo, en segundos,
después del cual el mandato read excederá el tiempo de espera. Si read excede
el tiempo de espera, devolverá FALSE.
• El mandato incorporado exec tiene los distintivos siguientes:
– exec -a {name} {cmd} especifica que el argumento 0 de cmd se sustituirá por
name.
– exec -c {cmd} indica a exec que borre el entorno antes de ejecutar cmd.
• El mandato incorporado kill tiene los distintivos siguientes:
– kill -n {signum} se utiliza para especificar un número de señal que se debe
enviar a un proceso, mientras que kill -s {signame} se utiliza para especificar
un nombre de señal.
– kill -l, sin argumentos, lista todos los nombres de señal pero no sus números.
• El mandato incorporado whence tiene los distintivos siguientes:
– El distintivo -a visualiza todas las coincidencias, no sólo la primera que se
encuentra.
– El distintivo -f indica a whence que no busque ninguna función.
• Existe una secuencia de caracteres de escape para que la utilicen los mandatos
print y echo. La tecla Esc (Escape) se puede representar mediante la secuencia
\E.
• Todos los mandatos incorporados normales reconocen el distintivo -?, que muestra
la sintaxis para el mandato especificado.
• El getopts incorporado requiere optstring para contener un + inicial a fin de permitir
opciones que comiencen con un símbolo +.

232 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
Otras Otras diferencias son:
diferencias
• Con el shell Korn ksh93, no puede exportar funciones utilizando el mandato
entre el shell
incorporado typeset -fx.
Korn y el shell
Korn ksh93 • Con el shell Korn ksh93, no puede exportar un alias utilizando el mandato
incorporado alias -x.
• Con el shell Korn ksh93, un signo de dólar seguido de una sola comilla ($') se
interpreta como una serie C ANSI. Debe delimitar el signo de dólar (\"$\"') para
conseguir el comportamiento anterior (ksh).
• Se ha cambiado la lógica de análisis de argumentos para el shell Korn ksh93. Las
combinaciones no documentadas del análisis de argumentos para los mandatos
incorporados del shell Korn ksh no funcionan en el shell Korn ksh93. Por ejemplo,
typeset -4i funciona de forma similar a typeset -i4 en shell Korn ksh, pero no
funciona en el shell Korn ksh93.
• Con el shell Korn ksh93, la sustitución de mandatos y la expansión aritmética se
realiza en las variables de entorno especiales PS1, PS3 y ENV mientras se
expanden. Por lo tanto, debe realizar un escape del símbolo grave (`) y el signo de
dólar y los símbolos de abrir paréntesis ($() utilizando una barra inclinada invertida
(\) para conservar el comportamiento anterior. Por ejemplo, el shell Korn ksh asigna
literalmente x=$'nombre\toperador' como $nombre\toperador; el shell Korn
ksh93 expande \t y lo asigna como nombre<\t expanded>operador. Para
conservar el comportamiento del shell Korn ksh, debe delimitar $. Por ejemplo,
x="$"'nombre\toperador'.
• La variable ERRNO se ha eliminado del shell Korn ksh93.
• En el shell Korn ksh93, los nombres de archivo no se expanden para los shells no
interactivos después del símbolo de redirección.
• Con el shell Korn ksh93, debe utilizar la opción -t del mandato alias para visualizar
los alias cuyo seguimiento se realiza. La prestación de alias de seguimiento está en
desuso así que los alias que se muestren no se podrán seguir.
• Con el shell Korn ksh93, en modalidad emacs, Control+T intercambia entre el
carácter actual y el anterior. Con ksh, Control+T intercambia entre el carácter actual
y el siguiente.
• El shell Korn ksh93 no permite paréntesis sin emparejar en ${nombre operador
valor}. Por ejemplo, ${nombre-(} necesita un escape como ${nombre-\(}
para funcionar en ambas versiones.
• Con el shell Korn ksh93, el mandato kill -l sólo lista los nombres de señal, no
sus valores numéricos.

Estado de la salida en el shell Korn o shell POSIX


Los errores detectados por el shell, por ejemplo errores de sintaxis, hacen que el shell devuelva un
estado de salida distinto a cero. De lo contrario, el shell devuelve el estado de salida del último mandato
llevado a cabo.
El shell informa de errores detectados durante la ejecución imprimiendo el nombre del mandato o de la
función y la condición de error. Si el número de la línea en la que se ha producido el error es mayor que 1,
el número de línea también se imprime entre [ ] (corchetes) después del nombre del mandato o de la
función.
Para un shell no interactivo, el hecho de que un mandato incorporado especial u otro tipo de mandato
encuentre un error dará lugar a que el shell grabe un mensaje de diagnóstico, tal como se muestra en la
tabla siguiente:

Gestión del sistema operativo 233


Error Incorporado Otros programas
especial de utilidad
Error de sintaxis de lenguaje del shell saldrá saldrá
Error de sintaxis del programa de utilidad (error en opción u saldrá no saldrá
operando)
Error de redirección saldrá no saldrá
Error de asignación de variable saldrá no saldrá
Error de expansión saldrá saldrá
Mandato no encontrado no se aplica podría salir
Script de punto no encontrado saldrá no se aplica

Si alguno de los errores se muestra como "finalizará (puede finalizar)" se produce en un subshell, el
subshell finalizará (puede finalizar) con un estado distinto a cero, pero el script que contiene el subshell
no finalizará a causa del error.
En todos los casos que se muestran en la tabla, un shell interactivo grabará un mensaje de diagnóstico en
el error estándar, sin finalizar.

Parámetros del shell Korn


A continuación se explican los parámetros del shell Korn
Un parámetro se define como lo siguiente:
• Identificador de cualquiera de los caracteres asterisco (*), arroba ( @), almohadilla (#), interrogante (?),
guión (-), símbolo de dólar ($) y signo de exclamación (! ). Estos caracteres reciben el nombre de
parámetros especiales.
• Argumento que se indica mediante un número (parámetro posicional)
• Parámetro que se indica mediante un identificador, con un valor y cero o más atributos (parámetro
especificado/variables).
El mandato incorporado especial typeset asigna valores y atributos a los parámetros con nombre. Los
atributos que reciben el soporte del shell Korn se describen con el mandato incorporado especial
typeset. Los parámetros exportados pasan valores y atributos al entorno.
El valor de un parámetro está asignado por:

Nombre=Valor [ Nombre=Valor ] ...

Si se establece el atributo de entero -i para el parámetro Nombre, el parámetro Valor es somete a


evaluación aritmética.
El shell soporta un recurso de matrices unidimensionales. Una subserie hace referencia a un elemento de
un parámetro de matriz. Un subíndice se indica mediante una expresión aritmética especificada entre
corchetes [ ]. Para asignar valores a una matriz, utilice set -A Nombre Valor ... El valor de todos los
subscripts debe estar en el rango de 0 a 511. No es necesario declarar las matrices. Cualquier referencia
a un parámetro designado por un subscript válido es lícita y se creará una matriz, si es necesario. Hacer
referencia a una matriz sin un subscript es equivalente a hacer referencia al elemento 0.
Se asignan valores a los parámetros posicionales con el mandato especial set. El parámetro $0 se
establece a partir del argumento 0 al invocarse el shell. El carácter $ se utiliza para introducir parámetros
que pueden sustituirse.
Conceptos relacionados
Inicio del shell
Puede iniciar el shell Korn con el mandato ksh, el mandato psh (shell POSIX) o el mandato exec.
Funciones del shell Korn

234 AIX Versión 7.2: Gestión del sistema operativo


La palabra reservada function define funciones del shell. El shell lee y almacena funciones internamente.
Los alias se resuelven cuando se lee la función. El shell ejecuta las funciones de la misma forma que los
mandatos, pasando los argumentos como parámetros posicionales.
Evaluación aritmética en el shell Korn o shell POSIX
El mandato incorporado normal let del shell Korn o del shell POSIX le permite realizar la aritmética de
enteros.
Referencia relacionada
Mandatos compuestos del shell Korn
Un mandato compuesto puede ser una lista de mandatos simples, un conducto o puede empezar por una
palabra reservada. Cuando escriba scripts de shell, la mayor parte del tiempo utilizará mandatos
compuestos como, por ejemplo, if, while y for.

Sustitución de parámetros en el shell Korn o shell POSIX


El shell Korn o shell POSIX, le permite realizar sustituciones de parámetros.
A continuación se muestran parámetros sustituibles:

Elemento Descripción
${Parámetro } El shell lee todos los caracteres desde ${ hasta el } de cierre como si
formaran parte de la misma palabra, incluso si esa palabra contiene llaves
o metacaracteres. Se sustituye el valor, si lo hay, del parámetro
especificado. Las llaves son necesarias cuando el parámetro Parámetro va
seguido de una letra, un dígito o una carácter de subrayado que no va a
interpretarse como parte de su nombre o bien cuando en un subíndice se
ha incluido un parámetro con nombre.
Si el parámetro especificado contiene uno o más dígitos, es un parámetro
posicional. Un parámetro posicional de más de un dígito debe estar
delimitado entre llaves. Si el valor de la variable es * o @), se sustituye cada
parámetro posicional, empezando desde $1, (separándolos con un
carácter de separador de campo). Si se utiliza un identificador de matriz
con un subíndice * o @, se sustituye el valor para cada uno de los
elementos (separándolos con un carácter de separador de campo).

${#Parámetro } Si el valor del parámetro Parámetro es * o @, se sustituye el número de


parámetros posicionales. De lo contrario, se sustituye la longitud que
especifica el parámetro Parámetro.
${#Identificador[*]} Se sustituye el número de elementos de la matriz que especifica el
parámetro Identificador.
${Parámetro:-Palabra} Si se ha establecido el parámetro Parámetro y no es nulo, se sustituye su
valor; de lo contrario, se sustituye el valor del parámetro Palabra.
${Parámetro:=Palabra} Si no se ha establecido el parámetro Parámetro o es nulo, se establece en
el valor del parámetro Palabra. Los parámetros posicionales no pueden
establecerse de esta forma.
${Parámetro:?Palabra} Si se ha establecido el parámetro Parámetro y no es nulo, sustituya su
valor. De lo contrario, imprima el valor de la variable Palabra y salga del
shell. Si se ha omitido la variable Palabra, se imprimirá un mensaje
estándar.
${Parámetro:+Palabra} Si se ha establecido el parámetro Parámetro y no es nulo, sustituya el valor
de la variable Palabra.

Gestión del sistema operativo 235


Elemento Descripción
${Parámetro#Patrón } | $ Si el parámetro de shell Patrón que se ha especificado coincide con el
{ Parámetro##Patrón } principio del valor del parámetro Parámetro, el valor de esta sustitución es
el valor del parámetro Parámetro pero suprimiéndose la parte coincidente.
De lo contrario, se sustituye el valor del parámetro Parámetro. En el primer
formato, se suprime el patrón coincidente más pequeño. En el segundo
formato, se suprime el patrón parte coincidente más grande.
${Parámetro%Patrón} | $ Si el Patrón de shell especificado coincide con el final del valor de la
{ Parámetro%%Patrón} variable Parámetro, el valor de esta sustitución es el valor de la variable
Parámetro, pero suprimiéndose la parte coincidente. De lo contrario, se
sustituye el valor de la variable Parámetro. En el primer formato, se
suprime el patrón coincidente más pequeño; en el segundo formato, se
suprime el patrón coincidente más grande.
En las expresiones anteriores, la variable Palabra no se evalúa a menos
que vaya a utilizarse como serie sustituida. Por lo tanto, en el ejemplo
siguiente, el mandato pwd sólo se ejecuta si el distintivo -d no se ha
establecido o es nulo:

echo ${d:-$(pwd)}

Nota: Si se omite : en las expresiones anteriores, el shell sólo comprueba si se ha establecido el


parámetro Parámetro.
Conceptos relacionados
Terminales desatendidos
Todos los sistemas son vulnerables si se dejan las sesiones iniciadas o desatendidos los terminales. Los
problemas más graves se producen cuando un gestor del sistema deja un terminal desatendido al que se
le ha asignado autorización de usuario root. En general, los usuarios deben finalizar la sesión cada vez
que abandonan sus terminales.

Parámetros especiales predefinidos en el shell Korn o el shell POSIX


El shell Korn o el shell POSIX establecen algunos parámetros automáticamente.
El shell define automáticamente los siguientes parámetros:

Elemento Descripción
@ Expande los parámetros posicionales, empezando por $1. Cada parámetro está separado
por un espacio.
Si utiliza " para delimitar $@, el shell considera que cada parámetro posicional es una
serie separada. Si no existe ningún parámetro posicional, el shell expande la sentencia
para obtener una serie nula sin comillas.

* Expande los parámetros posicionales, empezando por $1. El shell separa cada parámetro
con el primer carácter del valor del parámetro IFS.
Si utiliza " para delimitar $*, el shell incluye los valores de los parámetros posicionales
entre comillas dobles. Cada valor está separado por el primer carácter del parámetro IFS.

# Especifica el número (en decimales) de parámetros posicionales pasados al shell, sin


contar el nombre del propio procedimiento de shell. El parámetro $# produce el número
del parámetro posicional con la numeración más alta que se ha establecido. Una de las
utilizaciones principales de este parámetro es comprobar la presencia del número
necesario de argumentos.
- Proporciona distintivos al shell al invocarse o bien con el mandato set.

236 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
? Especifica el valor de salida del último mandato ejecutado. Su valor es una serie decimal.
La mayoría de mandatos devuelve 0 para indicar que se ha finalizado satisfactoriamente.
El propio shell devuelve el valor actual de la variable $? como valor de salida.
$ Identifica el número de proceso de este shell. Puesto que los números de proceso son
exclusivos entre todos los procesos existentes, esta serie de un máximo de 5 dígitos suele
utilizarse para generar nombres exclusivos para archivos temporales.
El ejemplo siguiente ilustra la práctica recomendada de crear archivos temporales en un
directorio utilizado solamente para dicho propósito:

temp=$HOME/temp/$$
ls >$temp
.
.
.
rm $temp

! Especifica el número de proceso del último mandato de proceso en segundo plano que se
ha invocado.
zero (0) Expande al nombre del shell o script de shell.

Sustitución de nombre de archivo en el shell Korn o shell POSIX


El shell Korn, o el shell POSIX, realiza la sustitución de un nombre de archivo explorando cada palabra del
mandato especificada por la variable Word en busca de determinados caracteres.
Si una palabra del mandato incluye los caracteres *), ? o [ y no se ha establecido el distintivo -f, el shell
considera que la palabra es un patrón. El shell sustituye la palabra por nombres de archivo, ordenados
por el orden de clasificación en vigor en el escenario local, que coincidan con el patrón. Si el shell no
encuentra un nombre de archivo que coincida con el patrón, no cambia la palabra.
Cuando el shell utiliza un patrón para la sustitución de nombre de archivo, los caracteres . y / deben
coincidir explícitamente.
Nota: El shell Korn no trata estos caracteres de forma especial en otras instancias de la coincidencia de
patrones.
Los siguientes caracteres de patrones de coincidencia indican las sustituciones que se indican a
continuación:

Eleme Descripción
nto
* Coincide con cualquier serie, incluyendo la serie nula.
? Busca la coincidencia de cualquier carácter individual.
[...] Busca la coincidencia de cualquiera de los caracteres delimitados. Un par de caracteres
separados por un guión (-) coincide con cualquier carácter que se encuentre léxicamente
dentro del rango de inclusión de dicho par, de acuerdo con el orden de clasificación en vigor en
el entorno local actual. Si el primer carácter que sigue al corchete de apertura [ es !, se busca
la coincidencia de cualquier carácter no delimitado. En el conjunto de caracteres puede
incluirse un guión (-) si se coloca en la posición del primer o del último carácter.

También puede utilizar la notación [:charclass:] para buscar la coincidencia de nombres de archivos
dentro de una indicación de rango. Este formato indica al sistema que busque la coincidencia de
cualquier carácter que pertenezca a la clase. La definición de qué caracteres constituyen una clase de
caracteres específica se presenta mediante la categoría LC_CTYPE de la subrutina setlocale. Se reconocen
todas las clases de caracteres especificadas en el entorno local actual.
A continuación se indican los nombres de algunas de las clases de caracteres:

Gestión del sistema operativo 237


• alnum
• alpha
• cntrl
• digit
• graph
• lower
• print
• punct
• space
• upper
• xdigit
Por ejemplo, [[:upper:]] busca la coincidencia de cualquier letra en mayúsculas.
El shell Korn da soporte a la expansión de nombre de archivo basándose en la clasificación de elementos,
de símbolos o clases de equivalencia.
Una ListaPatrones es una lista de uno o más patrones separados por una |. Los patrones compuestos se
forman con uno o más de los caracteres siguientes:

Elemento Descripción
?(ListaPatrones) Opcionalmente, busca la coincidencia de cualquiera de los patrones
especificados
*(ListaPatrones ) Busca la coincidencia de cero o más apariciones de los patrones especificados
+(ListaPatrones ) Busca la coincidencia de una o más apariciones de los patrones especificados
@(ListaPatrones ) Busca la coincidencia de exactamente uno de los patrones especificados
!(ListaPatrones) Busca la coincidencia de cualquier elemento, excepto de uno de los patrones
especificados

La coincidencia con patrones tiene algunas restricciones. Si el primer carácter del nombre del archivo es
punto (.), éste sólo puede coincidir con un patrón que también empiece por un punto. Por ejemplo, *
coincide con los nombres de archivos myfile y yourfile, pero no con los nombres de
archivos .myfile y .yourfile. Para encontrar estos archivos, utilice un patrón como este:

.*file

Si un patrón no coincide con ningún nombre de archivo, se devuelve el propio patrón como resultado de la
búsqueda de coincidencia que se ha intentado.
Los nombres de archivo y directorio no deben contener los caracteres *, ?, [ ni ] porque pueden provocar
una repetición infinita (es decir, bucles infinitos) durante los intentos de búsqueda de coincidencia de
patrones.

Eliminación de delimitadores
Se eliminarán algunos caracteres si no están delimitados.
Los caracteres delimitadores, la barra inclinada invertida (\), la comilla simple (') y la comilla doble (")
incluidos en la palabra original se eliminarán a menos que se hayan especificado entre delimitadores.

Redirección de la entrada y la salida en el shell Korn o POSIX


Antes de ejecutar un mandato, el shell Korn explora la línea de mandatos en busca de caracteres de
redirección. Estas notaciones especiales indican al shell que redirija la entrada y la salida.
Los caracteres de redirección pueden aparecer en un mandato simple o pueden preceder o seguir a un
mandato. No se pasan al mandato llamado.

238 AIX Versión 7.2: Gestión del sistema operativo


El shell realiza la sustitución del mandato y del parámetro antes de utilizar el parámetro Palabra o Dígito,
excepto en los casos indicados. La sustitución del nombre de archivo sólo tiene lugar si el patrón coincide
con un único archivo y no se realiza la interpretación de los blancos.

Elemento Descripción
<Palabra Utiliza el archivo que especifica el parámetro Palabra como entrada estándar
(descriptor de archivo 0).
>Palabra Utiliza el archivo que especifica el parámetro Palabra como salida estándar (descriptor
de archivo 1). Si el archivo no existe, el shell lo crea. Si el archivo existe y se ha
especificado la opción noclobber, se produce un error; de lo contrario, el archivo se
trunca en la longitud cero.
Nota: Cuando varios shells tienen establecida la opción noclobber y redirigen la salida
al mismo archivo, podría producirse una condición de carrera, que podría dar como
resultado que uno o más de estos procesos de shell grabasen en el archivo. El shell no
detecta ni impide estas condiciones de carrera.

>|Palabra Igual que el mandato >Palabra, salvo que esta sentencia de redirección sustituye a la
opción noclobber.
> >Palabra Utiliza el archivo que especifica el parámetro Palabra como salida estándar. Si el
archivo existe actualmente, el shell añade la salida al mismo (buscando primero el
carácter de fin de archivo). Si el archivo no existe, el shell lo crea.
<>Palabra Abre el archivo que especifica el parámetro Palabra para su lectura y grabación como
entrada estándar.
<<[-]Palabra Lee cada línea de entrada del shell hasta que localiza una línea que sólo contiene el
valor del parámetro Palabra o un carácter de fin de archivo. El shell no efectúa
sustitución de parámetros, sustitución de mandatos o sustitución de nombres de
archivo en el archivo especificado. El documento resultante, denominado documento de
entrada de línea, se convierte en la entrada estándar. Si algún carácter del parámetro
Palabra está delimitado, no se realizará ninguna interpretación de los caracteres del
documento.

El documento de entrada en línea se trata como una única palabra que empieza después del siguiente
carácter de nueva línea y que continúa hasta donde existe una línea que sólo contiene el delimitador, sin
caracteres en blanco finales. De este modo, comienza, si existe, el siguiente documento de entrada en
línea. El formato es el siguiente:

[n]<<palabra
documento de entrada en línea
delimitador

Si algún carácter de la palabra está delimitado, el delimitador se forma eliminando el carácter de


delimitación de la palabra. Las líneas del documento de entrada en línea no se expandirán. De lo
contrario, el delimitador es la propia palabra. Si ninguno de los caracteres de la palabra está delimitado,
todas las líneas del documento de entrada en línea se expandirán para que tenga lugar la expansión del
parámetro, la sustitución del mandato y la expansión aritmética.
El shell efectúa sustitución de parámetros para los datos redirigidos. Para evitar que el shell interprete los
caracteres \, $, y de comilla simple (') y el primer carácter del parámetro Palabra, especifique un
carácter \ delante de los caracteres.
Si se añade un guión (-) a <<, el shell eliminará todas las tabulaciones iniciales del parámetro Palabra y
de documento.

Elemento Descripción
<&Dígito Duplica la entrada estándar del descriptor de archivo que especifica el
parámetro Dígito

Gestión del sistema operativo 239


Elemento Descripción
>& Dígito Duplica la salida estándar del descriptor de archivo que especifica el parámetro
Dígito
<&- Cierra la entrada estándar
>&- Cierra la salida estándar
<&p Mueve la entrada desde el coproceso a la entrada estándar
>&p Mueve la salida para el coproceso a la salida estándar

Si una de estas opciones de redirección va precedida de un dígito, el dígito especifica el número de


descriptor de archivo al que se hace referencia (en lugar del valor predeterminado de 0 ó 1). En el
siguiente ejemplo, el shell abre el descriptor de archivo 2 para grabar como duplicado del descriptor de
archivo 1:

... 2>&1

El orden en que se especifica la redirección es importante. El shell evalúa la redirección, de acuerdo con
la asociación (DescriptorArchivo, Archivo), en el momento de realizar la evaluación. Por ejemplo, en la
sentencia:

... 1>Archivo 2>&1

el descriptor de archivo 1 está asociado al archivo especificado por el parámetro Archivo. El shell asocia
el descriptor de archivo 2 al archivo que se ha asociado al descriptor de archivo 1 (Archivo). Si se invirtiera
el orden de las redirecciones, el descriptor de archivo 2 se asociaría al terminal (dando por supuesto que
anteriormente hubiera sido el descriptor 1) y el descriptor de archivo 1 se asociaría al archivo que
especifica el parámetro Archivo.
Si un mandato va seguido de un ampersand (&) y el control de trabajos no está activo, la entrada estándar
predeterminada para el mandato es el archivo /dev/null vacío. De lo contrario, el entorno para la
ejecución de un mandato contiene los descriptores de archivo del shell que efectúa la llamada mediante
las especificaciones de entrada y de salida.
Conceptos relacionados
Redirección de la entrada y la salida
El sistema operativo AIX permite manipular la entrada y salida (E/S) de datos hacia y desde el sistema
utilizando mandatos y símbolos de E/S específicos.
Tareas relacionadas
Redirección de la salida en documentos de entrada en línea (here)
Puede redirigir la salida a documentos de entrada en línea (here).

Recurso de coproceso
El shell Korn o el shell POSIX le permiten ejecutar uno o varios mandatos como procesos en segundo
plano. Estos mandatos, que se ejecutan desde un script de shell, se denominan coprocesos.
Designe un coproceso colocando el operador |& después de un mandato. Tanto la entrada como la salida
estándar del mandato se interconectan con el script.
Un coproceso debe cumplir las restricciones siguientes:
• Incluir un carácter de nueva línea al final de cada mensaje
• Enviar cada mensaje de salida a salida estándar
• Borrar la salida estándar después de cada mensaje
En el ejemplo siguiente se muestra el modo en que se pasa y devuelve la entrada de un coproceso:

echo "Initial process"


./[Link] |&
read -p a b c d

240 AIX Versión 7.2: Gestión del sistema operativo


echo "Read from coprocess: $a $b $c $d"
print -p "Passed to the coprocess"
read -p a b c d
echo "Passed back from coprocess: $a $b $c $d"

[Link]
echo "The coprocess is running"
read a b c d
echo $a $b $c $d

La salida estándar resultante es la siguiente:

Initial process
Read from coprocess: The coprocess is running
Passed back from coprocess: Passed to the coprocess

Utilice el mandato print -p para la grabación del coproceso. Utilice el mandato read -p para la
lectura del coproceso.
Conceptos relacionados
Mandatos del shell Korn o shell POSIX
El shell Korn es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Se
ajusta a la Interfaz de Sistema Operativo Portable para Entornos del Sistema (POSIX), un estándar
internacional para sistemas operativos.

Redirección de la entrada y salida de coproceso


La entrada y salida estándar de un coproceso se reasigna a un descriptor de archivo numerado utilizando
la redirección de E/S.
Por ejemplo, el mandato:

exec 5>&p

mueve la entrada del coproceso al descriptor de archivo 5.


Tras haberse completado este coproceso, puede utilizar la sintaxis de redirección estándar para redirigir
la salida del mandato al coproceso. También puede iniciar otro coproceso. La salida de ambos
coprocesos se asocia al mismo conducto y se lee con el mandato read -p. Para detener el coproceso,
escriba lo siguiente:

read -u5

Mandatos incorporados del shell Korn o POSIX


Los mandatos especiales se crean en el shell Korn y en el shell POSIX y se ejecutan en el proceso de
shell.
A menos que se indique algo distinto, la salida se graba en el descriptor de archivo 1 y el estado de la
salida es cero (0) si el mandato no contiene ningún error de sintaxis. Se permite la redirección de entrada
y de salida. Existen dos tipos de mandatos incorporados: los mandatos incorporados especiales y los
mandatos incorporados normales.
Los mandatos especiales incorporados se diferencian de los mandatos normales incorporados de este
modo:
• Un error de sintaxis en un mandato incorporado especial podría dar lugar a la finalización del shell que
ejecuta el mandato. Esto no ocurre si se produce un error de sintaxis en un mandato normal
incorporado. Si un error de sintaxis en un mandato incorporado especial no finaliza el programa de
shell, el valor de salida es distinto de cero.
• Las asignaciones de variables especificadas con mandatos especiales incorporados permanecen
vigentes después de que se complete el mandato.
• Las redirecciones de E/S se procesan después de las asignaciones de parámetros.
Además, las palabras con el formato de asignación de parámetros que se encuentran después de los
mandatos especiales export, readonly y typeset, se expanden con las mismas normas que la

Gestión del sistema operativo 241


asignación de parámetros. La sustitución de la tilde se realiza después del carácter = y la división de
palabras y la sustitución del nombre no se realizan.
Conceptos relacionados
Mandatos del shell Korn o shell POSIX
El shell Korn es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Se
ajusta a la Interfaz de Sistema Operativo Portable para Entornos del Sistema (POSIX), un estándar
internacional para sistemas operativos.
Funciones del shell Korn
La palabra reservada function define funciones del shell. El shell lee y almacena funciones internamente.
Los alias se resuelven cuando se lee la función. El shell ejecuta las funciones de la misma forma que los
mandatos, pasando los argumentos como parámetros posicionales.
Referencia relacionada
Lista de mandatos incorporados especiales del shell Korn o el shell POSIX
Los mandatos especiales están incorporados en el shell Korn y el shell POSIX y se ejecutan en el proceso
de shell.
Mandatos incorporados normales del shell Korn o el shell POSIX
La lista siguiente muestra los mandatos incorporados normales del shell Korn o el shell POSIX.

Descripciones de mandatos incorporados especiales para el shell Korn o el shell POSIX


Los mandatos especiales están incorporados en el shell Korn y el shell POSIX y se ejecutan en el proceso
de shell.
A continuación se describen los mandatos incorporados especiales del shell Korn:

: eval newgrp shift


. exec readonly times
break exit return trap
continue export set typeset
unset

Elemento Descripción
: [Argumento ...] Expande únicamente argumentos. Se utiliza cuando es necesario un mandato, como
en la condición then de un mandato if, pero el mandato no ha de realizar ninguna
acción.
. Archivo Lee el archivo completo especificado y a continuación ejecuta los mandatos. Los
[Argumento ...] mandatos se ejecutan en el entorno de shell actual. La vía de búsqueda que
especifica la variable PATH se utiliza para buscar el directorio que contiene el
archivo especificado. Si se especifican argumentos, pasan a ser los parámetros
posicionales. De lo contrario, los parámetros posicionales permanecen intactos. El
estado de salida es el estado de salida del último mandato que se ha ejecutado.
Consulte el apartado “Sustitución de parámetros en el shell Korn o shell POSIX” en
la página 235 para obtener más información sobre los parámetros posicionales.
Nota: El mandato .Archivo [Argumento ...] lee todo el archivo antes de que se
ejecuten los mandatos. Por lo tanto, los mandatos alias y unalias del archivo no
se aplican a las funciones que se definen en el archivo.

break [n] Sale del bucle de delimitación for, while, until o select, si existe uno. Si especifica el
parámetro n, el mandato realizará interrupciones basándose en el número de niveles
que se especifica mediante el parámetro n. El valor de n puede ser cualquier entero
igual o mayor que 1.
continue [ n ] Reanuda la siguiente iteración del bucle de delimitación for, while, until o select. Si
especifica el parámetro n, el mandato se reanuda en el nésimo bucle delimitador. El
valor de n puede ser cualquier entero igual o mayor que 1.

242 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
eval Lee los argumentos especificados como entrada al shell y ejecuta el mandato o
[Argumento ...] mandatos resultantes.
exec Ejecuta un mandato especificado por el argumento en lugar de este shell (sin crear
[Argumento ...] un proceso nuevo). Los argumentos de entrada y salida pueden aparecer y afectar al
proceso actual. Si no especifica un argumento, el mandato exec modificará los
descriptores de archivos de conformidad con la lista de redirección de la entrada y la
salida. En este caso, cuando haya más de dos descriptores de archivo que se abren
con este mecanismo se cierra cuando se llama a otro programa.
exit [n] Sale del shell con el estado de salida que especifica el parámetro n. El parámetro n
debe ser un entero decimal sin signo entre el 0 y el 255. Si omite el parámetro n, el
estado de salida es el del último mandato que se ha ejecutado. Un carácter de fin de
archivo también provoca la salida del shell a menos que se haya activado la opción
ignoreeof del mandato especial set.
export -p Marca los nombres especificados para su exportación automática al entorno de los
[Nombre[= mandatos que se ejecutarán posteriormente.
Valor]] ...
-p graba en salida estándar los nombres y valores de todas las variables exportadas,
en el formato siguiente:

"export %s= %s\n", <nombre> <valor>

newgrp [Grupo] Equivalente al mandato exec/usr/bin/newgrp [Grupo].


Nota: Este mandato no devuelve salida.

readonly -p Marca los nombres que especifica el parámetro Nombre como de sólo lectura.
[Nombre[= Ninguna asignación posterior puede cambiar estos nombres.
Valor]] ...
-p graba en salida estándar los nombres y valores de todas las variables exportadas,
en el formato siguiente:

"export %s= %s\n", <nombre> <valor>

return [n] Hace que la función de un shell vuelva al script de llamada. El estado de retorno se
especifica mediante el parámetro n. Si omite el parámetro n, el estado de retorno es
el del último mandato que se ha ejecutado. Si invoca el mandato return fuera de
una función o script, es igual a un mandato exit.

Gestión del sistema operativo 243


Elemento Descripción
set [+ |- Si no se especifica ninguna opción o argumento, el mandato set graba los nombres y
abCefhkmnostuv los valores de todas las variables de shell en el orden de clasificación del entorno
x ] [+ |-o local actual. Cuando se especifican opciones, éstas establecen o eliminan el
Opción]... [+ |- establecimiento de los atributos del shell, que se describen a continuación:
ANombre]
-A
[Argumento ...] Asignación de matriz. Elimina el establecimiento del parámetro Nombre y asigna
valores secuencialmente a partir de la lista del parámetro Argumento que se ha
especificado. Si se utiliza el distintivo +A, no se elimina el establecimiento del
parámetro Nombre en primer lugar.
-a
Exporta automáticamente todos los parámetros posteriores que se definan.
-b
Notifica al usuario las finalizaciones de trabajos asíncronos o en segundo plano.
-C
Equivalente a set -o noclobber.
-e
Ejecuta la ruptura ERR, si se ha establecido, y sale si un mandato tiene un estado
de salida que no es cero a menos que el mandato simple:
+ esté contenido en una lista && o ||
+ sea el mandato inmediatamente después de if, while o until
+ esté contenido en el conducto después de !
Esta modalidad está inhabilitada mientras se leen perfiles.
-f
Inhabilita la sustitución de nombres de archivo.
-h
Designa cada mandato como un seudónimo con seguimiento la primera vez que
se encuentra.
-k
Coloca todos los argumentos de asignación de parámetros en el entorno de un
mandato, no sólo los argumentos que preceden al nombre del mandato.
-m
Ejecuta trabajos en segundo plano en un proceso independiente e imprime una
línea cuando se finaliza. Se informa del estado de salida de trabajos en segundo
plano en un mensaje de finalización. En los sistemas que disponen de control de
trabajos, este distintivo se activa automáticamente para los shells interactivos.
Para obtener más información, consulte el apartado “Control de trabajos en el
shell Korn o el shell POSIX” en la página 254.
-n
Lee mandatos y comprueba si existen errores de sintaxis, pero no los ejecuta.
Este distintivo se ignora para shells interactivos.

244 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción

-o Opción
Imprime los valores actuales de la opción y un mensaje de error si no especifica
un argumento. Puede establecer más de una opción en una única línea de
mandatos ksh. Si se utiliza el distintivo +o, se elimina el establecimiento de la
opción especificada. Cuando se especifican argumentos, éstos dan lugar al
establecimiento o a la eliminación del establecimiento de los parámetros
posicionales. Los argumentos, como especifica la variable Opción, pueden ser
uno de los siguientes:
allexport
Igual que el distintivo -a.
bgnice
Ejecuta todos los trabajos en segundo plano a una prioridad inferior. Se trata
de la modalidad por omisión.
emacs
Entra en un editor en línea de estilo emacs para la entrada de mandatos.
errexit
Igual que el distintivo -e.
gmacs
Entra en un editor en línea estilo gmacs para entrada de mandatos.
ignoreeof
No sale del shell cuando encuentra un carácter de fin de archivo. Para salir
del shell, debe utilizar el mandato exit o pulsar la secuencia de teclas
Control-D más de 11 veces.
keyword
Es igual al distintivo -k.
Nota: Este distintivo sirve para la compatibilidad con versiones anteriores
del shell Bourne. Se desaconseja su uso.
markdirs
Añade una barra inclinada invertida / a todos los nombres de directorio que
son el resultado de una sustitución de nombre de archivo.
monitor
Igual que el distintivo -m.
noclobber
Impide que la redirección trunque archivos existentes. Cuando se especifica
esta opción, una barra vertical debe seguir al símbolo de redirección (>|)
para truncar un archivo.
noexec
Igual que el distintivo -n.
noglob
Igual que el distintivo -f.
nolog
Evita que las definiciones de los archivos .profile y $ENV se guarden en el
archivo histórico.
nounset
Igual que el distintivo -u.
privileged
Igual que el distintivo -p.

Gestión del sistema operativo 245


Elemento Descripción

trackall
Igual que el distintivo -h.
verbose
Igual que el distintivo -v.
vi
Especifica la modalidad de inserción de un editor en línea de estilo vi para la
entrada de mandatos. Si entra el carácter de escape 033, situará el editor en
modalidad de movimiento. Si pulsa la tecla Intro, enviará una línea.
viraw
Procesa cada carácter que se escribe en modalidad vi.
xtrace
Igual que el distintivo -x.
-p
Inhabilita el proceso del archivo $HOME/.profile y utiliza el archivo /etc/
suid_profile en lugar del archivo ENV. Esta modalidad se habilita siempre
que el ID de usuario vigente (UID) o ID de grupo (GID) no sea igual que el UID o
GID real. Desactivar esta opción define el UID o GID vigente en el UID y GUI real.
Nota: El sistema no soporta la opción -p porque el sistema operativo no soporta
los scripts de shell setuid.
-s
Ordena los parámetros posicionales lexicográficamente.
-t
Sale después de leer y ejecutar un mandato.
Nota: Este distintivo sirve para la compatibilidad con versiones anteriores del
shell Bourne. Se desaconseja su uso.
-u
Cuando se sustituyan parámetros a los que se ha eliminado la definición, los
interpreta como errores.
-v
Imprime las líneas de entrada del shell a medida que se leen.
-x
Imprime mandatos y sus argumentos a medida que se ejecutan.
-
Desactiva los distintivos -x y -v y detiene el examen de argumentos para
distintivos.

Impide que se modifique ningún distintivo. Esta opción es útil para establecer el
parámetro $1 en un valor que empiece por -. Si no hay ningún argumento que
siga a este distintivo, no se definen los parámetros posicionales.
Si delante de cualquier distintivo del mandato set se especifica un signo + en lugar
de un signo -, el distintivo quedará desactivado. Puede utilizar estos distintivos
cuando llame al shell. Cuando se invoca 'set +o' sin ningún argumento, se
visualizan los valores de la opción actual en un formato adecuado para volverlos a
entrar en el shell como mandatos que obtienen el mismo valor de la opción. El
conjunto actual de distintivos se encuentra en el parámetro $-. A menos que
especifique el distintivo -A, los argumentos restantes son parámetros posicionales y
se les asigna, por orden, $1, $2, ..., etc. Si no se proporciona ningún argumento,
los nombres y los valores de todos los parámetros con nombre se imprimirán en la
salida estándar.

246 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
shift [n] Renombra los parámetros posicionales, comenzando por $n+1 ... hasta $1 ... El valor
predeterminado del parámetro n es 1. El parámetro n es una expresión aritmética
que se evalúa en un número no negativo menor o igual al parámetro $#.
times Imprime las horas de usuario y del sistema totales para el shell y para procesos que
se ejecutan desde el shell.
trap [Mandato] Ejecuta el mandato especificado cuando el shell recibe la señal o señales
[Señal] ... especificadas. El parámetro Mandato se lee una vez cuando se establece la ruptura y
una vez cuando se toma la ruptura. El parámetro Señal puede especificarse como un
número o como el nombre de la señal. Los mandatos de ruptura se ejecutan en
orden de número de señal. Cualquier intento de definir una ruptura o una señal que
se ignoró en la entrada al shell actual no es efectivo.
Si el mandato es -, todas las rupturas se restablecerán en sus valores originales. Si
omite el mandato y la primera señal es un número de señal numérica, el mandato
ksh restablece el valor del parámetro o parámetros Señal en los valores originales.
Nota: Si omite el mandato y la primera señal es un nombre simbólico, la señal se
interpreta como un mandato.
Si el valor del parámetro Señal es la señal ERR, el mandato especificado se ejecuta
cuando un mandato tiene un estado de salida que no es cero. Si la señal es DEBUG,
el mandato especificado se ejecutará después de cada mandato. Si el valor de
parámetro Señal es la señal 0 o EXIT y se ejecuta el mandato trap dentro del
cuerpo de una función, el mandato especificado se ejecuta cuando se completa la
función. Si el parámetro Señal es 0 o EXIT para un mandato trap establecido fuera
de cualquier función, el mandato especificado se ejecuta a la salida del shell.
Nota: Si un script recibe una señal SIGINT dentro de una función, no se podrá
capturar la señal EXIT cuando se haya salido del shell.
El mandato trap, sin argumentos, imprime una lista de los mandatos que se asocian
a cada número de señal. Si el mandato especificado es NULL, indicado como ""
(comillas vacías), el mandato ksh ignorará la señal. Para obtener más información
acerca de cómo el shell Korn o el shell POSIX leen un carácter como carácter
regular, consulte “Delimitación de caracteres en el shell Korn o el shell POSIX” en la
página 226.
Para obtener una lista completa de los valores del parámetro Señal utilizados en el
mandato trap sin el prefijo SIG, consulte la subrutin sigaction, sigvec o
signal.

Gestión del sistema operativo 247


Elemento Descripción
typeset Define atributos y valores para parámetros de shell. Cuando se invoca dentro de una
[+HLRZfilrtux [n]] función, se crea una nueva instancia del parámetro Nombre. El valor y el tipo del
[Nombre[=Valor]] parámetro se restauran cuando se completa la función. Puede especificar los
... siguientes distintivos con el mandato typeset:
-H
Proporciona correlación AIX a archivo del sistema principal en máquinas que no
son AIX.
-L
Justifica el texto por la izquierda y elimina los blancos iniciales del parámetro
Valor. Si el parámetro n tiene un valor que no es cero, define la anchura del
campo; de lo contrario, se determina utilizando la anchura del valor de su
primera asignación. Cuando se asigna el parámetro, se rellena por la derecha
con blancos o se trunca, si es necesario, para que encaje en el campo. Los ceros
iniciales se eliminan si también se ha establecido el distintivo -Z. El distintivo -R
se desactiva.
-R
Justifica por la derecha y rellena con blancos iniciales. Si el parámetro n tiene un
valor que no es cero, define la anchura del campo; de lo contrario, se determina
utilizando la anchura del valor de su primera asignación. El campo permanece
rellenado con blancos o se trunca desde el final si se reasigna el parámetro. El
distintivo L se desactiva.
-Z
Justifica el texto por la derecha y lo rellena con ceros iniciales si el primer
carácter que no es un blanco es un dígito y no se ha establecido el distintivo -L.
Si el parámetro n tiene un valor que no es cero, define la anchura del campo; de
lo contrario, se determina utilizando la anchura del valor de su primera
asignación.
-f
Indica que los nombres hacen referencia a los nombres de funciones, en lugar
de nombres de parámetros. No pueden realizarse asignaciones y los otros
distintivos válidos son -t, -u y -x. El distintivo -t activa el rastreo de ejecución
para esta función. El distintivo -u hace que esta función se marque como no
definida. La definición de función se busca en la variable FPATH cuando se hace
referencia a la función. El distintivo -x permite dejar en vigor la definición de la
función entre scripts de shell que no son una invocación independiente del
mandato ksh-
-i
Identifica el parámetro como un entero, con una aritmética más rápida. Si el
parámetro n tiene un valor que no es cero, define la base aritmética de salida; de
lo contrario, la primera asignación determina la base de salida.
-l
Convierte todos los caracteres mayúsculas en minúsculas. El distintivo de
conversión en mayúsculas -u está desactivado.
-r
Marca los nombres que especifica el parámetro Nombre como de sólo lectura.
Ninguna asignación posterior puede cambiar estos nombres.

248 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción

-t
Identifica los parámetros designados. El usuario puede definir los y no tiene
ningún significado especial para el shell.
-u
Convierte todos los caracteres en minúsculas a caracteres mayúsculas. El
distintivo de minúsculas -l está desactivado.
-x
Marca el nombre que especifica el parámetro Nombre para su exportación
automática al entorno de los mandatos que se ejecutarán posteriormente.
La utilización de un signo + en lugar de un signo - desactiva los distintivos del
mandato typeset. Si no especifica parámetros Nombre pero sí especifica
distintivos, se imprimirá una lista de los nombres (y, opcionalmente, de los
valores) de los parámetros en los que se han establecido esos distintivos. (La
utilización de un signo + en lugar de un signo - impide que se impriman los
valores.) Si no especifica nombres ni distintivos, se imprimen los nombres y
atributos de todos los parámetros.

unset [-fv ] Elimina la definición de los valores y atributos de los parámetros proporcionados por
Nombre ... la lista de nombres. Si se especifica -v, Nombre hace referencia a un nombre de
variable, y el shell eliminará su establecimiento y la eliminará del entorno. No puede
eliminarse la definición de las variables de sólo lectura. La eliminación del
establecimiento de las variables ERRNO, LINENO, MAILCHECK, OPTARG, OPTIND,
RANDOM, SECONDS, TMOUT y subrayado ( _) eliminará sus significados especiales,
aunque se asignen posteriormente.
Si se establece el distintivo -f, Nombre hace referencia a un nombre de función y el
shell eliminará la definición de la función.

Descripciones de mandatos incorporados normales para el shell Korn o el shell POSIX


Los mandatos incorporados para los shells Korn o POSIX se describen a continuación.
El shell Korn proporciona los siguientes mandatos incorporados normales:

alias fg print ulimit


bg getopts pwd umask
cd jobs read unalias
command
kill setgroups
wait
echo let setsenv
test whence
fc

Elemento Descripción
alias [-t ] [-x ] Crea o redefine las definiciones de alias o graba definiciones de alias existentes en
[NombreAlias[= la salida estándar.
Serie]] ...
Para obtener información, consulte el mandato alias.

bg [IDTrabajo...] Sitúa el trabajo especificado en segundo plano. El trabajo actual se establece como
trabajo en segundo plano si el parámetro IDTrabajo no se ha especificado. Consulte
el apartado “Control de trabajos en el shell Korn o el shell POSIX” en la página 254
para obtener más información sobre el control de trabajos.
Para obtener más información acerca de la ejecución de trabajos en el fondo,
consulte el mandato bg.

Gestión del sistema operativo 249


Elemento Descripción
cd [Argumento]
cd Viejo Nuevo Este mandato puede estar en uno de los dos formatos. En el primer formato,
cambia del directorio actual al directorio que especifica el parámetro Argumento. Si
el valor del parámetro Argumento es un guión (-), se cambia el directorio por el
anterior. La variable de shell HOME es el valor predeterminado del parámetro
Argumento. La variable PWD se establece en el valor del directorio actual.
La variable de shell CDPATH define la vía de acceso de búsqueda para el directorio
que contiene el valor del parámetro Argumento. Los nombres de directorio
alternativos se separan mediante dos puntos (:). La vía de acceso por omisión es
nula, especificando el directorio actual. El directorio actual está especificado por un
nombre de vía de acceso nulo, que aparece inmediatamente después del signo de
igual o entre los delimitadores de dos puntos en cualquier parte de la lista de vías
de acceso. Si el argumento especificado empieza por una barra inclinada (/), no se
utiliza la vía de búsqueda. De lo contrario, se busca en todos los directorios de la
vía de acceso.
El segundo formato del mandato cd sustituye la serie especificada por la variable
Nuevo para la serie especificada por la variable Viejo del nombre de directorio
actual, PWD, e intenta cambiar a este nuevo directorio.

command [-p ]
NombreMandato
[Argumento ...]
command [-v | -V ] Hace que el shell trate al mandato y a los argumentos especificados como si fueran
NombreMandato un mandato simple, suprimiendo la búsqueda de la función de shell.
Para obtener más información, consulte el mandato command.

echo [Serie ...] Graba series de caracteres en salida estándar. Consulte el mandato echo para
obtener información sobre su utilización y conocer su descripción. El distintivo -n
no está soportado.
fc [-r ] [-e Editor]
[Primero [Último]]
fc -l [-n ] [-r ]
[Primero [Último]]
fc -s [Viejo= Visualiza el contenido del archivo histórico de mandatos o llama a un editor para
Nuevo] [Primero] modificar y volver a ejecutar mandatos entrados previamente en shell.
Para obtener más información, consulte el mandato fc.

fg [IDTrabajo] Sitúa cada trabajo especificado en el primer plano. Si no especifica ningún trabajo,
el mandato sitúa el trabajo actual en el primer plano.
Para obtener más información acerca de la ejecución de trabajos en primer plano,
consulte el mandato fg.

getopts Comprueba el parámetro Argumento en busca de opciones legales.


SerieOpción
Para obtener más información consulte el mandato getopts.
Nombre
[Argumento ...]

250 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
jobs [-l | -n | -p ] Muestra el estado de trabajos iniciados en el entorno de shell actual. Si no se
[IDTrabajo ...] especifica ningún trabajo específico en el parámetro IDTrabajo, se visualizará la
información de estado para todos los trabajos activos. Si se informa de la
finalización de un trabajo, el shell elimina el ID del proceso de dicho trabajo de la
lista de los que conoce el entorno de shell actual.
Para obtener más información, consulte el mandato jobs.

kill [ -s Envía una señal (por omisión, la señal SIGTERM) a un proceso en ejecución. Esta
{ NombreSeñal | acción por omisión normalmente detiene los procesos. Si desea detener un
NúmeroSeñal } ] proceso, especifique el ID del proceso (PID) en la variable IDProceso. El shell
IDProceso... informa al PID de cada proceso que está ejecutándose en segundo plano (a menos
que inicie más de un proceso en un conducto, en cuyo caso el shell informa del
kill [ -
número del último proceso). También puede utilizar el mandato ps para localizar el
NombreSeñal | -
número de ID de proceso de mandatos.
NúmeroSeñal ]
IDProceso...
kill -l Lista nombres de señales.
[ EstadoSalida ]
Para obtener más información, consulte el mandato kill.

let Expresión ... Evalúa expresiones aritméticas especificadas. El estado de salida es 0 si el valor de
la última expresión es distinto de cero y 1 si sucede lo contrario. Consulte el
apartado “Evaluación aritmética en el shell Korn o shell POSIX” en la página 221
para obtener más información.
print [-Rnprsu Imprime la salida del shell. Si no especifica ningún distintivo o si especifica los
[n]] [Argumento ...] distintivos de guión (-) o doble guión (—), los argumentos se imprimen en la salida
estándar tal como describe el mandato echo. Los distintivos hacen lo siguiente:
-R
Imprime en modalidad bruta (los convenios de escape del mandato echo se
pasan por alto). El distintivo -R imprime todos los argumentos y distintivos
subsiguientes distintos de -n.
-n
Impide que se añada un carácter de nueva línea a la salida.
-p
Graba los argumentos en el conducto del proceso ejecutado con |& en lugar de
en la salida estándar.
-r
Imprime en modalidad bruta. Los convenios de escape del mandato echo se
pasan por alto.
-s
Graba los argumentos en el archivo histórico en lugar de en la salida estándar.
-u
Especifica un número de unidad de descriptor de archivo de un dígito, n, en el
que se coloca la salida. El valor predeterminado es 1.

pwd Equivale a print -r - $PWD.


Nota: El mandato interno pwd del shell Korn no soporta los enlaces
simbólicos.

read [-prsu [n ]] Acepta la entrada del shell. Se lee una línea y ésta se divide en campos, utilizando
[Indicador? los caracteres de la variable IFS como separadores.
Nombre]
Para obtener más información, consulte el mandato read.
[Nombre...]

Gestión del sistema operativo 251


Elemento Descripción
setgroups Ejecuta el mandato /usr/bin/setgroups, el cual se ejecuta como un shell separado.
Consulte el mandato setgroups para obtener información acerca de este
mandato. No obstante, existe una diferencia. El mandato incorporado setgroups
invoca un subshell, pero el mandato setgroups sustituye el shell que está
ejecutándose actualmente. Puesto que el mandato incorporado sólo recibe soporte
por razones de compatibilidad, se recomienda que los scripts utilicen el nombre
absoluto de vía de acceso /usr/bin/setgroups en lugar del mandato
incorporado del shell.
setsenv Ejecuta el mandato /usr/bin/setsenv, que sustituye al shell actualmente en
ejecución. Consulte el manual setsenv para obtener información acerca de este
mandato.
test Es igual a [expresión]. Consulte el apartado “Expresiones condicionales para el
shell Korn o shell POSIX” en la página 224 para obtener información acerca de su
utilización y conocer su descripción.

252 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
ulimit [- Establece o visualiza los límites de recursos de procesos del usuario, tal como se
HSacdfmst ] definen en el archivo /etc/security/limits. Este archivo contiene los límites
[Límite] por omisión siguientes:

fsize = 2097151
core = 2048
cpu = 3600
data = 131072
rss = 65536
stack = 8192
threads = -1

Estos valores se utilizan como valores predeterminados cuando se añade un


usuario al sistema. Los valores se establecen con el mandato mkuser cuando el
usuario se añade al sistema o se cambia con el mandato chuser.
Las categorías de los límites pueden ser dinámicas o fijas. Los usuarios pueden
cambiar sus límites flexibles, hasta el valor máximo establecido por los límites fijos,
utilizando el mandato ulimit. Debe tener autorización de usuario root para
cambiar los límites fijos de recursos.
Muchos sistemas no contienen uno o más de dichos límites. El límite de un recurso
especificado se establece cuando se especifica el parámetro Límite. El valor del
parámetro Límite puede ser un número de la unidad especificada con cada recurso
o el valor unlimited. Puede especificar los distintivos del mandato ulimit
siguientes:
-H
Especifica que se define el límite fijo del recurso proporcionado. Si tiene
autorización de usuario root, puede aumentar el límite fijo. Cualquier usuario
puede reducirlo.
-S
Especifica que se define el límite dinámico para el recurso proporcionado. Un
límite limitado puede aumentarse hasta el valor del límite fijo. Si no se
especifica la opción -H ni -S, el límite se aplica a ambos.
-a
Lista todos los límites de recursos actuales.
-c
Especifica el número de bloques de 512 bytes en el tamaño de vuelcos de
imagen de memoria.
-d
Especifica el tamaño, en KB, del área de datos.
-f
Especifica el número de bloques de 512 bytes para archivos grabados por los
procesos hijo (pueden leerse archivos de cualquier tamaño).
-m
Especifica el número de KB para el tamaño de la memoria física.
-n
Especifica el límite en el número de descriptores de archivos que un proceso
podría haber abierto.
-r
Especifica el límite en el número de hebras por proceso.
-s
Especifica el número de KB para el tamaño del área de pila.
-t
Especifica el número de segundos que se utilizará en cada proceso.

Gestión del sistema operativo 253


Elemento Descripción

El límite del recurso actual se imprime cuando se omite la variable Límite. El límite
flexible se imprime, a menos que especifique el distintivo -H. Cuando especifique
más de un recurso, el nombre y unidad del límite se imprimen antes del valor. Si no
se proporciona ninguna opción, se supone el distintivo -f. Cuando cambie el valor,
establezca los límites fijos y flexibles para Límite a menos que especifique -H o -S.
Para obtener más información sobre los límites de recursos del usuario y del
sistema, consulte la subrutina getrlimit, setrlimit o vlimit.

umask [-S ] Determina los permisos de archivo. Este valor, junto con los permisos del proceso
[Máscara] de creación, determina los permisos de un archivo cuando se crea el archivo. El
valor predeterminado es 022. Si no se especifica el parámetro Máscara, el mandato
umask visualiza, en salida estándar, la máscara de creación de modalidad de
archivo del entorno de shell actual.
Para obtener más información acerca de los permisos de archivos, consulte el
mandato umask.

unalias { -a | Elimina la definición de cada nombre de alias que se ha especificado o bien elimina
NombreAlias... } todas las definiciones de alias si se utiliza el distintivo -a. Se eliminan las
definiciones de alias del entorno de shell actual.
Para obtener más información, consulte el mandato unalias.

wait [IDProceso...] Espera al trabajo especificado y termina. Si no especifica un trabajo, el mandato


espera a los procesos hijo activos actualmente. El estado de salida de este
mandato es el del proceso al que espera.
Para obtener más información, consulte el mandato wait.

whence [-pv ] Indica, para cada nombre especificado, cómo se interpretaría si se utilizara como
Nombre ... un nombre de mandato. Cuando se utilice sin ninguno de los distintivos, whence
visualizará el nombre absoluto de vía de acceso, si existe, que corresponde a cada
nombre.
-p
Realiza una búsqueda de vía de acceso para el nombre o nombres
especificados, aunque estos sean alias, funciones o palabras reservadas.
-v
Produce un informe más detallado que especifica el tipo de cada nombre.

Control de trabajos en el shell Korn o el shell POSIX


El shell Korn, o el shell POSIX, proporciona un recurso para controlar secuencias de mandatos o trabajos.
Cuando ejecuta el mandato especial set -m, el shell Korn asocia un trabajo a cada conducto. Mantiene
una tabla de los trabajos actuales, que se imprimen mediante el mandato jobs, y les asigna números
enteros pequeños.
Cuando se inicia un trabajo como proceso en segundo plano con un ampersand (&), el shell imprime una
línea similar a la siguiente:

[1] 1234

Esta salida indica que el trabajo, que se ha iniciado como proceso en segundo plano, era el trabajo
número 1. También muestra que el trabajo tenía un proceso (de nivel superior) cuyo ID de proceso era
1234.
Si va a ejecutar un trabajo y desea efectuar alguna otra operación, utilice la secuencia de teclas Control-Z.
Esta secuencia de teclas envía una señal STOP al trabajo actual. Por lo general, el shell indica que el

254 AIX Versión 7.2: Gestión del sistema operativo


trabajo se ha detenido y, a continuación, visualiza un indicador de shell. Seguidamente, puede manipular
el estado de ese trabajo (estableciéndolo como proceso en segundo plano con el mandato bg), ejecutar
otros mandatos y, finalmente, volver a establecer el trabajo como proceso en primer plano con el
mandato fg. La secuencia de teclas Control-Z se aplica inmediatamente y es como una interrupción en
tanto que, cuando se escribe la secuencia, el shell descarta la salida pendiente y la entrada no leída.
Un trabajo que se ejecuta en segundo plano se detiene e intenta leer desde el terminal. Normalmente, se
permite a los trabajos en segundo plano generar salida. Puede inhabilitar esta opción emitiendo el
mandato stty tostop. Si establece esta opción del terminal, los trabajos en segundo plano se detendrán
cuando intenten producir la salida o leer la entrada.
Puede hacer referencia a los trabajos del shell Korn de varios modos. A un trabajo se hace referencia por
medio del ID de proceso de cualquiera de sus procesos o bien de una de las formas siguientes:

Elemento Descripción
%Número Especifica el trabajo que tiene el número especificado.
%Serie Especifica cualquier trabajo cuya línea de mandatos empieza por la variable Serie.
%?Serie Especifica cualquier trabajo cuya línea de mandato contiene la variable Serie.
%% Especifica el trabajo actual.
%+ Equivale a %%.
%- Especifica el trabajo anterior.

Este shell reconoce inmediatamente si el estado del proceso ha cambiado. Normalmente, le informa
siempre que un trabajo queda bloqueado de forma que no es posible continuar. El shell realiza esta
acción justo antes de imprimir una indicación, por lo tanto, no vuelve a interrumpir el trabajo del usuario.
Cuando la modalidad de supervisión está habilitada, cada trabajo en segundo plano que se completa
desencadena las rupturas que se han establecido para la señal CHLD.
Si intenta abandonar el shell (escribiendo exit o utilizando la secuencia de teclas Control-D) mientras
hay trabajos detenidos o en ejecución, el sistema avisa con el mensaje Hay trabajos detenidos (en
ejecución). Utilice el mandato jobs para ver qué trabajos están afectados. Si, inmediatamente, vuelve
a intentar salir, el shell finalizará los trabajos detenidos y en ejecución sin avisarle.

Manejo de señales
Las señales SIGINT y SIGQUIT para un mandato invocado se pasan por alto si el mandato va seguido de
un ampersand (&) y la opción monitor del trabajo no está activa. De lo contrario, las señales tienen los
valores que el shell hereda de su padre.
Cuando una señal para la que se ha definido una ruptura se recibe mientras el shell está esperando a que
finalice un mandato en primer plano, la ruptura asociada con dicha señal no se ejecutará hasta que haya
finalizado el mandato en primer plano. Por lo tanto, no se realiza una ruptura en una señal CHILD hasta
que finaliza el trabajo en primer plano.

Edición en línea en el shell Korn o shell POSIX


Normalmente, el usuario escribe cada línea de mandatos desde un dispositivo de terminal y utiliza al final
de cada línea un carácter de nueva línea (RETURN o LINE FEED). Cuando se activa la opción de edición
emacs, gmacs o vi, se puede editar la línea de mandatos.
Los siguientes mandatos entran en las modalidades de edición:

Elemento Descripción
set -o emacs Entra en la modalidad de edición emacs e inicia un editor en línea de estilo emacs.
set -o gmacs Entra en la modalidad de edición emacs e inicia un editor en línea de estilo gmacs.
set -o vi Entra en la modalidad de edición vi e inicia un editor en línea de estilo vi.

Gestión del sistema operativo 255


Cada vez que a la variable VISUAL o EDITOR se le asigna un valor que finaliza por cualquiera de estos
nombres de opciones, se selecciona automáticamente una opción de edición.
Nota: Para utilizar las funciones de edición, el terminal debe aceptar RETURN como retorno de carro sin
salto de línea. Un espacio debe sobregrabar el carácter actual de la pantalla.
Cada modalidad de edición abre una ventana en la línea actual. La anchura de la ventana es el valor de la
variable COLUMNS, si se ha definido; de lo contrario, la anchura equivale a 80 espacios de carácter. Si la
línea es superior a la anchura de la ventana menos dos, el sistema notifica que está viendo un marco al
final de la ventana. A medida que se mueve el cursor y llega a los límites de la ventana, la ventana se
centra alrededor del cursor. A continuación se indican las marcas que se visualizan:

Elem Descripción
ento
> Indica que la línea continúa por el lado derecho de la ventana.
< Indica que la línea se amplía en el lado izquierdo de la ventana.
* Indica que la línea se amplía en ambos lados de la ventana.

Los mandatos de búsqueda en cada modalidad de edición proporcionan acceso al archivo histórico del
shell Korn. Sólo se coincide con series. Si el carácter inicial de la serie es un acento circunflejo (^), la
coincidencia debe empezar en el primer carácter de la línea.
Conceptos relacionados
Mandatos del shell Korn o shell POSIX
El shell Korn es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Se
ajusta a la Interfaz de Sistema Operativo Portable para Entornos del Sistema (POSIX), un estándar
internacional para sistemas operativos.

Modalidad de edición emacs


En la modalidad de edición emacs se entra cuando se habilita la opción emacs o la opción gmacs. La
única diferencia entre estas dos modalidades es el modo en que cada una de ellas maneja el mandato de
edición Control-T.
Para editar, mueva el cursor hasta el punto que necesita corrección e inserte o suprima caracteres o
palabras, según se requiera. Todos los mandatos de edición son caracteres de control o secuencias de
escape.
Los mandatos de edición funcionan desde cualquier punto de una línea (no sólo cuando se especifican al
principio). No pulse la tecla Intro o el salto de línea (flecha abajo) después de mandatos de edición,
excepto como se indique.

Elemento Descripción
Control-F Mueve el cursor hacia adelante (derecha) un carácter.
Esc-F Mueve el cursor hacia adelante una palabra (una serie de caracteres que consta de
sólo letras, dígitos y subrayados).
Control-B Mueve el cursor hacia atrás (izquierda) un carácter.
Esc-B Mueve el cursor hacia atrás una palabra.
Control-A Mueve el cursor al principio de la línea.
Control-E Mueve el cursor al final de la línea.
Control-] c Hace avanzar el cursor por la línea actual hasta el carácter indicado.
Esc-Control-] c Hace retroceder el cursor por la línea actual hasta el carácter indicado.
Control-X Control- Intercambia el cursor y la marca.
X

256 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
ERASE Suprime el carácter anterior. (Carácter de supresión definido por el usuario tal
como define el mandato stty, normalmente la secuencia de teclas Control-H.)
Control-D Suprime el carácter actual.
Esc-D Suprime la palabra actual.
Esc-Retroceso Suprime la palabra anterior.
Esc-H Suprime la palabra anterior.
Esc-Supr Suprime la palabra anterior. Si el carácter de interrupción es la tecla Supr, este
mandato no funciona.
Control-T Cambia el carácter actual por el siguiente carácter en modalidad emacs.
Transpone los dos caracteres anteriores en modalidad gmacs.
Control-C Convierte a mayúsculas el carácter actual.
Esc-C Convierte a mayúsculas la palabra actual.
Esc-L Convierte la palabra actual a minúsculas.
Control-K Suprime desde el cursor hasta el final de la línea. Si va precedido de un parámetro
numérico cuyo valor es menor que el de la posición actual del cursor, este
mandato de edición suprime desde la posición especificada hasta donde se
encuentra el cursor. Si va precedido de un parámetro numérico cuyo valor es
mayor que el de la posición actual del cursor, este mandato de edición suprime
desde donde se encuentra el cursor hasta la posición del cursor que se ha
especificado.
Control-W Suprime desde el cursor hasta la marca.
Esc-P Sitúa la región desde el cursor hasta la marca en la pila.
KILL Carácter para matar definido por el usuario que se define en el mandato stty y
que, generalmente, corresponde a la secuencia de teclas Control-G o a @. Mata
toda la línea actual. Si se entran dos caracteres de matar en sucesión, todos los
caracteres de matar posteriores provocan un salto de línea (útil cuando se utilizan
terminales de papel).
Control-Y Restaura el último elemento eliminado de la línea. (Devuelve el elemento a la
línea).
Control-L Avanza una línea e imprime la línea actual.
Control-@ (Carácter nulo) Define una marca.
Esc-espacio Define una marca.
Control-J (Nueva línea) Ejecuta la línea actual.
Control-M (Retorno) Ejecuta la línea actual.
EOF Procesa el carácter de fin de archivo, normalmente la secuencia de teclas Control-
D, como fina de archivo sólo si la línea actual es nulo.
Control-P Busca el mandato anterior. Cada vez que se entra la secuencia de teclas Control-P,
se accede al mandato anterior cada vez. Retrocede una línea cuando no está en la
primera línea de un mandato de múltiples líneas.
Esc-< Busca la línea de histórico menos reciente (más antigua).
Esc-> Busca la línea de histórico más reciente (más nueva).

Gestión del sistema operativo 257


Elemento Descripción
Control-N Busca la siguiente línea de mandatos. Cada vez que se pulsa la secuencia de teclas
Control-N, se accede a la siguiente línea sucesiva.
Control-R Serie Invierte el histórico de búsqueda de una línea de mandatos anterior que contiene
la serie que especifica el parámetro Serie. Si se proporciona un valor de 0, la
búsqueda es hacia adelante. La serie especificada termina con Intro o un carácter
de nueva línea. Si la serie va precedida de un acento circunflejo (^), la línea de la
coincidencia debe empezar por el parámetro Serie. Si se omite el parámetro Serie,
se accede a la siguiente línea de mandatos que contiene el parámetro Serie más
reciente. En este caso, un valor de 0 invierte la dirección de la búsqueda.
Control-O (Operar) Ejecuta la línea actual y busca la línea relativa a la línea actual del archivo
histórico.
Esc Dígitos (Escape) Define el parámetro numérico. Los dígitos se toman como un parámetro
para el siguiente mandato. Los mandatos que aceptan un parámetro son Control-
F, Control-B, ERASE, Control-C, Control-D, Control-K, Control-R, Control-P,
Control-N, Control-], Esc-., Esc-Control-], Esc-_, Esc-B, Esc-C, Esc-D, Esc-F,
Esc-H , Esc-L y Esc-Control-H.
Esc Letras (Tecla de software) Busca en la lista de alias un alias denominado _Letra. Si se
define un alias con este nombre, su valor se sitúa en la cola de entrada. El
parámetro Letra no debe especificar una de las funciones de escape.
Esc-[ Letras (Tecla de software) Busca en la lista de alias un alias cuyo nombre es subrayado
doble Letra (__Letra). Si se define un alias con este nombre, su valor se sitúa en la
cola de entrada. Este mandato puede utilizarse para teclas de función de programa
en muchos terminales.
Esc-. Inserta en la línea la última palabra del mandato anterior. Si va precedido de un
parámetro numérico, el valor de este parámetro determina qué palabra insertar en
lugar de la última palabra.
Esc-_ Igual que la secuencia de teclas Esc- anterior.
Esc-* Intenta realizar la sustitución de nombre de archivo en la palabra actual. Se añade
un asterisco (*) si la palabra no coincide con ningún archivo o contiene caracteres
de patrón especiales.
Esc-Esc Finalización de nombre de archivo. Sustituye la palabra actual por el prefijo más
largo común de todos los nombres de archivo que coinciden con la palabra actual
con un asterisco añadido. Si la coincidencia es exclusiva, se añade una barra
inclinada (/) si el archivo es un directorio y se añade un espacio si el archivo no es
un directorio.
Esc-= Lista los archivos que coinciden con el patrón de palabras actual si se ha añadido
un asterisco (*).
Control-U Multiplica el parámetro del mandato siguiente por 4.
\ Ignora el siguiente carácter. Los caracteres de edición y los caracteres ERASE,
KILL y INTERRUPT (normalmente la tecla Supr) se pueden especificar en una
línea de mandatos o en una serie de búsqueda y van precedidos por una barra
inclinada invertida (\). La barra inclinada invertida elimina las funciones de edición
del siguiente carácter, si existe alguno.
Control-V Muestra la versión del shell.
Esc-# Inserta una almohadilla (#) al principio de la línea y, a continuación, ejecuta la
línea. Esto hace que se inserte un comentario en el archivo histórico.

258 AIX Versión 7.2: Gestión del sistema operativo


Modalidad de edición vi
La modalidad de edición vi dispone de dos modalidades de escritura.
Las modalidades son:
• Modalidad de entrada. Cuando entra un mandato, el editor vi está en modalidad de entrada.
• Modalidad de control. Pulse la tecla Esc para utilizar la modalidad de control.
La mayoría de los mandatos de control aceptan un parámetro Cuenta (o número total) de repetición
opcional delante del mandato. Cuando se está en modalidad vi en la mayoría de sistemas, se habilita
inicialmente el proceso canónico. Se hará un eco del mandato si se da una o más de las condiciones
siguientes:
• La velocidad es de 1200 baudios o superior.
• El mandato contiene caracteres de control.
• Ha transcurrido menos de un segundo desde que se imprimió el indicador.
El carácter Esc termina el proceso canónico para el resto del mandato y puede entonces modificar la línea
de mandatos. Este esquema tiene las ventajas del proceso canónico con el eco de escritura anticipado de
la modalidad bruta. Si también se ha establecido la opción viraw, el proceso canónico siempre está
inhabilitado. Esta modalidad es implícita en los sistemas que no dan soporte a dos delimitadores de fin de
línea alternativos y podría ser útil para determinados terminales.
Los mandatos de edición vi disponibles están agrupados por categorías. Las categorías son las siguientes:

Mandatos de edición de entrada


A continuación se describen los mandatos de edición de entrada para el shell Korn.
Nota: De forma predeterminada, el editor está en modalidad de entrada.

Elemen Descripción
to
ERASE Suprime el carácter anterior. (Carácter para borrar definido por el usuario, definido en el
mandato stty y que, generalmente, es Control-H o #.)
Control Suprime la palabra separada por blancos anterior.
-W
Control Finaliza el shell.
-D
Control Ignora el siguiente carácter. Los caracteres de edición, como por ejemplo ERASE o KILL,
-V pueden entrarse en una línea de mandatos o en una serie de búsqueda si van precedidos de
una secuencia de teclas Control-V. La secuencia de teclas Control-V elimina las funciones de
edición del siguiente carácter (si existe).
\ Ignora el siguiente carácter ERASE o KILL.

Mandatos de edición de movimiento


A continuación se describen los mandatos de edición de movimiento para el shell Korn.
Los mandatos de edición de movimiento mueven el cursor, tal como se indica a continuación:

Elemento Descripción
[Cuenta]l Mueve el cursor hacia adelante (derecha) un carácter.
[Cuenta]w Mueve el cursor hacia adelante una palabra alfanumérica.
[Cuenta]W Mueve el cursor al principio de la siguiente palabra que sigue a un blanco.
[Cuenta]e Mueve el cursor al final de la palabra actual.
[Cuenta]E Mueve el cursor al final de la palabra separada por un blanco actual.

Gestión del sistema operativo 259


Elemento Descripción
[Cuenta]h Mueve el cursor hacia atrás (izquierda) un carácter.
[Cuenta]b Mueve el cursor hacia atrás una palabra.
[Cuenta]B Mueve el cursor a la palabra separada por blancos anterior.
[Cuenta]| Mueve el cursor a la columna que especifica el parámetro Cuenta.
[Cuenta]fc Busca el siguiente carácter c en la línea actual.
[Cuenta]Fc Busca el carácter c anterior en la línea actual.
[Cuenta]tc Equivale a f seguido de h.
[Cuenta]Tc Equivale a F seguido de l.
[Cuenta]; Repite el número de veces que especifica el parámetro Cuenta el último mandato de
búsqueda de un solo carácter: f, F, t o T.
[Cuenta], Invierte el último mandato de búsqueda de un solo carácter el número de veces que
especifica el parámetro Cuenta.
0 Mueve el cursor al principio de una línea.
^ Mueve el cursor al primer carácter no blanco de una línea.
$ Mueve el cursor al final de una línea.

Mandatos de edición de búsqueda


Los mandatos de edición de búsqueda acceden al histórico de mandatos tal como se indica a
continuación:

Elemento Descripción
[Cuenta]k Busca el mandato anterior.
[Cuenta]- Equivale al mandato k.
[Cuenta]j Busca el siguiente mandato. Cada vez que se entra el mandato j, se accede al siguiente
mandato.
[Cuenta]+ Equivale al mandato j.
[Cuenta]G Busca el mandato cuyo número especifica el parámetro Cuenta. El valor predeterminado
es el mandato histórico menos reciente.
/Serie Busca hacia atrás en el histórico un mandato anterior que incluye la serie especificada. La
serie termina con un RETURN o un carácter de nueva línea. Si la serie especificada va
precedida de un acento circunflejo (^), la línea de la coincidencia debe empezar por el
parámetro Serie. Si el valor del parámetro Serie es nulo, se utiliza la serie anterior.
?Serie Igual que /Serie a excepción de que la búsqueda se efectúa hacia adelante.
n Busca la siguiente coincidencia del último patrón para /Serie o ? .
N Busca la siguiente coincidencia del último patrón para /Serie o ? , pero en la dirección
opuesta. Busca en el histórico la serie que se ha especificado en el mandato /Serie
anterior.

Mandatos de edición de modificación de texto


Los mandatos de edición de modificación de texto modifican la línea, tal como se indica a continuación:

Elemento Descripción
a Entra en modalidad de entrada y entra texto detrás del carácter actual.

260 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
A Añade texto al final de la línea. Equivale al mandato $a.
[Cuenta]cMovimiento
c[Cuenta]Movimiento Suprime desde el carácter actual hasta el carácter al que el parámetro
Movimiento especifica que se debe mover el cursos y entra en modalidad de
entrada. Si el valor del parámetro Movimiento es c, se suprime toda la línea
y se entra en modalidad de entrada.
C Suprime desde el carácter actual hasta el final de la línea y entra en
modalidad de entrada. Equivale al mandato c$.
S Equivale al mandato cc.
D Suprime desde el carácter actual hasta el final de la línea. Equivalente al
mandato d$.

Elemento Descripción
[Cuenta]dMovimiento Suprime el carácter actual hasta, e inclusive, el carácter que especifica el
parámetro Movimiento. Si Movimiento es d, se suprime toda la línea.
d[Cuenta]Movimiento

i Entra en modalidad de entrada e inserta texto delante del carácter actual.


I Inserta texto antes del principio de la línea. Equivalente al mandato 0i.
[Cuenta]P Sitúa la modificación de texto anterior antes del cursor.
[Cuenta]p Sitúa la modificación de texto anterior después del cursor.
R Entra en modalidad de entrada y escribe sobre los caracteres de la pantalla.
[Cuenta]rc Sustituye el número de caracteres que especifica el parámetro Cuenta,
empezando desde la posición actual del cursor, por el carácter que
especifica el parámetro c. Este mandato también avanza el cursor después
de sustituir los caracteres.
[Cuenta]x Suprime el carácter actual.
[Cuenta]X Suprime el carácter anterior.
[Cuenta]. Repite el mandato de modificación de texto anterior.
[Cuenta]~ Invierte las mayúsculas y las minúsculas del número de caracteres
especificado por el parámetro Cuenta, empezando en la posición actual del
cursor y hace avanzar el cursor.
[Cuenta]_ Añade la palabra que especifica el parámetro Cuenta del mandato anterior y
entra en modalidad de entrada. Si se ha omitido el parámetro Cuenta, se
utilizará la última palabra.
* Añade un asterisco (*) a la palabra actual e intenta realizar una sustitución
de nombre de archivo. Si no se encuentra ninguna coincidencia, suena el
timbre. De lo contrario, la palabra se sustituye por el patrón coincidente y se
entra en modalidad de entrada.
\ Finalización de nombre de archivo. Sustituye la palabra actual por el prefijo
común más largo de todos los nombres de archivo que coinciden con la
palabra actual con un asterisco (*) añadido. Si la coincidencia es exclusiva,
se añade una barra inclinada / si el archivo es un directorio. Si el archivo no
es un directorio, se añadirá un espacio.

Gestión del sistema operativo 261


Mandatos de edición varios
Se utilizan comúnmente los siguientes mandatos editables.

Elemento Descripción
[Cuenta]yMovimiento
y[Cuenta]Movimiento Extrae el carácter actual hasta, e inclusive, el carácter que marca la posición
del cursor que especifica el parámetro Movimiento y coloca todos esos
caracteres en el almacenamiento intermedio de supresión. El texto y el cursor
permanecen intactos.
Y Mueve desde la posición actual hasta el final de la línea. Equivalente al
mandato y$.
u Revierte el último mandato de modificación de texto.
U Revierte todos los mandatos de modificación de texto efectuados en la línea.
[Cuenta]v Devuelve el mandato fc -e ${VISUAL:-${EDITOR:-vi}} Cuenta del
almacenamiento intermedio de entrada. Si se ha omitido el parámetro Cuenta,
se utilizará la línea actual.
Control-L Avanza una línea e imprime la línea actual. Este mandato sólo es vigente en
modalidad de control.
Control-J (Nueva línea) Ejecuta la línea actual independientemente de la modalidad.
Control-M (Retorno) Ejecuta la línea actual independientemente de la modalidad.
# Envía la línea tras la inserción de una almohadilla (#) al principio de la línea. Útil
si desea insertar la línea actual en el histórico sin ejecutarla.
Si la línea de mandatos contiene un carácter de conducto, un carácter de punto
y coma o un carácter de nueva línea, se insertan almohadillas adicionales (#) al
principio de cada uno de estos símbolos. Para suprimir todas las almohadillas,
recupere la línea de mandatos del histórico y entre otra almohadilla (#).

= Lista los nombres de archivo que coinciden con la palabra actual si se hubiera
añadido un asterisco.
@Letra Busca en la lista de alias un alias denominado _Letra. Si se ha definido un alias
con este nombre, su valor se sitúa en la cola de entrada para proceso.

Mandatos del shell Korn o shell POSIX


El shell Korn es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Se
ajusta a la Interfaz de Sistema Operativo Portable para Entornos del Sistema (POSIX), un estándar
internacional para sistemas operativos.
POSIX no es un sistema operativo, sino que es un estándar cuya finalidad es facilitar la portabilidad de las
aplicaciones, en el nivel del fuente, entre muchos sistemas. Las funciones de POSIX se crean al principio
del shell Korn. El shell Korn (también conocido como el shell POSIX) ofrece muchas de las mismas
funciones de los shells Bourne y C, por ejemplo posibilidades de redirección E/S, sustitución de variables
y sustitución de nombres de archivo. También incluye algunas funciones de mandatos y de programación
adicionales:
Nota: Está disponible una versión restringida del shell Korn, denominada rksh. Para obtener más
detalles, consulte el mandato rksh.

262 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
Evaluación El shell Korn, o shell POSIX, puede efectuar aritmética de enteros utilizando el
aritmética mandato let incorporado, utilizando cualquier base de 2 a 36.
Para habilitar el reconocimiento de números empezando por 0 (Octal) y 0x
(Hexadecimal) en el shell Korn, ejecute los mandatos siguientes:
export XPG_SUS_ENV=ON
La exportación de la variable XPG_SUS_ENV hace que los mandatos que se
ejecutan y las bibliotecas que utilizan se ajusten totalmente a POSIX.
Nota: Puesto que todo el sistema de bibliotecas se ajusta a POSIX, un
comportamiento predeterminado esperado de un mandato predeterminado
puede cambiar.
export OCTAL_CONST=ON
La exportación de esta variable hace que la interpretación de constantes
declaradas en el shell Korn se ajusten a POSIX en cuanto a lo que se refiere al
reconocimiento de constantes octales y hexadecimales.

Histórico de El shell Korn o shell POSIX almacena un archivo que registra todos los mandatos
mandatos que entre. Puede utilizar un editor de texto para alterar un mandato en este
archivo histórico y volver a emitir el mandato.
Recurso de Le permite ejecutar programas como procesos en segundo plano y enviar y recibir
coproceso información para esos procesos en segundo plano.
Edición El shell Korn o shell POSIX ofrece opciones de edición en línea que le permiten
editar la línea de mandatos. Están disponibles editores similares a emacs, gmacs y
vi.

Un mandato de shell Korn es uno de los siguientes:


• Mandato simple
• Conducto
• Lista
• Mandato compuesto
• Función
Cuando emite un mandato en el shell Korn o en el shell POSIX, el shell evalúa el mandato y realiza lo
siguiente:
• Realiza todas las sustituciones indicadas.
• Determines si el mandato contiene una barra inclinada (/). Si es así, el shell ejecuta el programa
indicado por el nombre de vía de acceso especificado.
Si el mandato no contiene una barra inclinada (/), el shell Korn o el shell POSIX continúa con las acciones
siguientes:
• Determina si el mandato es un mandato incorporado especial. Si es así, el shell ejecuta el mandato
dentro del proceso de shell actual.
• Compara el mandato con las funciones definidas por el usuario. Si el mandato coincide con una función
definida por el usuario, los parámetros posicionales se guardan y, a continuación, vuelven a
establecerse en los argumentos de la llamada function. Cuando la función se completa o bien emite un
retorno, la lista de parámetros posicionales se restaura y se ejecuta cualquier ruptura que se haya
establecido en EXIT dentro de la función. El valor de una función es el valor del último mandato
ejecutado. Una función se lleva a cabo en el proceso de shell actual.
• Si el nombre de mandato coincide con el nombre de un mandato incorporado normal, se invocará este
mandato incorporado normal.

Gestión del sistema operativo 263


• Crea un proceso e intenta ejecutar el mandato utilizando el mandato exec (si no se trata de un mandato
incorporado ni una función definida por el usuario).
El shell Korn, o shell POSIX, busca una vía de acceso de un archivo ejecutable en todos los directorios. La
variable de shell PATH define la vía de búsqueda del directorio que contiene el mandato. Los nombres de
directorio alternativos se separan mediante dos puntos (:). La vía de acceso por omisión es /usr/bin:
(que especifica el directorio /usr/bin y el directorio actual, en este orden). El directorio actual se
especifica mediante dos o más signos de dos puntos o mediante un signo de dos puntos al principio o al
final de la lista de vías de acceso.
Si el archivo tiene permiso de ejecución pero no es un directorio o un archivo [Link], el shell da por
supuesto que contiene mandatos de shell. El proceso de shell actual crea un subshell para leer el archivo.
Todos los alias, funciones y parámetros designados no exportados se eliminan del archivo. Si el archivo
de mandatos de shell tiene permiso de lectura, o si los bits setuid o setgid se han establecido en el
archivo, el shell ejecuta un agente que configura los permisos y ejecuta el archivo de mandatos de shell
pasados como un archivo abierto. Un mandato entre paréntesis se ejecuta en un subshell sin eliminar las
cantidades no exportadas.
Conceptos relacionados
Shells disponibles
Los siguientes shells se proporcionan con AIX.
Recurso de coproceso
El shell Korn o el shell POSIX le permiten ejecutar uno o varios mandatos como procesos en segundo
plano. Estos mandatos, que se ejecutan desde un script de shell, se denominan coprocesos.
Edición en línea en el shell Korn o shell POSIX
Normalmente, el usuario escribe cada línea de mandatos desde un dispositivo de terminal y utiliza al final
de cada línea un carácter de nueva línea (RETURN o LINE FEED). Cuando se activa la opción de edición
emacs, gmacs o vi, se puede editar la línea de mandatos.
Evaluación aritmética en el shell Korn o shell POSIX
El mandato incorporado normal let del shell Korn o del shell POSIX le permite realizar la aritmética de
enteros.
Mandatos incorporados del shell Korn o POSIX
Los mandatos especiales se crean en el shell Korn y en el shell POSIX y se ejecutan en el proceso de
shell.

Mandatos compuestos del shell Korn


Un mandato compuesto puede ser una lista de mandatos simples, un conducto o puede empezar por una
palabra reservada. Cuando escriba scripts de shell, la mayor parte del tiempo utilizará mandatos
compuestos como, por ejemplo, if, while y for.
La siguiente lista muestra los mandatos de shell Korn o shell POSIX:

Sintaxis del mandato Descripción


for Identificador [in Cada vez que se ejecuta un mandato for, el parámetro Identificador se
Palabra ...] ;do Lista ;done establece en la siguiente palabra de la lista in Palabra ... Si se omite el
mandato in Palabra ..., el mandato for ejecuta el mandato do Lista una vez
para cada parámetro posicional que se ha establecido. La ejecución finaliza
cuando no hay más palabras en la lista.

264 AIX Versión 7.2: Gestión del sistema operativo


Sintaxis del mandato Descripción
select Identificador [in Un mandato select imprime en el error estándar (descriptor de archivo 2)
Palabra ...] ;do Lista ;done el conjunto especificado de palabras, cada una de las cuales va precedida
de un número. Si se omite el mandato in Palabra ..., en su lugar se utilizan
los parámetros posicionales. Se imprime el indicador PS3 y se lee una línea
de la entrada estándar. Si esta línea se compone del número de una de las
palabras de la lista, el valor del parámetro Identificador se establece en la
palabra que corresponde a ese número.
Si la línea leída de la entrada estándar está vacía, vuelve a imprimirse la
lista de selección. De lo contrario, el valor del parámetro Identificador se
establece en nulo. El contenido de la línea leída de la entrada estándar se
guarda en el parámetro REPLY. El parámetro Lista se ejecuta para cada
selección hasta que se encuentra un carácter de interrupción o de fin de
archivo.

case Palabra in [[ ( ] Un mandato case ejecuta el parámetro Lista asociado al primer parámetro
Patrón [ | Patrón] ... ) Patrón que coincide con el parámetro Palabra. El formato de los patrones es
Lista ;;] ... esac el mismo que se utiliza para la sustitución de nombre de archivo.
if Lista ;then Lista [elif El parámetro Lista especifica una lista de los mandatos que han de
Lista ;then Lista] ... [;else ejecutarse. El shell ejecuta primero el mandato if Lista. Si se devuelve un
Lista] ;fi estado de salida cero, ejecuta el mandato then Lista. De lo contrario, se
ejecutan los mandatos especificados por el parámetro Lista que sigue al
mandato elif.
Si el valor devuelto por el último mandato del mandato elif Lista es cero,
se ejecuta el mandato then Lista. Si el valor que el último mandato devuelve
en el mandato then Lista es cero, se ejecuta el mandato else Lista. Si ningún
mandato especificado por los parámetros Lista se ejecutan para el mandato
else o then, el mandato if devuelve un estado de salida cero.

while Lista ;do El parámetro Lista especifica una lista de los mandatos que han de
Lista ;done until Lista ;do ejecutarse. El mandato while ejecuta repetidamente los mandatos
Lista ;done especificados por el parámetro Lista. Si el estado de salida del último
mandato del mandato while Lista es cero, se ejecuta el mandato do Lista. Si
el estado de salida del último mandato del mandato while Lista no es cero,
el bucle finaliza. Si no se ejecuta ningún mandato de do Lista, el mandato
while devuelve un estado de salida cero. El mandato until puede utilizarse
en lugar del mandato while para anular la prueba de terminación del bucle.
( Lista ) El parámetro Lista especifica una lista de los mandatos que han de
ejecutarse. El shell ejecuta el parámetro Lista en un entorno separado.
Nota: Si se necesitan dos paréntesis de apertura adyacentes para el
anidamiento, debe insertar un espacio entre ellos para diferenciar entre el
mandato y la evaluación aritmética.

{ Lista; } El parámetro Lista especifica una lista de los mandatos que han de
ejecutarse. El parámetro Lista simplemente se ejecuta.
Nota: A diferencia de los metacaracteres ( ), { } indican palabras
reservadas (utilizadas para fines especiales, no como identificadores
declarados por el usuario). Para que puedan reconocerse, estas palabras
reservadas deben aparecer al principio de una línea o después de un punto
y coma (;).

[[Expresión]] Evalúa el parámetro Expresión. Si la expresión es cierta, el mandato


devuelve un estado de salida de cero.

Gestión del sistema operativo 265


Sintaxis del mandato Descripción
function Identificador Define una función a la que se hace referencia mediante el parámetro
{ Lista ;} o function Identificador. El cuerpo de la función es la lista especificada de mandatos
Identificador () {Lista ;} delimitados por { }. Los ( ) consisten en dos operadores, por lo que está
permitido mezclar caracteres en blanco con el identificador, ( y ), pero no
necesario.
time Conducto Ejecuta el parámetro Conducto. El tiempo transcurrido, la hora del usuario y
la hora del sistema se imprimen en error estándar.

Conceptos relacionados
Parámetros del shell Korn
A continuación se explican los parámetros del shell Korn

Inicio del shell


Puede iniciar el shell Korn con el mandato ksh, el mandato psh (shell POSIX) o el mandato exec.
Si el mandato exec inicia el shell y el primer carácter del argumento cero ($0) es un guión (-), se supone
que el shell es un shell de inicio de sesión. El shell primero lee los mandatos del archivo /etc/profile
y, después, del archivo .profile del directorio actual o del archivo $HOME/.profile, si existe uno de
estos archivos. A continuación, el shell lee los mandatos del archivo especificado realizando la sustitución
de parámetros en el valor de la variable de entorno ENV, si el archivo existe.
Si especifica el parámetro Archivo [Parámetro] al invocar al shell Korn o al shell POSIX, el shell ejecuta el
archivo de script que el parámetro Archivo identifica, incluido cualquier parámetro que se haya
especificado. El archivo de script especificado debe tener permiso de lectura; los valores setuid y setgid
se pasan por alto. El shell lee a continuación los mandatos.
Nota: No especifique un archivo de script con los distintivos -c o -s cuando invoque al shell
Korn o al shell POSIX.
Para obtener más información acerca de los parámetros posicionales, consulte el apartado “Parámetros
del shell Korn” en la página 234 .
Conceptos relacionados
Parámetros del shell Korn
A continuación se explican los parámetros del shell Korn

Entorno de shell Korn


Todas las variables (y los valores que se asocian a éstas) que un mandato puede reconocer al inicio de su
ejecución constituyen su entorno.
Este entorno incluye variables que un mandato hereda de sus variables y proceso padre especificados
como palabras clave en la línea de mandatos que llama al mandato. El shell interactúa con el entorno de
varios modos. Cuando se inicia, el shell explora el entorno y crea un parámetro para cada nombre
encontrado, proporcionando al parámetro el valor correspondiente y marcándolo para exportación. Los
mandatos ejecutados heredan el entorno.
Si modifica los valores de los parámetros del shell o crea nuevos valores utilizando los mandatos export
o typeset -x, los parámetros formarán parte del entorno. Por lo tanto, desde el punto de vista de
cualquier mandato ejecutado, el entorno se compone de pares nombre-valor originalmente heredados
por el shell, cuyos valores podría modificar el shell actual, además de cualquier adición que resulte de la
utilización de los mandatos export o typeset -x. El mandato ejecutado (subshell) reconocerá
cualquier modificación que éste realice en las variables de entorno que ha heredado pero, para que sus
shells o procesos hijo puedan reconocer los valores modificados, el subshell debe exportar esas
variables.
El entorno para cualquier mandato o función simple se modifica prefijando con una o más asignaciones
de parámetros. Un argumento de asignación de parámetros es una palabra con el formato
Identificador=Valor. Así pues, las dos expresiones siguientes son equivalentes (en lo que respecta a la
ejecución del mandato).

266 AIX Versión 7.2: Gestión del sistema operativo


TERM=450 Mandato argumentos

(export TERM; TERM=450; Mandato argumentos)

Funciones del shell Korn


La palabra reservada function define funciones del shell. El shell lee y almacena funciones internamente.
Los alias se resuelven cuando se lee la función. El shell ejecuta las funciones de la misma forma que los
mandatos, pasando los argumentos como parámetros posicionales.
El shell Korn o shell POSIX ejecuta funciones en el entorno desde el que se llama a las funciones. La
función y el script de invocación comparten todos los elementos siguientes; ello da lugar a que puedan
producirse efectos secundarios:
• Valores y atributos de variables (a menos que utilice el mandato typeset dentro de la función para
declarar una variable local)
• Directorio de trabajo
• Alias, definiciones de funciones y atributos
• Parámetro especial $
• Archivos abiertos
La función y el script de llamada no comparten los siguientes elementos y no hay efectos laterales:
• Parámetros posicionales
• Parámetro especial #
• Variables de una lista de asignación de variables cuando se invoca una función
• Variables que se han declarado utilizando el mandato typeset dentro de la función
• Opciones
• Rupturas. No obstante, la función también ignorará las señales ignoradas por el script de llamada.
Nota: En versiones anteriores del shell Korn, la función compartía las rupturas EXIT y ERR, así como el
script de invocación.
Si se ejecuta la ruptura de 0 o EXIT dentro del cuerpo de una función, la acción se ejecuta tras
completarse la función, en el entorno que ha llamado a la función. Si la ruptura se ejecuta fuera del
cuerpo de una función, la acción se ejecuta después de salir del shell Korn. En versiones anteriores del
shell Korn, no se ejecutaba ninguna ruptura 0 o EXIT fuera del cuerpo de una función después de salir de
la función.
Cuando se ejecuta una función, ésta tiene las mismas propiedades de error de sintaxis y de asignación de
variables que las que se describen en los mandatos incorporados del shell Korn o del shell POSIX.
El mandato compuesto se ejecuta siempre que se especifique el nombre de la función como nombre de
mandato simple. Los operandos del mandato pasarán a ser temporalmente los parámetros posicionales
durante la ejecución del mandato compuesto. El parámetro especial # también cambiará para reflejar el
número de operandos. El parámetro especial 0 no cambiará.
El mandato especial return se utiliza para volver de las llamadas a una función. Los errores en funciones
devuelven el control al llamador.
Los identificadores de función se listan con la opción -f o +f del mandato especial typeset. La opción -f
también lista el texto de las funciones. La definición de las funciones se elimina con la opción -f del
mandato especial unset.
Normalmente, se elimina la definición de las funciones cuando un shell ejecuta un script de shell. La
opción -xf del mandato especial typeset permite exportar una función a los scripts que se ejecutan sin
una invocación separada del shell. Las funciones que se deben definir en invocaciones separadas del
shell se deben especificar en el archivo ENV con la opción -xf del mandato especial typeset.

Gestión del sistema operativo 267


El estado de salida de la definición de una función es cero si la función se ha declarado
satisfactoriamente. De lo contrario, será mayor de cero. El estado de salida de una invocación de función
es el estado de salida del último mandato que ha ejecutado la función.
Conceptos relacionados
Parámetros del shell Korn
A continuación se explican los parámetros del shell Korn
Mandatos incorporados del shell Korn o POSIX
Los mandatos especiales se crean en el shell Korn y en el shell POSIX y se ejecutan en el proceso de
shell.

Histórico de mandatos del shell Korn o shell POSIX


El shell Korn o POSIX guarda los mandatos entrados desde el dispositivo de terminal en un archivo
histórico.
Si se ha establecido, el valor de la variable HISTFILE es el nombre del archivo histórico. Si la variable
HISTFILE no está establecida o no se puede grabar, el archivo histórico utilizado es
$HOME/.sh_history. Si el archivo histórico no existe y el shell Korn no puede crearlo o si no existe y el
shell Korn no tiene permiso para añadirlo, el shell Korn utiliza un archivo temporal como archivo histórico.
El shell accede a los mandatos de todos los shells interactivos utilizando el archivo histórico indicado con
permisos apropiados.
Por omisión, el shell Korn o el shell POSIX guarda el texto de los 128 últimos mandatos para usuarios que
no son root y de los 512 últimos mandatos para el usuario root. El tamaño del archivo histórico (que se
especifica mediante la variable HISTSIZE) no tiene limitaciones, aunque un archivo histórico muy grande
puede dar lugar a que el inicio del shell Korn sea lento.

Sustitución del histórico de mandatos


Utilice el mandato incorporado fc para listar o editar partes del archivo histórico. Para seleccionar una
parte del archivo a editar o listar, especifique el número del primer carácter o caracteres del mandato.
Puede especificar un solo mandato o un rango de mandatos.
Si no especifica un programa editor como argumento para el mandato incorporado normal fc, se utiliza el
editor especificado por la variable FCEDIT. Si no se ha definido la variable FCEDIT, se utiliza el
archivo /usr/bin/ed. El mandato o mandatos editados se imprimen y ejecutan cuando sale del editor.
El guión del nombre del editor (-) se utiliza para saltar la fase de edición y volver a ejecutar el mandato.
En este caso, puede utilizarse un parámetro de sustitución con el formato Antiguo=Nuevo para
modificar el mandato antes de que se ejecute. Por ejemplo, si r tiene el alias fc -e -, si escribe r
bad=good c se ejecuta el mandato más reciente que empieza por la letra c y sustituye a la primera
ocurrencia de la serie bad por la serie good.
Tareas relacionadas
Listado de los mandatos entrados anteriormente (mandato history)
Utilice el mandato history para listar los mandatos que ha entrado anteriormente.

Alias de mandatos en el shell Korn o shell POSIX


El shell Korn o el shell POSIX le permiten crear alias para personalizar mandatos.
El mandato alias define una palabra que tiene el formato Nombre=Serie como alias. Cuando utiliza un
alias como primera palabra de una línea de mandatos, el shell Korn comprueba si ya está procesando un
alias con el mismo nombre. Si es así, el shell Korn no sustituye el nombre del alias. Si todavía no está
procesándose un alias con el mismo nombre, el shell Korn sustituye el nombre del alias por el valor del
alias.
El primer carácter de un nombre de alias puede ser cualquier carácter imprimible, a excepción de los
metacaracteres. Los caracteres restantes deben ser los mismos que los de un identificador válido. La
serie de sustitución puede contener cualquier texto de shell válido, incluidos los metacaracteres.
Si el último carácter del valor de alias es un blanco, el shell también comprobará la palabra que sigue al
alias para la sustitución de alias. Puede utilizar alias para redefinir mandatos incorporados especiales,

268 AIX Versión 7.2: Gestión del sistema operativo


pero no para redefinir palabras reservadas. Las definiciones de alias no se heredan entre invocaciones de
ksh. Sin embargo, si especifica alias -x, el alias sigue en vigor para los scripts que se invocan por
nombre y que no invocan un shell por separado. Para exportar una definición de alias y hacer que los
procesos hijo tengan acceso a éstos, debe especificar alias -x y la definición del alias en el archivo de
entorno.
Utilice el mandato alias para crear, listar y exportar alias.
Utilice el mandato unalias para eliminar alias.
El formato para crear un alias es el siguiente:

alias Nombre=Serie

donde el parámetro Nombre especifica el nombre del alias y el parámetro Serie especifica el valor del
alias.
Los siguientes alias exportados están predefinidos por el shell Korn, pero puede eliminarse su definición
o redefinirse. No se recomienda cambiarlos, pues ello podría confundir posteriormente a cualquier
usuario que espere que el alias funcione como ha definido previamente el shell Korn.

autoload='typeset -fu'
false='let 0'
functions='typeset -f'
hash='alias -t'
history='fc -l'
integer='typeset -i'
nohup='nohup '
r='fc -e -'
true=':'
type='whence -v'

Los alias no están soportados en invocaciones no interactivas del shell Korn (ksh); por ejemplo, en un
script de shell, o con la opción -c de ksh, como el caso siguiente:

ksh -c alias

Tareas relacionadas
Creación de un alias de mandato (mandatos de shell alias)
Un alias le permite crear un nombre abreviado para un mandato, un nombre de archivo o cualquier texto
del shell. Utilizando alias, puede ahorrarse tiempo cuando efectúa tareas de proceso frecuente. Puede
crear un alias de mandato.

Alias de seguimiento de vía


Frecuentemente, los alias se utilizan como atajos para nombres completos de vías de acceso. Un recurso
de definición de alias le permite establecer automáticamente el valor de un alias al nombre completo de
una vía de acceso de un mandato correspondiente. Este tipo especial de alias es un alias con seguimiento.
Los alias de seguimiento de vía aceleran la ejecución, pues eliminan la necesidad de que el shell tenga
que buscar en la variable PATH un nombre completo de vía de acceso.
El mandato set -h activa el seguimiento de mandatos por lo que cada vez que se hace referencia a un
mandato, el shell define el valor de un alias de seguimiento. La definición de este valor se elimina cada
vez que vuelve a establecerse la variable PATH.
El seguimiento de estos alias permanece, de forma que la siguiente referencia redefinirá el valor. Algunos
alias de seguimiento de vía se compilan en el shell.

Sustitución de la tilde
Después de que el shell ha realizado la sustitución de alias, éste comprueba cada palabra para
comprobar si empieza por una tilde sin comillas (~). Si es así, el shell comprueba la palabra, hasta la
primera barra inclinada (/), para verificar si coincide con un nombre de usuario del archivo /etc/
passwd. Si el shell encuentra una coincidencia, sustituye el carácter ~ y el nombre por el directorio de
inicio de sesión del usuario que coincide. Este proceso se denomina sustitución de la tilde.

Gestión del sistema operativo 269


El shell no cambia el texto original si no encuentra una coincidencia. El shell Korn también realiza
sustituciones especiales si el carácter ~ es el único carácter de la palabra o si va seguido de un signo más
(+) o de un guión (-):

Elemento Descripción
~ Se sustituye por el valor de la variable HOME
~+ Se sustituye por la variable $PWD (el nombre completo de la vía de acceso del directorio
actual)
~- Se sustituye por la variable $OLDPWD (el nombre completo de la vía de acceso del
directorio anterior)

Asimismo, el shell intenta realizar la sustitución de la tilde cuando el valor de un parámetro de asignación
de variable empieza por un carácter de tilde ~.

shell Bourne
El shell Bourne es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos.
El mandato bsh ejecuta el shell Bourne.
El shell Bourne puede ejecutarse como un shell de inicio de sesión o como un subshell bajo el shell de
inicio de sesión. Sólo el mandato login puede llamar al shell Bourne como shell de inicio de sesión. Para
ello, utiliza un formato especial del nombre de mandato bsh: -bsh. Cuando se llama con un guión inicial
(-), el shell lee y ejecuta en primer lugar los mandatos que se encuentran en el archivo /etc/profile
del sistema y en $HOME/.profile, si existe uno. El archivo /etc/profile establece las variables que
necesitan todos los usuarios. Finalmente, el shell está preparado para leer los mandatos de la entrada
estándar.
Si se especifica el parámetro Archivo [Parámetro] al iniciar el shell Bourne, el shell ejecuta el archivo de
script identificado en el parámetro Archivo, incluyendo los parámetros especificados. El archivo de script
especificado debe tener permiso de lectura; los valores setuid y setgid se pasan por alto. El shell lee a
continuación los mandatos. Si se utiliza el distintivo -c o el distintivo -s, no especifique un script.
Conceptos relacionados
Shells disponibles
Los siguientes shells se proporcionan con AIX.

Entorno de shell Bourne


Todas las variables (y los valores que se asocian a éstas) que un mandato puede reconocer al inicio de su
ejecución constituyen su entorno. Este entorno incluye variables que un mandato hereda de sus variables
y proceso padre especificados como palabras clave en la línea de mandatos que llama al mandato.
El shell pasa a sus procesos hijo las variables con nombre como argumentos para el mandato export
incorporado. Este mandato coloca las variables con nombre en los entornos del shell y de sus futuros
procesos hijo.
Los parámetros de palabra clave son pares variable-valor que aparecen en forma de asignaciones, por lo
general antes del nombre del procedimiento en una línea de mandatos (pero véase también el distintivo
del mandato set). Estas variables se colocan en el entorno del procedimiento al que se llama.
Vea los ejemplos siguientes:
• Considere el procedimiento siguiente, que visualiza los valores de dos variables (guardadas en un
archivo de mandatos llamado key_command):

# key_command
echo $a $b

Las líneas de mandatos siguientes generan la salida que se muestra a continuación:

Entrada Salida
a=key1 b=key2 key_command key1 key2
a=tom b=john key_command tom john

270 AIX Versión 7.2: Gestión del sistema operativo


Los parámetros de palabra clave de un procedimiento no se incluyen en el número total de parámetros
que se almacena en $#.
Un procedimiento puede acceder a los valores de las variables de su entorno. No obstante, si cambia
alguno de estos valores, los cambios no se reflejan en el entorno de shell. Los cambios son locales
respecto al procedimiento en cuestión. Para colocar los cambios en el entorno que el procedimiento pasa
a sus procesos hijo, deberá exportar los nuevos valores que están dentro de ese procedimiento.
Vea los ejemplos siguientes:
• Para obtener una lista de las variables que pueden exportarse desde el shell actual, escriba lo
siguiente:

export

• Para obtener una lista de las variables de sólo lectura del shell actual, escriba lo siguiente:

readonly

• Para obtener una lista de los pares variable-valor del entorno actual, escriba lo siguiente:

env

Para obtener más información sobre los entornos de usuario, consulte el apartado “Archivo /etc/
environment” en la página 334.

Sustitución condicional en el shell Bourne


Normalmente, el shell sustituye la expresión $Variable por el valor de la serie asignada a la variable
Variable, si existe una. Sin embargo, existe una notación especial que permite la sustitución condicional,
en función de si la variable se ha establecido o no es nula, o ambas cosas.
Por definición, una variable está definida si siempre se le ha asignado un valor. El valor de una variable
puede ser la serie nula, que puede asignarse a una variable de una de las formas siguientes:

Elemento Descripción
A=
bcd=""
Efg='' Asigna la serie nula a A, bcd y Efg.
set '' "" Define el primer y segundo parámetro posicional en la serie nula y elimina la definición
de todos los demás parámetros posicionales.

A continuación se muestra una lista de las expresiones disponibles que puede utilizar para efectuar
sustituciones condicionales:

Elemento Descripción
${Variable-Serie} Si se ha establecido la variable, sustituya el valor Variable en lugar de
esta expresión. De lo contrario, sustituya esta expresión por el valor de
Serie.
${ Variable:-Serie } Si la variable se ha establecido y no es nula, sustituya esta expresión
por el valor de Variable. De lo contrario, sustituya esta expresión por el
valor de Serie.
${ Variable=Serie } Si se ha establecido la variable, sustituya el valor Variable en lugar de
esta expresión. De lo contrario, establezca el valor Variable en el valor
Serie y, a continuación, sustituya el valor Variable en lugar de esta
expresión. No puede asignar valores a parámetros posicionales de
este modo.

Gestión del sistema operativo 271


Elemento Descripción
${ Variable:=Serie } Si la variable se ha establecido y no es nula, sustituya esta expresión
por el valor de Variable. De lo contrario, establezca el valor Variable en
el valor Serie y, a continuación, sustituya el valor Variable en lugar de
esta expresión. No puede asignar valores a parámetros posicionales
de este modo.
${ Variable?Serie } Si se ha establecido la variable, sustituya el valor Variable en lugar de
esta expresión. De lo contrario, se visualiza un mensaje con el formato
siguiente:

Variable: Serie

y sale del shell actual (a no ser que sea el shell de inicio de sesión). Si
no especifica un valor para la variable Serie, el shell muestra el
siguiente mensaje:

Variable: parámetro nulo o no establecido

${ Variable:?Serie } Si la variable se ha establecido y no es nula, sustituya esta expresión


por el valor de Variable. De lo contrario, se visualiza un mensaje con el
formato siguiente:

Variable
: Serie

y sale del shell actual (a no ser que sea el shell de inicio de sesión). Si
no especifica el valor Serie, se visualizará el mensaje siguiente:

Variable: parámetro nulo o no establecido

${ Variable+Serie } Si se ha establecido la variable, sustituya la expresión por el valor de


Serie. De lo contrario, sustituya la serie nula.
${ Variable:+Serie } Si se ha establecido la variable y no es nula, sustituya esta expresión
por el valor de Serie. De lo contrario, sustituya la serie nula.

En la sustitución condicional, el shell no evalúa la variable Serie hasta que éste utiliza esta variable como
serie sustituida. Por lo tanto, en el ejemplo siguiente, el shell sólo ejecuta el mandato pwd si no se ha
establecido d o es nulo:

echo ${d:-`pwd`}

Conceptos relacionados
Variables definidas por el usuario en el shell Bourne
El shell Bourne reconoce variables alfanuméricas a las que se pueden asignar valores de series.

Parámetros posicionales del shell Bourne


Cuando se ejecuta un procedimiento de shell, el shell crea implícitamente parámetros posicionales que
hacen referencia a cada palabra de la línea de mandatos por su respectiva posición.
La palabra que ocupa la posición 0 (el nombre del procedimiento) se denomina $0, la siguiente palabra
(el primer parámetro) se denomina $1 y así sucesivamente, hasta $9. Para consultar los parámetros de la
línea de mandatos con números mayores de 9, utilice el mandato incorporado shift.
Puede restablecer los valores de los parámetros posicionales explícitamente utilizando el mandato
incorporado set.
Nota: Cuando no se especifica un argumento para una posición, su parámetro posicional se establece en
nulo. Los parámetros posicionales son globales y pueden pasarse a procedimientos de shell anidados.

272 AIX Versión 7.2: Gestión del sistema operativo


Conceptos relacionados
Variables definidas por el usuario en el shell Bourne
El shell Bourne reconoce variables alfanuméricas a las que se pueden asignar valores de series.
Referencia relacionada
Variables especiales predefinidas en el shell Bourne
Varias variables tienen significados especiales. Las variables siguientes sólo se establecen por el shell
Bourne:

Sustitución de nombres de archivo en el shell Bourne


El shell Bourne permite realizar las sustituciones de nombres de archivo.
Los parámetros de mandatos son a menudo nombres de archivo. Puede generar automáticamente una
lista de nombres de archivo como parámetros en una línea de mandatos. Para hacerlo, especifique un
carácter que el shell reconozca como un carácter que coincide con un patrón. Cuando un mandato incluya
dicho carácter, el shell lo sustituirá por los nombres de archivo de un directorio.
Nota: El shell Bourne no soporta la expansión de nombres de archivos basada en la clasificación de
equivalencia de los caracteres.
La mayoría de caracteres de un patrón coinciden, pero también puede utilizar algunos caracteres
coincidentes con patrón especiales en su patrón. A continuación se indican estos caracteres especiales:

Elemento Descripción
* Busca la coincidencia con cualquier serie, incluida la serie nula
? Busca la coincidencia con cualquier carácter individual
[...] Busca la coincidencia con cualquier carácter que se haya especificado entre corchetes
[! . . . ] Busca la coincidencia con cualquier carácter que se haya especificado entre corchetes
que no sea uno de los caracteres que siguen al signo de admiración

Dentro de los corchetes, un par de caracteres separados mediante un guión (-) especifica el conjunto de
todos los caracteres que lexicográficamente están dentro del rango de inclusión de dicho par, de acuerdo
con la clasificación binaria de los valores de los caracteres.
La coincidencia con patrones tiene algunas restricciones. Si el primer carácter del nombre del archivo es
punto (.), éste sólo puede coincidir con un patrón que también empiece por un punto. Por ejemplo, *
coincide con los nombres de archivos myfile y yourfile, pero no con los nombres de archivos .myfile
y .yourfile. Para encontrar estos archivos, utilice un patrón como este:

.*file

Si un patrón no coincide con ningún nombre de archivo, se devuelve el propio patrón como resultado de la
búsqueda de coincidencia que se ha intentado.
Los nombres de archivo y directorio no deben contener los caracteres *, ?, [ ni ] porque pueden provocar
una repetición infinita (es decir, bucles infinitos) durante los intentos de búsqueda de coincidencia de
patrones.

Redirección de la entrada y la salida en el shell Bourne


Existen opciones de redirección que se pueden utilizar en mandatos.
En general, la mayoría de los mandatos no reconocen si su entrada o su salida está asociada al teclado, a
la pantalla de visualización o a un archivo. De este modo, puede utilizarse un mandato convenientemente
en el teclado o en un conducto.
Las siguientes opciones de redirección pueden aparecer en cualquier parte de un mandato simple.
También pueden preceder o seguir a un mandato, pero no se pasan al mandato.

Gestión del sistema operativo 273


Elemento Descripción
<Archivo Utiliza el archivo especificado como entrada estándar.
>Archivo Utiliza el archivo especificado como salida estándar. Crea el archivo si no existe; de
lo contrario, lo trunca a longitud cero.
> >Archivo Utiliza el archivo especificado como salida estándar. Crea el archivo si no existe; de
lo contrario, añade la salida al final del archivo.
<<[-]eofstr Lee como entrada estándar todas las líneas desde la variable eofstr hasta una línea
que sólo contiene eofstr o bien hasta un carácter de fin de archivo. Si algún carácter
de la variable eofstr tiene delimitadores, el shell no expandirá ni interpretará
ninguno de los caracteres de las líneas de entrada. De lo contrario, realizará la
sustitución de la variable y del mandato e ignorará el carácter de nueva línea
delimitado (\nuevalínea). Utilice una barra inclinada invertida (\) para delimitar los
caracteres que están dentro de la variable eofstr o dentro de las líneas de entrada.
Si añade un guión (-) a la opción de redirección <<, se quitan todas las tabulaciones
iniciales de la variable eofstr y de las líneas de entrada.

<&Dígito Asocia la entrada estándar al descriptor de archivo que especifica la variable Dígito.
>&Dígito Asocia la salida estándar al descriptor de archivo que especifica la variable Dígito.
<&- Cierra la entrada estándar.
>&- Cierra la salida estándar.

Nota: El shell restringido no permite la redirección de la salida.


Para obtener más información acerca de la redirección, consulte el “Redirección de la entrada y la salida”
en la página 365.

Lista de mandatos incorporados del shell Bourne


La lista siguiente indica los mandatos incorporados del shell Bourne.

Elemento Descripción
: Devuelve un valor de salida cero.
. Lee y ejecuta mandatos de un parámetro de archivo y a continuación los procesa.
break Sale de los bucles delimitadores del mandato for, while o until, si existe alguno.
cd Cambia el directorio actual por el directorio especificado.
continue Reanuda la siguiente iteración de los bucles delimitadores del mandato for , while o until.
echo Graba series de caracteres en salida estándar.
eval Lee los argumentos como entrada al shell y ejecuta el mandato o mandatos resultantes.
exec Ejecuta el mandato que especifica el parámetro Argumento, en lugar de este shell, sin
crear un nuevo proceso.
exit Sale del shell cuyo estado de salida especifica el parámetro n.
export Marca nombres para exportación automática al entorno de mandatos ejecutados
sucesivamente.
hash Localiza y recuerda la posición de la vía de búsqueda o mandatos especificados.
pwd Muestra el directorio actual.
read Lee una línea de la entrada estándar.
readonly Marca el nombre que especifica el parámetro Nombre como de sólo lectura.

274 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
return Hace que una función salga con un valor de retorno especificado.
set Controla la visualización de varios parámetros para salida estándar.
shift Desplaza argumentos de línea de mandatos a la izquierda.
test Evalúa expresiones condicionales.
times Muestra las horas de usuario y del sistema totales para procesos que se ejecutan desde el
shell.
trap Ejecuta el mandato especificado cuando el shell recibe la señal o señales especificadas.
type Interpreta cómo interpretaría el shell un nombre especificado como un nombre de
mandato.
ulimit Muestra o ajusta recursos del shell asignados.
umask Determina los permisos de archivo.
unset Elimina la variable o función correspondiente a un nombre especificado.
wait Espera a que finalice el proceso hijo especificado e informa de su estado de terminación.

Referencia relacionada
Mandatos incorporados del shell Bourne
Los mandatos especiales se incorporan en el shell Bourne y se ejecutan en el proceso del shell.

Mandatos del shell Bourne


Puede emitir mandatos en el shell Bourne.
Cuando emite un mandato en el shell Bourne, primero éste evalúa el mandato y efectúa todas las
sustituciones indicadas. A continuación, éste ejecuta el mandato, siempre que:
• El nombre de mandato es un mandato incorporado especial del shell Bourne.
O bien
• El nombre de mandato coincide con el nombre de una función definida. Si es así, el shell establece los
parámetros posicionales en los parámetros de la función.
Si el nombre del mandato no coincide ni con un mandato incorporado ni con el nombre de una función
definida y el mandato especifica el nombre de un archivo ejecutable que es un programa compilado
(binario), el shell (como padre) crea un nuevo proceso (hijo) que ejecuta inmediatamente el programa. Si
el archivo está marcado como ejecutable, pero no es un programa compilado, el shell presupone que es
un procedimiento de shell. En este caso, el shell crea otra instancia de sí mismo (un subshell), para leer el
archivo y ejecutar los mandatos que éste incluye. El shell también ejecuta un mandato entre paréntesis
en un subshell. Para el usuario, se ejecuta un programa compilado exactamente del mismo modo que un
procedimiento de shell. El shell normalmente busca mandatos en directorios del sistema de archivos, en
este orden:
1. /usr/bin
2. /etc
3. /usr/sbin
4. /usr/ucb
5. $HOME/bin
6. /usr/bin/X11
7. /sbin
8. Directorio actual
El shell busca en cada directorio, por orden, continuando con el siguiente directorio si no puede encontrar
el mandato.

Gestión del sistema operativo 275


Nota: La variable PATH determina el orden en el que el shell busca en los directorios. Puede cambiar la
secuencia particular de los directorios en los que ha de buscarse estableciendo nuevamente la variable
PATH.
Si proporciona un nombre de vía de acceso específico al ejecutar un mandato (por ejemplo, /usr/bin/
sort), el shell no buscará en ningún directorio que no sea el especificado. Si el nombre del mandato
contiene una barra inclinada (/), el shell no utilizará la vía de búsqueda.
Puede especificar un nombre completo de vía de acceso que empiece por el directorio raíz
(como /usr/bin/sort). También puede especificar un nombre de vía de acceso relativo al directorio
actual. Por ejemplo, si especifica

bin/myfile

el shell buscará en el directorio actual un directorio denominado bin y en el directorio del archivo
myfile.
Nota: El shell restringido no ejecuta mandatos que contienen una barra inclinada (/).
El shell recuerda la ubicación de la vía de búsqueda de cada mandato ejecutado (para evitar posteriores
mandatos exec innecesarios). Si encuentra el mandato en un directorio relativo (cuyo nombre no
empieza por /), el shell debe volver a determinar la ubicación del mandato cuando cambie el directorio
actual. El shell olvida todas las ubicaciones recordadas cada vez que cambia la variable PATH o se ejecuta
el mandato hash -r.

Carácter de comillas
Muchos caracteres tienen un significado especial para el shell. Algunas veces deseará conocer dicho
significado. Las comillas simples (') y las comillas dobles (") que delimitan una serie o una barra
inclinada (\) antes de un único carácter le permiten adivinar el significado del carácter.
Todos los caracteres (excepto las comillas simples delimitadoras) se interpretan literalmente,
eliminándose cualquier significado especial. De este modo, el mandato:

stuff='echo $? $*; ls * | wc'

asigna la serie literal echo $? $*; ls * | wc a la variable stuff. El shell no ejecuta los mandatos
echo, ls y wc ni expande las variables $? y $* y el carácter especial de asterisco (*).
Dentro de las comillas dobles, el significado especial de los caracteres de signo de dólar ($), de acento
grave (`) y de comillas dobles (") siguen estando en vigor, mientras que todos los demás caracteres se
toman literalmente. De este modo, dentro de comillas dobles, se efectúa la sustitución de mandatos y
variables. Además, los delimitadores no afectan a los mandatos de una sustitución de mandatos que es
parte de la serie delimitada, de forma que los caracteres conservan su significado especial.
Considere la siguiente secuencia:

ls *
file1 file2 file3
message="Este directorio contiene `ls * ` "
echo $message
Este directorio contiene file1 file2 file3

Esto muestra que se ha expandido el carácter especial de asterisco (*) dentro de la sustitución de
mandatos.
Para ocultar el significado especial de los caracteres de signo de dólar ($), de acento grave (`) y de
comillas dobles (") dentro de las comillas dobles, preceda estos caracteres con una barra inclinada
invertida (\). Cuando no utilice delimitadores, preceder un carácter con una barra inclinada invertida es
equivalente a situarlo entre delimitadores. Por lo tanto, una barra inclinada invertida justo delante de un
carácter de nueva línea (es decir, una barra inclinada invertida al final de la línea) oculta el carácter de
nueva línea y le permite poder continuar la línea de mandatos en la siguiente línea física.

276 AIX Versión 7.2: Gestión del sistema operativo


Manejo de señales
El shell ignora las señales INTERRUPT y QUIT para un mandato invocado si el mandato finaliza con un
ampersand (&); es decir, si se ejecuta como proceso en segundo plano. De lo contrario, las señales tienen
los valores heredados del shell por su padre, con la excepción de la señal SEGMENTATION VIOLATION.
Para obtener más información, consulte el mandato incorporado del shell Bourne trap.

Mandatos compuestos del shell Bourne


Un mandato compuesto es uno de los siguientes.
• Un conducto (uno o más mandatos simples separados por el símbolo de conducto (|))
• Una lista de mandatos simples
• Un mandato que comienza por una palabra reservada
• Un mandato que comienza por el paréntesis izquierdo (() del operador de control
A menos que se indique lo contrario, el valor devuelto por un mandato compuesto es el del último
mandato simple ejecutado.

Palabras reservadas
Las siguientes palabras reservadas para el shell Bourne sólo se reconocen cuando aparecen sin las
comillas como la primera palabra de un mandato.

for do done

case esac
if then fi
elif else
while until
{ }
( )

Elemento Descripción
forIdentificador Establece el parámetro Identificador en la palabra o palabras que el
[inPalabra. . .] doLista parámetro Palabra especifica (de una en una) y ejecuta los mandatos que
done se especifican en el parámetro Lista. Si omite in Palabra. . ., el mandato
for ejecuta el parámetro Lista de cada parámetro posicional establecido y
el proceso finaliza una vez utilizados todos los parámetros posicionales.
case Palabra in Patrón [| Ejecuta los mandatos que se han especificado en el parámetro Lista que se
Patrón] . . . ) Lista;; [Patrón asocian al primer parámetro Patrón que coincide con el valor del parámetro
[|Patrón] . . . ) Palabra. Utiliza la misma notación coincidente de caracteres en patrones
Lista;;] . . .esac que se utiliza para sustitución de nombres de archivo, excepto que una
barra inclinada (/), un punto inicial (.)o un punto que sigue inmediatamente
a una barra inclinada (/.) no debe coincidir explícitamente.
if Lista then Lista [elif Ejecuta los mandatos especificados en el parámetro Lista que sigue al
Lista then mandato if. Si el mandato devuelve un valor de salida cero, el shell ejecuta
Lista] . . . [else Lista] fi el parámetro Lista que sigue al primer mandato then. De lo contrario,
ejecuta el parámetro Lista que sigue al mandato elif (si existe). Si este
valor de salida es cero, el shell ejecuta el parámetro Lista que sigue al
siguiente mandato then. Si el mandato devuelve un valor de salida
diferente a cero, el shell ejecuta el parámetro Lista que sigue al mandato
else (si existe). Si no se realiza ningún else Lista o then Lista, el mandato
if devuelve el valor de salida cero.
while Lista do Lista Ejecuta los mandatos especificados en el parámetro Lista que sigue al
done mandato while. Si el valor de salida del último mandato de while Lista es
cero, el shell ejecuta el parámetro Lista que sigue al mandato do. Continúa
la ejecución en bucle por las listas hasta que el valor de salida del último
mandato de while Lista no es cero. Si no se ejecuta ningún mandato de do
Lista, el mandato while devuelve el valor de salida cero.

Gestión del sistema operativo 277


Elemento Descripción
until Lista do Lista Ejecuta los mandatos especificados en el parámetro Lista que sigue al
done mandato until. Si el valor de salida del último mandato de until Lista no
es cero, ejecuta la Lista que sigue al mandato do. Continúa la repetición en
bucle por las listas hasta que el valor de salida del último mandato de
until Lista es cero. Si no se ejecuta ningún mandato de do Lista, el
mandato until devuelve el valor de salida cero.
( Lista ) Ejecuta los mandatos del parámetro Lista en un subshell.
{ Lista; } Ejecuta los mandatos del parámetro Lista en el proceso de shell actual y no
inicia un subshell.
Nombre () { Lista } Define una función a la que el parámetro Nombre hace referencia. El cuerpo
de la función es la lista de mandatos entre las llaves especificadas por el
parámetro Lista.

Mandatos incorporados del shell Bourne


Los mandatos especiales se incorporan en el shell Bourne y se ejecutan en el proceso del shell.
A menos que se indique algo distinto, la salida se graba en el descriptor de archivo 1 (salida estándar), y
el estado de la salida es 0 (cero) si el mandato no contiene ningún error de sintaxis. Se permite la
redirección de entrada y de salida.
Los siguientes mandatos especiales se tratan de forma algo distinta a otros mandatos especiales
incorporados:

: (dos puntos) exec shift


. (punto) exit times
break export trap
continue readonly wait
eval return

El shell Bourne procesa estos mandatos de este modo:


• Las listas de asignaciones de parámetros de palabra clave que preceden el mandato permanecen en
vigor cuando se completa el mandato.
• Las redirecciones de E/S se procesan después de las asignaciones de parámetros.
• Los errores de un script de shell hacen que el script detenga el proceso.
Referencia relacionada
Lista de mandatos incorporados del shell Bourne
La lista siguiente indica los mandatos incorporados del shell Bourne.

Descripciones de mandatos especiales


El shell Bourne proporciona los siguientes mandatos incorporados especiales.

Elemento Descripción
: Devuelve un valor de salida de cero.
. Archivo Lee y ejecuta mandatos del parámetro Archivo y vuelve. No inicia un subshell. El
shell utiliza la vía de búsqueda especificada por la variable PATH para localizar el
directorio que contiene el archivo especificado.
break [ n ] Sale de los bucles delimitadores del mandato for, while o until, si existe alguno. Si
especifica la variable n, el mandato break interrumpe el número de niveles
especificados por la variable n.
continue [ n ] Reanuda la siguiente iteración de los bucles delimitadores del mandato for , while
o until. Si especifica la variable n, el mandato se reanuda en el nésimo bucle
delimitador.

278 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
cd Directorio ] Cambia del directorio actual a Directorio. Si no especifica Directorio, se utiliza el
valor de la variable de shell HOME. La variable de shell CDPATH define la vía de
búsqueda de Directorio. CDPATH es una lista de nombres de directorios alternativos
separados mediante signos de dos puntos. Un nombre de vía de acceso nulo
especifica el directorio actual (que es la vía de acceso por omisión). Este nombre de
vía de acceso nulo aparece inmediatamente después del signo igual en la
asignación o entre los delimitadores de dos puntos en cualquier parte de la lista de
vías de acceso. Si Directorio empieza por una barra inclinada (/), el shell no utiliza
la vía de búsqueda. De lo contrario, el shell busca en cada directorio de la variable
de shell CDPATH.
Nota: El shell restringido no puede ejecutar el mandato de shell cd.

echo String . . . ] Graba series de caracteres en salida estándar. Consulte el mandato echo para
obtener información sobre su utilización y los parámetros. El distintivo -n no está
soportado.
eval [ Argumento Lee los argumentos como entrada al shell y ejecuta el mandato o mandatos
. ..] resultantes.
exec [ Argumento Ejecuta el mandato que especifica el parámetro Argumento en lugar de este shell
. ..] sin crear un nuevo proceso. Pueden aparecer argumentos de entrada y de salida y,
si no aparece ningún otro argumento, da lugar a la modificación de la entrada o
salida del shell. Esto no se recomienda para el shell de inicio de sesión.
exit [ n ] Da lugar a que un shell salga con el valor de salida que el parámetro n especifica. Si
omite este parámetro, el valor de salida será el del último mandato ejecutado (la
secuencia de teclas Control-D también provoca la finalización del shell). El valor del
parámetro n puede estar comprendido entre el 0 y el 255, inclusive.
export [ Nombre Marca los nombres especificados para su exportación automática a los entornos de
. ..] los mandatos que se ejecutarán posteriormente. Si no especifica el parámetro
Nombre, el mandato export visualiza una lista de todos los nombres exportados
de este shell. No puede exportar nombres de función.
hash [ -r ] Busca y recuerda la ubicación en la vía de búsqueda de cada Mandato especificado.
[ Mandato . . . ] El distintivo -r hace que el shell olvide todas las ubicaciones. Si no especifica el
distintivo o ningún mandato, el shell mostrará información acerca de los mandatos
recordados en el siguiente formato:

Hits Cost Command

Hits indica el número de veces que el proceso del shell ha ejecutado un mandato.
Cost es una medida del trabajo necesario para localizar un mandato en la vía de
búsqueda. Command muestra los nombres de las vías de acceso de cada mandato
especificado. Ciertas situaciones requieren que se vuelva a calcular la ubicación de
un mandato; por ejemplo, la ubicación de un nombre de vía de acceso relativa
cuando cambia el directorio actual. Los mandatos para los que podría realizarse se
indican mediante un asterisco (*) junto a la información de Hits. Cost aumenta
cuando se efectúa el nuevo cálculo.
pwd Muestra el directorio actual. Consulte el mandato pwd para ver una explicación de
las opciones del mandato.
read [ Nombre Lee una línea de la entrada estándar. Asigna la primera palabra de la línea al primer
. ..] parámetro Nombre, la segunda palabra al segundo parámetro Nombre, y así
sucesivamente, asignando las palabras restantes al último parámetro Nombre. Este
mandato devuelve un valor de 0 a no ser que encuentre un carácter de fin de
archivo.

Gestión del sistema operativo 279


Elemento Descripción
readonly Marca el nombre que especifica el parámetro Nombre como de sólo lectura. El valor
[Nombre . . . ] del nombre no puede restablecerse. Si no especifica ningún Nombre, el mandato
readonly visualiza una lista de todos los nombres de sólo lectura.
return [ n ] Da lugar a que una función salga con un valor de retorno n. Si no especifica la
variable n, la función devuelve el estado del último mandato ejecutado en esa
función. Este mandato sólo es válido cuando se ejecuta en una función de shell.
set Define uno o más de los siguientes distintivos:
[ Distintivo [ Argum -a
ento ] . . . ] Marca para exportación todas las variables a las que se efectúa una asignación.
Si la asignación precede al nombre de un mandato, el atributo de exportación
sólo es vigente para el entorno de ejecución de dicho mandato, excepto cuando
la asignación precede a uno de los mandatos especiales incorporados. En este
caso, el atributo de exportación persiste después de que se ha completado el
mandato incorporado. Si la asignación no precede a un nombre de mandato, o
si la asignación es el resultado de la operación de los mandatos getopts o
read, el atributo de exportación persiste hasta que se elimina la definición de
la variable.
-e
Sale inmediatamente si existen todas las siguientes condiciones para un
mandato:
• Sale con un valor de retorno mayor que 0 (cero).
• No forma parte de la lista compuesta de un mandato while, until o if.
• No se prueba utilizando listas AND u OR.
• No es un conducto precedido de la palabra reservada ! (signo de admiración).
-f
Inhabilita la sustitución de nombres de archivo.
-h
Localiza y recuerda los mandatos llamados en funciones a medida que se
definen las funciones. (Normalmente, estos mandatos se localizan cuando se
efectúa la función; vea el mandato hash.)
-k
Sitúa todos los parámetros de palabra clave en el entorno de un mandato, no
sólo aquellos que preceden el nombre de mandato.
-n
Lee mandatos, pero no los ejecuta. Para comprobar si existen errores de
sintaxis en el script del shell, utilice el distintivo -n.
-t
Sale después de leer y ejecutar un mandato.
-u
Trata una variable sin definir como un error y sale inmediatamente cuando
efectúa la sustitución de variables. Un shell interactivo no sale.
-v
Muestra las líneas de entrada del shell a medida que se leen.
-x
Muestra los mandatos y sus argumentos antes de que se ejecuten.

No cambia ninguno de los distintivos. Es útil para establecer el parámetro
posicional $1 en una serie que empieza por un guión (-).

280 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción

La utilización de un signo más (+) en lugar de un guión (-) elimina el


establecimiento de los distintivos. También puede especificar estos distintivos en
la línea de mandatos del shell. La variable especial $- contiene el conjunto actual
de distintivos.
Cualquier Argumento para el mandato set pasa a ser un parámetro posicional y se
asigna, por orden, a $1, $2, ..., etcétera. Si no especifica un distintivo ni un
Argumento, el mandato set visualiza todos los nombres y los valores de las
variables actuales de shell.

shift [n] Desplaza argumentos de línea de mandatos a la izquierda; es decir, reasigna el


valor de los parámetros posicionales desechando el valor actual de $1 y asignando
el valor de $2 a $1, de $3 a $2, etc. Si hay más de 9 argumentos de línea de
mandatos, el 10o se asigna a $9 y los que queden no estarán asignados (hasta
después de otro shift). Si existen 9 argumentos o menos, el mandato shift
eliminará el establecimiento del parámetro posicional con la numeración más alta
que tenga un valor.
El parámetro posicional $0 nunca se desplaza. El mandato shift n es una notación
abreviada que especifica el número n de desplazamientos consecutivos. El valor
predeterminado del parámetro n es 1.

test Expresión | Evalúa expresiones condicionales. Consulte el mandato test para obtener
[ Expresión ] información sobre los distintivos y los parámetros del mandato. El distintivo -h no
está soportado por el mandato test incorporado en bsh.
times Muestra las horas de usuario y del sistema totales para procesos que se ejecutan
desde el shell.
trap [ Mandato ] Ejecuta el mandato que especifica el parámetro Mandato cuando el shell recibe la
[n]... señal o señales que se especifican mediante el parámetro n. Los mandatos trap se
ejecutan por orden de número de señal. Cualquier intento de definir una ruptura o
una señal que se ignoró en la entrada al shell actual no es efectivo.
Nota: El shell explora el parámetro Mandato una vez cuando se establece la
ruptura y de nuevo cuando se acepta la ruptura.
Si no especifica un mandato, todas las rupturas que especifica el parámetro n
volverán a establecerse en sus valores actuales. Si especifica una serie nula, el
shell y los mandatos que llama ignoran esta señal. Si el parámetro n es cero (0), el
mandato especificado se ejecutará cuando salga del shell. Si no especifica un
mandato o señal, el mandato trap muestra una lista de mandatos asociados con
cada número de señal.
type [Nombre Indica cómo interpretaría el shell cada Nombre especificado como un nombre de
. ..] mandato.

Gestión del sistema operativo 281


Elemento Descripción
ulimit [-HS] [ -c | Muestra o ajusta recursos del shell asignados. Los valores de los recursos del shell
-d | -f | -m | -r | -s | pueden visualizarse individualmente o en forma de grupo. La modalidad por
-t |-u] [límite] omisión es visualizar recursos definidos en el valor limitado o el límite inferior como
un grupo.
El valor de recursos de shell depende del ID de usuario vigente del shell actual. El
nivel fijo de un recurso sólo puede definirse si el ID de usuario vigente del shell
actual es raíz. Recibirá un error si no es el usuario root e intenta establecer el nivel
fijo de un recurso. Por omisión, el usuario root define los límites fijos y limitados de
un recurso particular. Por lo tanto, el usuario root debe tener cuidado al utilizar los
valores de la utilización de límites del distintivo -S, -H o del distintivo por omisión.
A menos que sea un usuario root, sólo podrá establecer el límite flexible de un
recurso. Cuando un usuario que no es el usuario root ha reducido un límite, éste no
puede aumentarse, ni tan siquiera para volverlo a establecer en el límite original
del sistema.
Para definir un límite de recurso, seleccione el distintivo apropiado y el valor límite
del nuevo recurso, que debe ser un entero. Sólo podrá establecer un límite de
recurso cada vez. Si se especifica más de un distintivo de recurso, recibirá
resultados indefinidos. Por omisión, ulimit con sólo un nuevo valor en la línea de
mandatos establece el tamaño de archivo del shell. La utilización del distintivo -f es
opcional.
Puede especificar los distintivos del mandato ulimit siguientes:
-c
Define o muestra segmentos de imagen de memoria para el shell.
-d
Define o muestra segmentos de datos para el shell.
-f
Define o muestra el tamaño de archivos para el shell.
-H
Define o visualiza el límite fijo de recursos (sólo usuario root).
-m
Define o muestra memoria para el shell.
-r
Define o muestra el número máximo de hebras por proceso.
-s
Define o muestra segmentos de pila para el shell.
-S
Define o muestra el límite flexible de recursos.
-t
Define o muestra el máximo de tiempo CPU para el shell.
-u
Define o muestra el número máximo de procesos por usuario.

umask [nnn] Determina los permisos de archivo. Este valor, junto con los permisos del proceso
de creación, determina los permisos de un archivo cuando se crea el archivo. El
valor predeterminado es 022. Cuando no se especifica ningún valor, umask
visualiza el valor actual.
unset [Nombre Elimina la variable o función correspondiente para cada nombre que especifique el
. . .] parámetro Nombre. No puede eliminarse la definición de las variables de shell
PATH, PS1, PS2, MAILCHECK e IFS.

282 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
wait [n] Espera a que el proceso hijo cuyo número de proceso especifica el parámetro n
salga y, a continuación, devuelve el estado de salida de ese proceso. Si no
especifica el parámetro n, el shell espera a todos los procesos hijo activos
actualmente, y el valor de retorno es 0.

Sustitución de mandatos en el shell Bourne


La sustitución de mandatos le permite capturar la salida de cualquier mandato como un argumento para
otro mandato.
Cuando especifica una línea de mandatos dentro de acentos graves (``), el shell ejecuta en primer lugar
el mandato o mandatos y, a continuación, sustituye la expresión completa, incluidos los acentos graves,
por la salida. Esta función suele utilizarse para proporcionar valores a las variables de shell. Por ejemplo,
la sentencia:

today=`date`

asigna una serie de caracteres que representa la fecha actual para la variable today. La siguiente
asignación guarda, en la variable files, el número de archivos del directorio actual:

files=`ls | wc -l`

Puede efectuar sustitución de mandatos en cualquier mandato que grabe a salida estándar.
Para anidar sustituciones de mandatos, preceda con una barra inclinada invertida (\) cada uno de los
acentos graves anidados, tal como se muestra a continuación:

logmsg=`echo El directorio de inicio de sesión es \`pwd\``

También puede especificar valores para las variables del shell de forma indirecta, utilizando el mandato
especial read. Este mandato toma una línea de la entrada estándar (usualmente el teclado) y asigna
palabras consecutivas en dicha línea a cualquier variable designada. Por ejemplo:

read first init last

toma una línea de entrada en el formato:

J. Q. Public

y tiene el mismo efecto que si hubiera escrito:

first=J. init=Q. last=Public

El mandato especial read asigna las palabras de exceso a la última variable.

Sustitución de variables en el shell Bourne


El shell Bourne permite realizar sustituciones de variables.
El shell Bourne dispone de varios mecanismos para crear variables (asignar el valor de una serie a un
nombre). Existen determinadas variables, parámetros posicionales y parámetros de palabra clave que,
normalmente, sólo se establecen en una línea de mandatos. Otras variables son simplemente nombres a
los que el usuario o el shell puede asignar valores de serie.
Conceptos relacionados
Terminales desatendidos
Todos los sistemas son vulnerables si se dejan las sesiones iniciadas o desatendidos los terminales. Los
problemas más graves se producen cuando un gestor del sistema deja un terminal desatendido al que se
le ha asignado autorización de usuario root. En general, los usuarios deben finalizar la sesión cada vez
que abandonan sus terminales.

Gestión del sistema operativo 283


Variables definidas por el usuario en el shell Bourne
El shell Bourne reconoce variables alfanuméricas a las que se pueden asignar valores de series.
Para asignar un valor de serie a un nombre, escriba la siguiente:

Nombre=Serie

Un nombre es una secuencia de letras, dígitos y subrayados que comienza por un subrayado o una letra.
Para utilizar el valor que ha asignado a una variable, añada un signo de dólar ($) al principio de su nombre.
De esta forma, la variable $Nombre produce el valor especificado por la variable Serie. Tenga en cuenta
que no existen espacios alrededor del signo de igual (=) en una sentencia de asignación. (No pueden
aparecer parámetros posicionales en una sentencia de asignación. Puede situar más de una asignación
en una línea de mandatos, pero recuerde que el shell efectúa las asignaciones de derecha a izquierda.
Si delimita la variable Serie entre comillas dobles o simples (" o '), el shell no tratará los blancos,
tabulaciones, caracteres de punto y coma y de nueva línea como delimitadores de palabra, sino que los
intercalará literalmente en la serie.
Si delimita la variable Serie entre comillas dobles ("), el shell seguirá reconociendo los nombres de
variables de la serie y realizará la sustitución de variables; es decir, sustituirá las referencias a los
parámetros posicionales y otros nombres de variables precedidos por el signo de dólar ($) por sus valores
correspondientes, si existen. El shell también efectúa sustitución de mandatos en series que están
delimitadas por comillas.
Si delimita la variable Serie entre comillas simples ('), el shell no sustituirá las variables o mandatos que
están dentro de la serie. En la secuencia siguiente se muestra un ejemplo de esta diferencia:

You: num=875
number1="Añadir $num"
number2='Añadir $num'
echo $number1
System: Add 875
You: echo $number2
System: Add $num

El shell no reinterpreta los blancos de las asignaciones después de la sustitución de variables. De este
modo, las siguientes asignaciones dan como resultado que $first y $second tengan el mismo valor:

first='una serie con blancos intercalados'


second=$first

Cuando hace referencia a una variable, puede delimitar el nombre de variable (o la designación digital de
un parámetro posicional) entre llaves { } para delimitar el nombre de la variable de cualquier serie que
le siga. En particular, si el carácter que sigue inmediatamente al nombre es una letra, un dígito o un
subrayado y la variable no es un parámetro posicional, es necesario utilizar llaves:

Usuario: a='Esto es un'


echo "${a}a prueba"
Sistema: Esto es una prueba
Usuario: echo "$a ejemplo"
Sistema: Esto es un ejemplo

Conceptos relacionados
Parámetros posicionales del shell Bourne
Cuando se ejecuta un procedimiento de shell, el shell crea implícitamente parámetros posicionales que
hacen referencia a cada palabra de la línea de mandatos por su respectiva posición.
Referencia relacionada
Sustitución condicional en el shell Bourne
Normalmente, el shell sustituye la expresión $Variable por el valor de la serie asignada a la variable
Variable, si existe una. Sin embargo, existe una notación especial que permite la sustitución condicional,
en función de si la variable se ha establecido o no es nula, o ambas cosas.

284 AIX Versión 7.2: Gestión del sistema operativo


Variables utilizadas por el shell Bourne
El shell utiliza las siguientes variables. Aunque el shell establece algunas de ellas, puede establecer o
restablecer todas ellas.

Elemento Descripción
CDPATH Especifica la vía de búsqueda para el mandato cd (cambiar directorio).
HOME Indica el nombre del directorio de inicio de sesión, que es el directorio que se
convierte en el directorio actual al completarse un inicio de sesión. El programa
login inicializa esta variable. El mandato cd utiliza el valor de la variable $HOME
como valor predeterminado. Utilizando esta variable en lugar de un nombre de vía de
acceso explícito en un procedimiento de shell permite que el procedimiento se
ejecute desde un directorio distinto sin alteraciones.
IFS Caracteres que son IFS (separadores de campos internos), que son los caracteres
que el shell utiliza durante la interpretación de los blancos. Inicialmente, el shell
establece la variable IFS para que incluya los blancos, las tabulaciones y los
caracteres de nueva línea.
LANG Determina el entorno local que se debe utilizar para las categorías de entorno local
cuando la variable LC_ALL y la variable de entorno correspondiente (que empieza por
LC_) no especifican un entorno local.
LC_ALL Determina el entorno local que se debe utilizar para alterar temporalmente los
valores para las categorías de entorno local especificadas por los valores de la
variable de entorno LANG o cualquier variable de entorno que empiece por LC_.
LC_COLLATE Define el orden de clasificación a utilizar cuando se ordenen nombres y cuando se
produzcan rangos de caracteres en patrones.
LC_CTYPE Determina el entorno local para la interpretación de secuencias de bytes de datos de
texto como caracteres (es decir, caracteres de un solo byte frente a caracteres de
varios bytes en argumentos y archivos de entrada), qué caracteres se han definido
como letras (clase de caracteres alpha) y el comportamiento de clases de caracteres
dentro de la coincidencia de patrones.
LC_MESSAGES Determina el idioma en que deben escribirse los mensajes.
LIBPATH Especifica la vía de búsqueda para bibliotecas compartidas.
LOGNAME Especifica el nombre de inicio de sesión, marcado como readonly en el
archivo /etc/profile.
MAIL Indica el nombre de la vía de acceso del archivo utilizado por el sistema de correo
para detectar la llegada de correo nuevo. Si se establece esta variable, el shell
comprueba periódicamente la hora de modificación de este archivo y visualiza el
valor de $MAILMSG si la hora cambia y la longitud del archivo es mayor que 0.
Establezca la variable MAIL en el archivo .profile. Normalmente, el valor que le
asignan los usuarios del mandato mail es /usr/spool/mail/$LOGNAME.
MAILCHECK Número de segundos que el shell espera antes de volver a comprobar la llegada de
correo en los archivos que especifican las variables MAILPATH o MAIL. El valor
predeterminado es 600 segundos (10 minutos). Si define la variable MAILCHECK a 0,
el shell efectúa la comprobación antes de cada solicitud.
MAILMSG El mensaje de notificación de correo. Si establece explícitamente la variable
MAILMSG en una serie nula (MAILMSG=""), no se visualizará ningún mensaje.

Gestión del sistema operativo 285


Elemento Descripción
MAILPATH Una lista de nombres de archivo separada por signos de dos puntos. Si define esta
variable, el shell le informará de la llegada de correo en cualquier de los archivos
especificados en la lista. Tras el nombre de cada archivo puede especificar un
carácter % y el mensaje que ha de visualizarse cuando llegue correo. De lo contrario,
el shell utiliza el valor de la variable MAILMSG o, de forma predeterminada, el
mensaje [TIENE CORREO NUEVO].
Nota: Cuando se establece la variable MAILPATH, se comprueban estos archivos en
lugar del archivo establecido por la variable MAIL. Para comprobar los archivos
establecidos por la variable MAILPATH y el archivo establecido por la variable MAIL,
especifique el archivo MAIL en la lista de archivos MAILPATH.

PATH La vía de búsqueda para mandatos, que es una lista ordenada de nombres de vías de
acceso de directorios separadas por dos puntos. El shell busca en dichos directorios
en el orden especificado cuando busca mandatos. Una serie nula en cualquier parte
de la lista representa el directorio actual.
Normalmente, la variable PATH se inicializa en el archivo /etc/environment, por
lo general, en /usr/bin:/etc:/usr/sbin:/usr/ucb:/usr/bin/X11:/sbin.
Puede redefinir esta variable para que se ajuste a sus requisitos. La variable PATH
proporcionada en el archivo .profile también incluye $HOME/bin y el directorio
actual.
Si tiene un directorio de mandatos específico de un proyecto, por ejemplo, /
project/bin, en el que desea que se busque antes que en los directorios estándar
del sistema, establezca la variable PATH de la manera siguiente:

PATH=/project/bin:$PATH

El mejor lugar para establecer la variable PATH en un valor distinto del valor
predeterminado es en el archivo $HOME/.profile. No puede redefinir la variable
PATH si va a ejecutar mandato bajo el shell restringido.

PS1 La serie que se utilizará como indicador principal del sistema. Un shell interactivo
muestra la serie de este indicador cuando espera entrada. El valor predeterminado
de la variable PS1 es $ seguido de un espacio en blanco para usuarios que no son
root.
PS2 El valor de la serie de indicador secundario. Si el shell espera más entrada cuando
encuentra un carácter de nueva línea en su entrada, solicita el valor de la variable
PS2. El valor predeterminado de la variable PS2 es > seguido de un espacio en
blanco.
SHACCT El nombre de un archivo que posee. Si se define esta variable, el shell graba un
registro estadístico en el archivo para cada script de shell que se ejecuta. Puede
utilizar programas de contabilidad como acctcom y acctcms para analizar los datos
recopilados.
SHELL El nombre de la vía de acceso del shell, que se conserva en el entorno. Esta variable
debe establecerla y exportarla el archivo $HOME/.profile de cada inicio de sesión
restringido.
TIMEOUT El número de minutos que un shell permanece inactivo antes de que finalice. Si esta
variable se establece en un valor mayor que cero (0), el shell sale si no se entra un
mandato dentro del número de segundos indicado tras la emisión del indicador PS1.
(Tenga en cuenta que el shell puede compilarse con un límite máximo que no puede
superarse para este valor). Un valor de cero indica sin límite de tiempo.

286 AIX Versión 7.2: Gestión del sistema operativo


Conceptos relacionados
Interpretación de los blancos
El shell, después de haber realizado la sustitución de variables y de mandatos, explora los resultados en
busca de los separadores de campos internos (los que se han definido en la variable de shell IFS).

Variables especiales predefinidas en el shell Bourne


Varias variables tienen significados especiales. Las variables siguientes sólo se establecen por el shell
Bourne:

Ele Descripción
me
nto
$@ Expande los parámetros posicionales, empezando por $1. Cada parámetro está separado por un
espacio.
Si utiliza comillas dobles (" ") para delimitar $@, el shell considera cada parámetro posicional
como una serie separada. Si no existen parámetros posicionales, el shell Bourne expande la
sentencia a una serie nula sin delimitar.

$* Expande los parámetros posicionales, empezando por $1. El shell separa cada parámetro
utilizando el primer carácter del valor de la variable IFS.
Si utiliza comillas dobles (" ") para delimitar $*, el shell incluye los valores de los parámetros
posicionales entre comillas dobles. Los valores están separados por el primer carácter de la
variable IFS.

$# Especifica el número de parámetros posicionales pasados al shell, sin contar el nombre del propio
procedimiento de shell. De esta forma, la variable $# produce el número del parámetro posicional
con la numeración más alta que se ha establecido. Una de las utilizaciones principales de esta
variable es comprobar la presencia del número necesario de argumentos. Sólo se pueden acceder
a los parámetros posicionales $0 a $9 a través del shell.
$? Especifica el valor de salida del último mandato ejecutado. Su valor es una serie decimal. La
mayoría de mandatos devuelven un valor 0 para indicar que se ha finalizado satisfactoriamente. El
propio shell devuelve el valor actual de la variable $? como valor de salida.
$$ Identifica el número de proceso del proceso actual. Puesto que los números de proceso son
exclusivos entre todos los procesos existentes, esta serie suele utilizarse para generar nombres
exclusivos para archivos temporales.
El ejemplo siguiente ilustra la práctica recomendada de crear archivos temporales en un directorio
utilizado solamente para dicho propósito:

temp=/tmp/$$
ls >$temp
.
.
.
rm $temp

$! Especifica el número de proceso del último proceso en segundo plano que se ha ejecutado
utilizando el terminador &.
$- Una serie que consta de los nombres de los distintivos de ejecución definidos actualmente en el
shell.

Conceptos relacionados
Parámetros posicionales del shell Bourne
Cuando se ejecuta un procedimiento de shell, el shell crea implícitamente parámetros posicionales que
hacen referencia a cada palabra de la línea de mandatos por su respectiva posición.

Gestión del sistema operativo 287


Interpretación de los blancos
El shell, después de haber realizado la sustitución de variables y de mandatos, explora los resultados en
busca de los separadores de campos internos (los que se han definido en la variable de shell IFS).
El shell divide la línea en palabras diferentes en cada lugar y encuentra uno o más de dichos caracteres
separando cada palabra distinta con un solo espacio. A continuación, retiene los argumentos nulos
explícitos ("" o '') y descarta los argumentos nulos implícitos (que resultan de los parámetros que no
tienen valores).
Referencia relacionada
Variables utilizadas por el shell Bourne
El shell utiliza las siguientes variables. Aunque el shell establece algunas de ellas, puede establecer o
restablecer todas ellas.

shell C
El shell C es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Utiliza
una sintaxis que es similar al lenguaje de programación C.
El mandato csh inicia el shell C.
Cuando inicia la sesión, el mandato csh busca en primer lugar el archivo de configuración de todo el
sistema /etc/[Link]. Si el archivo de configuración existe, el shell C ejecuta los mandatos
almacenados en dicho archivo. A continuación, el shell C ejecuta el archivo de configuración de todo el
sistema /etc/[Link], si está disponible. Después, busca en el directorio inicial los archivos .cshrc
y .login. Si existen, contienen información de usuario personalizada pertinente para ejecutar el shell C.
Todas las variables establecidas en los archivos /etc/[Link] y /etc/[Link] podrían
alterarlas temporalmente los archivos .cshrc y .login del directorio $HOME. Sólo el usuario root puede
modificar los archivos /etc/[Link] y /etc/[Link].
Los archivos /etc/[Link] y $HOME/.login sólo se ejecutan una vez durante el inicio de sesión.
Por lo general, estos archivos se utilizan para contener las definiciones de las variables de entorno, los
mandatos que desea que se ejecuten una vez al iniciarse la sesión o los mandatos que establecen las
características del terminal.
Los archivos /etc/[Link] y $HOME/.cshrc se ejecutan al iniciar la sesión y cada vez que se invoca
el mandato csh o script de shell C. Generalmente, se utilizan para definir las características del shell C,
tales como alias y variables de shell C, (por ejemplo, history, noclobber o ignoreeof). Se recomienda
utilizar sólo los mandatos incorporados del shell C en los archivos /etc/[Link] y $HOME/.cshrc
ya que la utilización de otros mandatos aumenta el tiempo de arranque de los scripts de shell.
Referencia relacionada
Lista de mandatos incorporados del shell C
A continuación se muestran los mandatos incorporados del shell C.

Limitaciones del shell C


Las siguientes son limitaciones del shell C.
• Las palabras no pueden ser mayores de 1024 bytes.
• Las listas de argumentos están limitadas a ARG_MAX bytes. Los valores para la variable ARG_MAX se
encuentran en el archivo /usr/include/sys/limits.h.
• El número de argumentos para un mandato que implica la expansión del nombre de archivo está
limitado a 1/6 del número de bytes permitidos en una lista de argumentos.
• Las sustituciones de mandatos no pueden sustituir más bytes de los que están permitidos en una lista
de argumentos.
• Para detectar bucles, el shell limita el número de sustituciones de alias en una sola línea a 20.
• El mandato csh no da soporte a la expansión del nombre de archivo basada en la clasificación de
equivalencia de los caracteres.
• Los descriptores de archivo (distintos de la entrada estándar, la salida estándar y el error estándar) que
se han abierto antes de que csh ejecute alguna aplicación no están disponibles para esa aplicación.

288 AIX Versión 7.2: Gestión del sistema operativo


Sustitución de alias en el shell C
Un alias es un nombre que se asigna a un mandato o a una serie de mandatos. El shell C le permite
asignar alias y utilizarlos como utilizaría los mandatos. El shell mantiene una lista de los alias que define.
Cuando el shell ha explorado la línea de mandatos, subdivide los mandatos en distintas palabras y
comprueba la primera palabra de cada mandato, de izquierda a derecha, para verificar si existe un alias.
Si se encuentra un alias, el shell utiliza el mecanismo del histórico para sustituir el texto del alias por el
texto del mandato al que hace referencia el alias. Las palabras resultantes sustituyen la lista de mandatos
y argumentos. Si no se hace ninguna referencia a la lista del histórico, la lista de argumentos permanece
intacta.
Los mandatos incorporados alias y unalias se utilizan para establecer, visualizar y modificar la lista de
los alias. El mandato alias se utiliza en el formato siguiente:

alias [Nombre [ListaPalabras]]

La variable opcional Nombre especifica el alias del nombre especificado. Si especifica una lista de
palabras con la variable ListaPalabras, el mandato la asigna como el alias de la variable Nombre. Si
ejecuta el mandato alias sin ninguna variable opcional, éste visualiza todos los alias del shell C.
Si el alias del mandato ls es ls -l, el mandato siguiente:

ls /usr

se sustituirá por el mandato:

ls -l /usr

La lista de argumentos no se altera puesto que no hay ninguna referencia a la lista del histórico en el
mandato con un alias. De forma similar, si el alias del mandato lookup es el siguiente:

grep \!^ /etc/passwd

el shell sustituirá lookup bill por lo siguiente:

grep bill /etc/passwd

En este ejemplo, !^ hace referencia a la lista del histórico, y el shell la sustituye por el primer argumento
que aparece en la línea de entrada, en este caso bill.
Puede utilizar caracteres coincidentes con patrón especiales en un alias. El mandato siguiente:

alias lprint 'pr &bslash2.!* >

> print'

crea un mandato que formatea sus argumentos a la impresora de líneas. El carácter ! queda protegido
del shell, en el alias, por medio de la utilización de comilla simples para que el alias no se expanda hasta
que se ejecute el mandato pr.
Si el shell localiza un alias, efectúa la transformación de palabras del texto de entrada y comienza de
nuevo el proceso de alias en la línea de entrada reformada. Si la primera palabra del siguiente texto es
igual que la del texto anterior, se impide que tenga lugar la repetición en bucle asignando al alias un
distintivo para que finalice el proceso del alias. Los otros bucles posteriores se detectan y generan un
error.
Conceptos relacionados
Sustitución del histórico en el shell C
La sustitución de histórico le permite modificar palabras individuales de mandatos anteriores para crear
nuevos mandatos. La sustitución de histórico facilita la repetición de mandatos, de argumentos de un
mandato anterior en el mandato actual o arreglar errores de escritura en el mandato anterior escribiendo
menos de lo normal.

Gestión del sistema operativo 289


Sustitución de variables en el shell C
El shell C mantiene un conjunto de variables, cada una de las cuales tiene como valor una lista de cero o
más palabras. Algunas de estas variables están definidas por el shell o el shell hace referencia a ellas. Por
ejemplo, la variable argv es una imagen de la lista de variables del shell y a las palabras que componen el
valor de esta variable se hace referencia de formas especiales.
Para cambiar y visualizar los valores de las variables, utilice los mandatos set y unset. De las variables a
las que hace referencia el shell, algunas son conmutadores (variables que activan o desactivan valores).
El shell no examina los conmutadores de un valor, sólo comprueba si están o no establecidos. Por
ejemplo, la variable de shell verbose es un conmutador que provoca el eco de la entrada de mandatos. El
valor de esta variable es el resultado de la emisión del distintivo -v desde la línea de mandatos.
Otras operaciones tratan a las variables numéricamente. El mandato @ realiza cálculos numéricos y el
resultado se asigna a una variable. No obstante, los valores de las variables siempre están representados
como (cero o más) series. Para las operaciones numéricas, la serie nula se considera que es cero y la
segunda y siguientes palabras de los valores de varias palabras se ignoran.
Cuando emita un mandato, el shell analizará la línea de entrada y efectuará la sustitución de alias. A
continuación, antes de ejecutar el mandato, efectuará la sustitución de variables. El carácter $ se utiliza
para la sustitución. Sin embargo, se pasará sin cambiarse si va seguido de un blanco, una tabulación o un
carácter de nueva línea. La especificación de una \ antes del carácter $ impide esta expansión, salvo en
dos casos:
• El mandato está delimitado entre " ". En este caso, el shell siempre efectúa la sustitución.
• El mandato está delimitado entre ' '. En este caso, el shell nunca efectúa la sustitución. En las
sustitución de mandatos, se interpretan las series especificadas entre ' '.
El shell reconoce la redirección de entrada y de salida antes de la expansión de variables y las expande
por separado. De lo contrario, el nombre de mandato y la lista completa de argumentos se expanden
juntos. Por lo tanto, es posible que la primera palabra (mandato) genere más de una palabra, la primera
de las cuales pasa a ser el nombre de mandato y el resto pasan a ser parámetros.
A menos que se hayan delimitado mediante " " o se haya proporcionado el modificador :q, los
resultados de la sustitución de variables pueden estar sujetos finalmente a la sustitución de mandatos y
nombres de archivos. Cuando está delimitada entre comillas, una variable con un valor que consta de
varias palabras se expande a una sola palabra o a una parte de una palabra, con las palabras del valor de
la variable separadas por blancos. Cuando aplica el modificador :q a una sustitución, la variable se
expande en varias palabras. Cada palabra se separa mediante un blanco y se delimita entre comillas
dobles para impedir la posterior sustitución de mandatos o de nombres de archivo.
Las notaciones que se indican a continuación le permiten introducir valores de variable en la entrada del
shell. Excepto como se indica, es un error hacer referencia a una variable que no está definida con el
mandato set.
Puede aplicar los modificadores :gh, :gt, :gr, :h, :r, :q y :x a las sustituciones siguientes. Si en el
formato del mandato aparecen { }, los modificadores deben especificarse dentro de las llaves. En cada
expansión de variable sólo está permitido especificar un modificador :.

Elemento Descripción
$Nombre
${Nombre} Se sustituye por las palabras que se han asignado a la variable Nombre, cada una de
ellas separadas por un blanco. Las llaves aíslan la variable Nombre de cualquiera de
los caracteres siguientes que, de lo contrario, formarían parte de ésta. Los nombres
de las variables de shell empiezan por una letra y constan de un máximo de 20
letras y dígitos, incluido el carácter de subrayado (_). Si la variable Nombre no
especifica una variable de shell pero está establecida en el entorno, se devuelve su
valor. El modificador precedido por dos puntos, además de los demás formatos
descritos aquí, no está disponible en este caso.

290 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
$
Nombre[número ]

$ Sólo selecciona algunas de las palabras del valor de la variable Nombre. El número
{ Nombre[número se somete a la sustitución de variables y puede estar compuesto de un solo número
]} o de dos números separados mediante un guión (-). La primera palabra del valor de
la serie de una variable tiene el número 1. Si se omite el primer número de un rango,
se toma el valor predeterminado 1. Si se omite el último número de un rango, el
valor predeterminado es $#Nombre. El símbolo de asterisco (*) selecciona todas las
palabras. No es un error que un rango esté vacío si se omite el segundo argumento o
está en un rango.
$#Nombre
${#Nombre} Proporciona el número de palabras de la variable Nombre. Puede utilizarse en un
[número], tal como se ha indicado anteriormente. Por ejemplo,
$Nombre[$#Nombre].
$0 Sustituye el nombre del archivo cuya entrada de mandatos se lee. Se produce un
error si no se conoce el nombre.
$número
${número} Equivalente a $argv[número].
$* Equivalente a $argv[*].

Es posible que las siguientes sustituciones no se puedan cambiar con los modificadores ::

Elemento Descripción
$?nombre
${? Sustituye a la serie 1 si se ha establecido la variable nombre; a cero (0) si no se ha
nombre} establecido esta variable.
$?0 Sustituye a 1 si se conoce el nombre de archivo de entrada actual; a cero (0) si no se conoce
el nombre de archivo.
$$ Sustituye el número de proceso (decimal) del shell padre.
$< Sustituye una línea de la entrada estándar, sin interpretación posterior. Utilice esta
sustitución para leer desde el teclado en un procedimiento del shell.

Conceptos relacionados
Sustitución de mandatos en el shell C
En la sustitución de mandatos, el shell ejecuta un mandato especificado y sustituye ese mandato por su
salida.

Sustitución de nombres de archivo en el shell C


El shell C permite realizar sustituciones de nombres de archivos.
El shell C proporciona varios accesos directos para ahorrar tiempo y pulsaciones. Si una palabra contiene
cualquiera de los caracteres *, ?, [ ] o { } o empieza por una tilde (~), esta palabra es candidata de la
sustitución de nombre de archivo. El shell C interpreta la palabra como si fuera un patrón y sustituye la
palabra por una lista ordenada alfabéticamente de nombres de archivos que coinciden con el patrón.
Se utiliza el orden de clasificación actual, tal como especifican las variables de entorno LC_COLLATE o
LANG. En una lista de palabras que especifica la sustitución de nombres de archivo, se produce un error si
ningún patrón coincide con un nombre de archivo existente. No obstante, no se requiere que coincidan
todos los patrones. Sólo los símbolos de coincidencia de caracteres *, ? y [ ] indican coincidencia de

Gestión del sistema operativo 291


patrón o expansión de nombre de archivo. La tilde (~) y los caracteres { } indican una abreviatura del
nombre de archivo.

Expansión de nombres de archivo en el shell C


El carácter de asterisco (*) puede coincidir con cualquier serie de caracteres, incluida la serie nula.
Por ejemplo, en un directorio que contiene los archivos:

a aa aax alice b bb c cc

el mandato echo a* imprime todos los nombres de archivo que empiezan por el carácter a:

a aa aax alice

Nota: Cuando se busca la coincidencia de nombres de archivo, los caracteres de punto (.) y la barra
inclinada (/) deben coincidir explícitamente.
El signo de interrogación (?) puede coincidir con cualquier carácter individual. El mandato siguiente:

ls a?x

lista todos los nombres de archivo que empiezan por la letra a, seguida de un solo carácter y que finalizan
por la letra x:

aax

Para buscar la coincidencia de un único carácter o de un rango de caracteres, delimite el carácter o


caracteres entre [ ]. El mandato siguiente:

ls [abc]

lista todos los nombres de archivo que coinciden exactamente con uno de los caracteres delimitados:

a b c

Dentro de los corchetes, un rango léxico de caracteres se indica mediante [a-z]. Los caracteres que
coinciden con este patrón se definen mediante el orden de clasificación actual.

Abreviaturas de nombre de archivo en el shell C


La tilde (~) y los caracteres { indican una abreviatura de un nombre de archivo. El carácter ~ al principio
de un nombre de archivo se utiliza para representar directorios iniciales. Cuando aparece solo, el carácter
~ expande el directorio inicial reflejado en el valor de la variable de shell home.
Por ejemplo, el mandato siguiente:

ls ~

lista todos los archivos y directorios que se encuentran en el directorio $HOME.


Cuando el mandato va seguido de un nombre formado por caracteres de letras, dígitos y guión (-), el shell
busca un usuario que tenga ese nombre y sustituye el directorio $HOME de dicho usuario.
Nota: Si el carácter ~ va seguido de un carácter distinto de una letra o una barra inclinada (/), o aparece
en cualquier lugar que no sea al principio de una palabra, la expansión no se realiza.
Para buscar la coincidencia de nombres de archivo sin escribir el nombre completo del archivo,
especifique los nombres de archivo entre { }. El patrón a{b,c,d}e es otra manera de escribir abe ace
ade. El shell mantiene el orden de izquierda a derecha y almacena por separado el resultado las

292 AIX Versión 7.2: Gestión del sistema operativo


coincidencias a bajo nivel para preservar este orden. Puede que esta construcción esté anidada. De esta
forma, lo siguiente:

~source/s1/{oldls,ls}.c

se expande a:

/usr/source/s1/oldls.c /usr/source/s1/ls.c

si el directorio inicial para source es /usr/source. De forma similar, lo siguiente:

../{memo,*box}

puede expandirse a:

../memo ../box ../mbox

Nota: memo no se clasifica con los resultados de la coincidencia de *box. Como caso especial, los
caracteres {, } y { } se pasan sin modificarse.

Clases de caracteres del shell C


Puede utilizar clases de caracteres para buscar la coincidencia de los nombres de los archivos de una
indicación de rango.
El formato siguiente indica al sistema que ha de buscar la coincidencia de cualquier carácter individual
que pertenezca a la clase especificada:

[:clasecaracteres:]

Las clases siguientes corresponden a subrutinas ctype:

Clase de Definición
carácter
alnum Caracteres alfanuméricos
alpha Letras mayúsculas y minúsculas
cntrl Caracteres de control
digit Dígitos
graph Caracteres gráficos
lower Letras minúsculas
print Caracteres imprimibles
punct Carácter de puntuación
space Espacio, tabulación horizontal, retorno de carro, nueva línea, tabulación vertical o
carácter de salto de página
upper Caracteres en mayúsculas
xdigit Dígitos hexadecimales

Imaginemos que está en un directorio que contiene los archivos siguientes:

a aa aax Alice b bb c cc

Escriba el mandato siguiente en un indicador de mandatos del shell C:

ls [:lower:]

Gestión del sistema operativo 293


El shell C lista todos los nombres de archivo que comienzan por caracteres en minúsculas:

a aa aax b bb c cc

Para obtener más información acerca de las expresiones de clases de caracteres, consulte el mandato
ed.

Variables de entorno en el shell C


Ciertas variables tienen un significado especial para el shell C. De éstas, argv, cwd, home, path, prompt,
shell y status siempre las establece el shell.
Excepto para las variables cwd y status, la acción del establecimiento por el shell sólo se produce en la
inicialización. Todas las variables anteriores mantienen sus valores a menos que se restablezcan
explícitamente.
El mandato csh copia las variables de entorno USER, TERM, HOME y PATH en las variables csh, user, term,
home y path, respectivamente. Los valores vuelven a copiarse al entorno siempre que se restablezcan las
variables normales del shell. La variable path no sólo se puede establecer en el archivo .cshrc porque los
subprocesos csh importan la definición de vía de acceso del entorno y la vuelve a exportar si se ha
cambiado.
Las variables siguientes tienen significados especiales:

Elemento Descripción
argv Contiene los argumentos que se pasan a scripts de shell. Los parámetros posicionales
de esta variable se sustituyen.
cdpath Especifica una lista de directorios alternativos en los que el mandato chdir o cd
buscará subdirectorios.
cwd Especifica el nombre completo de la vía de acceso del directorio actual.
echo Se establece cuando se utiliza el distintivo de línea de mandatos -x; cuando se
establece, da lugar a que cada mandato y argumento ejecuten echo justo antes de su
ejecución. En el caso de mandatos que no son incorporados, todas las expansiones se
producen antes de la repetición. Para los mandatos incorporados se ejecuta echo antes
de la sustitución del nombre del archivo y del mandato ya que estas sustituciones se
realizan entonces de forma selectiva.
histchars Especifica un valor de serie para cambiar los caracteres utilizados en la sustitución de
histórico. Utilice el primer carácter de su valor como carácter de sustitución del
histórico; éste sustituye el carácter por omisión, !. El segundo carácter de su valor
sustituye al carácter ^ en las sustituciones rápidas.
Nota: El establecimiento del valor de histchars en un carácter utilizado en nombres de
mandato o archivo puede dar lugar a una sustitución no intencionada del histórico.

history Contiene un valor numérico para controlar el tamaño de la lista del histórico. Los
mandatos a los que se hace referencia dentro del número de sucesos permitido no se
descartan. Los valores muy largos de la variable history podrían dar lugar a que el shell
experimentara una insuficiencia de memoria. Independientemente de que esta variable
esté definida o no, el shell C siempre guarda el último mandato que se ejecutó en la lista
del histórico.
home Indica el directorio inicial, que se ha inicializado desde el entorno. La expansión del
nombre de archivo del carácter de tilde (~) hace referencia a esta variable.
ignoreeof Especifica que el shell ignora un carácter de fin de archivo de dispositivos de entrada
que son estaciones de trabajo. Esto evita que los shells puedan matarse
accidentalmente cuando el shell lee un carácter de fin de archivo (Control-D).

294 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
mail Especifica los archivos en los que busca correo el shell. Esto se efectúa después de cada
finalización de mandato que da como resultado un indicador si ha transcurrido un
intervalo de tiempo especificado. El shell visualiza el mensaje Mail in file si el
archivo tiene una hora de acceso anterior a su hora de cambio.
Si la primera palabra del valor de la variable mail es un valor numérico, especifica un
intervalo de tiempo de comprobación del correo distinto (en segundos); el valor
predeterminado es 600 (10 minutos). Si especifica varios archivos de correo, el shell
visualiza el mensaje New mail in file, cuando exista correo en el archivo
especificado.
noclobber Sitúa restricciones en redirección de salida para garantizar que no se destruyen
accidentalmente archivos y que las redirecciones se añaden a archivos existentes.
noglob Impide la expansión del nombre de archivo. Esto resulta más útil en scripts de shell que
no gestionan nombres de archivos o cuando se ha obtenido una lista de nombres de
archivos y no se desea realizar ninguna expansión adicional.
nonomatch Especifica que no se producen errores si una expansión de nombres de archivo no
coincide con ningún archivo existente, sino que se devuelve el patrón de primitivos. Sí es
un error cuando el patrón primitivo no se ha formado correctamente.
notify Especifica que el shell envía notificación asíncrona de cambios en los estados de
trabajos. El valor predeterminado presenta los cambios en los estados justo antes de
visualizar el indicador del shell.
path Especifica los directorios en que se buscan los mandatos para ejecución. Una palabra
nula especifica el directorio actual. Si no se ha establecido ninguna variable path, sólo
pueden ejecutarse nombres completos de vías de acceso. La vía de búsqueda por
omisión (del archivo /etc/environment que se utiliza durante el inicio de sesión) es la
siguiente:

/usr/bin /etc /usr/sbin /usr/ucb /usr/bin/X11 /sbin

Normalmente, un shell al que no se han proporcionado los distintivos -c ni -t coloca en


hash el contenido de los directorios de la variable path después de leer .cshrc y cada
vez que se restaura la variable path. Si añade nuevos mandatos a estos directorios
mientras el shell está activo, debe proporcionar el mandato rehash. De lo contrario, es
posible que los mandatos no puedan encontrarse.
prompt Especifica la serie que se visualiza antes de que lea cada mandato de una entrada de
estación de trabajo interactiva. Si aparece un carácter ! en la serie, se sustituye por el
número de suceso actual. Si aparece el carácter ! en una serie delimitada por comillas
simples o comillas dobles, el carácter ! debe ir precedido de una \. La variable prompt
por omisión para los usuarios sin autorización de root es % . La variable prompt por
omisión para el usuario que dispone de autorización de usuario root es #.
savehist Especifica un valor numérico para controlar el número de entradas de la lista del
histórico que están guardadas en el archivo ~/.history cuando finaliza la sesión. Se
guarda cualquier mandato al que se haga referencia en este número de sucesos.
Durante el arranque, el shell lee ~/.history en la lista del histórico, permitiendo que
el histórico pueda guardarse entre inicios de sesión. Los valores muy largos de la
variable savehist pueden ralentizar el arranque del shell.
shell Especifica el archivo en que reside el shell C. Se utiliza para forzar a los shells que
interpreten archivos que tienen definidos bits de ejecución, pero que el sistema no
ejecuta. Se inicializa en el directorio inicial del shell C.

Gestión del sistema operativo 295


Elemento Descripción
status Especifica el estado devuelto por el último mandato. Si el mandato termina
anormalmente, se añade 0200 al estado. Los mandatos incorporados que no son
satisfactorios devuelven un estado de salida 1. Los mandatos incorporados
satisfactorios establecen su estado en el valor 0.
time Controla la temporización automática de mandatos. Si está definida esta variable,
cualquier mandato que tarde más del número de segundos de CPU especificados
mostrará una línea de recursos utilizados al final de la ejecución. Para obtener
información acerca de las salidas predeterminadas, consulte el mandato incorporado
time.
verbose Esta variable, que se establece mediante el distintivo de línea de mandatos -v, da lugar
a que las palabras de cada mandato se visualicen tras la sustitución del histórico.

Control de trabajos en el shell C


El shell asocia un número de trabajo con cada proceso. El shell mantiene una tabla de los trabajos
actuales y les asigna números enteros pequeños.
Cuando se inicia un trabajo como proceso en segundo plano con un ampersand (&), el shell imprime una
línea parecida a la siguiente:

[1] 1234

Esta línea indica que el número del trabajo es el 1 y que el trabajo se compone de un único proceso cuyo
ID de proceso es 1234. Utilice el mandato incorporado jobs para ver la tabla de los trabajos actuales.
Un trabajo que se ejecuta en el segundo plano compite por la entrada si intenta leer de la estación de
trabajo. Los trabajos en segundo plano también pueden producir salida para la estación de trabajo que se
intercala con la salida de otros trabajos.
Puede hacer referencia a los trabajos del shell de varias formas. Utilice el carácter de porcentaje (%) para
especificar un nombre de trabajo. Este nombre puede ser el número de trabajo o el nombre del mandato
que inició el trabajo, si este nombre es exclusivo. Por ejemplo, si un proceso make se ejecuta como
trabajo 1, puede hacer referencia a él como %1. También puede hacer referencia a él como %make si sólo
hay un trabajo suspendido con un nombre que empiece por la serie make. También puede utilizar lo
siguiente:

%?Serie

para especificar un trabajo cuyo nombre contenga la variable Serie, si sólo existe un trabajo con tales
características.
El shell detecta inmediatamente si el estado de un proceso ha cambiado. Si un trabajo queda bloqueado
de forma que no se puede continuar, el shell envía un mensaje a la estación de trabajo. Este mensaje sólo
se visualiza después de haber pulsado la tecla Intro. Sin embargo, si se ha establecido la variable de shell
notify, el shell emitirá inmediatamente un mensaje que indica los cambios producidos en el estado de los
trabajos de proceso en segundo plano. Utilice el mandato incorporado mandato para marcar un solo
proceso a fin de que se informe con prontitud de sus cambios de estado. Por omisión, el mandato notify
marcará el proceso actual.

Lista de mandatos incorporados del shell C


A continuación se muestran los mandatos incorporados del shell C.

Elemento Descripción
@ Visualiza el valor de las variables de shell especificadas.
alias Visualiza los alias especificados o todos los alias.

296 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
bg Establece los trabajos actuales o los trabajos especificados como trabajos en segundo
plano.
break Reanuda la ejecución tras el final del mandato de delimitación foreach o while más
cercano.
breaksw Realiza una interrupción desde un mandato switch.
case Define una etiqueta en un mandato switch.
cd Cambia el directorio actual por el directorio especificado.
chdir Cambia el directorio actual por el directorio especificado.
continue Continúa la ejecución del mandato de delimitación foreach o while más cercano.
default Etiqueta la especificación de mayúsculas o minúsculas por omisión en una sentencia
switch.
dirs Muestra la pila de directorios.
echo Graba series de caracteres en la salida estándar del shell.
else Ejecuta los mandatos que siguen al segundo else de una secuencia de mandatos if
(Expresión) then ...else if (Expresión2) then ... else ... endif.
end Indica el final de una secuencia de mandatos a la que precede el mandato foreach.
endif Ejecuta los mandatos que siguen a la segunda sentencia then de una secuencia de
mandatos if (Expresión) then ... else if (Expresión2) then ... else ... endif.
endsw Marca el final de una secuencia de mandatos switch (Serie) case Serie : ... breaksw
default: ... breaksw secuenciarendsw. Esta secuencia de mandatos hace coincidir
sucesivamente cada etiqueta con el valor de la variable Serie. La ejecución continúa tras el
mandato endsw si se ejecuta un mandato breaksw o si no existe ninguna etiqueta
coincidente y no existe ningún valor predeterminado.
eval Lee los valores de las variables como entrada para el shell y ejecuta el mandato o
mandatos resultantes en el contexto del shell actual.
exec Ejecuta el mandato especificado en lugar del shell actual.
exit Sale del shell con el valor de la variable de shell de estado o con el valor de la expresión
especificada.
fg Establece los trabajos actuales o los especificados como trabajos en primer plano,
continuando con su ejecución si se han detenido.
foreach Establece sucesivamente una variable Nombre para cada miembro especificado en la
variable Lista y una secuencia de mandatos, hasta llegar a un mandato end.
glob Visualiza la lista utilizando la expansión del histórico, de la variable y del nombre de
archivo.
goto Continúa con la ejecución después de una línea especificada.
hashstat Muestra estadísticas indicando con qué eficacia ha localizado mandatos la tabla hash.
history Muestra la lista de sucesos históricos.
if Ejecuta un mandato especificado si una expresión indicada es verdadera.
jobs Lista los trabajos activos.
kill Envía la señal TERM (terminar) o la señal especificada por la variable Señal al trabajo o
proceso especificado.
limit Limita la utilización de un recurso especificado por parte del proceso actual y de cada
proceso que éste crea.

Gestión del sistema operativo 297


Elemento Descripción
login Finaliza un shell de inicio de sesión y lo sustituye por una instancia del mandato /usr/
sbin/login.
logout Finaliza el shell de inicio de sesión.
nice Establece la prioridad de los mandatos que se ejecutan en el shell.
nohup Da lugar que los estados de entrada en suspensión se pasen por alto en la parte restante
de un procedimiento.
notify Da lugar a que el shell le notifique de forma asíncrona cuando cambie el estado del
trabajo actual o de un trabajo especificado.
onintr Controla la acción del shell en interrupciones.
popd Muestra la pila de directorios y vuelve al nuevo directorio superior.
pushd Intercambia elementos de la pila de directorios.
rehash Da lugar a que vuelva a calcularse la tabla hash en la que se incluye el contenido de los
directorios de la variable de shell de vía de acceso.
repeat Ejecuta el mandato especificado, aplicando las mismas restricciones que las del mandato
if, el número de veces que se especifica.
set Muestra el valor de todas las variables de shell.
setenv Modifica el valor de la variable de entorno especificada.
shift Desplaza la variable especificada hacia la izquierda.
source Lee el mandato que especifica la variable Nombre.
stop Detiene los trabajos actuales o los especificados que están ejecutándose como trabajos
en segundo plano.
suspend Detiene el shell como si se hubiera recibido una señal STOP.
switch Inicia una secuencia de mandatos switch (Serie) case Serie : ... breaksw
default: ... breaksw endsw. Esta secuencia de mandatos hace coincidir
sucesivamente cada etiqueta con el valor de la variable Serie. Si ninguna de las etiquetas
coincide antes de que se encuentre una etiqueta por omisión, la ejecución se iniciará tras
la etiqueta por omisión.
time Visualiza un resumen del tiempo que ha empleado el shell y sus procesos hijo.
umask Determina los permisos de archivo.
unalias Descarta todos los alias que tienen nombres que coinciden con la variable Patrón.
unhash Inhabilita la utilización de la tabla hash interna para la localización de programas en
ejecución.
unlimit Elimina las limitaciones de los recursos.
unset Elimina todas las variables cuyos nombres coinciden con la variable Patrón.
unsetenv Elimina todas las variables del entorno cuyos nombres coinciden con la variable Patrón
especificada.
wait Espera a todos los trabajos en segundo plano.
while Evalúa los mandatos en la secuencia de mandatos entre while y end coincidente
mientras una expresión especificada por la variable Expresión se evalúa en un valor
distinto de cero.

La información relacionada es la siguiente:

298 AIX Versión 7.2: Gestión del sistema operativo


Shell Korn
Los mandatos ksh y stty.
Los mandatos del shell Korn alias , cd, export, fc , getopts, read, set y typeset.
El archivo /etc/passwd.
shell Bourne
El mandato bsh o Rsh y el mandato login command.
El mandato especial del shell Bourne read.
La subrutina setuid , la subrutina setgid.
El archivo especial null.
El archivo environment , el formato de archivo profile.
shell C
Los mandatos csh y ed.
Los mandatos incorporados del shell C alias, unalias, jobs, notify y set.
Conceptos relacionados
shell C
El shell C es un intérprete de mandatos interactivo y un lenguaje de programación de mandatos. Utiliza
una sintaxis que es similar al lenguaje de programación C.
Mandatos incorporados del shell C
Los mandatos incorporados se ejecutan en el shell. Si existe un mandato incorporado, como cualquier
componente de un conducto, excepto el último, el mandato se ejecuta en un subshell.

Manejo de señales en el shell C


El shell C normalmente ignora las señales de finalización. Los trabajos que se ejecutan en modalidad
desconectada no se ven afectados por las señales que se generan desde el teclado (INTERRUPT , QUIT y
HANGUP).
Otras señales tienen los valores que el shell hereda de su padre. Puede controlar el manejo que el shell
hace de las señales INTERRUPT y TERMINATE en los procedimientos de shell con onintr. Los shells de
inicio de sesión toman o pasan por alto las señales TERMINATE en función de su configuración. Los
shells que no son shells de inicio de sesión pasan señales TERMINATE a los procesos hijo. En ningún
caso están permitidas las señales INTERRUPT cuando un shell de inicio de sesión está leyendo el
archivo .logout.

Mandatos del shell C


Un mandato simple es una secuencia de palabras separadas por blancos o tabulaciones. Una palabra es
una secuencia de caracteres o de números, o de ambos, que no contiene espacios en blanco sin comillas.

Además, los caracteres siguientes y caracteres dobles también forman palabras simples cuando se
utilizan como separadores de mandatos o terminadores:

& | ;
&& || << > >
< > ( )

Estos caracteres especiales pueden ser parte de otras palabras. Sin embargo, si van precedidos de una
barra inclinada invertida (\), el shell no podrá interpretarlos como caracteres especiales. Las series entre
comillas simples ' ' o dobles " " (pares de caracteres de comillas emparejados) o comillas inversas
también pueden formar partes de palabras. Los blancos, las tabulaciones y los caracteres especiales no
forman palabras separadas cuando se delimitan con estas marcas. También puede delimitar un carácter
de nueva línea entre estas marcas especificando una barra inclinada invertida (\) delante del carácter.
La primera palabra de la secuencia de mandato simple (con número 0) especifica normalmente el nombre
de un mandato. Las palabras restantes, con algunas excepciones, se pasan a dicho mandato. Si el

Gestión del sistema operativo 299


mandato especifica un archivo ejecutable que es un programa compilado, el shell ejecuta
inmediatamente dicho programa. Si el archivo está marcado como ejecutable, pero no es un programa
compilado, el shell presupone que es un script de shell. En este caso, el shell inicia otra sesión de sí
mismo (un subshell), para leer el archivo y ejecutar los mandatos incluidos.

Mandatos incorporados del shell C


Los mandatos incorporados se ejecutan en el shell. Si existe un mandato incorporado, como cualquier
componente de un conducto, excepto el último, el mandato se ejecuta en un subshell.
Nota: Si especifica un mandato desde el indicador de mandatos del shell C, el sistema busca un mandato
incorporado en primer lugar. Si no existe ningún mandato incorporado, el sistema buscará en los
directorios que especifica la variable de shell path un mandato del sistema. Algunos mandatos
incorporados del shell C y mandatos del sistema operativo tienen el mismo nombre. No obstante, estos
mandatos no necesariamente funcionan del mismo modo. Para obtener más información acerca del
funcionamiento del mandato, consulte la descripción que corresponde al mandato.
Si ejecuta un script de shell desde el shell y la primera línea del script de shell empieza por #!/
NombreVíaAccesoShell, el shell C ejecutará el shell especificado en el comentario para procesar el
script. De lo contrario, ejecutará el shell por omisión (el shell que está enlazado con /usr/bin/sh). Si la
ejecución la realiza el shell por omisión, puede que los mandatos incorporados del shell C no se
reconozcan. Para ejecutar mandatos de shell C, especifique #!/usr/bin/csh como primera línea del
script.
Referencia relacionada
Lista de mandatos incorporados del shell C
A continuación se muestran los mandatos incorporados del shell C.

Descripciones de los mandatos del shell C


El shell C proporciona los siguientes mandatos incorporados.

Elemento Descripción
alias [Nombre [ListaPalabras]] Muestra todos los alias si no especifica parámetros. De lo contrario, el
mandato visualiza el alias para el Nombre especificado. Si se
especifica ListaPalabras, este mandato asignará el valor de
ListaPalabras al Nombre del alias. El Nombre de alias especificado no
puede ser alias ni unalias.
bg [%Trabajo ...] Sitúa el trabajo actual o el trabajo especificado por Trabajo en
segundo plano, continuando el trabajo si estaba detenido.
break Reanuda la ejecución después de la sentencia end del mandato de
delimitación foreach o while más cercano.
breaksw Interrumpe desde un mandato switch; reanuda después del
mandato endsw.
case Etiqueta : Define una Etiqueta en un mandato switch.
cd[Nombre] Equivalente al mandato chdir (vea la descripción que sigue).
chdir [Nombre] Cambia del directorio actual al directorio que especifica la variable
Nombre. Si no especifica Nombre, el mandato cambiará al directorio
inicial. Si el valor de la variable Nombre no es un subdirectorio del
directorio actual y no empieza por /, ./ ni ../, el shell comprueba
cada componente de la variable de shell cdpath para ver si tiene un
subdirectorio que coincide con la variable Nombre. Si la variable
Nombre es una variable de shell que tiene un valor que empieza por
una barra inclinada (/), el shell lo intentará con este para verificar si
se trata de un directorio. El mandato chdir es equivalente al
mandato cd.

300 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
continue Continúa la ejecución en la sentencia end del mandato de
delimitación while o foreach más cercano.
default: Etiqueta la especificación de mayúsculas o de minúsculas
correspondiente a default en una sentencia switch. default
debe estar ubicado después de todas las demás etiquetas case.
dirs Muestra la pila de directorios.
echo Graba series de caracteres en la salida estándar del shell.
else Ejecuta los mandatos que siguen al segundo else de una secuencia
de mandatos if (Expresión) then ...else if (Expresión2) then ...
else ... endif.
Nota: La sentencia else es el mandato integrado csh cuando se utiliza
if(expr) then ..else ...endif. Si (expr) es verdadera, se ejecutan los
mandatos hasta la sentencia else. Si (expr) es falsa, se ejecutan los
mandatos comprendidos entre else y endif. Cualquier cosa
expresada entre comillas simples se toma literalmente y no se
interpreta.

end Establece sucesivamente la variable Nombre en cada miembro


especificado por la variable Lista y ejecuta la secuencia de Mandatos
entre la sentencia foreach y la sentencia end coincidente. Las
sentencias foreach y end deben aparecer solas en líneas
independientes.
Utiliza la sentencia continue para continuar el bucle y la sentencia
break para finalizar el bucle prematuramente. Cuando se lee el
mandato foreach desde el terminal, el shell C muestra un indicador
con el signo ? para permitir la entrada de Mandatos. Los mandatos
incluidos en bucles, solicitados por un signo ?, no se sitúan en la lista
del histórico.

endif Si la variable Expresión es verdadera, ejecuta los Mandatos que


siguen a la primera sentencia then. Si else if Expresión2 es
verdadera, ejecuta los Mandatos que siguen a la segunda sentencia
then. Si else if Expresión2 es falsa, ejecuta los Mandatos que
siguen a else. Es posible cualquier número de pares de else if.
Sólo se necesita una sentencia endif. El segmento else es opcional.
Las palabras else y endif sólo pueden utilizarse al principio de las
líneas de entrada. El segmento if debe aparecer solo en su propia
línea de entrada o después de un mandato else.
endsw Hace coincidir sucesivamente cada etiqueta case con el valor de la
variable serie. Con serie, primero se expande el mandato y el nombre
de archivo. Utilice los caracteres comodín *, ? y [ . . . ] en las
etiquetas case, cuyas variables se [Link] ninguna de las
etiquetas coincide antes de que se encuentre una etiqueta default, la
ejecución empieza tras la etiqueta [Link] etiqueta case y la
etiqueta default deben aparecen al principio de la línea. El mandato
breaksw da lugar a que la ejecución continúe tras el mandato
[Link] lo contrario, el control de las etiquetas case y default
podría no ser satisfactorio, como en el lenguaje de programación [Link]
no coincide ninguna etiqueta y no existe ningún default, la ejecución
continúa después del mandato endsw.

Gestión del sistema operativo 301


Elemento Descripción
eval Parámetro . . . Lee el valor de la variable Parámetro como entrada para el shell y
ejecuta el mandato o mandatos resultantes en el contexto del shell
actual. Utilice este mandato para ejecutar mandatos que se han
generado como resultado de la sustitución de un mandato o una
variable puesto que el análisis se produce antes de estas
sustituciones.
exec Mandato Ejecuta el Mandato especificado en lugar del shell actual.
exit (Expresión) Sale del shell con el valor de la variable de shell estado (si no se ha
especificado ninguna Expresión) o con el valor de la Expresión
especificada.
fg [%Trabajo ...] Coloca el trabajo actual o el trabajo especificado por Trabajo en
primer plano, y continúa el trabajo si se había detenido.
foreach Nombre (Lista) Establece sucesivamente una variable Nombre para cada miembro
Mandato. . . especificado en la variable Lista y una secuencia de mandatos, hasta
llegar a un mandato end.
glob Lista Visualiza la Lista utilizando la expansión del histórico, de la variable y
del nombre de archivo. Sitúa un carácter nulo entre palabras y no
incluye un retorno de carro al final.
goto Palabra Continúa con la ejecución tras la línea que especifica la variable
Palabra. De la Palabra especificada se expande el nombre de archivo
y el mandato para producir una serie que tiene el formato que
especifica la variable Etiqueta:. El shell hace retroceder su entrada
hasta donde le es posible y busca una línea que tiene el formato
Etiqueta:, posiblemente precedida de espacios en blanco o de
tabulaciones.
hashstat Muestra estadísticas indicando con qué eficacia ha localizado
mandatos la tabla hash.
history [-r | -h] [n] Muestra la lista de sucesos históricos. Los sucesos más antiguos se
muestran en primer lugar. Si especifica un número n, sólo se
visualizará el número especificado de sucesos más recientes. El
distintivo -r invierte el orden en el que han de visualizarse los sucesos
para que el suceso más reciente sea el que se visualice en primer
lugar. El distintivo -h visualiza la lista del histórico sin números
iniciales. Utilice este distintivo para generar archivos adecuados para
utilizarlos con el distintivo -h del mandato source.
if (Expresión) Mandato Ejecuta el Mandato especificado (incluidos sus argumentos) si la
Expresión especificada es verdadera. La sustitución de variables de la
variable Mandato tiene lugar pronto, a la vez que el resto de la
sentencia if. El Mandato especificado debe ser un mandato simple
(en lugar de un conducto, una lista de mandatos o una lista de
mandatos entre paréntesis).
Nota: La redirección de entrada y salida se produce aunque la
variable Expresión sea falsa y el Mandato no se ejecute.

jobs [-l] Lista los trabajos activos. Con el distintivo -l (L en minúsculas), el


mandato jobs lista los ID de proceso además del número y el
nombre del trabajo.

302 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
kill -l | [[-Señal] % Trabajo...| Envía la señal TERM (terminar), o la señal especificada por la Señal, al
PID...] Trabajo o PID (proceso) especificado. Especifique las señales por
número o por nombre (como se indica en el archivo /usr/
include/sys/signal.h, sin el prefijo SIG). El distintivo -l (L en
minúsculas) lista los nombres de señal.
limit [-h] [Recurso [Uso-máx]] Limita la utilización del recurso especificado por el proceso actual y
de cada proceso que crea. Los límites de los recursos del proceso
están definidos en el archivo /etc/security/limits. Los recursos
controlables son el tiempo de unidad central de proceso (CPU), el
tamaño de los archivos, el tamaño de los datos, el tamaño del vuelco
de la imagen de memoria y la utilización de memoria. Los valores
máximos permitidos para estos recursos se establecen con el
mandato mkuser cuando el usuario se añade al sistema. Se cambian
con el mandato chuser.
Las categorías de los límites pueden ser dinámicas o fijas. Los
usuarios pueden aumentar sus límites limitados hasta el máximo
impuesto por los límites fijos. Debe tener autorización de usuario root
para poder aumentar un límite limitado por encima del límite fijo o
para cambiar límites fijos. El distintivo -h muestra los límites fijos en
lugar de los límites dinámicos.
Si no se especifica un parámetro Uso-máx, el mandato limit
visualiza el límite actual del recurso especificado. Si no se especifica
el parámetro Recurso, el mandato limit visualiza los límites
actuales de todos los recursos. Para obtener más información sobre
los recursos controlados por el submandato limit, consulte las
subrutinas getrlimit, setrlimit o vlimit.
El parámetro Uso-máx para el tiempo de CPU se especifica en el
formato hh:mm:ss. El parámetro Uso-máx para los otros recursos se
especifica como un número de coma flotante o bien como un entero,
opcionalmente seguido de un factor de escala. El factor de escala es
k o kilobytes (1024 bytes), m o megabytes, o b o bloques (las
unidades utilizadas por la subrutina ulimit. Si no especifica ningún
factor de escala, se presupone k para todos los recursos. Para los
nombres de los recursos y los factores de escala, la especificación de
prefijos no ambiguos de los nombres es suficiente.
Nota: Este mandato limita la memoria física (uso de memoria)
disponible para un proceso sólo si existe contención para la memoria
del sistema por otros procesos activos.

login Finaliza un shell de inicio de sesión y lo sustituye por una instancia


del mandato /usr/bin/login. Es una forma de finalizar la sesión
(que se incluye para mantener la compatibilidad con los mandatos
ksh y bsh).
logout Finaliza el shell de inicio de sesión. Este mandato debe utilizarse si se
ha establecido la opción ignoreeof.

Gestión del sistema operativo 303


Elemento Descripción
nice [+n] [Mandato] Si no se especifica ningún valor, define la prioridad de mandatos
ejecutados en este shell a 24. Si se especifica el distintivo +n,
establece que a la prioridad se añada el número especificado. Si se
especifica el distintivo +n y Mandato, ejecuta el Mandato en la
prioridad 24 más el número especificado. Si dispone de autorización
de usuario root, puede ejecutar la sentencia nice con un número
negativo. El Mandato siempre se ejecuta en un subshell, y se aplican
las restricciones de los mandatos de sentencias simples if.
nohup [Mandato] Hace que hangups se pase por alto para el resto del script cuando no
se especifica ningún Mandato. Si se especifica Mandato, hace que el
Mandato especificado se ejecute pasando por alto hangups. Para
ejecutar un conducto o una lista de mandatos, coloque el conducto o
la lista en un script de shell, otorgue al script permiso de ejecución y
utilice el script de shell como el valor de la variable Mandato. Todos
los procesos que se ejecutan como procesos en segundo plano con
un ampersand (&) están eficazmente protegidos para que no se
pueda enviar a ellos una señal hangup cuando se finalice la sesión.
Sin embargo, estos procesos siguen siendo susceptibles de enviar
hangups explícitamente a menos que se utilice la sentencia nohup.
notify [%Trabajo...] Hace que el shell le notifique de forma asíncrona cuando se produzca
un cambio en el estado del trabajo actual o del Trabajo especificado.
Normalmente, el shell proporciona la notificación justo antes de que
presente el indicador del shell. Esta función es automática si se
define la variable del shell notify.
onintr [- | Etiqueta] Controla la acción del shell en interrupciones. Si no se especifican
argumentos, restaura la acción por omisión del shell en
interrupciones, lo que finaliza los scripts de shell o vuelve al nivel de
entrada de mandatos. Si se especifica un distintivo -, hace que todas
las interrupciones se pasen por alto. Si se especifica Etiqueta, hace
que el shell ejecute una sentencia goto Etiqueta cuando el shell
recibe una interrupción o cuando un proceso hijo finaliza debido a una
interrupción. En cualquier caso, si el shell se ejecuta desconectado y
se pasan por alto las interrupciones, ninguna forma de la sentencia
onintr tiene significado. El shell sigue ignorando las interrupciones y
todos los mandatos llamados.
popd [+n] Aparece la pila de directorios y cambia al nuevo directorio superior. Si
especifica una variable +n, el mandato descarta la nésima entrada de
la pila. Los elementos de la pila de directorios están numerados
desde el principio, comenzando por 0.
pushd [+n|Nombre] Sin argumentos, intercambia los dos elementos superiores de la pila
de directorios. Con la variable Nombre, el mandato va al nuevo
directorio y envía el directorio actual antiguo (como se indica en la
variable de shell cwd) a la pila de directorios. Si especifica una
variable +n, el mandato rota el nésimo componente de la pila de
componentes para que sea el elemento superior y lo cambia. Los
miembros de la pila de directorios están numerados desde el
principio, comenzando por 0.

304 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
rehash Da lugar a que vuelva a calcularse la tabla hash interna de contenido
de los directorios en la variable de shell path. Esta acción es
necesaria si se añaden nuevos mandatos a los directorios en la
variable de shell path mientras está conectado. El mandato rehash
sólo es necesario si se añaden mandatos a unos de los directorios
propios del usuario o si alguien cambia el contenido de uno de los
directorios del sistema.
repeat Cuenta Mandato Ejecuta el Mandato especificado, susceptible de las mismas
restricciones que los mandatos en sentencias if simples, el número
de veces especificado en Cuenta.
Nota: Las redirecciones de E/S sólo se producen una vez, aunque la
variable Cuenta sea 0.

set [[Nombre[n]] [ = Palabra]] | Muestra el valor de todas las variables del shell cuando se utiliza sin
[Nombre = (Lista)] argumentos. Las variables que tienen más de una palabra simple
como valor se muestran en una lista de palabras entre paréntesis. Si
sólo se especifica Nombre, el shell C establece la variable Nombre en
la serie nula. De lo contrario, establece Nombre en el valor de la
variable Palabra o bien establece la variable Nombre en la lista de
palabras que especifica la variable Lista. Cuando se especifica n, el
nésimo componente de la variable Nombre se establece en el valor de
la variable Palabra; el nésimo componente ya debe existir. En todos los
casos, se expanden nombres de archivo y mandatos para el valor.
Estos argumentos pueden repetirse para establecer varios valores en
un único mandato set. No obstante, la expansión de variables se
produce para todos los argumentos antes de que se produzca
cualquier definición.
setenvNombre Valor Establece el valor de la variable de entorno que especifica la variable
Nombre en Valor, una única serie. Las variables de entorno más
comúnmente utilizadas, USER, TERM, HOME y PATH, se importan
automáticamente a las variables de shell C y se exportan de las
variables de shell C user, term, home y path. Para éstas, no es
necesario utilizar la sentencia setenv.
shift [Variable] Desplaza a la izquierda los miembros de la variable de shell argv o la
Variable especificada. Se produce un error si no se ha establecido la
variable de shell argv o la Variable, o tiene menos de una palabra
como valor.
source[-h] Nombre Lee los mandatos escritos en la variable Nombre. Puede anidar los
mandatos source. No obstante, si se anidan demasiado
profundamente, el shell puede quedarse sin descriptores de archivo.
Un error en un mandato source a cualquier nivel finaliza todos los
mandatos source anidados. Por lo general, la entrada que tiene
lugar durante los mandatos source no se coloca en la lista del
histórico. El distintivo -h hace que los mandatos se coloquen en la
lista del histórico sin ejecutarlos.
stop [%Trabajo ...] Detiene el trabajo actual o el Trabajo especificado que se ejecuta en
segundo plano.
suspend Detiene el shell como si se hubiera recibido una señal STOP.

Gestión del sistema operativo 305


Elemento Descripción
switch (serie) Inicia una secuencia de mandatos switch (Serie) case Serie : ...
breaksw default: ... breaksw endsw. Esta secuencia de mandatos
hace coincidir sucesivamente cada etiqueta con el valor de la variable
Serie. Si ninguna de las etiquetas coincide antes de que se encuentre
una etiqueta por omisión, la ejecución se iniciará tras la etiqueta por
omisión.
time [Mandato] El mandato time controla la temporización automática de los
mandatos. Si no especifica la variable Mandato, el mandato time
visualiza un resumen de los tiempos utilizados por este shell y sus
hijos. Si especifica un mandato con la variable Mandato, se calculará
su tiempo. El shell visualiza un resumen de tiempos, como se
describe en la variable de shell tiempo. Si es necesario, se crea un
shell adicional para visualizar las estadísticas de tiempo cuando se
completa el mandato.
En el ejemplo siguiente, time se utiliza con el mandato sleep:

time sleep

La salida de este mandato tiene un aspecto similar al siguiente:

0.0u 0.0s 0:00 100% 44+4k 0+0io 0pf+0w

Los campos de salida son los siguientes:


Primero
Número de segundos de tiempo CPU dedicado al proceso del
usuario
Segundo
Número de segundos de tiempo CPU consumido por el kernel en
nombre del proceso del usuario
Tercero
Tiempo transcurrido (tiempo de reloj) por el mandato
Cuarto
Tiempo de CPU de usuario total más tiempo del sistema, como
porcentaje del tiempo transcurrido
Quinto
Promedio de memoria compartida utilizada, más promedio de
espacio de datos no compartido, en kilobytes
Sexto
Número de operaciones de entrada y salida de bloques
Séptimo
Faltas de página más número de intercambios

umask [Valor] Determina los permisos de archivo. Este Valor, junto con los permisos
del proceso de creación, determina los permisos de un archivo
cuando se crea el archivo. El valor predeterminado es 022. El valor
actual se visualizará si no se especifica Valor.
unalias *| Patrón Descarta todos los alias que tienen nombres que coinciden con la
variable Patrón. Todos los alias se eliminan por medio del mandato
unalias *. La ausencia de alias no origina un error.
unhash Inhabilita la utilización de la tabla hash interna para la localización de
programas en ejecución.

306 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
unlimit [-h][Recurso] Elimina la limitación de la variable Recurso. Si no se especifica
ninguna variable Recurso, se eliminan todas las limitaciones de
recurso. Consulte la descripción del mandato limit para la lista de
nombres de Recurso.
El distintivo -h elimina los límites fijos correspondientes. Sólo un
usuario con autorización de usuario root puede cambiar los límites
fijos.

unset *| Patrón Elimina todas las variables que tienen nombres que coinciden con la
variable Patrón. Utilice unset * para eliminar todas las variables. Si
no se definen variables, no se origina ningún error.
unsetenv Patrón Elimina todas las variables del entorno cuyos nombres coincidan con
el Patrón especificado. (Consulte el mandato incorporado setenv).
wait Espera a todos los trabajos en segundo plano. Si el shell es
interactivo, un INTERRUPT (normalmente la secuencia de teclas
Control-C) interrumpe la espera. El shell muestra a continuación los
nombres y números de todos los trabajos que se sabe que están
pendientes.
while (Expresión) Mandato. . . Evalúa los Mandatos entre la sentencia while y la sentencia end
end coincidente mientras la expresión especificada por la variable
Expresión se evalúa en un valor distinto de cero. Puede utilizar la
sentencia break para finalizar y la sentencia continue para
continuar el bucle prematuramente. Las sentencias while y end
deben aparecer solas en sus líneas de entrada. Si la entrada se realiza
desde un terminal, se muestran indicadores después de while
(Expresión) similares a la sentencia foreach.
@ [Nombre[n] = Expresión] Muestra los valores de todas las variables de shell cuando se utilizan
sin argumentos. De lo contrario, establece el nombre que especifica
la variable Nombre en el valor de la variable Expresión. Si la expresión
contiene los caracteres <, >, & o |, esta parte de la expresión se debe
especificar entre paréntesis. Cuando se especifica n, el nésimo
componente de la variable Nombre se establece en la variable
Expresión. Tanto la variable Nombre como su nésimo componente ya
deben existir.
Están disponibles operadores de lenguaje C, tales como *= y +=. El
espacio que separa la variable Nombre del operador de asignación es
opcional. Sin embargo, se necesitan espacios para separar los
componentes de la variable Expresión, que de lo contrario se leería
como una sola palabra. Los operadores de sufijo especiales, el signo
más doble (++) y el guión doble (--) aumentan o disminuyen,
respectivamente, el valor de la variable Nombre.

Expresiones y operadores del shell C


El mandato incorporado @ y las sentencias exit, if y while aceptan expresiones que incluyen operadores
similares a los del lenguaje C, con la misma precedencia.
Están disponibles los siguientes operadores:

Operador Significado
() cambiar prioridad
~ complemento

Gestión del sistema operativo 307


Operador Significado
! negación
*/ % multiplicar, dividir, módulo
+ - sumar, restar
<< > > desplazamiento a la izquierda, desplazamiento a la derecha
<= >= < > operadores relacionales
== != =~ !~ comparación de series/coincidencia con patrón
& AND bitwise
^ OR de exclusión bitwise
| OR de inclusión bitwise
&& AND lógico
|| OR lógico

En la lista anterior, la prioridad de los operadores disminuye a medida que avanza la lista (de izquierda a
derecha y de arriba a abajo).
Nota: Los operadores + y - efectúan la asociación por el lado derecho. Por ejemplo, la evaluación de a +
b - c se realiza del modo siguiente:

a + (b - c)

y no de la forma siguiente:

(a + b) - c

Los operadores ==, !=, =~ y !~ comparan sus argumentos como series; todos los demás operan en
números. Los operadores =~ y !~ son similares a == y !=, salvo que la parte que se encuentra más a la
derecha es un patrón con el que se hace coincidir el operando que se encuentra más a la izquierda. Con
ello se reduce la necesidad de tener que utilizar la sentencia switch en los procedimientos de shell.
También están disponibles los operadores lógicos or (||) y and (&&). Pueden utilizarse para comprobar un
rango de números, tal como se muestra en el ejemplo siguiente:

if ($#argv > 2 && $#argv < 7) then

En el ejemplo anterior, el número de argumentos debe ser mayor de 2 y menor de 7.


Las series que empiezan por cero (0) se consideran números octales. La falta de argumentos o los
argumentos nulos se consideran 0. Todas las expresiones dan como resultado series que representan
números decimales. Tenga en cuenta que dos componentes de una expresión pueden aparecer en la
misma palabra. Excepto cuando se encuentran junto a componentes de expresiones que son
sintácticamente significativas para el analizador (& | < > ( )), los componentes de expresión deben
estar rodeados por espacios.
Disponibles también en expresiones como operandos primitivos están las ejecuciones de mandatos
especificadas entre paréntesis ( ) y las consultas con el formato (-operador NombreArchivo), donde
operador es uno de los siguientes:

Ele Descripción
me
nto
r Acceso de lectura
w Acceso de grabación
x Acceso de ejecución

308 AIX Versión 7.2: Gestión del sistema operativo


Ele Descripción
me
nto
e Existencia
o Propiedad
z Tamaño cero
f Archivo sin formato
d Directorio

Se realiza la expansión del mandato y del nombre de archivo NombreArchivo especificado y, a


continuación, se prueba para verificar si dispone de la relación especificada con el usuario real. Si
NombreArchivo no existe o no puede accederse a éste, todas las consultas devuelven el valor false(0).
Si el mandato se ejecuta satisfactoriamente, la consulta devuelve el valor true(1). De lo contrario, si el
mandato falla, la consulta devuelve el valor false(0). Si necesita información de estado más detallada,
ejecute el mandato fuera de una expresión y, a continuación, examine la variable de shell status.

Sustitución de mandatos en el shell C


En la sustitución de mandatos, el shell ejecuta un mandato especificado y sustituye ese mandato por su
salida.
Para realizar la sustitución de mandatos en el shell C, especifique el mandato o la serie de mandatos
entre acentos graves (` `). Por lo general, el shell descompone la salida del mandato en palabras sueltas
donde existen blancos, tabulaciones y caracteres de nueva línea. A continuación sustituye el mandato
original con esta salida.
En el ejemplo siguiente, los acentos graves (` `) que rodean al mandato date indican que se sustituirá la
salida del mandato:

echo La fecha y hora actuales son: `date`

La salida de este mandato puede ser similar a la siguiente:

La fecha y hora actuales son: Mié Abr 8 [Link] CDT 1992

El shell C efectúa sustitución de mandatos selectivamente en los argumentos de mandatos de shell


incorporados. Esto significa que no expande dichas partes de expresiones que no se evalúan. En el caso
de mandatos que no son incorporados, el shell sustituye el nombre de mandato independientemente de
la lista de argumentos. La sustitución se produce en un hijo del shell principal, sólo después de que el
shell efectúe redirección de entrada o salida.
Si una serie de mandato está rodeada de " ", el shell solo trata los caracteres de la nueva línea como
separadores de palabras, pero mantiene los espacios en blanco y las tabulaciones que aparecen dentro
de la palabra. En todos los casos, el carácter de nueva línea final no fuerza una nueva palabra.
Conceptos relacionados
Sustitución de variables en el shell C
El shell C mantiene un conjunto de variables, cada una de las cuales tiene como valor una lista de cero o
más palabras. Algunas de estas variables están definidas por el shell o el shell hace referencia a ellas. Por
ejemplo, la variable argv es una imagen de la lista de variables del shell y a las palabras que componen el
valor de esta variable se hace referencia de formas especiales.

Ejecución de mandatos no incorporados en el shell C


Cuando el shell C determina que un mandato no es un mandato de shell incorporado, intenta ejecutar el
mandato con la subrutina execv.
Cada palabra de la variable de shell path indica el nombre de un directorio desde el que el shell intenta
ejecutar el mandato. Si no se especifica ni el distintivo -c ni el distintivo -t, el shell organiza los nombres
de esos directorios en una tabla interna. El shell intenta llamar a la subrutina execv en un directorio sólo

Gestión del sistema operativo 309


si existe alguna posibilidad de que el mandato resida allí. Si desactiva este mecanismo con el mandato
unhash o proporciona al shell los distintivos -c o -t, el shell se concatena con el nombre de mandato
proporcionado para formar el nombre de vía de acceso de un archivo. El shell también actúa de esta
forma para cada componente de directorio de la variable path que no empiece por una barra inclinada (/).
El shell intenta a continuación ejecutar el mandato.
Los mandatos entre paréntesis siempre se ejecutan en un subshell. Por ejemplo:

(cd ; pwd) ; pwd

muestra el directorio inicial sin cambiar la ubicación del directorio actual. No obstante, el mandato:

cd ; pwd

cambia la ubicación del directorio actual al directorio inicial. Los mandatos entre paréntesis suelen
utilizarse más a menudo para impedir que el mandato chdir afecte al shell actual.
Si el archivo tiene permiso de ejecución, pero no es binario ejecutable para el sistema, el shell presupone
que es un archivo que contiene mandatos del shell y ejecuta un nuevo shell para leerlo.
Si hay un alias para el shell, las palabras del alias se prefijan a la lista de argumentos para formar el
mandato de shell. La primera palabra del alias debe ser el nombre completo de la vía de acceso del shell.

Sustitución del histórico en el shell C


La sustitución de histórico le permite modificar palabras individuales de mandatos anteriores para crear
nuevos mandatos. La sustitución de histórico facilita la repetición de mandatos, de argumentos de un
mandato anterior en el mandato actual o arreglar errores de escritura en el mandato anterior escribiendo
menos de lo normal.
Las sustituciones de histórico empiezan con el signo de exclamación (!) y pueden aparecer en cualquier
punto de la línea de mandatos, siempre que no estén anidadas (es decir, una sustitución de histórico no
puede contener otra sustitución de histórico). Puede preceder el signo ! con una \ para cancelar el
significado especial del signo de exclamación. Además, si coloca el signo ! delante de un espacio en
blanco, carácter de nueva línea, = o (, la sustitución del histórico no se lleva a cabo.
Las sustituciones de histórico se llevan a cabo cuando se empieza una línea de entrada con un símbolo ^.
El shell repite cualquier línea de entrada que contenga sustituciones de histórico en la estación de trabajo
antes de ejecutar dicha línea.
Conceptos relacionados
Sustitución de alias en el shell C
Un alias es un nombre que se asigna a un mandato o a una serie de mandatos. El shell C le permite
asignar alias y utilizarlos como utilizaría los mandatos. El shell mantiene una lista de los alias que define.

Listas del histórico para el shell C


La lista del histórico guarda mandatos que el shell lee de la línea de mandatos y que constan de una o
más palabras. La sustitución del histórico vuelve a introducir secuencias de palabras de estos mandatos
guardados en la corriente de entrada.
La variable de shell history controla el tamaño de la lista del histórico. Debe establecer la variable de shell
history en el archivo .cshrc o en la línea de mandatos con el mandato incorporado set. El mandato
anterior siempre se retiene, con independencia del valor de la variable history. Los mandatos de la lista
del histórico se numeran secuencialmente, empezando por el 1. El mandato incorporado history
produce una salida similar a la siguiente:

9 write michael
10 ed write.c
11 cat oldwrite.c
12 diff *write.c

El shell muestra las series de mandatos con sus números de suceso. El número del suceso aparece a la
izquierda del mandato y representa cuándo se ha entrado el mandato en relación con los demás
mandatos del histórico. No suele ser necesario utilizar números de suceso para hacer referencia a

310 AIX Versión 7.2: Gestión del sistema operativo


sucesos, pero puede visualizar el número de suceso actual como parte del indicador del sistema situando
un signo de exclamación (!) en la serie del indicador que se ha asignado a la variable de entorno PROMPT.
Una referencia completa del histórico contiene una especificación de suceso, un designador de palabra y
uno o más modificadores en el formato general que se muestra a continuación:

Suceso[.]Palabra:Modificador[:Modificador] . . .

Nota: Sólo se puede modificar una palabra. No se permite una serie que incluya blancos.
En el ejemplo anterior de la salida del mandato history, el número de suceso actual es 13. Utilizando
este ejemplo, lo siguiente se refiere a sucesos anteriores:

Element Descripción
o
!10 Número de suceso 10.
!-2 Número de suceso 11 (el suceso actual menos 2).
!d Palabra de mandato que empieza por d (número de suceso 12).
!?mic? Palabra de mandato que contiene la serie mic (número de suceso 9).

Estos formatos, sin modificaciones posteriores, reintroducen simplemente las palabras de los sucesos
especificados, cada una de ellas separada por un blanco. Como caso especial, !! hace referencia al
mandato anterior; el mandato !! solo en una línea de entrada vuelve a ejecutar el mandato anterior.

Especificación de sucesos para el shell C


Para seleccionar palabras de un suceso, tras la especificación del suceso coloque un carácter de dos
puntos (:) y uno de los siguientes designadores de palabra (las palabras de una línea de entrada se
numeran secuencialmente empezando desde 0)
Ele Descripción
me
nto
0 Primera palabra (el nombre del mandato)
n nésimo argumento
^ Primer argumento
$ Último argumento
% Palabra que coincide con un ?serie? inmediatamente anterior .
x-y Rango de palabras desde la palabra xava hasta la palabra yava
-y Rango de palabras desde la primera palabra (0) hasta la palabra yava
* Desde el primer argumento hasta el último, o nada si el suceso sólo tiene una palabra (el nombre
del mandato)
x* Desde el argumento xavo hasta el último argumento
x- Igual que x* pero omitiendo el último argumento

Si el designador de palabra empieza por un carácter ^, $, *, - o %, puede omitir los dos puntos que
separan la especificación del suceso del designador de palabra. También puede situar una secuencia de
los siguientes modificadores después del designador de palabras opcional, cada una de ellas precedidas
de dos puntos:

Gestión del sistema operativo 311


Elemento Descripción
h Elimina una extensión de nombre de vía de acceso final, dejando la
cabecera.
r Elimina un componente . xxx final, dejando el nombre de la raíz.
e Elimina todo menos la extensión . xxx final.
s/ PalabraAntigua/ Sustituye el valor de la variable NuevaPalabra por el valor de la variable
NuevaPalabra / PalabraAntigua.

La parte izquierda de una sustitución no es un patrón en el sentido de una serie reconocida por un editor,
sino que es una palabra, una unidad simple sin blancos. Normalmente, una barra inclinada (/) delimita la
palabra original (PalabraAntigua) y su sustitución (NuevaPalabra). No obstante, puede utilizar cualquier
carácter como delimitador. En el ejemplo siguiente, la utilización del carácter % como delimitador permite
que pueda incluirse una / en las palabras:

s%/home/myfile%/home/yourfile%

El shell sustituye un ampersand (&) por el texto PalabraAntigua en la variable NuevaPalabra. En el


ejemplo siguiente, /home/myfile se convierte en /temp/home/myfile.

s%/home/myfile%/temp&%

El shell sustituye una palabra nula de una sustitución por la última sustitución o por la última serie
utilizada en la exploración de contexto !?Serie?. Puede omitir el delimitador final (/) si el carácter que
le sigue inmediatamente es un carácter de nueva línea. Puede omitir los siguientes modificadores para
delimitar la lista del histórico:

Eleme Descripción
nto
t Elimina todos los componentes de nombre de vía de acceso iniciales, dejando el final
& Repite la sustitución anterior
g Aplica el cambio de forma global; es decir, todas las apariciones de cada línea
p Visualiza el nuevo mandato, pero no lo ejecuta
q Coloca delimitadores en las palabras sustituidas, evitando así que se realicen sustituciones
adicionales
x Actúa como el modificador q, pero separa el texto en palabras donde existen blancos,
tabulaciones y caracteres de nueva línea

Cuando se utilizan los modificadores anteriores, el cambio sólo se aplica a la primera palabra modificable
a menos que el modificador g se haya especificado delante del modificador seleccionado.
Si proporciona una referencia de histórico sin una especificación de suceso (por ejemplo, !$), el shell
utiliza el mandato anterior como suceso. Si se produce una referencia histórica anterior en la misma línea,
el shell repite la referencia anterior. Así pues, la siguiente secuencia proporciona el primer y último
argumento del mandato que coincide con ?foo?.

!?foo?^ !$

Puede utilizarse una abreviatura especial de una referencia del histórico cuando el primer carácter que no
es un blanco de una línea de entrada es un acento circunflejo (^). Esto equivale a !:s^, con lo que se
proporciona una forma abreviada adecuada para las sustituciones del texto de la línea anterior. El
mandato ^ lb^ lib corrige la ortografía de lib del mandato.

312 AIX Versión 7.2: Gestión del sistema operativo


Si es necesario, puede especificar una sustitución del histórico entre llaves { } para aislarla de los
caracteres que le siguen. Por ejemplo, si desea utilizar una referencia al mandato:

ls -ld ~paul

para efectuar el mandato:

ls -ld ~paula

utilice la siguiente construcción:

!{l}a

En este ejemplo, !{l}a busca un mandato que empieza por l y añade una a al final.

Delimitación con comillas simples y dobles


Para evitar que tenga lugar la interpretación adicional de todas o de algunas de las sustituciones, delimite
las series con comillas simples o dobles.
Las comillas de ' ' impiden que se realicen otras interpretaciones, mientras que las comillas de " "
permiten una expansión adicional. En ambos casos, el texto resultante se convierte en una palabra o en
parte de una palabra.

Redirección de la entrada y la salida en el shell C


Antes de que el shell C ejecute un mandato, busca caracteres de redirección en la línea de mandatos.
Estas notaciones especiales indican al shell que redirija la entrada y la salida.

Puede redirigir la entrada y la salida estándar de un mandato utilizando las siguientes sentencias de
sintaxis:

Elemento Descripción
< Archivo Abre el Archivo especificado (del que primero se expande la variable, el mandato y
el nombre de archivo) como entrada estándar.
<<Palabra Lee la entrada del shell hasta la línea que coincide con el valor de la variable
Palabra. La variable Palabra no depende de la sustitución de la variable, del
nombre de archivo o del mandato. Cada línea de entrada se compara con la
variable Palabra antes de realizarse las sustituciones en la línea. A menos que
aparezca un carácter de delimitación (\, ", ' o `) en la variable Palabra, el shell
realiza la sustitución de variables y mandatos en las líneas intermedias, lo que
permite al carácter \ delimitar los caracteres $, \ y `. Los mandatos que se
sustituyen tienen todos los blancos, tabulaciones y caracteres de nueva línea
preservados, a excepción del carácter de nueva línea final, que se elimina. El texto
resultante se coloca en un archivo temporal anónimo, que se pasa al mandato
como entrada estándar.
> Archivo Utiliza el Archivo especificado como salida estándar. Si el Archivo no existe, se
crea. Si Archivo ya existe, se trunca y se pierde su contenido anterior. Si se
>!Archivo
establece la variable de shell noclobber, Archivo no debe existir ni ser un archivo
>& Archivo especial de caracteres, o se producirá un error. Esto ayuda a prevenir la
destrucción accidental de archivos. En este caso, utilice los formatos que incluyen
>&! Archivo
un ! para suprimir esta comprobación. Archivo se expande del mismo modo que
los nombres de archivos de entrada <. El formato >& redirige la salida estándar y
los errores estándar al Archivo especificado. El ejemplo siguiente muestra cómo
redirigir por separado la salida estándar a /dev/tty y los errores estándar
a /dev/null. Los paréntesis son obligatorios para permitir separar la salida
estándar y el error estándar.

% (find / -name vi -print > /dev/tty) >& /dev/null

Gestión del sistema operativo 313


Elemento Descripción
> >Archivo Utiliza el Archivo especificado como salida estándar igual que >, pero añade la
salida al final de Archivo. Si se establece la variable de shell noclobber, se produce
> >!Archivo
un error si no existe Archivo, a menos que se proporcione uno de los formatos que
> >& Archivo incluye un signo ! . De lo contrario, es similar a >.
> >&! Archivo

Un mandato recibe el entorno en el que llamó al shell, cambiado por los parámetros de entrada/salida y
la presencia del mandato como un conducto. De este modo, a diferencia de algunos shells anteriores, los
mandatos que se ejecutan desde un script de shell no tienen acceso al texto de los mandatos por
omisión. En lugar de ello, reciben la entrada estándar original del shell. Utilice el mecanismo << para
presentar datos en línea, lo que permite a los archivos de mandatos del shell funcionar como
componentes de conductos y también permite que el bloque de shell pueda leer su entrada. Tenga en
cuenta que la entrada estándar por omisión de un mandato que se ejecuta sin asociaciones no cambia por
el archivo /dev/null vacío. En lugar de ello, la entrada estándar sigue siendo la entrada estándar
original del shell.
Para redirigir el error estándar por medio de un conducto con la salida estándar, utilice el formato |& en
lugar de utilizar únicamente el carácter |.

Control de flujo en el shell C


El shell contiene mandatos que pueden utilizarse para regular el flujo de control en archivos de mandatos
(scripts de shell) y (en modos útiles, pero limitados) desde entrada de línea de mandatos del shell. Todos
estos mandatos funcionan haciendo que el shell se repita, o se salte, en su entrada.
Las sentencias foreach, switch y while y el formato if-then-else de la sentencia if necesitan que las
palabras clave principales aparezcan en un solo mandato simple de una línea de entrada.
Si no se pueden efectuar búsquedas en la entrada del shell, el shell sitúa en almacenamiento intermedio
la entrada cada vez que se lee un bucle y busca en el almacenamiento intermedio interno para realizar la
relectura implicada por el bucle. Hasta donde está permitido, los goto de retroceso se ejecutan
satisfactoriamente en las entradas en las que no pueden realizarse búsquedas.

Seguridad del sistema operativo


La finalidad de la seguridad del sistema consiste en proteger la información que se almacena en el
sistema.
Con la seguridad de la información se pretende lograr los objetivos siguientes:

Elemento Descripción
Integridad El valor de toda la información depende de su exactitud. Si se efectúan cambios no
autorizados en los datos, éstos pierden algo o todo su valor.
Privacidad El valor de gran parte de la información depende de su condición de confidencialidad.
Disponibilida La información debe estar disponible en el acto.
d

Planificar e implementar las políticas de seguridad antes de empezar a utilizar el sistema sirve de ayuda.
La realización de cambios posteriores en las políticas de seguridad requiere mucho tiempo, por ello, su
correcta planificación al principio puede ahorrarle mucho tiempo en el futuro.

Identificación y autentificación
La identificación y la autentificación establecen su identidad.
Se solicitará que inicie la sesión en el sistema. Debe proporcionar el nombre de usuario y una contraseña
si la cuenta tiene contraseña (en un sistema seguro, todas las cuentas deben tener contraseñas o, de lo
contrario, no son válidas). Si la contraseña es correcta, iniciará la sesión con esa cuenta; adquirirá los
derechos y permisos de acceso de la cuenta.

314 AIX Versión 7.2: Gestión del sistema operativo


Puesto que la contraseña es la única protección de que dispone su cuenta, seleccione y guarde
cuidadosamente su contraseña. Muchos intentos de irrumpir ilícitamente en un sistema empiezan por
intentos de adivinar contraseñas. El sistema operativo proporciona una protección significativa de las
contraseñas al almacenar las contraseñas de los usuarios por separado de otras informaciones del
sistema. Las contraseñas cifradas y los demás datos relacionados con la seguridad de los usuarios se
almacenan en el archivo /etc/security/passwd. Sólo el usuario root puede acceder a este archivo.
Con este acceso restringido de los usuarios a las contraseñas cifradas, cualquier persona no autorizada
no podrá descifrar las contraseñas con un programa que simplemente prueba todas las contraseñas
posibles o probables.
Sigue siendo posible adivinar las contraseñas al intentar el inicio de sesión con una cuenta de forma
reiterada. Si la contraseña es muy sencilla o no se cambia con frecuencia, puede que los intentos de
ataque logren fácilmente su objetivo.

ID de usuario de inicio de sesión


El sistema operativo puede identificar a los usuarios por su ID de usuario de inicio de sesión.
El ID de inicio de sesión de usuario permite al sistema seguir la pista de todas las acciones del usuario
desde su origen. Después de que un usuario inicia la sesión en el sistema y antes de ejecutarse el
programa inicial del usuario, el sistema establece el ID de inicio de sesión del proceso en el ID de usuario
que se encuentra en la base de datos de usuarios. Todos los procesos posteriores durante la sesión del
inicio de sesión se identifican mediante este ID. Dichos identificadores proporcionan una pista de todas
las actividades efectuadas por el ID de inicio de sesión del usuario.
El usuario puede restablecer el ID de usuario en vigor, el ID de usuario real, el ID de grupo en vigor, el ID
de grupo real y el ID de grupo complementario durante la sesión, pero no puede cambiar el ID de usuario
de inicio de sesión.

Terminales desatendidos
Todos los sistemas son vulnerables si se dejan las sesiones iniciadas o desatendidos los terminales. Los
problemas más graves se producen cuando un gestor del sistema deja un terminal desatendido al que se
le ha asignado autorización de usuario root. En general, los usuarios deben finalizar la sesión cada vez
que abandonan sus terminales.
Puede forzar que un terminal finalice tras un periodo de inactividad estableciendo los parámetros TMOUT
y TIMEOUT en el archivo /etc/profile. El parámetro TMOUT funciona en el shell ksh (Korn) y el
parámetro TIMEOUT funciona en el shell bsh (Bourne).
En el ejemplo siguiente, que se ha tomado del archivo .profile, se fuerza la finalización de sesión del
terminal transcurrida una hora de inactividad:

TO=3600
echo "Estableciendo el fin de sesión automático en $TO"
TIMEOUT=$TO
TMOUT=$TO
export TIMEOUT TMOUT

Nota: Puede alterar temporalmente los valores de TMOUT y TIMEOUT del archivo /etc/profile
especificando valores en el archivo .profile del directorio inicial.
Conceptos relacionados
Sustitución de variables en el shell Bourne
El shell Bourne permite realizar sustituciones de variables.
Referencia relacionada
Sustitución de parámetros en el shell Korn o shell POSIX
El shell Korn o shell POSIX, le permite realizar sustituciones de parámetros.

Propiedad de archivos y grupos de usuarios


En principio, el propietario de un archivo se identifica mediante el ID de usuario de la persona que creó el
archivo.

Gestión del sistema operativo 315


El propietario de un archivo determina quién puede leer, grabar (modificar) o ejecutar el archivo. La
propiedad se puede cambiar con el mandato chown.
A cada ID de usuario se le asigna un grupo con un ID de grupo exclusivo. El gestor del sistema crea los
grupos de usuarios cuando define el sistema. Cuando se crea un nuevo archivo, el sistema operativo
asigna permisos al ID de usuario que lo ha creado, al ID de grupo que contiene el propietario del archivo y
a un grupo denominado otros, que se compone de todos los demás usuarios. El mandato id muestra el
ID de usuario (UID), el ID de grupo (GID) y los nombres de todos los grupos a los que pertenece el
usuario.
En los listados de archivos (como, por ejemplo, los listados que muestra el mandato ls), los grupos de
usuarios siempre se representan en el orden siguiente: usuario, grupo y otros. Si necesita averiguar el
nombre de grupo, el mandato groups muestra todos los grupos para un ID de usuario.

Cambio de la propiedad del directorio o archivo


Utilice el mandato chown para cambiar al propietario de los archivos.
Al especificar la opción -R, el mandato chown desciende de forma recursiva a través de la estructura de
directorios desde el directorio especificado. Cuando se encuentran enlaces simbólicos, cambia la
propiedad del archivo o directorio al que señala el enlace; la propiedad del enlace simbólico no cambia.
Nota: sólo el usuario root puede cambiar al propietario de otro archivo. Cuando se especifica la opción -f,
no se muestran los errores.
Por ejemplo, para cambiar al propietario del archivo program.c, escriba lo siguiente:

chown jim program.c

Ahora, los permisos de acceso de usuario para el archivo program.c se aplican a jim. Como propietario,
jim puede utilizar el mandato chmod para permitir o denegar el acceso de otros usuarios al archivo
program.c.
Consulte el mandato chown para conocer la sintaxis completa.

Modalidades de acceso a archivos y a directorios


Cada archivo tiene un propietario. En el caso de archivos nuevos, el usuario que crea el archivo es el
propietario de dicho archivo. El propietario asigna una modalidad de acceso al archivo. Las modalidades
de acceso otorgan a otros usuarios del sistema permiso para leer, modificar o ejecutar el archivo. Sólo el
propietario del archivo o los usuarios con autorización root pueden cambiar la modalidad de acceso de un
archivo.
Existen tres clases de usuarios: usuario/propietario, grupo y todos los demás. El acceso se otorga a esas
clases de usuario en alguna combinación de las tres modalidades: lectura, grabación o ejecución. Cuando
se crea un archivo nuevo, los permisos por omisión son de lectura, de grabación y de ejecución para el
usuario que ha creado el archivo. Los otros dos grupos tienen permiso de lectura y de grabación. En la
tabla siguiente se muestran las modalidades de acceso a archivos por omisión de las tres clases de
grupos de usuarios:

Elemento Descripción
Clases Lectura Grabación Ejecución
Propietario Sí Sí Sí
Grupo Sí No Sí
Otros Sí No Sí

El sistema determina quién tiene permiso y el nivel de permiso que tienen para cada una de estas
actividades. En el sistema operativo, las modalidades de acceso se representan de forma simbólica y
también de forma numérica.
Conceptos relacionados
Tipos de archivos

316 AIX Versión 7.2: Gestión del sistema operativo


Los tipos de archivos reconocidos por el sistema son normal, directorio o especial. No obstante, el
sistema operativo utiliza muchas variaciones de estos tipos básicos.

Representación simbólica de las modalidades de acceso


Las modalidades de acceso se representan simbólicamente.

Ele Descripción
me
nto
r Indica permiso de lectura, que permite a los usuarios ver el contenido de un archivo.
w Indica permiso de grabación, que permite a los usuarios modificar el contenido de un archivo.
x Indica permiso de ejecución. En el caso de los archivos ejecutables (archivos normales que
contienen programas), el permiso de ejecución significa que puede ejecutarse el programa. En el
caso de los directorios, el permiso de ejecución significa que puede explorarse el contenido del
directorio.

Las modalidades de acceso para los archivos o directorios se representan mediante nueve caracteres.
Los tres primeros caracteres representan los permisos actuales del Propietario, el segundo conjunto de
tres caracteres representa los permisos del Grupo actual y el tercer conjunto de tres caracteres
representa los valores actuales de los permisos de Otros. Un guión (-) en el conjunto de nueve caracteres
indica que no se ha otorgado ningún permiso. Por ejemplo, un archivo cuyas modalidades de acceso se
han establecido en rwxr-xr-x otorga permiso de lectura y ejecución a los tres grupos y permiso de
grabación únicamente al propietario del archivo. Esta es la representación simbólica del valor
predeterminado.
El mandato ls, cuando se utiliza con el distintivo -l (L en minúsculas), proporciona un listado detallado
del directorio actual. Los 10 primeros caracteres del listado ls -l muestran el tipo de archivo y los
permisos de cada uno de los tres grupos. El mandato ls -l también lista el propietario y el grupo
asociados a cada archivo y directorio.
El primer carácter indica el tipo de archivo. Los nueve caracteres restantes contienen información de
permisos de archivos para cada una de las tres clases de usuarios. Se utilizan los siguientes símbolos
para representar el tipo de archivo:

Ele Descripción
me
nto
- Archivos normales
d Directorio
b Archivos de bloques especiales
c Archivos de caracteres especiales
p Archivos de conducto especiales
l Enlaces simbólicos
s Sockets

Por ejemplo, este puede un listado ls -l:

-rwxrwxr-x 2 janet acct 512 Mar 01 13:33 january

Aquí, el primer guión (-) indica que se trata de un archivo normal. Los nueve caracteres siguientes
(rwxrwxr-x) representan las modalidades de acceso de Usuario, Grupo y Otros, tal como se ha descrito
previamente. janet es la propietaria del archivo y acct es el nombre del grupo de Janet. 512 es el
tamaño de archivo en bytes, Mar 01 13:33 es la fecha y hora de la última modificación, y january es el
nombre de archivo. El 2 indica el número de enlaces con el archivo que existe.

Gestión del sistema operativo 317


Representación numérica de las modalidades de acceso
Numéricamente, el acceso de lectura se representa mediante un valor de 4, el permiso de grabación
mediante un valor de 2 y el permiso de ejecución mediante un valor de 1. El valor total entre 1 y 7
representa la modalidad de acceso para cada grupo (usuario, grupo y otros).
En la tabla siguiente se muestran los valores numéricos de cada nivel de acceso:

Valor total Lectura Grabación Ejecución


0 - - -
1 - - 1
2 - 2 -
3 - 2 1
4 4 - -
5 4 - 1
6 4 2 -
7 4 2 1

Cuando se crea un archivo, la modalidad de acceso a los archivos por omisión es 755. Esto significa que el
usuario tiene permiso de lectura, grabación y ejecución (4+2+1=7), el grupo tiene permiso de lectura y
ejecución (4+1=5) y todos los demás tienen permiso de lectura y grabación (4+1=5). Para cambiar las
modalidades de los permisos de acceso de los archivos de los que es propietario, ejecute el mandato
chmod (cambiar modalidad).

Visualización de información de grupo


Utilice el mandato lsgroup para visualizar los atributos de todos los grupos del sistema (o de los grupos
especificados). Si uno o más atributos no pueden leerse, el mandato lsgroup visualizará toda la
información que sea posible.
La información de los atributos se visualiza en forma de definiciones Atributo=Valor, separadas por un
espacio en blanco.
1. Para listar todos los grupos del sistema, escriba lo siguiente:

lsgroup ALL

El sistema muestra cada grupo, ID de grupo y todos los usuarios del grupo en una lista similar a la
siguiente:

system 0 arne,pubs,ctw,geo,root,chucka,noer,su,dea,backup,build,janice,denise
staff 1 john,ryan,flynn,daveb,jzitt,glover,maple,ken,gordon,mbrady
bin 2 root,bin
sys 3 root,su,bin,sys

2. Para que se visualicen atributos específicos de todos los grupos, realice una de las acciones
siguientes:
• Puede listar los atributos con el formato Atributo=Valor separados por un espacio en blanco.
Este es el estilo por omisión. Por ejemplo, para listar los ID y los usuarios para todos los grupos en el
sistema, escriba lo siguiente:

lsgroup -a id users ALL | pg

Se visualiza una lista similar a la siguiente:

system id=0 users=arne,pubs,ctw,geo,root,chucka,noer,su,dea,backup,build


staff id=1 users=john,ryan,flynn,daveb,jzitt,glover,maple,ken

318 AIX Versión 7.2: Gestión del sistema operativo


• También puede listar la información en formato de stanza. Por ejemplo, para listar los ID y los
usuarios para todos los grupos en el sistema en formato de stanza, escriba lo siguiente:

lsgroup -a -f id users ALL | pg

Se visualiza una lista similar a la siguiente:

system:
id=0
users=pubs,ctw,geo,root,chucka,noer,su,dea,backup,build

staff:
id=1
users=john,ryan,flynn,daveb,jzitt,glover,maple,ken

bin:
id=2
users=root,bin

sys:
id=3
users=root,su,bin,sys

3. Para que se visualicen todos los atributos de un grupo específico, puede utilizar uno de los dos estilos
para la obtención del listado de atributos específicos de todos los grupos:
• Puede listar cada atributo con el formato Atributo=Valor separados por un espacio en blanco.
Este es el estilo por omisión. Por ejemplo, para listar todos los atributos del grupo "system", escriba
lo siguiente:

lsgroup system

Se visualiza una lista similar a la siguiente:

system id=0 users=arne,pubs,ctw,geo,root,chucka,noer,su,dea,backup,build,janice,denise

• También puede listar la información en formato de stanza. Por ejemplo, para listar todos los
atributos del grupo bin en formato de stanza, escriba lo siguiente:

lsgroup -f system

Se visualiza una lista similar a la siguiente:

system:
id=0 users=arne,pubs,ctw,geo,root,chucka,noer,su,dea,backup,build,janice,denise

4. Para que se listen atributos específicos de un grupo determinado, escriba lo siguiente:

lsgroup -a Atributos Grupo

Por ejemplo, para listar los ID y los usuarios para el grupo bin, escriba lo siguiente:

lsgroup -a id users bin

Se visualiza una lista similar a la siguiente:

bin id=2 users=root,bin

Consulte el mandato lsgroup para ver la sintaxis completa.

Cambio de los permisos de archivo o directorio


Utilice el mandato chmod para cambiar los permisos de los archivos.

1. Para añadir un tipo de permiso a los archivos chap1 y chap2, escriba lo siguiente:

Gestión del sistema operativo 319


chmod g+w chap1 chap2

Esto añade el permiso de grabación para miembros de grupo en los archivos chap1 y chap2.
2. Para realizar varios cambios de permisos al mismo tiempo en el directorio mydir, escriba lo siguiente:

chmod go-w+x mydir

Esto deniega (-) a los miembros del grupo (g) y a otros (o) el permiso para crear o suprimir archivos (w)
en el directorio mydir y permite (+) a los miembros del grupo y a otros buscar en el directorio mydir o
utilizarlo (x) en un nombre de vía de acceso. Esto equivale a la secuencia de mandatos siguiente:

chmod g-w mydir


chmod o-w mydir
chmod g+x mydir
chmod o+x mydir

3. Para que sólo el propietario tenga permiso para utilizar un procedimiento de shell llamado cmd como
mandato, escriba lo siguiente:

chmod u=rwx,go= cmd

Esto otorga permiso de lectura, grabación y ejecución al usuario que posee el archivo (u=rwx).
También deniega al grupo y a otros el permiso para acceder a cmd de cualquier modo (go=).
4. Para utilizar el formato en modalidad numérica del mandato chmod a fin de cambiar los permisos del
archivo text, escriba lo siguiente:

chmod 644 text

Esto establece permiso de lectura y de grabación para el propietario y establece modalidad de sólo
lectura para el grupo y para los demás.
Consulte el mandato chmod para ver la sintaxis completa.

Listas de control de accesos


El control del acceso se compone de recursos de información protegidos que especifican a quién puede
otorgarse acceso para tales recursos.
El sistema operativo proporciona una seguridad discrecional y de conocimiento necesario. El propietario
de un recurso de información puede otorgar a otros usuarios derechos de lectura o de grabación para
dicho recurso. Un usuario al que se le conceden derechos de acceso sobre un recurso puede transferir
dichos derechos a otros usuarios. Esta seguridad permite un flujo de información controlada por el
usuario en el sistema; el propietario de un recurso de información define los permisos de acceso sobre el
objeto.
Los usuarios disponen de acceso basado en el usuario sólo para los objetos que poseen. Normalmente,
los usuarios reciben los permisos de grupo o los permisos por omisión sobre un recurso. La tarea
principal de la administración del control del acceso es la definición de la calidad de miembro de un grupo
de los usuarios, pues ello determina los derechos de acceso de los usuarios a los archivos de los que no
son propietarios.

Listas de control de acceso para los objetos del sistema de archivos


Los objetos del sistema de archivos por lo general están asociados a una Lista de control de accesos
(ACL), la cual normalmente consta de una serie de Entradas de control de accesos (ACE). Cada ACE define
la identidad y sus derechos de acceso relacionados.
Para mantener las listas de control de accesos, utilice los mandatos aclget, acledit, aclput y
aclconvert.
Tenga en cuenta que generalmente el sistema de archivos físico (PFS) almacena y gestiona las ACL en el
soporte de almacenamiento. El sistema operativo AIX proporciona una infraestructura para sistemas de
archivos físicos para soportar y gestionar varios tipos de ACL. El sistema de archivos JFS2 que se entrega
con el AIX da soporte a dos tipos de ACL:

320 AIX Versión 7.2: Gestión del sistema operativo


• AIXC
• NFS4
Los sistemas de archivos anteriores tan sólo soportaban el tipo de ACL AIXC, igual que en los releases
anteriores de AIX releases. Estos tipos de ACL se describen detalladamente en la publicación Security.

Tipo de lista de control de acceso AIXC


El tipo de ACL AIXC (AIX Classic) proporciona el comportamiento de la ACL tal como estaba definido en
releases anteriores de AIX. Este tipo de ACL consta de bits de modalidad base y permisos ampliados
(ACE).
Con los permisos ampliados, puede permitir o denegar el acceso a los archivos a usuarios individuales o
grupos específicos, sin tener que cambiar los permisos base.
Nota: El tamaño de la ACL AIXC para un archivo no puede exceder de una página de memoria
(aproximadamente 4096 bytes).
El mandato chmod en modalidad numérica (con notaciones octales) puede establecer atributos y
permisos base. La subrutina chmod, a la que el mandato llama, inhabilita los permisos ampliados. Si
utiliza la modalidad numérica del mandato chmod en un archivo que tenga de una ACL, los permisos
ampliados se inhabilitan. La modalidad simbólica del mandato chmod no inhabilita los permisos
ampliados cuando la ACL asociada es de tipo AIXC. Para obtener más información sobre las modalidades
numérica y simbólica, consulte el mandato chmod. Para obtener información acerca del mandato chmod,
consulte chmod.
Permisos base
Los permisos base específicos de la ACL AIXC son las modalidades de acceso de archivos
tradicionales que se asignan al propietario de un archivo, al grupo de archivos y a otros usuarios. Las
modalidades de acceso son lectura (r), grabación (w) y ejecución/búsqueda (x).
Nota: Los permisos base del tipo de ACL AIXC serán igual a los bits de modalidad de archivo
almacenados en las cabeceras de inodo del objeto del sistema de archivos. Es decir, la información de
los bits de modalidad base es igual al valor que devuelve el sistema de archivos cuando se ejecuta
stat en el objeto del sistema de archivos.
En una lista de control de acceso, los permisos base están en el formato siguiente, con el parámetro
Mode expresado como rwx (un guión (-) sustituye a cada permiso no especificado):

base permissions:
owner(name): Modalidad
group(group): Modalidad
others: Modalidad

Atributos
A una lista de controles de acceso pueden añadirse tres atributos:
setuid (SUID)
Bit de modalidad de establecimiento de ID de usuario. Este atributo establece los ID de usuario
efectivos y guardados del proceso en el ID de propietario del archivo durante la ejecución.
setgid (SGID)
Bit de modalidad de establecimiento de ID de grupo. Este atributo establece los ID de grupo
efectivos y guardados del proceso en el ID de grupo del archivo durante la ejecución.
savetext (SVTX)
Guarda el texto en un formato de archivo de texto.
Los atributos anteriores se añaden en el formato siguiente:

attributes: SUID, SGID, SVTX

Permisos ampliados
Los permisos ampliados de la ACL AIXC permiten al propietario de un archivo definir con más
precisión el acceso a ese archivo. Los permisos ampliados modifican los permisos base del archivo

Gestión del sistema operativo 321


(propietario, grupo, otros) al permitir, denegar o especificar modalidades de acceso para individuos,
grupos o combinaciones de usuario y grupo específicos. Los permisos se modifican mediante la
utilización de palabras clave.
Las palabras clave permit, deny y specify se definen de la forma siguiente:
permit
Otorga al usuario o al grupo el acceso especificado al archivo
deny
Limita la capacidad que tiene el usuario o el grupo de utilizar el acceso especificado al archivo
specify
Define con exactitud el acceso al archivo de que dispone el usuario o el grupo
Si a un usuario se le deniega un acceso en particular por medio de la palabra clave deny o specify,
ninguna otra entrada podrá alterar temporalmente dicha denegación de acceso.
Para que los permisos ampliados entren en vigor, en la ACL debe especificarse la palabra clave
enabled. El valor predeterminado es la palabra clave disabled.
En una ACL AIXC, los permisos ampliados están en el formato siguiente:

extended permissions:
enabled | disabled
permit Mode UserInfo...:
deny Mode UserInfo...:
specify Mode UserInfo...:

Utilice una línea por separado para cada entrada de permit, deny o specify. El parámetro Mode se
expresa como rwx (un guión (-) sustituye a cada permiso no especificado). El parámetro UserInfo se
expresa como u:NombreUsuario o g:NombreGrupo, o una combinación de u:NombreUsuario y
g:NombreGrupo separados por comas.
Nota: Si en una entrada se especifica más de un nombre de usuario, dicha entrada no puede utilizarse
en una decisión de control de accesos puesto que un proceso sólo tiene un ID de usuario.

Tipo de lista de control de acceso NFS4


El sistema de archivos JFS2 de AIX también da soporte al tipo de ACL NFS4. Esta implementación de ACL
sigue la definición de ACL tal como se especifica en el RFC relacionado con el protocolo NFS4 versión 4.
Esta ACL proporciona un control granular mejor sobre los derechos de acceso y también proporciona
características tales como herencia. La ACL NFS4 consta de una matriz de ACE. Cada ACE define los
derechos de acceso para una identidad. Tal como se define en el RFC, los componentes principales de la
ACE NFS4 son los siguientes:

struct nfsace4 {

acetype4 type;
aceflag4 flag;
acemask4 access_mask;
utf8str_mixed who;
};

Donde:
type
Máscara de bits que define el tipo de ACE. Define detalles, como por ejemplo, si esta ACE permite el
acceso o niega el acceso.
flag
Máscara de bits que describe los aspectos de herencia de la ACE. Define si esta ACE es aplicable al
objeto del sistema de archivos, o a sus hijos, o a ambos.
access_mask
Máscara de bits que define distintos derechos de acceso posibles. Los derechos definidos incluyen,
lectura, grabación, ejecución, creación, supresión, creación de hijo, supresión de hijo, etc.

322 AIX Versión 7.2: Gestión del sistema operativo


who
Esta serie de terminación nula define la identidad de la persona a la cual se aplicará esta ACE. Tenga
en cuenta que para cada RFC, el tamaño de esta serie no está limitado y que una definición flexible
permite definir dominios dentro de redes NFS versión 4 para gestionar el control de acceso. De modo
nativo (la mayoría de veces) AIX no interpreta esta serie y cada ACE está asociada a una identidad
que AIX pueda comprender (como por ejemplo uid o gid). Se espera que el sistema de archivos NFS
versión 4 interprete estas series según sea necesario para convertirlas en unos ID de usuario o de
grupo que el SO pueda comprender. AIX sólo comprende algunas de las series who especiales
definidas en el RFC.
En AIX, utilice los mandatos aclget, acledit, aclput y aclconvert para gestionar las ACL NFS4.
Nota: Cualquier tipo de mandato chmod borrará la ACL del archivo.

Ejemplo de lista de control de acceso para AIXC


El siguiente ejemplo es una lista de control de acceso (ACL) de AIXC.
El siguiente ejemplo es una ACL AIXC:

attributes: SUID
base permissions:
owner(frank): rw-
group(system): r-x
others: ---
extended permissions:
enabled
permit rw- u:dhs
deny r-- u:chas, g:system
specify r-- u:john, g:gateway, g:mail
permit rw- g:account, g:finance

A continuación se muestran las partes de la ACL y sus significados:


• La primera línea indica que el bit setuid está activado.
• La siguiente línea, que introduce los permisos base, es opcional.
• Las tres líneas siguientes especifican los permisos base. El nombre del propietario y del grupo aparecen
entre paréntesis a título informativo solamente. Cambiar dichos nombres no altera el propietario del
archivo ni el grupo de archivos. Sólo el mandato chown y el mandato chgrp pueden cambiar estos
atributos de archivo.
• La línea siguiente, que introduce los permisos ampliados, es opcional.
• La línea siguiente indica que los permisos ampliados que se indican a continuación están habilitados.
• Las últimas cuatro líneas son las entradas ampliadas.
• La primera entrada ampliada otorga al usuario dhs los permisos de lectura (r) y grabación (w) sobre el
archivo.
• La segunda entrada ampliada deniega el acceso de lectura (r) al usuario chas sólo cuando es miembro
del grupo system.
• La tercera entrada ampliada especifica que siempre que el usuario john sea miembro de los dos
grupos, gateway y mail, tendrá el acceso de lectura (r). Si el usuario john no es miembro de los dos
grupos indicados, este permiso ampliado no tendrá aplicación.
• La última entrada ampliada otorga a cualquier usuario que sea miembro de los dos grupos account y
finance los permisos de lectura (r) y grabación (w).
Nota: A un proceso se le puede aplicar más de una entrada ampliada, donde las modalidades restrictivas
tienen prioridad sobre las modalidades permisivas.
Consulte el mandato acledit para ver la sintaxis completa.

Autorización de acceso de lista de control de acceso


El propietario del recurso de información es el responsable de la gestión de los derechos de acceso. Los
recursos están protegidos por bits de permiso, que se incluyen en la modalidad del objeto.

Gestión del sistema operativo 323


Para las ACL AIXC, los bits de permiso definen los permisos de acceso otorgados al propietario del objeto,
al grupo del objeto y a la clase predeterminada others. El tipo de ACL AIXC soporta tres modalidades
diferentes de acceso (lectura, grabación y ejecución) que se pueden otorgar por separado.
Cuando un usuario inicia la sesión en una cuenta (utilizando los mandatos login o su), los ID de usuario
y los ID de grupo asignados a esa cuenta se asocian a los procesos de usuario. Estos ID determinan los
derechos de acceso del proceso.
Para archivos, directorios, conductos con nombre y dispositivos (archivos especiales) con una ACL AIX
asociada, el acceso se autoriza de la manera siguiente:
• Para cada entrada de control de acceso (ACE) de la lista de controles de acceso (ACL), la lista de
identificadores se compara con los identificadores del proceso. Si existe una coincidencia, el proceso
recibe los permisos y restricciones definidos para dicha entrada. Se calculan las uniones lógicas tanto
para permisos como para restricciones para cada entrada de la ACL coincidente. Si el proceso
solicitante no coincide con ninguna de las entradas de la ACL, éste recibe los permisos y restricciones
de la entrada por omisión.
• Si la modalidad de acceso solicitada está permitida (está incluida en la unión de los permisos) y no está
restringida (está incluida en la unión de las restricciones), el acceso se otorga. De lo contrario, se
deniega.
Además, para un tipo de ACL AIXC, la lista de identificadores de una ACL coincide con un proceso si todos
los identificadores de la lista coinciden con el tipo correspondiente de identificador efectivo para el
proceso solicitante. Un identificador de tipo USER coincidente equivale al ID de usuario en vigor del
proceso y un identificador de tipo GROUP es coincidente si es igual al ID de grupo en vigor del proceso o
de uno de los ID de grupo complementario. Por ejemplo, una ACE con una lista de identificadores como la
siguiente:

USER:fred, GROUP:philosophers, GROUP:software_programmer

coincidiría con un proceso que tuviera un ID de usuario efectivo que fuera fred y un conjunto de grupos
que fuera:

philosophers, philanthropists, software_programmer, doc_design

pero no coincidiría con un proceso que tuviera un ID de usuario efectivo que fuera fred y un conjunto de
grupos que fuera:

philosophers, iconoclasts, hardware_developer, graphic_design

Tenga en cuenta que una ACE con una lista de identificadores compuesta de los elementos siguientes
coincidiría para ambos procesos:

USER:fred, GROUP:philosophers

En otras palabras, la lista de identificadores de las funciones de la ACE es un conjunto de condiciones que
debe contener el acceso especificado que ha de otorgarse.
El mecanismo del control de acceso discrecional permite realizar un control del acceso eficaz de los
recursos de información y proporciona protección adicional para garantizar la confidencialidad y la
integridad de la información. Los mecanismos de control de acceso controlados por el propietario sólo
son tan efectivos como el usuario los diseñe. Todos los usuarios deben entender cómo se otorgan y se
deniegan los permisos de acceso y cómo se establecen.
Tenga en cuenta que para los objetos del sistema de archivos que tienen asociado un tipo de ACL NFS4,
las comprobaciones de acceso se basan en varias ACE que forman la ACL así como en la configuración de
normas del RFC relacionado con el protocolo NFS versión 4. La comprobación de la identidad se realiza
comparando el ID de usuario o el ID de grupo o las series who especiales definidas en la ACE con las
credenciales del proceso. Si se produce una coincidencia, los derechos de acceso solicitados se
comparan con los derechos de acceso definidos en la ACE. Si alguno de los derechos de acceso está
permitido, se tomarán estos y la operación de comparación continuará con la siguiente ACE. Este proceso
continúa hasta que se alcanza el final de la ACL o hasta que se cumplen todos los derechos de acceso o

324 AIX Versión 7.2: Gestión del sistema operativo


hasta que se deniega alguno de los derechos de acceso solicitado. Los pasos siguientes capturan la
comprobación de acceso en el caso de un objeto del sistema de archivos que tiene asociada una ACL
NFS4:
1. Para cada entrada de control de acceso (ACE) de la lista de controles de acceso (ACL), la lista de
identificadores se compara con los identificadores del proceso. Las comprobaciones de identidad
incluyen el ID de usuario o el ID de grupo definido en la ACE. Además, si la identidad está definida
como special con series como OWNER@, se producirá una coincidencia si el proceso que efectúa la
llamada es el propietario del archivo. Si existe una coincidencia, el proceso recibe los derechos de
acceso definidos para dicha entrada. De lo contrario, continúe con la ACE siguiente.
2. Los derechos de acceso solicitados se comparan con los derechos de acceso recuperados de la
entrada ACE. Si la ACE deniega explícitamente alguno de los derechos de acceso solicitados, se
finaliza el proceso de comprobación de acceso y se deniega el acceso al proceso solicitante.
3. Si la ACE cumple alguno de los derechos de acceso solicitados, se tomarán dichos derechos de acceso
de la lista de derechos de acceso de solicitud y la operación de comparación continuará con la
siguiente ACE.
4. Si las ACE cumplen todos los derechos de acceso solicitados, se permite el acceso solicitado.
5. Si se alcanza el final de la ACL antes de resolver todos los derechos de acceso solicitados, el acceso se
deniega.
Observe que aparte de las comprobaciones de acceso basadas en el tipo de ACL, los sistemas de archivos
físicos individuales también pueden optar por proporcionar un acceso basado en el privilegio para los
objetos del sistema de archivos. Por ejemplo, un propietario puede tener siempre permiso para modificar
la ACL independientemente de los derechos de acceso de ACL existentes. Un proceso con un ID de
usuario 0 se conoce como proceso de usuario root. Por lo general, a estos procesos se les otorgan todos
los permisos de acceso. Pero si un proceso de usuario root solicita permiso de ejecución para un
programa, el acceso sólo se concede si se ha otorgado permiso de ejecución a, como mínimo, un usuario.
Todos los permisos de acceso comprueban si estos objetos se crean a nivel de llamada del sistema la
primera vez que se accede al objeto. Puesto que el acceso a los objetos System V Interprocess
Communication (SVIPC) se realiza de forma independiente, para cada acceso se realizan
comprobaciones. Sin embargo, es posible que las comprobaciones las realicen los sistemas de archivos
físicos en el tiempo de apertura del objeto del sistema de archivos y no en el tiempo de operación de
lectura o grabación. En el caso de objetos con nombres de sistemas de archivos, es necesario poder
resolver el nombre del objeto real. Los nombres se resuelven relativamente (en el directorio de trabajo
del proceso) o absolutamente (en el directorio raíz del proceso). La resolución de los nombres empieza
con la búsqueda de uno de éstos.

Mandato para visualizar información de control de accesos (mandato aclget)


El mandato aclget muestra la información de control de accesos para un archivo. La información que se
visualiza incluye atributos, permisos base y permisos ampliados.
Por ejemplo, para visualizar la información de control de accesos para el archivo status, escriba lo
siguiente:

aclget status

La información de control de accesos que se muestra incluye una lista de atributos, permisos base y
permisos ampliados.
Conceptos relacionados
Ejemplo y descripción de la lista de control de acceso
A continuación se presenta un ejemplo y la descripción de listas de control de acceso (ACL).

Establecimiento de la información de control de accesos (mandato aclput)


Para establecer la información de control de accesos para un archivo, utilice el mandato aclput.
Nota: la lista de control de accesos para un archivo no puede exceder el tamaño de una página de
memoria (aproximadamente, 4096 bytes).

Gestión del sistema operativo 325


Vea los ejemplos siguientes:
Por ejemplo, para establecer la información de control de accesos para el archivo status con la
información de control de accesos almacenada en el archivo acldefs, escriba lo siguiente:

aclput -i acldefs status

Para establecer la información de control de accesos para el archivo status con la misma información que
se ha utilizado para el archivo plans, escriba lo siguiente:

aclget plans | aclput status

Ejemplo y descripción de la lista de control de acceso


A continuación se presenta un ejemplo y la descripción de listas de control de acceso (ACL).
A continuación se muestra un ejemplo de una ACL:

attributes: SUID
base permissions:
owner(frank): rw-
group(system): r-x
others: ---
extended permissions:
enabled
permit rw- u:dhs
deny r-- u:chas, g:system
specify r-- u:john, g:gateway, g:mail
permit rw- g:account, g:finance

A continuación se muestran las partes de la ACL y sus significados:


• La primera línea indica que el bit setuid está activado.
• La siguiente línea, que introduce los permisos base, es opcional.
• Las tres líneas siguientes especifican los permisos base. El nombre del propietario y del grupo aparecen
entre paréntesis a título informativo solamente. Cambiar dichos nombres no altera el propietario del
archivo ni el grupo de archivos. Sólo el mandato chown y el mandato chgrp pueden cambiar estos
atributos de archivo.
• La línea siguiente, que introduce los permisos ampliados, es opcional.
• La línea siguiente indica que los permisos ampliados que se indican a continuación están habilitados.
• Las últimas cuatro líneas son las entradas ampliadas. La primera entrada ampliada otorga al usuario
dhs los permisos de lectura (r) y grabación (w) sobre el archivo.
• La segunda entrada ampliada deniega el acceso de lectura (r) al usuario chas sólo cuando es miembro
del grupo system.
• La tercera entrada ampliada especifica que mientras el usuario john sea miembro del grupo gateway y
del grupo mail, tiene acceso de lectura (r). Si el usuario john no es miembro de los dos grupos
indicados, este permiso ampliado no tendrá aplicación.
• La última entrada ampliada otorga a cualquier usuario que sea miembro de los dos grupos account y
finance los permisos de lectura (r) y grabación (w).
Nota: A un proceso se le puede aplicar más de una entrada ampliada, donde las modalidades
restrictivas tienen prioridad sobre las modalidades permisivas.
Consulte el mandato acledit para ver la sintaxis completa.
Conceptos relacionados
Mandato para visualizar información de control de accesos (mandato aclget)
El mandato aclget muestra la información de control de accesos para un archivo. La información que se
visualiza incluye atributos, permisos base y permisos ampliados.
Tareas relacionadas
Edición de la información de control de accesos (mandato acledit)

326 AIX Versión 7.2: Gestión del sistema operativo


Utilice el mandato acledit para cambiar la información de control de accesos de un archivo. El mandato
muestra la información de control de accesos actual y permite al propietario del archivo modificarlo.

Edición de la información de control de accesos (mandato acledit)


Utilice el mandato acledit para cambiar la información de control de accesos de un archivo. El mandato
muestra la información de control de accesos actual y permite al propietario del archivo modificarlo.
Antes de que los cambios sean permanentes, el mandato acledit le pregunta si desea continuar.
Nota: La variable de entorno EDITOR se debe especificar con un nombre de vía de acceso completo; de lo
contrario, el mandato acledit fallará.
que se visualiza es específica del tipo ACL e incluye una lista de atributos, permisos base y permisos
ampliados.
Por ejemplo, para editar la información de control de accesos del archivo plans, escriba lo siguiente:

acledit plans

Conceptos relacionados
Ejemplo y descripción de la lista de control de acceso
A continuación se presenta un ejemplo y la descripción de listas de control de acceso (ACL).

Bloqueo del terminal (mandato lock o xlock)


Utilice el mandato lock para bloquear el terminal. El mandato lock solicita la contraseña, la lee y vuelve
a solicitar la contraseña una segunda vez para verificarla.
Mientras tanto, el mandato bloquea el terminal y no elimina el bloqueo hasta que se recibe la contraseña
por segunda vez. El valor predeterminado de tiempo de espera es de 15 minutos, pero se puede cambiar
con el distintivo -Número.
Nota: si la interfaz es AIXwindows, utilice el mandato xlock siguiendo el mismo procedimiento.
Por ejemplo, para bloquear el terminal con el control de contraseña, escriba lo siguiente:

lock

La contraseña se solicita dos veces a fin de que el sistema la pueda verificar. Si la contraseña no se repite
en 15 minutos, el mandato excede el tiempo de espera.
Para reservar un terminal bajo control de contraseña con un intervalo de tiempo de espera de 10 minutos,
escriba lo siguiente:

lock -10

Autenticación
El mandato xlock es un mandato del servidor X habilitado por PAM (Pluggable Authentication
Module) que bloquea el servidor X hasta que el usuario escriba una contraseña. Soporta tanto
autenticación UNIX local como autenticación PAM para desbloquear el servidor X.
Puede establecer la configuración de todo el sistema para utilizar PAM para la autenticación
proporcionando el acceso de usuario root y modificando el valor del atributo auth_type a PAM_AUTH
en la stanza usw del archivo /etc/security/[Link].
Los mecanismos de autenticación que se utilizan cuando PAM está habilitado dependen de la
configuración del servicio de inicio de sesión en el archivo /etc/[Link]. El mandato xlock
requiere la entrada de archivo /etc/[Link] para los tipos de módulos autorización, cuenta,
contraseña y sesión. La configuración siguiente está recomendada para la entrada de archivo /etc/
[Link] en el mandato xlock:

xlock auth required pam_aix

xlock account required pam_aix

Gestión del sistema operativo 327


xlock password required pam_aix

xlock session required pam_aix

Resumen de mandatos para la seguridad de sistemas y archivos


Los siguientes mandatos son para el sistema de archivos y la seguridad.

Elemento Descripción
acledit Edita la información de control de acceso de un archivo
aclget Visualiza la información de control de acceso de un archivo
aclput Establece la información de control de acceso de un archivo
chmod Cambia las modalidades de los permisos
chown Cambia el usuario que se asocia a un archivo
lock Reserva un terminal
lsgroup Visualiza los atributos de los grupos
xlock Bloquea la pantalla X local hasta que se escribe una contraseña

Entorno de usuario
Cada nombre de inicio de sesión tiene su propio entorno del sistema.
El entorno del sistema es un área en la que se almacena la información común a todos los procesos que
se ejecutan en una sesión. Para visualizar información acerca del sistema, puede utilizar varios mandatos.

Archivos de entorno de usuario y procedimientos de personalización


Estos archivos y procedimientos ayudan al usuario a personalizar el entorno del sistema.
Archivos de arranque del sistema

Elemento Descripción
/etc/profile Archivo del sistema que contiene mandatos que el sistema ejecuta
cuando se inicia la sesión.
/etc/environment Archivo del sistema que contiene variables que especifican el entorno
básico para todos los procesos.
$HOME/.profile Archivo del directorio inicial que contiene mandatos que alteran
temporalmente el archivo /etc/profile del sistema cuando se inicia la
sesión. Para obtener más información, consulte el archivo .profile.
$HOME/.env Archivo del directorio inicial que altera temporalmente el archivo /etc/
environment del sistema y que contiene variables que especifican el
entorno básico para todos los procesos. Para obtener más
información, consulte el archivo .env.

archivos de arranque de AIXwindows

Elemento Descripción
$HOME/.xinitrc Archivo del directorio inicial que controla las ventanas y aplicaciones
que se inician cuando se inicia AIXwindows. Para obtener más
información, consulte el archivo .xinitrc.
$HOME/.Xdefaults Archivo del directorio inicial que controla el aspecto visual o de
comportamiento de los recursos de AIXwindows. Para obtener más
información, consulte el apartado “Archivo .Xdefaults” en la página
338.

328 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
$HOME/.mwmrc Archivo del directorio inicial que define enlaces de teclas, enlaces de
botones del ratón y definiciones de menú para el gestor de ventanas.
Para obtener más información, consulte el apartado
“Archivo .mwmrc” en la página 338.

Procedimientos de personalización

Elemento Descripción
PS1 Indicador normal del sistema
PS2 Indicador del sistema correspondiente a más entrada
PS3 Indicador del sistema raíz
chfont Cambia el font que una pantalla utiliza actualmente al rearrancarse el sistema
stty Establece, restablece e informa de los parámetros operativos de la estación de
trabajo

Lista de dispositivos del sistema (mandato lscfg)


Para visualizar el nombre, la ubicación y la descripción de cada dispositivo de la configuración actual,
utilice el mandato lscfg. La lista se ordena por la ubicación de los dispositivos.
Por ejemplo, para listar los dispositivos configurados en el sistema, en el indicador escriba lo siguiente:

lscfg

El sistema muestra la salida similar a la siguiente:

INSTALLED RESOURCE LIST

The following resources are installed on your machine.

+/- = Added/Deleted from Diagnostic Test List.


* = NOT Supported by Diagnostics.

Model Architecture: chrp


Model Implementation: Multiple Processor, PCI bus

+ sysplanar0 00-00 CPU Planar


+ fpa0 00-00 Floating Point Processor
+ mem0 00-0A Memory Card
+ mem1 00-0B Memory Card
+ ioplanar0 00-00 I/O Planar
+ rs2320 00-01 RS232 Card
+ tty0 00-01-0-01 RS232 Card Port
- tty1 00-01-0-02 RS232 Card Port
..
..
..

La lista de dispositivos no se ordena solo por la ubicación de dispositivos. Se ordena por la jerarquía
padre/hijo. Si el padre tiene varios hijos, los hijos se ordenan por ubicación de dispositivos. Si los hijos
tiene la misma ubicación de dispositivo, se muestran en el orden en que los obtiene el software. Para
visualizar información sobre un dispositivo específico, puede utilizar el distintivo -l. Por ejemplo, para
listar la información del dispositivo sysplanar0, en el indicador escriba lo siguiente:

lscfg -l sysplanar0

El sistema muestra la salida similar a la siguiente:

DISPOSITIVO UBICACIÓN DESCRIPCIÓN

sysplanar0 00-00 CPU Planar

Gestión del sistema operativo 329


También puede utilizar el mandato lscfg para visualizar datos vitales del producto (VPD) como, por
ejemplo, números de piezas, números de serie y niveles de cambios técnicos. Para algunos dispositivos,
los datos vitales del producto se recopilan de modo automático y se añaden a la configuración del
sistema. Para otros dispositivos, los datos vitales del producto se escriben manualmente. Cuando ME
precede a los datos, indica que los datos se han escrito manualmente.
Por ejemplo, para listar VPD para dispositivos configurados en el sistema, en el indicador escriba lo
siguiente:

lscfg -v

El sistema muestra la salida similar a la siguiente:

INSTALLED RESOURCE LIST WITH VPD

The following resources are installed in your machine.

Model Architecture: chrp


Model Implementation: Multiple Processor, PCI bus

sysplanar0 00-00 CPU Planar

Part Number.........342522
EC Level............254921
Serial Number.......353535

fpa0 00-00 Floating Point Processor


mem0 00-0A Memory Card

EC Level............990221
.
.
.

Visualización de nombres de consola


Para escribir el nombre del dispositivo de consola actual en salida estándar (por lo general, la pantalla),
utilice el mandato lscons.
Por ejemplo, en el indicador de mandatos escriba lo siguiente:

lscons

El sistema muestra la salida similar a la siguiente:

/dev/lft0

Consulte el mandato lscons para ver la sintaxis completa.

Visualización del nombre de terminal (mandato tty)


Para visualizar el nombre del terminal, utilice el mandato tty.
Por ejemplo, en el indicador de mandatos escriba lo siguiente:

tty

El sistema visualiza información similar a la siguiente:

/dev/tty06

En este ejemplo, tty06 es el nombre del terminal y /dev/tty06 es el archivo de dispositivo que contiene
la interfaz para este terminal.

330 AIX Versión 7.2: Gestión del sistema operativo


Listado de los terminales disponibles (mandato lsdisp)
Para listar los terminales actualmente en el sistema, proporcionando un nombre de identificación de
terminal, número de ranura, nombre de visualización y descripción de cada uno de los terminales, utilice
el mandato lsdisp.
Por ejemplo, para listar todos los terminales disponibles, escriba lo siguiente:

lsdisp

Lo siguiente es un ejemplo de la salida. La lista se muestra en orden ascendente según el número de


ranura.

Name Slot Name Description


ppr0 00-01 POWER_G4 Midrange Graphics Adapter
gda0 00-03 colorgda Color Graphics Display Adapter
ppr1 00-04 POWER_Gt3 Midrange Entry Graphics Adapter

Listado de los fonts disponibles (mandato lsfont)


Para que se muestre una lista de los fonts disponibles para el terminal, utilice el mandato lsfont.
Por ejemplo, para que se listen todos los fonts disponibles para el terminal, escriba lo siguiente:

lsfont

Lo siguiente es un ejemplo de la salida, y muestra el identificador de font, el nombre de archivo, el


tamaño de glifo y la codificación de font:

FONT FILE GLYPH FONT


ID NAME SIZE ENCODING
==== ============== ===== =========
0 [Link] 12x30 ISO8859-1
1 [Link] 8x15 ISO8859-1

Listado de la definición de teclado de software actual (mandato lskbd)


Para visualizar el nombre absoluto de vía de acceso de la definición de teclado de software actual cargada
en el sistema, utilice el mandato lskbd.
Por ejemplo, para listar la definición de teclado actual, escriba lo siguiente:

lskbd

Lo siguiente es un ejemplo del listado que muestra el mandato lskbd:

La definición de teclado de software actual = /usr/lib/nls/loc/[Link]

Listado de los productos de software disponibles (mandato lslpp)


Para visualizar información sobre los productos de software disponibles en el sistema, utilice el mandato
lslpp.
Por ejemplo, para listar los productos de software del sistema, en el indicador escriba lo siguiente:

lslpp -l -a

Lo siguiente es un ejemplo de la salida:

Fileset Level State Description


-------------------- ------- -------- -----------------
Path: /usr/lib/objrepos
X11_3d.[Link] APPLIED AIXwindows/3D GL
Development Utilities
Fonts
[Link] APPLIED AIXwindows Miscellaneous
X Fonts
X11mEn_US.msg APPLIED AIXwindows NL Message
archivos

Gestión del sistema operativo 331


.

Si la lista es muy larga, la parte superior se desplaza fuera de la pantalla. Para visualizar la lista de modo
que se muestre una página (pantalla) cada vez, utilice el mandato lslpp conectado con el mandato pg.
En el indicador de mandatos, escriba lo siguiente:

lslpp -l -a | pg

Lista de asignaciones de teclas de control para el terminal (mandato stty)


Para visualizar los valores del terminal, utilice el mandato stty. Fíjese especialmente en las teclas que
utiliza el terminal para teclas de control.
Por ejemplo, en el indicador de mandatos escriba lo siguiente:

stty -a

El sistema visualiza información similar a la siguiente:

intr = ^C; quit = ^\; erase = ^H; kill = ^U; eof = ^D;
eol = ^@ start = ^Q; stop = ^S; susp = ^Z; dsusp = ^Y;
reprint = ^R discard = ^O; werase = ^W; lnext = ^V

En este ejemplo, líneas como intr = ^C; quit = ^\; erase = ^H; muestran los valores de las
teclas de control. La tecla ^H es la tecla de retroceso y se establece para realizar la función de borrado.
Si la lista es muy larga, la parte superior se desplaza fuera de la pantalla. Para visualizar la lista de modo
que se muestre una página (pantalla) cada vez, utilice el mandato stty conectado con el mandato pg. En
el indicador de mandatos, escriba lo siguiente:

stty -a | pg

Conceptos relacionados
Cancelación de procesos en primer plano
Si inicia un proceso en primer plano y, luego, decide que no desea que se complete, puede cancelarlo
pulsando la tecla de interrupción (Inter). Dicha tecla suele ser Control-C o Control-Retroceso.

Listado de las variables de entorno (mandato env)


Para visualizar las variables de entorno actuales, utilice el mandato env. Una variable de entorno que sea
accesible para todos los procesos se denomina variable global.
Por ejemplo, para listar todas las variables de entorno y sus valores asociados, escriba lo siguiente:

env

332 AIX Versión 7.2: Gestión del sistema operativo


Lo siguiente es un ejemplo de la salida:

TMPDIR=/usr/tmp
myid=denise
LANG=es_ES
UNAME=barnard
PAGER=/bin/pg
VISUAL=vi
PATH=/usr/ucb:/usr/lpp/X11/bin:/bin:/usr/bin:/etc:/u/denise:/u/denise/bin:/u/bin1
MAILPATH=/usr/mail/denise?denise has mail !!!
MAILRECORD=/u/denise/.Outmail
EXINIT=set beautify noflash nomesg report=1 showmode showmatch
EDITOR=vi
PSCH=>
HISTFILE=/u/denise/.history
LOGNAME=denise
MAIL=/usr/mail/denise
PS1=denise@barnard:${PWD}>
PS3=#
PS2=>
epath=/usr/bin
USER=denise
SHELL=/bin/ksh
HISTSIZE=500
HOME=/u/denise
FCEDIT=vi
TERM=lft
MAILMSG=**YOU HAVE NEW MAIL. USE THE mail COMMAND TO SEE YOUR PWD=/u/denise
ENV=/u/denise/.env

Si el listado es muy largo, la parte superior se desplaza fuera de la pantalla. Para visualizar la lista de
modo que se muestre una página (pantalla) cada vez, utilice el mandato env conectado con el mandato
pg. En el indicador de mandatos, escriba lo siguiente:

env | pg

Visualización de un valor de variable de entorno (mandato printenv)


Para visualizar los valores de variables de entorno, utilice el mandato printenv.
Si especifica el parámetro Nombre, el sistema sólo imprime el valor asociado a la variable que ha
solicitado. Si no especifica el parámetro Nombre, el mandato printenv muestra todas las variables de
entorno actuales, y visualiza una secuencia Nombre =Valor por línea.
Por ejemplo, para buscar el valor actual de la variable de entorno MAILMSG, escriba lo siguiente:

printenv MAILMSG

El mandato devuelve el valor de la variable de entorno MAILMSG. Por ejemplo:

YOU HAVE NEW MAIL

Idiomas bidireccionales (mandato aixterm)


El mandato aixterm da soporte al árabe y al hebreo, que son idiomas bidireccionales.
Los idiomas bidireccionales pueden leerse y escribirse en dos direcciones: de izquierda a derecha y de
derecha a izquierda. Puede trabajar con aplicaciones en árabe y hebreo abriendo una ventana y
especificando un escenario árabe o hebreo.

Resumen de mandatos para entorno de usuario e información del sistema


Los siguientes mandatos son para información del entorno de usuario y el sistema.

Elemento Descripción
aixterm Le permite trabajar con idiomas bidireccionales
env Visualiza el entorno actual o establece el entorno para la ejecución de un mandato
lscfg Visualiza información de diagnósticos acerca de un dispositivo
lscons Visualiza el nombre de la consola actual

Gestión del sistema operativo 333


Elemento Descripción
lsdisp Lista las pantallas que actualmente están disponibles en el sistema
lsfont Lista los fonts disponibles que puede utilizar la pantalla
lskbd Lista las correlaciones de teclado que actualmente se han cargado en el sistema
lslpp Lista los productos de software
printenv Visualiza los valores de las variables de entorno
stty Visualiza los valores del sistema
tty Visualiza el nombre completo de la vía de acceso del terminal

Personalización del entorno de usuario


El sistema operativo proporciona diversos mandatos y archivos de inicialización que le permite
personalizar el comportamiento y el aspecto del entorno de usuario.
También puede personalizar algunos de los recursos por omisión de las aplicaciones que utiliza en el
sistema. El programa inicia los valores predeterminados en el arranque. Cuando cambie los valores
predeterminados, deberá salir y, a continuación, volver a iniciar el programa para que los nuevos valores
predeterminados entren en vigor.
Para obtener información acerca de la personalización del comportamiento y del aspecto del Common
Desktop Environment, consulte la publicación Common Desktop Environment 1.0: Advanced User's and
System Administrator's Guide.

Archivos de arranque del sistema


Al iniciar la sesión, el shell define el entorno de usuario leyendo los archivos de inicialización que el
usuario ha definido. Las características del entorno del usuario se definen utilizando los valores
proporcionados a las variables de entorno. El usuario conserva este entorno hasta que finaliza la sesión
del sistema.
El shell utiliza dos tipos de archivos de perfil cuando se inicia la sesión en el sistema operativo. Evalúa los
mandatos incluidos en los archivos y a continuación ejecuta los mandatos para definir el entorno del
sistema. Los archivos tienen funciones similares, con la excepción de que el archivo /etc/profile
controla las variables de los perfiles para todos los usuarios de un sistema, mientras que el
archivo .profile le permite personalizar su propio entorno.
El shell primero ejecuta los mandatos para configurar el entorno del sistema en el archivo /etc/
environment y, a continuación, evalúa los mandatos que contiene el archivo /etc/profile. Tras la
ejecución de tales archivos, el sistema comprueba si se dispone de un archivo .profile en el directorio
inicial. Si el archivo .profile existe, el sistema ejecuta dicho archivo. El archivo .profile especificará
si también existe un archivo de entorno. Si existe un archivo de entorno (normalmente
denominado .env), el sistema ejecutará este archivo y configurará las variables de entorno.
Los archivos /etc/environment, /etc/profile y .profile se ejecutan una vez durante el inicio de
sesión. El archivo .env, por su parte, se ejecuta cada vez que abre un nuevo shell o ventana.

Archivo /etc/environment
El primer archivo que el sistema operativo utiliza al iniciar la sesión es el archivo /etc/environment. El
archivo /etc/environment contiene variables que especifican el entorno básico de todos los procesos.
Cuando empieza un nuevo proceso, la subrutina exec pone a disposición una matriz de series con el
formato Nombre=Valor. Esta matriz de series se denomina entorno. Cada nombre definido por una de las
series se denomina variable de entorno o variable de shell. La subrutina exec permite establecer todo el
entorno a la vez.
Cuando se inicia la sesión, el sistema establece las variables de entorno del archivo /etc/environment
antes de leer el perfil de inicio de sesión, denominado .profile. Las siguientes variables forman en
entorno básico:

334 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
HOME Nombre completo de la vía de acceso del directorio HOME o de inicio de sesión
del usuario. El programa login establece este valor en el nombre que se
especifica en el archivo /etc/passwd.
LANG El nombre del escenario en vigor actualmente. La variable LANG se establece
inicialmente en el archivo /etc/profile durante la instalación.
NLSPATH El nombre completo de la vía de acceso para catálogos de mensajes.
LOCPATH Nombre completo de la vía de acceso de la ubicación de las tablas del Soporte
de idioma nacional.
PATH Secuencia de directorios en la que mandatos tales como sh, time, nice y
nohup buscan cuando existe un mandato cuyo nombre de vía de acceso no
está completo.
TZ La información de huso horario. La variable de entorno TZ se establece
inicialmente mediante el archivo /etc/profile, el perfil de inicio de sesión
del sistema.

Para obtener información detallada acerca del archivo /etc/environment, consulte la publicación
Referencia de archivos.

Archivo /etc/profile
El segundo archivo que el sistema operativo utiliza al iniciar la sesión es el archivo /etc/profile.
El archivo /etc/profile controla las variables predeterminadas de todo el sistema como, por ejemplo:
• Variables de exportación
• Máscara de creación de archivos (umask)
• Tipos de terminal
• Mensajes de correo para indicar cuándo ha llegado nuevo correo
El administrador del sistema configura el archivo /etc/profile para todos los usuarios del sistema.
Únicamente el administrador del sistema puede modificar este archivo.
A continuación se muestra un ejemplo de un archivo /etc/profile típico:

#Set file creation mask


umask 022
#Tell me when new mail arrives
MAIL=/usr/mail/$LOGNAME
#Add my /bin directory to the shell search sequence
PATH=/usr/bin:/usr/sbin:/etc::
#Set terminal type
TERM=lft
#Make some environment variables global
export MAIL PATH TERM

Para obtener información detallada acerca del archivo /etc/profile, consulte la publicación
Referencia de archivos .

Archivo .profile
El archivo .profile se encuentra en el directorio inicial ($HOME) y le permite personalizar el entorno de
trabajo individual.
Puesto que el archivo .profile está oculto, utilice el mandato ls -a para listarlo.
Después de que el programa login añada las variables LOGNAME (nombre de inicio de sesión) y HOME
(directorio de inicio de sesión) al entorno, se ejecutan los mandatos del archivo $HOME/.profile si el
archivo está presente. El archivo .profile contiene el perfil individual que altera temporalmente las
variables que se han establecido en el archivo /etc/profile. Con frecuencia, el archivo .profile se
utiliza para establecer variables de entorno exportadas y modalidades de terminal. Puede personalizar el

Gestión del sistema operativo 335


entorno modificando el archivo .profile. Utilice el archivo .profile para controlar los siguientes
valores predeterminados:
• Shells que han de abrirse
• Aspecto del indicador
• Sonido del teclado
En el ejemplo siguiente se muestra un archivo .profile típico:

PATH=/usr/bin:/etc:/home/bin1:/usr/lpp/tps4.0/user::
epath=/home/gsc/e3:
export PATH epath
csh

Este ejemplo ha definido dos variables de vía de acceso (PATH y epath), las ha exportado y ha abierto un
shell C (csh).
También puede utilizar el archivo .profile (o, si no existe, el archivo /etc/profile) para determinar
variables de shell de inicio de sesión. También puede personalizar otros entornos de shell. Por ejemplo,
utilice el archivo .cshrc y el archivo .kshrc para personalizar un shell C y un shell Korn,
respectivamente, cuando se inicie cada tipo de shell.

Archivo .env
Un cuarto archivo que el sistema operativo utiliza en el inicio de sesión es el archivo .env, si .profile
contiene la línea siguiente: export ENV=$HOME/.env
El archivo .env le permite personalizar las variables de entorno de trabajo individuales. Puesto que el
archivo .env está oculto, utilice el mandato ls -a para listarlo. Para obtener información acerca del
mandato ls, consulte ls. El archivo .env contiene las variables de entorno de usuario individuales que
alteran temporalmente las variables que se han establecido en el archivo /etc/environment. Puede
personalizar las variables de entorno como desee modificando el archivo .env.
En el ejemplo siguiente se muestra un archivo .env típico:

export myid=`id | sed -n -e 's/).*$//' -e 's/^.*(//p'`


#set prompt: login & nombre sistema & vía de acceso
if [ $myid = root ]
then typeset -x PSCH='#:\${PWD}> '
PS1="#:\${PWD}> "
else typeset -x PSCH='>'
PS1="$LOGNAME@$UNAME:\${PWD}> "
PS2=">"
PS3="#?"
fi
export PS1 PS2 PS3
#definir mis alias de mandatos
alias ls="/bin/ls -CF" \
d="/bin/ls -Fal | pg" \
rm="/bin/rm -i" \
up="cd .."

Nota: Al modificar el archivo .env, asegúrese de que las variables de entorno que acaba de crear no
entran en conflicto con las variables estándar como MAIL, PS1, PS2 y IFS.

Archivos de arranque de AIXwindows


Los distintos sistemas tienen diferentes formas de iniciar el Servidor X y AIXwindows.
Puesto que los distintos sistemas tienen distintas formas de iniciar el Servidor X y AIXwindows, consulte
al administrador del sistema cómo debe iniciarlos. Normalmente, el Servidor X y AIXwindows se inician
desde un script de shell que se ejecuta automáticamente al iniciar la sesión. Sin embargo, puede que
tenga que iniciar el Servidor X o AIXwindows, o ambos.
Si inicia la sesión y observa que la pantalla sólo funciona como un terminal, sin que es visualice ninguna
ventana, puede iniciar el Servidor X escribiendo lo siguiente:

xinit

336 AIX Versión 7.2: Gestión del sistema operativo


Nota: Antes de especificar este mandato, asegúrese de que el puntero se encuentra dentro de una
ventana que contenga un indicador del sistema.
Si este mandato no inicia el Servidor X, consulte al administrador del sistema para asegurarse de que la
vía de acceso de búsqueda contiene el directorio X11 que contiene los programas ejecutables. La vía de
acceso adecuada podría variar de un sistema a otro.
Si inicia la sesión y observa que una o más ventanas aparecen sin los marcos, puede iniciar el Gestor de
ventanas de AIXwindows escribiendo lo siguiente:

mwm &

Puesto que AIXwindows permite que los programadores que escriben aplicaciones de AIXwindows y los
usuarios realicen personalizaciones, puede que los botones del ratón u otras funciones no funcionen
como espera que lo hagan tras haber leído esta documentación. Puede restablecer el entorno de
AIXwindows en su comportamiento por omisión pulsando y manteniendo pulsadas las cuatro teclas
siguientes:
Alt-Control-Mayús-!
Puede volver al comportamiento personalizado pulsando de nuevo esta secuencia de teclas. Si el sistema
no permite esta combinación de teclas, también puede restaurar el comportamiento por omisión desde el
menú raíz por omisión.

Archivo .xinitrc
El mandato xinit utiliza un script de shell personalizable que lista los programas Cliente X que deben
iniciarse. El archivo .xinitrc del directorio inicial controla las ventanas y las aplicaciones que se inician
al iniciar AIXwindows.
El mandato xinit funciona con scripts de shell en el orden siguiente:
1. En primer lugar, el mandato xinit busca la variable de entorno $XINITRC para iniciar AIXwindows.
2. Si no se encuentra la variable de entorno $XINITRC, el mandato xinit busca el script de shell
$HOME/.xinitrc.
3. Si no se encuentra el script de shell $HOME/.xinitrc, el mandato xinit inicia el script de
shell /usr/lib/X11/$LANG/xinitrc.
4. Si no se encuentra /usr/lib/X11/$LANG/xinitrc, busca el script de shell /usr/lpp/X11/
defaults/$LANG/xinitrc. Si dicho script no se encuentra, busca el script de
shell /usr/lpp/X11/defaults/xinitrc.
5. El script de shell xinitrc inicia mandatos como, por ejemplo, los mandatos mwm (Gestor de ventanas
de AIXwindows), mandatos aixterm y xclock.
El mandato xinit realiza las operaciones siguientes:
• Inicia un Servidor X en la pantalla actual
• Establece la variable de entorno $DISPLAY
• Ejecuta el archivo xinitrc para iniciar los programas Cliente X
El ejemplo siguiente muestra la parte del archivo xinitrc que puede personalizar:

# /usr/lpp/X11/bin/xinit llama a este script.

.
.
.
#***************************************************************
# Inicie los clientes X. Cambie las siguientes líneas a *
# los mandatos que desee. *
# Los clientes por omisión son un reloj analógico *
# (xclock), un emulador de terminal lft
# (aixterm) y *
# (mwm). *
#****************************************************************
exec mwm

Gestión del sistema operativo 337


Archivo .Xdefaults
Si trabaja en una interfaz AIXwindows, puede personalizar esta interfaz con el archivo .Xdefaults.
AIXwindows permite especificar las preferencias de las características visuales, por ejemplo, colores y
fonts.
La mayor parte de los factores relacionados con el aspecto y el comportamiento de una aplicación basada
en el sistema operativo Windows se controlan por medio de variables denominadas resources. El aspecto
visual o de comportamiento de un recurso está determinado por su valor asignado. Existen distintos tipos
de valores para los recursos. Por ejemplo, a los recursos que controlan el color pueden asignarse valores
como DarkSlateBlue o Black. A los recursos que especifican dimensiones se asignan valores numéricos.
Algunos recursos toman valores booleanos (True o False).
Si no dispone de un archivo .Xdefaults en el directorio inicial, puede crear uno con cualquier editor de
texto. Cuando tenga este archivo en el directorio inicial, puede establecer los valores de los recursos de
éste como desee. Existe un archivo por omisión de ejemplo denominado [Link] en el
directorio /usr/lpp/X11/defaults.
En el ejemplo siguiente se muestra una parte de un archivo .Xdefaults típico:

*AutoRaise: on
*DeIconifyWarp: on
*warp:on
*TitleFont:andysans12
*scrollBar: true
*font: Rom10.500
Mwm*menu*foreground: black
Mwm*menu*background: CornflowerBlue
Mwm*menu*RootMenu*foreground: black
Mwm*menu*RootMenu*background: CornflowerBlue
Mwm*icon*foreground: grey25
Mwm*icon*background: LightGray
Mwm*foreground: black
Mwm*background: LightSkyBlue
Mwm*bottomShadowColor: Blue1
Mwm*topShadowColor: CornflowerBlue
Mwm*activeForeground: white
Mwm*activeBackground: Blue1
Mwm*activeBottomShadowColor: black
Mwm*activeTopShadowColor: LightSkyBlue
Mwm*border: black
Mwm*highlight:white

[Link]: green
[Link]: black
[Link]: true
[Link]: on
[Link]: true
[Link]: 2
[Link]:Rom10.500
[Link]: 80x25
[Link]: Rom8.500
[Link]: false
[Link]: true
[Link]: true
[Link]: 500
[Link]: true
[Link]: false
[Link]: AIX

Archivo .mwmrc
La mayoría de las funciones que deseará personalizar pueden establecerse con los recursos del
archivo .Xdefaults. Sin embargo, los enlaces de teclas, los enlaces de botones del ratón y las
definiciones de los menús del gestor de ventanas se especifican en el archivo .mwmrc complementario, al
que los recursos hacen referencia en el archivo .Xdefaults.
Si no dispone de un archivo .mwmrc en el directorio inicial, puede copiarlo como se indica a continuación:

cp /usr/lib/X11/[Link] .mwmrc

338 AIX Versión 7.2: Gestión del sistema operativo


Puesto que el archivo .mwmrc altera temporalmente los efectos del archivo [Link] en todo el
sistema, las especificaciones propias no interferirán con las especificaciones de los otros usuarios.
En el ejemplo siguiente se muestra parte de un archivo [Link] típico:

# ARCHIVO DE DESCRIPCIÓN DE RECURSOS mwm


([Link])
#
# descripciones de paneles de menú
#
# Descripción del menú raíz

Menu RootMenu
{ "Root Menu" [Link]
no-label [Link]
"New Window" [Link] "aixterm &"
"Shuffle Up" f.circle_up
"Shuffle Down" f.circle_down
"Refresh" [Link]
no-label [Link]
"Restart" [Link]
"Quit" f.quit_mwm
}

# Descripción de Menú de Ventanas Por Omisión

Menu DefaultWindowMenu MwmWindowMenu


{ "Restore" _R Alt<Key>F5 [Link]
"Move" _M Alt<Key>F7 [Link]
"Size" _S Alt<Key>F8 [Link]
"Minimize" _n Alt<Key>F9 [Link]
"Maximize" _x Alt<Key>F10 [Link]
"Lower" _L Alt<Key>F3 [Link]
no-label [Link]
"Close" _C Alt<Key>F4 [Link]
}

# sin menú de ventanas aceleradoras


Menu NoAccWindowMenu
{
"Restore" _R [Link]
"Move" _M [Link]
"Size" _S [Link]
"Minimize" _n [Link]
"Maximize" _x [Link]
"Lower" _L [Link]
no-label [Link]
"Close" _C [Link]
}

Keys DefaultKeyBindings
{
Shift<Key>Escape icon|window f.post_wmenu
Meta<Key>space icon|window f.post_wmenu
Meta<Key>Tab root|icon|window f.next_key
Meta Shift<Key>Tab root|icon|window f.prev_key
Meta<Key>Escape root|icon|window f.next_key
Meta Shift<Key>Escape root|icon|window f.prev_key
Meta Ctrl Shift<Key>exclam root|icon|window f.set_behavior
}

#
# descripciones de enlaces de botones
#

Buttons DefaultButtonBindings
{
<Btn1Down> frame|icon [Link]
<Btn3Down> frame|icon f.post_wmenu
<Btn1Down> root [Link] RootMenu
<Btn3Down> root [Link] RootMenu
Meta<Btn1Down> icon|window [Link]
Meta<Btn2Down> window|icon [Link]

Gestión del sistema operativo 339


Meta<Btn3Down> window [Link]
}

Buttons PointerButtonBindings
{
<Btn1Down> frame|icon [Link]
<Btn2Down> frame|icon f.post_wmenu
<Btn3Down> frame|icon [Link]
<Btn1Down> root [Link] RootMenu
Meta<Btn2Down> window|icon [Link]
Meta<Btn3Down> window|icon [Link]
}

#
# FIN DE ARCHIVO DE DESCRIPCIÓN DE RECURSOS mwm
#

Exportación de variables de shell (mandato export shell)


Una variable de shell local es una variable que sólo puede reconocer el shell que la ha creado. Si inicia un
nuevo shell, dicho shell no conoce las variables del shell antiguo. Si desea que los nuevos shells que abra
utilicen las variables de un shell antiguo, exporte las variables para que éstas sean globales.
Para convertirlas en variables globales, puede utilizar el mandato export. Para que las variables del shell
sean globales automáticamente, expórtelas en el archivo .profile.
Nota: Las variables se pueden exportar a los shells hijo pero no a los shells padre.
Vea los ejemplos siguientes:
• Para convertir la variable de shell local PATH en global, escriba lo siguiente:

export PATH

• Para listar todas las variables exportadas, escriba lo siguiente:

export

El sistema mostrará una información parecida a esta:

DISPLAY=unix:0
EDITOR=vi
ENV=$HOME/.env
HISTFILE=/u/denise/.history
HISTSIZE=500
HOME=/u/denise
LANG=es_ES
LOGNAME=denise
MAIL=/usr/mail/denise
MAILCHECK=0
MAILMSG=**YOU HAVE NEW MAIL.
USE THE mail COMMAND TO SEE YOUR MAILPATH=/usr/mail/denise?denise has mail !!!
MAILRECORD=/u/denise/.Outmail
PATH=/usr/ucb:/usr/lpp/X11/bin:/bin:/usr/bin:/etc:/u/denise:/u/denise/bin:/u/bin1
PWD=/u/denise
SHELL=/bin/ksh

Cambio del font de por omisión (mandato chfont)


Para cambiar el font por omisión durante el arranque del sistema, utilice el mandato chfont o el
mandato smit. Una paleta de fonts es un archivo que el sistema utiliza para definir e identificar los fonts
de que dispone.
Nota: Para ejecutar el mandato chfont, debe tener autorización de root.
Mandato chfont
Vea los ejemplos siguientes sobre cómo utilizar el mandato chfont:
• Para cambiar el font activo por el quinto font de la paleta de fonts, escriba lo siguiente:

340 AIX Versión 7.2: Gestión del sistema operativo


chfont -a5

• Para cambiar el font por un tipo de letra en cursiva, roman y en negrita del mismo tamaño, escriba
lo siguiente:

chfont -n /usr/lpp/fonts/[Link] /usr/lpp/fonts/[Link] /usr/lpp/fonts/[Link]

mandato smit
El mandato chfont también se puede ejecutar utilizando smit.
Para seleccionar el font activo, escriba lo siguiente:

smit chfont

Para seleccionar la paleta de fonts, escriba lo siguiente:

smit chfontpl

Cambio de las teclas de control (mandato stty)


Para cambiar las teclas que el terminal utiliza para teclas de control, utilice el mandato stty.
Los cambios que realice en las teclas de control seguirán en vigor hasta que finalice la sesión. Para que
los cambios sean permanentes, colóquelos en el archivo .profile.
Vea los ejemplos siguientes:
• Para asignar Control-Z como tecla de interrupción, escriba lo siguiente:

stty intr ^Z

Asegúrese de situar un carácter de espacio entre intr y ^Z.


• Para restablecer todas las teclas de control a sus valores predeterminados, escriba lo siguiente:

stty sane

• Para visualizar los valores actuales, escriba lo siguiente:

stty -a

Cambio del indicador del sistema


Puede cambiar el indicador del sistema.
El shell utiliza las variables de indicador siguientes:

Elemento Descripción
PS1 Indicador que se utiliza como indicador normal del sistema
PS2 Indicador que se utiliza cuando el shell espera más entrada
PS3 Indicador que se utiliza cuando el usuario dispone de autorización de usuario
root

Puede cambiar cualquiera de las características del indicador cambiando el valor de su variable de shell.
Los cambios que ha realizado en el indicador seguirán en vigor hasta que finalice la sesión. Para que los
cambios sean permanentes, colóquelos en el archivo .env .
Vea los ejemplos siguientes:
• Para visualizar el valor actual de la variable PS1, escriba lo siguiente:

echo "El indicador es $PS1"

Gestión del sistema operativo 341


El sistema mostrará una información parecida a esta:

prompt is $

• Para cambiar el indicador a Ready>, escriba lo siguiente:

PS1="Ready> "

• Para cambiar el indicador de continuación a Enter more->, escriba lo siguiente:

PS2="Enter more->"

• Para cambiar el indicador de root a Root->, escriba lo siguiente:

PS3="Root-> "

Consulta de sistemas BSD


Este apéndice está dirigido a los administradores del sistema que están familiarizados con los sistemas
operativos 4.3 BSD UNIX o System V. Esta información explica las diferencias y similitudes entre estos
sistemas y AIX.
Los temas que se explican en este apéndice son:

Conceptos de BSD
Antes de empezar a trabajar con Berkeley Software Distribution (BSD), debe conocer algunas de las
diferencias entre BSD y AIX.

Introducción a AIX para los gestores del sistema BSD


Las siguientes sugerencias pueden ayudar a los gestores del sistema Berkeley Software Distribution
(BSD) a empezar la gestión de AIX.
• Empiece por iniciar la sesión como root en la consola gráfica.
• Realice la gestión del sistema desde la consola del sistema hasta que tenga experiencia. Es más fácil
trabajar desde la consola del sistema que desde un terminal remoto. Una vez tenga experiencia con el
sistema, puede trabajar remotamente desde un xterm o un terminal ASCII.
• Aproveche las ventajas de los distintos recursos de AIX para las tareas de gestión del sistema.
Incluyen:
– System Management Interface Tool (SMIT). SMIT proporciona una interfaz entre los gestores del
sistema y los mandatos de configuración y gestión. SMIT puede ayudar a los gestores del sistema a
realizar la mayoría de tareas de administración del sistema.
– Gestor de Datos Objeto (ODM). ODM proporciona rutinas que acceden a objetos de las bases de
datos ODM. Las bases de datos ODM contienen información de configuración de dispositivo.
– Controlador de Recursos del Sistema (SRC). SRC proporciona el acceso y control de daemons y otros
recursos del sistema mediante una sola interfaz.
Conceptos relacionados
Controlador de recursos del sistema
El Controlador de recursos del sistema (SRC) proporciona un conjunto de mandatos y subrutinas para
facilitar la creación y control de subsistemas al gestor y programador del sistema.
Información relacionada
Configuración de un gran número de dispositivos

Principales diferencias entre 4.3 BSD y AIX


A continuación se presenta un resumen de las principales diferencias entre los sistemas AIX y 4.3 BSD.

342 AIX Versión 7.2: Gestión del sistema operativo


En AIX, los daemons de red se inician desde el archivo /etc/[Link], no desde el archivo /etc/
[Link]. El script de shell /etc/[Link] se invoca desde el archivo /etc/inittab, no desde el
archivo /etc/rc.
Si el Controlador de Recursos del Sistema (SRC) está en ejecución, los daemons TCP/IP se ejecutan bajo
el control de SRC. Si no desea que los daemons TCP/IP se ejecuten bajo el control de SRC, utilice la vía
rápida smit setbootup_option para cambiar el sistema a la configuración rc de estilo BSD.
AIX soporta estas funciones de gestión de red disponibles en 4.3 BSD:
• Recursos de inicio de sesión SYSLOG a nivel de kernel
• Derechos de acceso para zócalos de dominio UNIX.
Almacenamiento de datos de configuración
Normalmente, 4.3 BSD almacena los datos de configuración en archivos ASCII. Los fragmentos de
información relacionados se conservan en la misma línea y se puede realizar el proceso de registros
(clasificación y búsqueda) en el propio archivo ASCII. Los registros pueden variar de longitud y se
terminan en un salto de línea. 4.3 BSD proporciona herramientas para convertir los archivos ASCII
potencialmente grandes en formato de base de datos (dbm). Las funciones de biblioteca importantes
buscan en el par de archivos dbm si existen, pero buscan en el archivo ASCII original si no se
encuentran los archivos dbm.
Algunos datos de configuración para AIX se almacenan en archivos ASCII, pero con frecuencia en un
formato de stanza. Una stanza es un conjunto de fragmentos de información relacionados
almacenados en un grupo de varias líneas. Cada fragmento de información tiene una etiqueta para
que se pueda comprender mejor el contenido.
AIX también soporta versiones dbm de la información de contraseña y usuario. Además, los
archivos /etc/passwd, /etc/group y /etc/inittab son ejemplos de archivos para AIX donde la
información se almacena en formato tradicional en lugar de formato de stanza.
Otros datos de configuración para AIX se almacenan en archivos mantenidos por el Gestor de Datos
Objeto (ODM). System Management Interface Tool (SMIT) puede manipular y mostrar información en
archivos ODM. Alternativamente, puede utilizar mandatos ODM directamente para ver estos archivos.
Para consultar los archivos ODM, utilice los mandatos siguientes:
• odmget
• odmshow.
Los siguientes mandatos ODM modifican los archivos ODM:
• odmadd
• odmcreate
• odmdrop
• odmchange
• odmdelete.
Atención: La modificación de archivos ODM puede dar lugar a que el sistema falle
incorrectamente, y puede impedirle reiniciar el sistema satisfactoriamente. Utilice únicamente
mandatos ODM directamente en archivos ODM cuando los mandatos específicos de la tarea,
como los generados por SMIT, no sean satisfactorios.
Gestión de configuración
Cuando se inicia un sistema que ejecuta AIX, el Gestor de configuración invoca un conjunto de
mandatos específicos de la configuración. Estos mandatos específicos de la configuración se
denominan métodos. Los métodos identifican los dispositivos del sistema y actualizan los archivos
ODM adecuados en el directorio /etc/objrepos.
Los archivos especiales de dispositivo directamente en /dev, no están preinstalados. Algunos
archivos especiales como, por ejemplo, para discos duros, se crean automáticamente durante el
proceso de configuración de arranque. Otros archivos especiales, como aquello para terminales

Gestión del sistema operativo 343


ASCII, debe crearlos el administrador del sistema utilizando el menú Dispositivos de SMIT. Esta
información se mantiene en el ODM para que el sistema la pueda utilizar más tarde.
Gestión de discos
En AIX, las unidades de disco se denominan volúmenes físicos. Se hace referencia a las particiones
como volúmenes lógicos. Igual que en 4.3 BSD, un solo volumen físico puede tener múltiples
volúmenes lógicos. Sin embargo, a diferencia de 4.3 BSD, un solo volumen lógico de AIX puede
abarcar múltiples volúmenes físicos. Para ello, debe convertir varios volúmenes físicos en un grupo de
volúmenes y crear volúmenes lógicos en el grupo de volúmenes.
Los mandatos de AIX utilizados para el sistema de archivos y la gestión de volúmenes incluyen:
• crfs
• varyonvg
• varyoffvg
• lsvg
• importvg
• exportvg.
Los siguientes mandatos 4.3 BSD también están disponibles:
• mkfs
• fsck
• fsdb
• mount
• umount.
Las diferencias entre estos mandatos para 4.3 BSD y para AIX se explican en el apartado “Sistemas
de archivos para gestores del sistema BSD 4.3” en la página 364.
4.3 BSD mantiene una lista de sistemas de archivos en el archivo /etc/fstab. AIX mantiene una
stanza para cada sistema de archivos del archivo /etc/filesystems.
Mandato tn3270
El mandato tn3270 es un enlace con el mandato telnet, pero utiliza el archivo /etc/map3270 y el
valor de variable de entorno TERM para proporcionar las correlaciones de teclado 3270. Por lo tanto,
el mandato tn3270 funciona exactamente como la versión BSD.
Si desea cambiar las secuencias de escape de los valores predeterminados utilizados por los
mandatos tn3270, telnet o tn, establezca la variable de entorno TNESC antes de iniciar estos
mandatos.
Nuevos mandatos
Para manejar la nueva configuración y los sistemas de gestión de disco, AIX tiene aproximadamente
150 mandatos nuevos para los administradores de 4.3 BSD.
Arranque
AIX soporta la identificación y configuración automática de los dispositivos. En consecuencia, el
proceso de arranque es muy diferente de los sistemas 4.3 BSD. Además del kernel, una imagen de un
sistema de archivos de arranque y la información de configuración de dispositivo base anterior se
carga en un disco de RAM. En la primera fase del arranque, se carga suficiente información de
configuración y se comprueba para permitir el acceso a volúmenes lógicos. Se identifica el dispositivo
de espacio de paginación en el kernel y se comprueba el sistema de archivos raíz del disco duro. En
este momento, el sistema operativo cambia el sistema de archivos raíz del disco RAM al disco duro y
se completa el procedimiento de arranque, incluyendo la configuración de los demás dispositivos.

344 AIX Versión 7.2: Gestión del sistema operativo


Autorización de usuario
Los sistemas operativos 4.3 BSD y versiones de AT&T UNIX anteriores a SVR4, almacenan toda la
información de autentificación de usuario, incluyendo las contraseñas cifradas, en el archivo /etc/
passwd. Tradicionalmente, todos podían leer el archivo /etc/passwd.
En sistemas SVR4, las contraseñas cifradas se eliminan del archivo /etc/passwd y se almacenan en
el archivo /etc/shadow. Sólo los usuarios con autorización de root y los programas fiables (por
ejemplo, el programa /bin/login) pueden leer el archivo /etc/shadow.
AIX almacena las contraseñas cifradas en el archivo /etc/security/passwd. Otros archivos del
directorio /etc/security son user y limits. Estos tres archivos definen la manera en que el
usuario tiene permitido acceder al sistema (por ejemplo, utilizando los mandatos rlogin o telnet)
y los límites de recursos del usuario (por ejemplo, el tamaño de archivo y el espacio de direcciones).
Impresión
Están soportados la mayoría de mandatos de impresión de 4.3 BSD con leves diferencias. Una
diferencia es que el archivo /etc/qconfig es el archivo de configuración en AIX.
El sistema de impresión de líneas para AIX puede interoperar con el sistema de impresión de líneas
de 4.3 BSD, tanto para someter trabajos de impresión a sistemas 4.3 BSD como para imprimir
trabajos de impresión sometidos desde un sistema 4.3 BSD.
Shells
AIX soporta el shell Bourne, el shell C y el shell Korn. El nombre completo de vía de acceso para el
programa de shell Bourne es /bin/bsh. El archivo /bin/sh es un enlace fijo para el archivo /bin/
ksh. El administrador puede cambiar este archivo.
AIX no soporta setuid ni setgid para los scripts de shell en ningún shell.
Nota:
1. AIX no tiene scripts de shell que se basen en /bin/sh. Sin embargo, muchos scripts de shell de
otros sistemas se basan en /bin/sh como shell Bourne.
2. Aunque el shell Bourne y el shell Korn sean similares, éste no es un superconjunto perfecto del
shell Bourne.
Referencia relacionada
Mandatos de administración del sistema para gestores del sistema BSD 4.3
Esta lista contiene mandatos que sirven específicamente para administrar el entorno para AIX.

Tabla de comparación de archivos para 4.3 BSD, SVR4 y AIX


La tabla siguiente compara los nombres de archivos y funciones entre 4.3 BSD, SVR4 y AIX.

Tabla 62. Tabla de comparación de archivos


Archivo 4.3 BSD Archivo SVR4 Archivo para AIX Base de datos Tipo (odm/
dbm)
L-Devices Devices Devices no
L-dialcodes Dialcodes Dialcodes no
[Link] Permissions Permissions no
[Link] Systems Systems no
USERFILE Permissions Permissions no
aliases mail/ aliases aliasesDB/DB dbm
namefiles
fstab vfstab filesystems no
ftpusers ftpusers ftpusers no

Gestión del sistema operativo 345


Tabla 62. Tabla de comparación de archivos (continuación)
Archivo 4.3 BSD Archivo SVR4 Archivo para AIX Base de datos Tipo (odm/
dbm)
gettytab N/D
group group group no
hosts hosts hosts no
[Link] [Link] [Link] no
[Link] [Link] [Link] no
map3270 N/D map3270 no
motd motd motd no
mtab mnttab N/D no
[Link] [Link] [Link] no
[Link] [Link] no
[Link] [Link] (Véase nota) no
[Link] [Link] no
[Link] [Link] [Link] no
[Link] [Link] no
networks networks networks no
passwd passwd passwd no
printcap qconfig qconfig
protocols protocols no
remote remote remote no
[Link] [Link] [Link] no
[Link] [Link] [Link] [Link] neither
services services no
shells shells N/D
stab N/D
[Link] [Link] no
[Link] [Link] no
termcap terminfo terminfo
ttys ttys N/D sí odm
types N/D
utmp utmp utmp
vfont N/D
vgrindefs vgrindefs
wtmp wtmp wtmp

346 AIX Versión 7.2: Gestión del sistema operativo


Nota: Los nombres de archivos [Link], [Link], [Link] y [Link] se pueden
definir por el usuario en el archivo [Link]. Sin embargo, son los nombres utilizados para estos
archivos en la documentación de AIX.

Resolución de nombre y dirección


Las subrutinas gethostbyname y gethostbyaddr de la biblioteca libc proporcionan soporte para el
Servicio de nombres de dominio, los Servicios de información de red (NIS, anteriormente Páginas
amarillas) y la base de datos /etc/hosts.
Si existe el archivo /etc/[Link], el servidor de nombres siempre se comprueba primero. Si el
nombre no se resuelve y NIS está en ejecución, se comprueba NIS. Si NIS no está en ejecución, se
comprueba el archivo /etc/hosts.

Documentación en línea y mandato man para gestores del sistema BSD 4.3
AIX soporta los mandatos man-k, apropos y whatis, pero primero se debe crear la base de datos
utilizada por estos mandatos con el mandato catman-w.
El mandato man busca en primer lugar páginas de texto plano en los archivos /usr/man/cat? . Después,
busca páginas con formato nroff en archivos /usr/man/man? . Las nuevas páginas man se pueden
añadir en texto plano o formato nroff.
Nota:
• Las páginas de texto del mandato man no se proporcionan con el sistema. El mandato catman crea la
base de datos a partir de estas páginas de texto. Estas páginas pueden ser páginas de texto planas
almacenadas en los archivos /usr/man/cat? o páginas formateadas en nroff almacenadas en los
archivos /usr/man/man? .
• Debe estar instalado el programa bajo licencia Formateo de texto a fin de que el mandato nroff esté
disponible para que el mandato man lea páginas man formateadas en nroff.
Para obtener más información acerca de estos mandatos, consulte man, apropos, whatis y catman.

NFS y NIS (anteriormente Páginas Amarillas) para gestores del sistema BSD 4.3
A continuación se describen NFS y NIS para gestores del sistema BSD 4.3.

Los daemons de Network File System (NFS) y Network Information Services (NIS) se inician desde el
archivo /etc/[Link]. Sin embargo, antes de que los daemons NFS y NIS se puedan iniciar, se debe
iniciar el daemon portmap en el archivo /etc/[Link]. De forma predeterminada, el archivo /etc/
inittab no invoca el archivo /etc/[Link]. Si añade una línea al archivo /etc/inittab para invocar
el script /etc/[Link], se debe invocar después del script /etc/[Link].
Si NIS está activo, incluya una entrada de root antes de la entrada +:: (signo más, dos puntos, dos
puntos) en el archivo /etc/passwd y una entrada del sistema antes de la entrada +:: en el
archivo /etc/group. Esto permite al administrador del sistema iniciar la sesión como root y realizar
cambios si el sistema no se puede comunicar con el servidor NIS.
NFS se puede configurar utilizando la vía rápida de SMIT, smit nfs. Los menús del y SMIT hacen
referencia a NIS (anteriormente Páginas Amarillas) como NIS. Muchos de los mandatos de NFS y NIS se
encuentran en los directorios /etc y /usr/etc.
Algunos entornos NFS utilizan un mandato arch para identificar las familias de máquinas y tipos de
máquinas. Por ejemplo, si utiliza IBM RS/6000, especifique el identificador power para la familia (CPU) y
el identificador ibm6000 para el tipo (máquina).

Contraseñas de usuario para gestores del sistema BSD 4.3


Cuando se utiliza el mandato /bin/passwd para AIX como usuario root, se solicita la contraseña de
usuario root actual.
Un ejemplo de utilización del mandato /bin/passwd es el siguiente:

# passwd cslater
Changing password for "cslater"
Enter root's Password or
cslater's Old password:

Gestión del sistema operativo 347


cslater's New password:
Re-enter cslater's
new password:
#

La versión 4.3 BSD no solicita la contraseña de usuario root actual. Un ejemplo de la versión 4.3 BSD es el
siguiente:

# passwd cslater
New password:
Retype new password:
#

Administración de BSD
Existen varios mandatos para BSD que puede utilizar para medir el rendimiento, imprimir y gestionar el
sistema.

Contabilidad para los gestores del sistema BSD 4.3


Los archivos de contabilidad del directorio /usr/lib/acct y las herramientas de informe de la actividad
del sistema del directorio /usr/lib/sa para AIX son idénticos a los disponibles con AT&T System V
Release 4 (SVR4) con la adición de los programas de utilidad de contabilidad de 4.3 BSD.
Muchos mandatos de contabilidad se encuentran en el directorio /usr/lib/acct. Para iniciar la
contabilidad del sistema, utilice el mandato /usr/lib/acct/startup. Si no se inicia la contabilidad,
los mandatos como lastcomm(1) no pueden devolver información.
AIX proporciona estos recursos de contabilidad 4.3 BSD:

Elemento Descripción
last(1) Indica los últimos inicios de sesión de usuarios y terminales
lastcomm(1) Muestra los últimos mandatos ejecutados, por orden invertido
acct(3) Habilita e inhabilita la contabilidad de procesos
ac(8) Contabilidad de inicio de sesión
accton(8) Activa o desactiva la contabilidad del sistema
sa(8) Generalmente mantiene archivos de contabilidad del sistema.

AIX también proporciona estos mandatos de contabilidad y funciones de biblioteca de System V Interface
Definition (SVID) Issue II:

Elemento Descripción
acctcms(1) Produce resúmenes del uso de mandatos a partir de registros de contabilidad
acctcom(1) Visualiza resúmenes de registros de contabilidad de procesos seleccionados
acctcon1(1) Convierte registros de inicio/fin de sesión en registros de sesión
acctcon2(1) Convierte registros de inicio/fin de sesión en registros totales de contabilidad
acctdisk(1) Genera registros de totales de contabilidad a partir de la salida del mandato
diskusg(1)
acctmerg(1) Fusiona archivos de totales de contabilidad en un archivo intermedio
accton(1) Activa la contabilidad
acctprc1(1) Procesa la información de contabilidad del mandato acct(3)
acctprc2(1) Procesa la salida del mandato acctprc1(1) en registros de totales de
contabilidad
acctwtmp(1) Manipula los registros de contabilidad de tiempo de conexión

348 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
chargefee(1) Efectúa cargos en el nombre de inicio de sesión
ckpacct(1) Comprueba el tamaño del archivo /usr/adm/pacct
diskusg(1) Genera información de contabilidad de disco
dodisk(1) Realiza la contabilidad de disco
fwtmp(1) Convierte registros binarios (archivo wtmp) en ASCII formateado.
Nota: El archivo wtmp se encuentra en el directorio /var/adm.

lastlogin(1) Actualiza la última fecha en que cada persona ha iniciado la sesión.


monacct(1) Crea archivos de resumen mensuales
prctmp(1) Imprime el archivo de registros de sesión producido por el mandato
acctcon1(1)
prdaily(1) Formatea un informe de la información de contabilidad del día anterior
prtacct(1) Formatea e imprime cualquier archivo de totales de contabilidad
runacct(1) Ejecuta la contabilidad diaria
shutacct(1) El cierre del sistema lo llama para detener la contabilidad y registrar la razón
startup(1) La inicialización del sistema lo llama para iniciar la contabilidad
turnacct(1) Activa o desactiva la contabilidad de procesos
wtmpfix(1) Corrige las indicaciones de fecha y hora de un archivo utilizando el formato
wtmp

Copia de seguridad para los gestores del sistema BSD 4.3


Los gestores del sistema BSD 4.3 pueden hacer copia de seguridad de datos.
Los mandatos tar y cpio pueden mover datos entre sistemas. El mandato tar para AIX no es
completamente compatible con el mandato tar de 4.3 BSD. El mandato tar para AIX necesita el
distintivo -B (bloqueo de entrada) si lee un conducto. El mandato cpio de AT&T es compatible con esta
versión.
AIX puede leer y grabar en formato de mandato dump y restore. Por ejemplo, el mandato backup para
AIX con la sintaxis:

backup -0uf Device NombreSistemaArchivos

es igual al mandato dump de 4.3 BSD con la sintaxis:

dump 0uf Device NombreSistemaArchivos

De forma similar, el mandato restore para AIX con la sintaxis:

restore -mivf Device

es igual que el mandato restore de 4.3 BSD con la sintaxis:

restore ivf Device

Gestión del sistema operativo 349


AIX también tiene los mandatos rdump y rrestore de 4.3 BSD. La única diferencia entre las dos
versiones es que en AIX, cada argumento debe ir precedido por un carácter - (guión). Por ejemplo, el
mandato siguiente:

rdump -0 -f orca:/dev/rmt0 /dev/hd2

es equivalente al mandato de 4.3 BSD:

rdump 0f orca:/dev/rmt0 /dev/hd2

El mandato backup para AIX con la sintaxis siguiente:

backup -0f /dev/rmt0 /dev/hd2

es equivalente al mandato dump de 4.3 BSD con esta sintaxis:

dump 0f /dev/rmt0 /dev/hd2

Soporte de cintas SCSI distinto de IBM


AIX no soporta directamente unidades de cintas SCSI no IBM. Sin embargo, puede añadir su propia
cabecera e interfaz que utilizan el controlador SCSI de IBM.
Conceptos relacionados
Copia de seguridad del sistema
Una vez que el sistema esté en marcha, la siguiente consideración que debe tener en cuenta debe ser
hacer copia de seguridad de los sistemas de archivos, directorios y archivos. Si hace copia de seguridad
de los sistemas de archivos, puede restaurar los archivos o los sistemas de archivos en caso de que el
disco duro se cuelgue. Hay métodos diferentes para hacer copia de seguridad de la información.
Información relacionada
Adición de un dispositivo no soportado al sistema

Arranque para gestores del sistema BSD 4.3


A continuación se explica el arranque del sistema AIX para los gestores del sistema BSD 4.3.
En los sistemas 4.3 BSD, el programa init es el último paso del procedimiento de arranque. La función
principal del programa init es crear procesos para cada puerto de terminal disponible. Los puertos de
terminal disponibles se encuentran leyendo el archivo /etc/ttys.
En System V, el programa init se inicia en la inicialización del sistema. El proceso init inicia procesos
de acuerdo a las entradas del archivo /etc/inittab.
AIX sigue el procedimiento de inicialización de System V. Puede editar el archivo /etc/inittab
editando directamente el archivo, utilizando el mandato telinit o utilizando los mandatos siguientes:

Elemento Descripción
chitab(1) Cambia los registros del archivo /etc/inittab
lsitab(1) Lista los registros del archivo /etc/inittab
mkitab(1) Crea registros en el archivo /etc/inittab
rmitab(1) Elimina registros del archivo /etc/inittab

Los cambios realizados en el archivo /etc/inittab surten efecto la próxima vez que se rearranca el
sistema, o cuando se ejecuta el mandato telinit q.

Búsqueda y examen de archivos para gestores del sistema BSD 4.3


La siguiente lista relaciona los mandatos del archivo BSD que AIX soporta.
AIX soporta los siguientes mandatos de archivo 4.3 BSD:
• which

350 AIX Versión 7.2: Gestión del sistema operativo


• whereis
• what
• file.
AIX no soporta la sintaxis fast find del mandato find de 4.3 BSD. En este momento, no existe función de
sustitución. Se puede utilizar el siguiente script de shell ffind para simular la funcionalidad:

#!/bin/bsh
PATH=/bin
for dir in /bin /etc /lib /usr
do
find $dir -print | egrep $1
done

La sintaxis para el script ffind es:

ffind NombreArchivo

Espacio de paginación para gestores del sistema BSD 4.3


Los siguientes mandatos ayudan a gestionar el espacio de paginación (también denominado espacio de
intercambio).

Elemento Descripción
chps(1) Cambia los atributos de un espacio de paginación
lsps(1) Lista los atributos de un espacio de paginación
mkps(1) Añade un espacio de paginación adicional al sistema
rmps(1) Elimina un espacio de paginación del sistema
swapoff(1) Desactiva uno o varios espacios de paginación
swapon(1) Especifica dispositivos adicionales para la paginación y el intercambio

Si se necesita un espacio de paginación grande, coloque un volumen lógico de paginación para cada disco
duro. Esto permite la planificación de la paginación a través de múltiples unidades de disco.

Cambio del arranque predeterminado para permitir la configuración ASCII de 4.3 BSD
Puede administrar las interfaces de red para AIX mediante SMIT y archivos ODM, o mediante archivos de
configuración ASCII de 4.3 BSD.
Para administrar las interfaces de red mediante archivos de configuración ASCII de 4.3 BSD, quite la
marca de comentario de los mandatos del archivo /etc/[Link] que se encuentran bajo la cabecera:

# Part II - Traditional
Configuration

Después si desea la configuración de archivos planos y el soporte de SRC, edite el archivo /etc/[Link]
y quite la marca de comentario de los mandatos hostname, ifconfig y route con los parámetros
adecuados.
Si desea la configuración de archivos planos sin el soporte de SRC, utilice la vía rápida smit
setbootup_option para cambiar el sistema a la configuración rc de estilo BSD. Esta opción configura el
sistema para que utilice el archivo /etc/[Link] en el arranque. También tiene que editar el
archivo /etc/[Link] y quitar la marca de comentario de los mandatos hostname, ifconfig y
route con los parámetros adecuados.

Opciones adicionales para los mandatos ifconfig y netstat


La siguiente lista indica las opciones adicionales para los mandatos ifconfig y netstat.
El mandato ifconfig para AIX tiene las opciones adicionales siguientes:

Gestión del sistema operativo 351


mtu
La variable mtu especifica la unidad de transmisión máxima (MTU) utilizada en la red local (y las
subredes locales) y la MTU utilizada para redes remotas. Para maximizar la compatibilidad con
Ethernet y otras redes, establezca el valor predeterminado de mtu de Red en Anillo y Ethernet en
1500.
allcast
El distintivo allcast establece la estrategia de difusión de Red en Anillo. El establecimiento del
distintivo allcast optimiza la conectividad a través de puentes de Red en Anillo. Si se borra el
distintivo allcast (especificando -allcast) se minimiza el exceso de tráfico en el anillo.
El mandato netstat para AIX tiene el distintivo -v. El mandato netstat -v imprime las estadísticas del
controlador como, por ejemplo, el número de bytes de transmisión, el número de errores de transmisión,
el número de bytes de recepción y el número de errores de recepción. Para obtener más información
acerca de los mandatos ifconfig y netstat, consulte ifconfig y netstat.

Mandatos adicionales de gestión de red


Los siguientes mandatos adicionales están soportados en AIX.

Elemento Descripción
securetcpip El script de shell securetcpip habilita la modalidad de acceso controlado,
que proporciona una seguridad de red mejorada. No permite la ejecución de
varios programas TCP/IP no seguros como, por ejemplo, tftp, rcp, rlogin
y rsh. También restringe el uso del archivo .netrc.
gated El mandato gated proporciona el soporte de MIB para SNMP.

352 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
no El mandato no establece opciones de red que incluyen:
dogticks
Establece la granularidad del temporizador para rutinas ifwatchdog
subnetsarelocal
Determina si la dirección del paquete se encuentra en la red local
ipsendredirects
Especifica si el kernel debe enviar señales de redirección
ipforwarding
Especifica si el kernel debe reenviar paquetes
tcp_ttl
Especifica el tiempo-de-vida para paquetes de Transmission Control
Protocol (TCP)
udp_ttl
Especifica el tiempo-de-vida para los paquetes de User Datagram
Protocol (UDP)
maxttl
Especifica el tiempo-de-vida para paquetes de Routing Information
Protocol (RIP)
ipfragttl
Especifica el tiempo-de-vida para fragmentos de Internet Protocol (IP)
lowclust
Especifica el nivel mínimo para la agrupación mbuf de clústeres
lowmbuf
Especifica un nivel mínimo para la agrupación mbuf
thewall
Especifica la cantidad máxima de memoria que se asigna a mbuf y a la
agrupación mbuf de clústeres
arpt_killc
Especifica el tiempo en minutos que debe transcurrir para suprimir una
entrada de Protocolo de resolución de direcciones (ARP) inactiva

iptrace El mandato iptrace proporciona el rastreo de paquetes a nivel de interfaz


para protocolos de Internet.
ipreport El mandato ipreport formatea el rastreo en un formato que las personas
pueden leer. Un ejemplo de la utilización de este mandato es el siguiente:

iptrace -i en0 /tmp/[Link]


# kill iptrace daemon
kill `ps ax | grep iptrace | awk '{ print $1 }'`
ipreport /tmp/[Link] | more

Importación de un archivo de contraseñas de BSD 4.3


Puede importar un archivo de contraseñas de BSD 4.3 a AIX.
Para importar un archivo de contraseñas de BSD 4.3, siga los pasos siguientes:
1. Copie el archivo de contraseñas de BSD 4.3 en el archivo /etc/passwd y especifique:

pwdck -y ALL

2. Actualice el archivo /etc/security/limits con una stanza nula para cualquier usuario nuevo.

Gestión del sistema operativo 353


El mandato usrck realiza esta acción, pero el uso del mandato usrck puede provocar problemas a
menos que se importe el archivo /etc/group con el archivo /etc/passwd. Para obtener más
información acerca del mandato usrck, consulte usrck.

Atención: Si se modifica el archivo /etc/security/limits, la pila no debe exceder de


65.536 bytes. Si es mayor, la ejecución del mandato usrck puede provocar problemas.
Cambie el tamaño de pila por 65.536 y ejecute el mandato usrck de nuevo.
3. Ejecute los mandatos grpck y usrck para verificar los atributos de grupo y usuario.

Edición del archivo de contraseñas para gestores del sistema BSD 4.3
La siguiente explicación indica cómo cambiar las entradas del archivo de contraseñas y cómo administrar
las contraseñas en AIX de manera BSD 4.3.
En AIX, se proporcionan los mandatos lsuser, mkuser, chuser y rmuser para gestionar las
contraseñas. Todos estos mandatos se pueden utilizar mediante la ejecución de SMIT. Sin embargo,
todos estos mandatos sólo tratan un usuario cada vez.
Para obtener más información acerca de estos mandatos, consulte lsuser, mkuser, chuser y rmuser.
Nota: La utilización de un editor para cambiar varias entradas de nombres de usuario a la vez necesita la
edición de varios archivos simultáneamente, porque estas contraseñas están almacenadas en el
archivo /etc/security/passwd, la información de autorización se almacena en el archivo /etc/
security/user y el resto de los datos de usuario se almacena en el archivo /etc/passwd.
AIX no soporta el mandato vipw pero soporta el mandato mkpasswd. Sin embargo, todavía puede
administrar contraseñas en AIX de manera BSD 4.3. Utilice el procedimiento siguiente:
1. Coloque un archivo de contraseñas BSD 4.3 en el archivo /etc/shadow.
2. Cambie los permisos para el archivo especificando:

chmod 000 /etc/shadow

3. Coloque el siguiente script de shell vipw en el directorio /etc:

-----------------------------------------------------
----
#!/bin/bsh
#
# vipw. Uses pwdck for now. May use usrck someday
#
PATH=/bin:/usr/bin:/etc:/usr/ucb # Add to this if your editor is
# some place else
if [ -f /etc/ptmp ] ; then
echo "/etc/ptmp exists. Is someone else using vipw?"
exit 1
fi
if [ ! -f /`which "$EDITOR" | awk '{ print $1 }'` ] ; then
EDITOR=vi
fi
cp /etc/shadow /etc/ptmp
if (cmp /etc/shadow /etc/ptmp) ; then
$EDITOR /etc/ptmp
else
echo cannot copy shadow to ptmp
exit 1
fi
if (egrep "^root:" /etc/ptmp >/dev/null) ; then
cp /etc/ptmp /etc/shadow ; cp /etc/ptmp /etc/passwd
chmod 000 /etc/passwd /etc/shadow
pwdck -y ALL 2>1 >/dev/null # return code 114 may change
rc=$?
if [ $rc -eq 114 ]; then
chmod 644 /etc/passwd
rm -f /etc/[Link] /etc/[Link]
mkpasswd /etc/passwd
# update /etc/security/limits, or ftp
# will fail
else
pwdck -y ALL
fi
else

354 AIX Versión 7.2: Gestión del sistema operativo


echo bad entry for root in ptmp
fi
rm /etc/ptmp
-----------------------------------------------------------

4. Si utiliza el script de shell vipw o el mandato mkpasswd, tenga en cuenta que SMIT, y los mandatos
mkuser, chuser y rmuser no utilizan el mandato mkpasswd. Debe ejecutar:

mkpasswd /etc/passwd

para actualizar los archivos /etc/[Link] y /etc/[Link].

Atención: La inicialización de la variable IFS y las sentencias trap protegen contra algunos de
los métodos comunes utilizados para explotar los vacíos de seguridad inherentes en la
característica setuid. Sin embargo, los scripts de shell vipw y passwd están pensados para
entornos relativamente abiertos donde la compatibilidad es un punto importante a considerar.
Si desea un entorno más seguro, utilice solamente los mandatos estándar para AIX.
5. Coloque el siguiente script de shell passwd en el directorio /usr/ucb:

-----------------------------------------------------
#!/bin/ksh
#
# matches changes to /etc/security/passwd file with changes to
#/etc/shadow
#
IFS=" "
PATH=/bin
trap "exit 2" 1 2 3 4 5 6 7 8 10 12 13 14 15 16 17 18 21 22 \
23 24 25 27 28 29 30 31 32 33 34 35 36 60 61 62
if [ -n "$1" ]; then
USERNAME=$1
else
USERNAME=$LOGNAME
fi
if [ -f /etc/ptmp ]; then
echo password file busy
exit 1
fi
trap "rm /etc/ptmp; exit 3" 1 2 3 4 5 6 7 8 10 12 13 \
14 15 16 17 18 21 22 23 24 25 27 28 29 30 31 \
32 33 34 35 36 60 61 62
if (cp /etc/security/passwd /etc/ptmp) ; then
chmod 000 /etc/ptmp else
rm -f /etc/ptmp exit 1
fi
if ( /bin/passwd $USERNAME ) ; then
PW=` awk ' BEGIN { RS = "" }
$1 == user { print $4 } ' user="$USERNAME:" \
/etc/security/passwd `
else
rm -f /etc/ptmp
exit 1
fi
rm -f /etc/ptmp
awk -F: '$1 == user { print $1":"pw":"$3 ":"$4":"$5":"$6":"$7 }
$1 != user { print $0 }' user="$USERNAME" pw="$PW" \
/etc/shadow > /etc/ptmp
chmod 000 /etc/ptmp
mv -f /etc/ptmp /etc/shadow
---------------------------------------------------------

6. Cambie los permisos para el script passwd especificando:

chmod 4711 /usr/ucb/passwd

7. Asegúrese de que cada variable de entorno PATH del usuario especifica el directorio /usr/ucb en el
que se debe buscar antes del directorio /bin.

Medición y ajuste del rendimiento para gestores del sistema BSD 4.3
A continuación se explican los atributos de dispositivo AIX y la medición y ajuste del rendimiento.

Gestión del sistema operativo 355


Todos los dispositivos de AIX tienen atributos asociados. Para ver los atributos de dispositivo,
especifique:

lsattr -E -l nombredispositivo

Cualquier atributo con el valor True se puede modificar con el mandato:

chdev -l nombredispositivo -a attr=value

Atención: El cambio incorrecto de parámetros de dispositivo puede dañar el sistema.

De forma predeterminada, el número máximo de procesos por usuario es 40. El valor predeterminado
puede ser muy bajo para los usuarios que tienen muchas ventanas abiertas simultáneamente. El mandato
siguiente se puede utilizar para cambiar el valor en todo el sistema:

hdev -l sys0 -a maxuproc=100

Este ejemplo cambia el número máximo a 100. El nuevo valor se establece al reiniciar el sistema.
Para ver el valor actual de este y de otros atributos del sistema, escriba:

lsattr -E -l sys0

El atributo maxmbuf no está soportado actualmente por los servicios mbuf.


AIX soporta los mandatos vmstat y iostat, pero no el mandato systat ni promedios de carga. Para
obtener más información acerca de estos mandatos, consulte vmstat y iostat.

Impresora para gestores del sistema BSD 4.3


El sistema operativo AIX soporta dos subsistemas de impresión: 4.3 BSD y System V.
El estilo System V de subsistema de impresión utiliza los mandatos, las colas y los archivos de System V
Release 4, y se administra del mismo modo. Los siguientes párrafos describen lo que necesita para
gestionar el subsistema de impresión de estilo 4.3 BSD. El subsistema que se activa se controla mediante
SMIT. Sólo puede estar activo un sistema a la vez.
La impresión se gestiona por programas y configuraciones del directorio /usr/lpd. El diseño, la
configuración, el mecanismo de puesta en cola y los procesos de daemon de 4.3 BSD y los subsistemas
de impresora para AIX son diferentes. Sin embargo, ambos utilizan el protocolo lpd para la impresión
remota. Ambos sistemas utilizan /etc/[Link], si existe o, de lo contrario, /etc/[Link]. El
subsistema de impresora para AIX ofrece una pasarela para subsistemas de impresora 4.3 BSD, por lo
que los sistemas que utilizan AIX pueden someter trabajos de impresión a sistemas 4.3 BSD y aceptar
trabajos de impresión sometidos por sistemas 4.3 BSD.
El archivo /etc/printcap de 4.3 BSD no existe en AIX. Este archivo es una combinación de la
configuración de spooler y la base de datos de posibilidades de impresora. Los usuarios deben
comprender el formato y las palabras clave del archivo printcap para configurar correctamente una
impresora.
El archivo /etc/qconfig de AIX sólo contiene la información de configuración de spooler. Las
posibilidades de la impresora se definen en la base de datos ODM predefinida o personalizada. Puede
utilizar el mandato mkvirprt (crear impresora virtual) para definir las posibilidades de una impresora
determinada en el sistema.
Para que la impresora lp0 esté disponible para imprimir en el sistema principal remoto viking, coloque lo
siguiente en un archivo /etc/printcap del sistema BSD:

lp0|Print on remote printer attached to


viking:Z
:lp=:rm=viking:rp=lp:st=/usr/spool/lp0d

356 AIX Versión 7.2: Gestión del sistema operativo


Para hacer lo mismo en AIX, coloque lo siguiente en el archivo /etc/qconfig:

lp0:
device = dlp0
host = viking
rq = lp
dlp0:
backend = /usr/lib/lpd/rembak

AIX soporta los siguientes mandatos de impresora y funciones de biblioteca:

Elemento Descripción
cancel(1) Cancela las peticiones de una impresora de líneas
chquedev(1) Cambia los nombres de dispositivos de cola de impresora o trazador
chvirprt(1) Cambia los valores de atributos de una impresora virtual
disable(1) Inhabilita una cola de impresora
enable(1) Habilita una cola de impresora
hplj(1) Procesa la salida de troff para HP LaserJetII con el cartucho K
ibm3812(1) Procesa la salida de troff para IBM 3812 Mod 2 Pageprinter
ibm3816(1) Procesa la salida de troff para IBM 3816 Pageprinter
ibm5587G(1) Procesa la salida de troff para IBM 5587G con un cartucho 32x32/24x24
lp(1) Envía peticiones a una impresora de líneas
lpr(1) Pone en cola trabajos de impresión
lprm(1) Elimina trabajos de la cola de spooling de la impresora de líneas
lpstat(1) Visualiza información del estado de la impresora de líneas
lptest(1) Genera el patrón de onda de la impresora de líneas
lsallqdev(1) Lista todos los nombres de dispositivos de cola de impresora configurados en
una cola
lsvirprt(1) Visualiza los valores de atributo para una impresora virtual
mkque(1) Añade una cola de impresora al sistema
mkquedev(1) Añade un dispositivo de cola de impresora al sistema
mkvirprt(1) Crea una impresora virtual
pac(1) Prepara registros de contabilidad de impresora/trazador
piobe(1) Gestor de trabajos de impresión para el componente de fondo de impresora
pioburst(1) Genera páginas de separación (páginas de cabecera y final) para la salida de
impresora
piocmdout(3) Subrutina que genera una serie de atributos para un formateador de
impresora
piodigest(1) Resume los valores de atributos para una definición de impresora virtual y los
almacena
pioexit(3) Subrutina que sale de un formateador de impresora
pioformat(1) Dirige un formateador de impresoras
piofquote(1) Convierte determinados caracteres de control destinados para impresoras
PostScript

Gestión del sistema operativo 357


Elemento Descripción
piogetstr(3) Subrutina que recupera una serie de atributos para un formateador de
impresoras
piogetvals(3) Subrutina que inicializa las variables de base de datos de atributos de
impresora para el formateador de impresoras
piomsgout(3) Subrutina que envía un mensaje desde un formateador de impresoras
pioout(1) Programa de interfaz de controlador de dispositivo del componente de fondo
de impresora
piopredef(1) Crea una definición de secuencia de datos de impresora predefinida
proff(1) Formatea texto para impresoras con secuencias de datos de impresora
personales
qadm(1) Realiza la administración del sistema para el sistema de spooling de
impresora
qconfig(4) Configura un sistema de puesta en cola de impresora
qstatus(1) Proporciona el estado de impresora para el sistema de spooling de impresión
restore(3) Restaura la impresora en su estado predeterminado
rmque(1) Elimina una cola de impresora del sistema
rmquedev(1) Elimina un dispositivo de cola de impresora o trazador del sistema
rmvirprt(1) Elimina una impresora virtual
splp(1) Cambia o visualiza valores de controlador de impresora
xpr(1) Formatea un archivo de vuelco de ventana para la salida a una impresora

Información relacionada
Visión general de la impresión para la gestión del sistema

Mandatos de administración del sistema para gestores del sistema BSD 4.3
Esta lista contiene mandatos que sirven específicamente para administrar el entorno para AIX.

Elemento Descripción
bosboot(1) Inicializa un dispositivo de arranque.
bootlist(1) Altera la lista de dispositivos de arranque (o el orden de estos dispositivos en
la lista) disponible para el sistema.
cfgmgr(1) Configura dispositivos ejecutando los programas del directorio /etc/
methods.
chcons(1) Redirige la consola del sistema a un dispositivo o archivo, efectivo en el
siguiente arranque.
chdev(1) Cambia las características de un dispositivo.
chdisp(1) Cambia la pantalla utilizada por el subsistema de terminal de funciones
reducidas (LFT).
checkcw(1) Prepara texto de ancho constante para el mandato troff.
checkeq(1) Comprueba documentos formateados con macros de memorándum.
checkmm(1) Comprueba documentos formateados con macros de memorándum.
checknr(1) Comprueba los archivos nroff y troff.
chfont(1) Cambia el font predeterminado seleccionado al arrancar.

358 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
chfs(1) Cambia los atributos de un sistema de archivos.
chgroup(1) Cambia los atributos para grupos.
chgrpmem(1) Cambia los administradores o los miembros de un grupo.
chhwkbd(1) Cambia los atributos de teclado del terminal de funciones reducidas (LFT)
almacenados en la base de datos del Gestor de Datos Objeto (ODM).
chitab(1) Cambia los registros del archivo /etc/inittab.
chkbd(1) Cambia la correlación predeterminada del teclado para el terminal de
funciones reducidas (LFT) en el arranque del sistema.
chkey(1) Cambia la clave de cifrado.
chlang Establece la variable de entorno LANG en el archivo /etc/environment
para el siguiente inicio de sesión.
chlicense(1) Hay dos tipos de licencia de usuario, fija y flotante. La licencia fija siempre
está habilitada, y el número de licencias se puede cambiar mediante el
distintivo -u. La licencia flotante se puede habilitar o inhabilitar (activar o
desactivar) utilizando el distintivo -f
chlv(1) Cambia las características de un volumen lógico.
chnamsv(1) Cambia la configuración del servicio de nombres basado en TCP/IP de un
sistema principal.
chprtsv(1) Cambia una configuración de servicio de impresión de un cliente o máquina
de servidor
chps(1) Cambia los atributos de un espacio de paginación.
chpv(1) Cambia las características de un volumen físico de un grupo de volúmenes.
chque(1) Cambia el nombre de cola.
chquedev(1) Cambia los nombres de dispositivo de cola de impresora o trazador.
chssys(1) Cambia la definición de un subsistema en la clase de objeto de subsistema.
chtcb(1) Cambia o consulta el atributo de base de cálculo fiable de un archivo.
chtz Cambia la información de zona horaria del sistema.
chuser(1) Cambia los atributos para el usuario especificado.
chvfs(1) Cambia las entradas del archivo /etc/vfs.
chvg(1) Establece las características de un grupo de volúmenes.
chvirprt(1) Cambia los valores de atributos de una impresora virtual.
crfs(1) Añade un sistema de archivos.
crvfs(1) Crea entradas en el archivo /etc/vfs.
exportvg(1) Exporta la definición de un grupo de volúmenes desde un conjunto de
volúmenes físicos.
extendvg(1) Añade volúmenes físicos a un grupo de volúmenes.
grpck(1) Verifica la corrección de una definición de grupo.
importvg(1) Importa una nueva definición de grupo de volúmenes de un conjunto de
volúmenes físicos.
lsallq(1) Lista los nombres de todas las colas configuradas.

Gestión del sistema operativo 359


Elemento Descripción
lsallqdev(1) Lista todos los nombres de dispositivos de cola de impresora y trazador
configurados en una cola especificada.
lsdisp(1) Lista las pantallas disponibles actualmente en el sistema.
lsfont(1) Lista los fonts disponibles para que la pantalla los utilice.
lsfs(1) Visualiza las características de los sistemas de archivos.
lsgroup(1) Visualiza los atributos de grupos.
lsitab(1) Lista los registros del archivo /etc/inittab.
lskbd(1) Lista las correlaciones de teclado disponibles actualmente para el subsistema
de terminal de funciones reducidas (LFT).
lslicense(1) Visualiza el número de licencias fijas y el estado de licencias flotantes.
lslpp(1) Lista productos de programa opcionales.
lsnamsv(1) Muestra información del servicio de nombres almacenada en la base de
datos.
lsprtsv(1) Muestra información del servicio de impresión almacenada en la base de
datos.
lsps Lista el espacio de paginación y los atributos.
lsque(1) Visualiza el nombre de stanza de cola.
lsquedev(1) Visualiza el nombre de stanza de dispositivo.
lssrc(1) Obtiene el estado de un subsistema, un grupo de subsistemas o un
subservidor.
lsuser(1) Visualiza los atributos de cuentas de usuario.
lsvfs(1) Lista las entradas del archivo /etc/vfs.
mkcatdefs(1) Preprocesa un archivo de origen de mensajes.
runcat(1) Conduce los datos de salida del mandato mkcatdefs al mandato gencat.
mkdev(1) Añade un dispositivo al sistema.
mkfont(1) Añade el código de font asociado a una pantalla al sistema.
mkfontdir(1) Crea un archivo [Link] desde un directorio de archivos de font.
mkgroup(1) Crea un nuevo grupo.
mkitab(1) Crea registros en el archivo /etc/inittab.
mklv(1) Crea un volumen lógico.
mklvcopy(1) Añade copias a un volumen lógico.
mknamsv(1) Configura el servicio de nombres basado en TCP/IP en un sistema principal
para un cliente.
mknotify(1) Añade una definición de método de notificación a la clase de objeto de
notificación.
mkprtsv(1) Configura el servicio de impresión basado en TCP/IP en un sistema principal.
mkps(1) Añade un espacio de paginación adicional al sistema.
mkque(1) Añade una cola de impresora al sistema.
mkquedev(1) Añade un dispositivo de cola de impresora al sistema.
mkserver(1) Añade una definición de subservidor a la clase de objeto de subservidor.

360 AIX Versión 7.2: Gestión del sistema operativo


Elemento Descripción
mkssys(1) Añade una definición de subsistema a la clase de objeto de subsistema.
mksysb Hace copia de seguridad de los sistemas de archivos montados en el grupo de
volúmenes rootvg para una reinstalación subsiguiente.
mkszfile Registra el tamaño de los sistemas de archivos montados en el grupo de
volúmenes rootvg para la reinstalación.
mktcpip(1) Establece los valores necesarios para iniciar TCP/IP en un sistema principal.
mkuser(1) Crea una nueva cuenta de usuario.
[Link](1) Personaliza una nueva cuenta de usuario.
mkvg(1) Crea un grupo de volúmenes.
mkvirprt(1) Crea una impresora virtual.
odmadd(1) Añade objetos a clases de objetos creadas.
odmchange(1) Cambia el contenido de un objeto seleccionado en la clase de objeto
especificada.
odmcreate(1) Produce los archivos .c (origen) y .h (inclusión) necesarios para el desarrollo
de aplicaciones ODM y crea clases de objetos vacías.
odmdelete(1) Suprime los objetos seleccionados de una clase de objeto especificada.
odmdrop(1) Elimina una clase de objeto.
odmget(1) Recupera objetos de las clases de objetos especificadas y los coloca en un
archivo de entrada odmadd.
odmshow(1) Visualiza una definición de clase de objeto en la pantalla.
pwdck(1) Verifica la corrección de la información de autentificación local.
redefinevg Vuelve a definir el conjunto de volúmenes físicos del grupo de volúmenes
determinado en la base de datos de configuración de dispositivos.
reducevg(1) Elimina volúmenes físicos de un grupo de volúmenes. Cuando se eliminan
todos los volúmenes físicos del grupo de volúmenes, éste se suprime.
reorgvg(1) Reorganiza la asignación de particiones físicas para un grupo de volúmenes.
restbase(1) Restaura la información personalizada desde la imagen de arranque.
rmdel(1) Elimina un delta de un archivo del Sistema de Control de Código Fuente
(SCCS).
rmdev(1) Elimina un dispositivo del sistema.
rmf(1) Elimina carpetas y los mensajes que contienen.
rmfs(1) Elimina un sistema de archivos.
rmgroup(1) Elimina un grupo.
rmitab(1) Elimina registros del archivo /etc/inittab.
rmlv(1) Elimina volúmenes lógicos de un grupo de volúmenes.
rmlvcopy(1) Elimina copias de un volumen lógico.
rmm(1) Elimina mensajes.
rmnamsv(1) Elimina la configuración del servicio de nombres basado en TCP/IP de un
sistema principal.
rmnotify(1) Elimina una definición de método de notificación de la clase de objeto de
notificación.

Gestión del sistema operativo 361


Elemento Descripción
rmprtsv(1) Elimina la configuración de un servicio de impresión de un cliente o máquina
de servidor.
rmps(1) Elimina un espacio de paginación del sistema.
rmque(1) Elimina una cola de impresora del sistema.
rmquedev(1) Elimina un dispositivo de cola de impresora o trazador del sistema.
rmserver(1) Elimina una definición de subservidor de la clase de objeto de subservidor.
rmssys(1) Elimina una definición de subsistema de la clase de objeto de subsistema.
rmuser(1) Elimina una cuenta de usuario.
rmvfs(1) Elimina entradas del archivo /etc/vfs.
rmvirprt(1) Elimina una impresora virtual.
savebase(1) Guarda datos base de dispositivo personalizado en el ODM del dispositivo de
arranque.
swapoff(1) Desactiva uno o varios espacios de paginación.
swapon(1) Especifica dispositivos adicionales para la paginación y el intercambio.
syncvg(1) Sincroniza las copias de volúmenes lógicos que no están actualizadas.
usrck(1) Verifica la corrección de una definición de usuario.
varyoffvg(1) Desactiva un grupo de volúmenes.
varyonvg(1) Activa un grupo de volúmenes.

Conceptos relacionados
Principales diferencias entre 4.3 BSD y AIX
A continuación se presenta un resumen de las principales diferencias entre los sistemas AIX y 4.3 BSD.

Cron para gestores del sistema BSD 4.3


El daemon cron para este sistema operativo es similar al daemon cron de System V Release 2.
Una entrada en el archivo /etc/inittab inicia el daemon cron.

Dispositivos para gestores del sistema BSD 4.3


A continuación se explican los dispositivos para los gestores del sistema BSD 4.3.

Una aplicación sólo puede acceder a un dispositivo de un sistema 4.3 BSD cuando:
• El dispositivo está instalado físicamente y en funcionamiento.
• El controlador para el dispositivo está en el kernel.
• Los archivos especiales de dispositivo para el dispositivo existen en el directorio /dev.
Una aplicación sólo puede acceder a AIX cuando:
• El dispositivo está instalado físicamente y en funcionamiento.
• El controlador para el dispositivo está en el kernel o en una extensión de kernel cargada.
• Los archivos especiales de dispositivo para el dispositivo existen en el directorio /dev.
• La base de datos de objetos del directorio /etc/objrepos contiene entradas para el dispositivo que
coinciden con la configuración física.
Los programas específicos del dispositivo denominados métodos, que se encuentran en el
directorio /etc/methods, mantienen la base de datos de objetos. El Gestor de configuración (al que se
accede a través del mandato cfgmgr) invoca a los métodos y otros mandatos.

362 AIX Versión 7.2: Gestión del sistema operativo


Si un programa de aplicación ya no puede acceder a un dispositivo, puede significar que el hardware es
anómalo o puede significar que la base de datos de configuración del directorio /etc/objrepos está
dañada.
El mandato cfgmgr procesa la base de datos de configuración del directorio /etc/objrepos y se procesa
por el mandato cfgmgr al arrancar (Gestor de configuración).
El pseudocódigo siguiente muestra la lógica del Gestor de configuración:

/* Main */
While there are rules in the Config_Rules database
{
Get the next rule and execute it
Capture stdout from the last execution
Parse_Output(stdout)
}
/* Parse Output Routine */
/* stdout will contain a list of devices found */
Parse_OutPut(stdout)
{
While there are devices left in the list
{
Lookup the device in the database
if (!defined)
Get define method from database and execute
if (! configured)
{
Get config method from database and execute
Parse_Output(stdout)
}
}
}

UUCP para gestores del sistema BSD 4.3


La tabla siguiente lista los archivos y los mandatos de UUCP.
Elemento Descripción
Dialers(4) Lista los módems utilizados para enlaces de comunicaciones remotas de
BNU
Maxuuxqts(4) Limita el número de instancias de los daemons uuxqt de BNU que se
pueden ejecutar
Permissions(4) Especifica los permisos de mandatos de BNU para sistemas remotos
Poll(4) Especifica cuándo el programa BNU debe sondear sistemas remotos
Systems(4) Lista sistemas remotos con los que el sistema local se puede comunicar
rmail(1) Maneja el correo remoto recibido a través de BNU
uucheck(1) Comprueba los archivos y directorios necesarios para BNU
uuclean(1) Elimina archivos del directorio de spool de BNU
uucleanup(1) Suprime los archivos seleccionados del directorio de spooling de BNU
uucpadm(1) Especifica la información de configuración básica de BNU
[Link](1) Proporciona información periódica sobre el estado de transferencias de
archivos de BNU
[Link](1) Limpia los directorios de spooling y archivos de registro de BNU
[Link](1) Inicia las llamadas al transporte de archivos para sistemas remotos
utilizando el programa BNU
[Link](1) Sondea los sistemas listados en el archivo de sondeo de BNU
uulog(1) Proporciona información acerca de las actividades de transferencia de
archivos de BNU en un sistema

Gestión del sistema operativo 363


Elemento Descripción
uupoll(1) Fuerza un sondeo de un sistema BNU remoto
uuq(1) Visualiza la cola de trabajos de BNU y suprime los trabajos especificados
de la cola
uusnap(1) Visualiza el estado de los contactos de BNU con sistemas remotos
uustat(1) Informa del estado y proporciona un control limitado sobre las
operaciones de BNU

AIX también proporciona los mandatos uuencode y uudecode de 4.3 BSD. El mandato uugetty de HDB
no está soportado. Para obtener información acerca de estos mandatos, consulte uuencode y
uudecode.
Información relacionada
Estructura de archivos y directorios de BNU

Sistemas de archivos para gestores del sistema BSD 4.3


Se utilizan mandatos similares para montar y desmontar sistemas de archivos.
AIX utiliza el archivo /etc/filesystem para listar información de dispositivos del sistema de archivos y
tiene mandatos similares para montar y desmontar sistemas de archivos.

Archivos /etc/filesystems y /etc/fstab


Los sistemas 4.3 BSD almacenan listas de dispositivos de bloqueo y puntos de montaje en el
archivo /etc/fstab. Los sistemas SVR4 almacenan dispositivos de bloqueo e información de punto de
montaje en el archivo /etc/vfstab. AIX almacena dispositivos de bloqueo e información de puntos de
montaje en el archivo /etc/filesystems.
Los mandatos crfs, chfs y rmfs actualizan el archivo /etc/filesystems.
Los administradores del sistema 4.3 BSD pueden estar interesados en la variable check del
archivo /etc/filesystems. La variable check se puede establecer en el valor True, False o en un
número. Por ejemplo, puede especificar check=2 en el archivo /etc/filesystems. El número
especifica el pase del mandatos fsck que comprobará este sistema de archivos. El parámetro check
corresponde al quinto campo del registro de archivos /etc/fstab.
No existe parámetro de frecuencia de vuelcos en el archivo /etc/filesystems.

Soporte de sistemas de archivos en AIX


AIX soporta varios sistemas de archivos.
AIX soporta cuotas de disco.
AIX no permite montar disquetes como sistemas de archivos.
La sintaxis de los mandatos mount y umount para AIX difiere de las versiones de 4.3 BSD y de SVR4 de
estos mandatos. Se muestran los mandatos para montar y desmontar todos los sistemas de archivos a la
vez para los tres sistemas de la tabla siguiente:

Mandatos mount y unmount


Función Sintaxis para este sistema operativo Sintaxis de 4.3 Sintaxis de
BSD SVR4
montaje de todos los sistemas mount all mount -a mountall
de archivos
desmontaje de todos los umount all umount -a umountall
sistemas de archivos

Consulte el apartado ../devicemanagement/file_sys.html#file_sys para obtener más información.

364 AIX Versión 7.2: Gestión del sistema operativo


Terminales para gestores del sistema BSD 4.3
A continuación se explican los terminales para los gestores del sistema BSD 4.3.
Tradicionalmente, los gestores del sistema 4.3 BSD habilitan o inhabilitan los puertos de terminal
modificando el archivo /etc/ttys y enviando una señal HUP al programa init.
AIX almacena información de puerto de terminal en el ODM e inicia los terminales cuando el programa
init lee el archivo /etc/inittab. En AIX, utilice la interfaz SMIT para configurar los puertos de
terminal.
No hay una correlación fija entre el puerto y el nombre de archivo especial de dispositivo en el directorio /
dev. En consecuencia, es difícil para los gestores del sistema nuevos en AIX conocer el puerto que se
debe configurar. Cuando se utiliza SMIT, el primer puerto serie de la placa (etiquetado físicamente s1) se
denomina ubicación 00-00-S1, el adaptador sa0 y el puerto s1 en los menús de SMIT. El segundo puerto
serie de la placa (etiquetado físicamente s2) se denomina ubicación 00-00-S2, adaptador sa1 y puerto
s2.
Utilice los mandatos penable y pdisable para habilitar o inhabilitar un puerto.

termcap y terminfo
Como System V, este sistema operativo utiliza entradas terminfo de los archivos /usr/lib/
terminfo/?/*.
Es posible que los usuarios con sistemas 4.3 BSD encuentren útiles estos mandatos:
captoinfo(1)
Convierte un archivo termcap en un archivo terminfo
tic(1)
Convierte los archivos terminfo del formato fuente en compilado.
Este sistema operativo incluye fuente para muchas entradas de terminfo. Es posible que parte deba
compilarse con el mandato tic. El archivo termcap se proporciona en el archivo /lib/libtermcap/
[Link].

Redirección de la entrada y la salida


El sistema operativo AIX permite manipular la entrada y salida (E/S) de datos hacia y desde el sistema
utilizando mandatos y símbolos de E/S específicos.
Puede controlar la entrada especificando la ubicación de donde se recogerán datos. Por ejemplo, puede
especificar la lectura de la entrada mientras se escriben datos en el teclado (entrada estándar) o la
lectura de la entrada de un archivo. Puede controlar la salida especificando dónde visualizar o almacenar
datos. Por ejemplo, puede especificar el visualizar los datos de salida en la pantalla (salida estándar) o
grabarlos en un archivo.
Puesto que AIX es un sistema operativo multitarea, está diseñado para manejar procesos combinados.
Conceptos relacionados
Mandatos para visualizar el contenido de archivos (mandatos pg, more, page y cat)
Los mandatos pg, more y page le permiten ver el contenido de un archivo y controlar la velocidad a la
que han de visualizarse los archivos.
Redirección de la entrada y la salida en el shell Korn o POSIX
Antes de ejecutar un mandato, el shell Korn explora la línea de mandatos en busca de caracteres de
redirección. Estas notaciones especiales indican al shell que redirija la entrada y la salida.

Archivos de entrada estándar, salida estándar y error estándar


Cuando se empieza a ejecutar un mandato, normalmente espera que los siguientes archivos ya estén
abiertos: entrada estándar, salida estándar y error estándar (a veces denominado salida de error o salida
de diagnóstico).
A cada uno de estos archivos se asocia un número denominado descriptor de archivo, tal como se
muestra a continuación:

Gestión del sistema operativo 365


Elemento Descripción
Descriptor de Entrada estándar
archivo 0
Descriptor de Salida estándar
archivo 1
Descriptor de Salida de error (diagnóstico) estándar
archivo 2

Normalmente, un proceso hijo hereda estos archivos de su padre. Estos tres archivos se asignan
inicialmente a la estación de trabajo (0 al teclado, 1 y 2 a la pantalla). El shell les permite que se redirijan
a otros lugares antes de que se pase el control a un mandato.
Cuando se especifica un mandato, si no se da ningún nombre de archivo, el teclado es la entrada
estándar, que a veces se indica como stdin. Cuando un mandato se completa, el resultado se visualiza en
la pantalla.
La pantalla es la salida estándar, que a veces se indica como stdout. Por omisión, los mandatos toman la
entrada de la entrada estándar y envían el resultado a la salida estándar.
Los mensajes de error se redirigen al error estándar que, a veces, se indica mediante stderr. Por omisión,
dicho lugar es la pantalla.
Estas acciones de entrada y salida por omisión se pueden variar. Puede utilizar un archivo como entrada y
grabar los resultados de un mandato en un archivo. Esto se denomina redirección de la entrada/salida.
La salida de un mandato, que normalmente se dirige al dispositivo de visualización, puede redirigirse a un
archivo en lugar del dispositivo de visualización. Esto se denomina redirección de salida. Es útil cuando
tiene mucha salida que es difícil de leer en la pantalla o cuando desea agrupar los archivos para crear un
archivo más grande.
Aunque no se utiliza tanto como la redirección de salida, la entrada correspondiente a un mandato, que
normalmente procede del teclado, también se puede redirigir desde un archivo. Esto se denomina
redirección de entrada. La redirección de entrada le permite preparar un archivo con anticipación y,
después, hacer que el mandato lea el archivo.

Redirección de salida estándar


Cuando se añade la notación >nombrearchivo al final de un mandato, la salida del mandato se graba en
el nombre de archivo especificado. El símbolo > se conoce como el operador de redirección de símbolo.
Cualquier mandato que envía su resultado a la pantalla puede redirigir su salida a un archivo.

Redireccionamiento de la salida a un archivo


Se puede redireccionar la salida de un proceso a un archivo escribiendo el mandato seguido del operador
de redirección de salida y el nombre de archivo.
Por ejemplo, para redireccionar el resultado del mandato who a un archivo denominado users, escriba lo
siguiente:

who > users

Nota: si el archivo users ya existe, se suprime y sustituye, a menos que se haya especificado la opción
noclobber del mandato incorporado set de ksh (shell Korn) o csh (shell C).
Para ver el contenido del archivo users, escriba lo siguiente:

cat users

Se visualiza una lista similar a la siguiente:

366 AIX Versión 7.2: Gestión del sistema operativo


denise lft/0 May 13 08:05
marta pts/1 May 13 08:10
endrica pts/2 May 13 09:33

Redireccionamiento de la salida para su adición a un archivo


Cuando se añade la notación >> nombrearchivo al final de un mandato, la salida del mandato se añade al
nombre de archivo especificado, en lugar de sobrescribir datos existentes. El símbolo >> se conoce como
operador de redirección de adición.
Por ejemplo, para añadir file2 a file1, escriba lo siguiente:

cat file2 >> file1

Nota: si el archivo file1 no existe, se crea, a menos que se haya especificado la opción noclobber del
mandato incorporado set de ksh (shell Korn) o csh (shell C).

Creación de un archivo de texto con redirección desde el teclado


Cuando se utiliza solo, el mandato cat utiliza como entrada lo que escribe en el teclado. Puede redirigir
esta entrada a un archivo.
Pulse Control-D en una línea nueva para señalar el final del texto.
En el indicador de mandatos, escriba lo siguiente:

cat > filename


Esto es una prueba.
^D

Concatenación de archivos de texto


Puede combinar varios archivos en uno solo. La combinación de diversos archivos en un solo archivo se
denomina concatenación.
En el ejemplo anterior se crea archivo4, que se compone de archivo1, archivo2 y archivo3, que se
añaden en el orden indicado a continuación.
Vea los ejemplos siguientes:
• En el indicador de mandatos, escriba lo siguiente:

cat archivo1 archivo2 archivo3 > archivo4

• El siguiente ejemplo muestra un error común cuando se concatenan archivos:

cat archivo1 archivo2 archivo3 > archivo1

Atención: En este ejemplo, puede esperar que el mandato cat añada el contenido de
archivo1, archivo2 y archivo3 a archivo1. El mandato cat crea el primer archivo de
salida, por lo que realmente borra el contenido de archivo1 y después le añade archivo2 y
archivo3.

Redirección de entrada estándar


Cuando se añade la notación < nombrearchivo al final del mandato, la entrada del mandato se lee del
archivo cuyo nombre se ha especificado. El símbolo < se conoce como operador de redirección de
entrada.
Nota: Sólo se puede redirigir la entrada de los mandatos que normalmente toman la entrada del teclado.
Por ejemplo, para enviar el archivo letter1 como un mensaje al usuario denise con el mandato mail,
escriba lo siguiente:

mail carlos < carta1

Gestión del sistema operativo 367


Descartar la salida con el archivo /dev/null
El archivo /dev/null es un archivo especial. Este archivo tiene una propiedad exclusiva: está siempre
vacío. Los datos enviados a /dev/null se descartan. Es una función útil cuando se ejecuta un programa
o un mandato que genera una salida que desea ignorar.
Por ejemplo, tiene un programa denominado miprog que acepta entrada desde la pantalla y genera
mensajes mientras se ejecuta que preferiría no ver en la pantalla. Para leer la entrada del archivo
miscript y descartar los mensajes de la salida estándar, escriba lo siguiente:

miprog < miscript >/dev/null

En este ejemplo, miprog utiliza el archivo miscript como entrada y toda la salida estándar se descarta.

Error estándar y otra redirección de salida


Además de la entrada y la salida estándar, con frecuencia los mandatos crean otros tipos de salida como,
por ejemplo, mensajes de error o estado conocidos como salida de diagnóstico. Como en el caso de la
salida estándar, la salida de error estándar se escribe en la pantalla a menos que se redireccione.
Para redirigir los errores estándar y otra salida, utilice un descriptor de archivo. Un descriptor de archivo
es un número asociado a cada uno de los archivos de E/S que, normalmente, utiliza un mandato. También
se pueden especificar descriptores de archivos para redirigir la salida estándar y la entrada estándar. Los
números siguientes se asocian a entrada, salida o errores estándar:

Ele Descripción
me
nto
0 Entrada estándar (teclado)
1 Salida estándar (terminal)
2 Error estándar (terminal)

Para redirigir la salida de error estándar, teclee el número de descriptor de archivo 2 delante de los
símbolos de salida o redirección de adición (> o > >) y un nombre de archivo detrás del símbolo. Por
ejemplo, el mandato siguiente toma la salida de error estándar del mandato cc donde se ha utilizado para
compilar el archivo testfile.c y lo añade al final del archivo ERRORS:

cc testfile.c 2 >> ERRORS

También se pueden redirigir otros tipos de salida utilizando los descriptores de archivo de 0 a 9. Por
ejemplo, si el mandato cmd graba la salida en el descriptor de archivo 9, puede redirigir dicha salida al
archivo savedata con el mandato siguiente:

cmd 9> savedata

Si un mandato escribe más de una salida, puede redirigir cada una de modo independiente. Suponga que
un mandato redirige la salida estándar al descriptor de archivo 1, dirige la salida de error estándar al
descriptor de archivo 2 y crea un archivo de datos al descriptor de archivo 9. La línea de mandatos
siguiente redirige cada una de estas salidas a un archivo diferente:

command > standard 2> error 9> data

Redirección de la salida en documentos de entrada en línea (here)


Puede redirigir la salida a documentos de entrada en línea (here).
Si un mandato tiene el formato siguiente:

mandato << findeserie

368 AIX Versión 7.2: Gestión del sistema operativo


y findeserie es cualquier serie que no contenga caracteres de coincidencia de patrón, el shell toma las
siguientes líneas como si fueran la entrada estándar de mandato hasta que el shell lee una línea
compuesta únicamente de findeserie (posiblemente precedida de uno o más caracteres de tabulación).
Con frecuencia, se hace referencia a las líneas entre la primera findeserie y la segunda como un
documento de entrada en línea o documento. Si existe un guión (-) inmediatamente después de los
caracteres de redirección <<, el shell elimina los caracteres de tabulación iniciales de cada línea del
documento here antes de pasar la línea al mandato.
El shell crea un archivo temporal que contiene el documento here y realiza la sustitución de variables y
mandatos en el contenido antes de pasar el archivo al mandato. Efectúa emparejamiento de patrones en
nombres de archivo que son parte de líneas de mandatos en sustituciones de mandatos. Para impedir
todas las sustituciones, delimite cada carácter de findeserie:

mandato << \findeserie

El documento here es especialmente útil para un pequeña cantidad de datos de entrada que es preferible
situar en el procedimiento de shell que conservarlos en un archivo separado (por ejemplo, scripts de
editor). Por ejemplo, puede escribir lo siguiente:

cat <<- xyz


Este mensaje se mostrará en la pantalla
sin las tabulaciones iniciales.
xyz

Conceptos relacionados
Redirección de la entrada y la salida en el shell Korn o POSIX
Antes de ejecutar un mandato, el shell Korn explora la línea de mandatos en busca de caracteres de
redirección. Estas notaciones especiales indican al shell que redirija la entrada y la salida.

Redirección de la salida utilizando conductos y filtros


Puede conectar dos o más mandatos de forma que la salida estándar de un mandato se utilice como la
entrada estándar de otro mandato. Un conjunto de mandatos conectados de esta forma se denomina
concatenación por conductos.
La conexión que une los mandatos se denomina conducto. Los conductos son muy útiles, pues le
permiten unir varios mandatos que ejecutan una única acción para formar un mandato compuesto. Puede
dirigir la salida de un mandato para que pase a ser la entrada de otro mandato utilizando un conducto.
Los mandatos están conectados por un símbolo de conducto (|).
Cuando un mandato toma su entrada de otro mandato, la modifica y envía el resultado a la salida
estándar, este conjunto de acciones se denomina filtro. Los filtros pueden utilizarse solos, pero son
especialmente útiles en conductos. Los filtros más comunes son los siguientes:
• sort
• more
• pg
Vea los ejemplos siguientes:
• El mandato ls graba el contenido del directorio actual en la pantalla en una corriente de datos con
desplazamiento. Cuando se presenta más de una pantalla de información, algunos datos no pueden
verse. Para controlar la salida de modo que el contenido se visualice pantalla a pantalla, puede utilizar
un conducto para dirigir la salida del mandato ls al mandato pg, que controla el formato de la salida en
la pantalla. Por ejemplo, escriba lo siguiente:

ls | pg

En este ejemplo, la salida del mandato ls pasa a ser la entrada del mandato pg. Pulse Intro para pasar
a la siguiente pantalla.
Los conductos funcionan sólo en una dirección (de izquierda a derecha). Cada mandato de un conducto
se ejecuta como un proceso separado y todos los procesos pueden ejecutarse al mismo tiempo. Un

Gestión del sistema operativo 369


proceso establece una pausa cuando no puede leer entrada o cuando el enlace al siguiente proceso
está lleno.
• Otro ejemplo de la utilización de los conductos es el empleo del mandato grep. El mandato grep busca
en un archivo las líneas que contienen series de un patrón determinado. Para que se visualicen todos
los archivos creados o modificados en julio, escriba lo siguiente:

ls -l | grep Jul

En este ejemplo, la salida del mandato ls pasa a ser la entrada del mandato grep.

Visualización de la salida de programa y copia en un archivo (mandato tee)


El mandato tee, que se utiliza con un conducto, lee la entrada estándar y, a continuación, graba la salida
de un programa en salida estándar y, simultáneamente, la copia en los archivos especificados. Utilice el
mandato tee para ver la salida inmediatamente y, al mismo tiempo, almacenarla para su uso futuro.
Por ejemplo, escriba lo siguiente:

ps -ef | tee [Link]

De este modo, se visualiza la salida estándar del mandato ps -ef en el dispositivo de visualización y, al
mismo tiempo, se guarda una copia de la misma en el archivo [Link]. Si el archivo [Link] ya
existe, se suprime y sustituye a menos que se especifique la opción noclobber del mandato incorporado
set.
Por ejemplo, para ver y guardar la salida de un mandato en un archivo existente:

ls -l | tee -a [Link]

De este modo, se visualiza la salida estándar de ls -l en el dispositivo de visualización y, al mismo


tiempo, se añade una copia del mismo al final del archivo [Link].
El sistema muestra información similar a la siguiente, y el archivo [Link] contiene la misma
información:

-rw-rw-rw- 1 jones staff 2301 Sep 19 08:53 161414


-rw-rw-rw- 1 jones staff 6317 Ago 31 13:17 [Link]
-rw-rw-rw- 1 jones staff 5550 Sep 10 14:13 [Link]

Borrado de la pantalla (mandato clear)


Utilice el mandato clear para eliminar de la pantalla los mensajes y la entrada del teclado.
En el indicador de mandatos, escriba lo siguiente:

clear

El sistema borra el contenido de la pantalla y visualiza el indicador.

Envío de un mensaje a salida estándar


Utilice el mandato echo para visualizar los mensajes en la pantalla.
Por ejemplo, para grabar un mensaje en la salida estándar, escriba lo siguiente:

echo Please insert diskette . . .

Se visualizará el siguiente mensaje:

Please insert diskette . . .

Por ejemplo, para utilizar el mandato echo con caracteres de patrones de coincidencia, en el indicador de
mandatos escriba lo siguiente:

echo Los archivos de copia de seguridad son: *.bak

370 AIX Versión 7.2: Gestión del sistema operativo


El sistema visualiza el mensaje Los archivos de copia de seguridad son: seguido de los
nombres de archivo del directorio actual que finalizan en .bak.

Adición de una sola línea de texto a un archivo (mandato echo)


Utilice el mandato echo, utilizado con el operador de redirección, para añadir una sola línea de texto a un
archivo.
Por ejemplo, en el indicador de mandatos escriba lo siguiente:

echo Recuerde hacer una copia de seguridad de los archivos de correo al finalizar la
semana.>>notes

Esto añade el mensaje Recuerde hacer una copia de seguridad de los archivos de
correo al finalizar la semana. al final del archivo notas.

Copia de la pantalla en un archivo (mandato capture y script)


Utilice el mandato capture, que emula un terminal VT100, para copiar todo lo que se imprime en el
terminal a un archivo que especifique. Utilice el mandato script para copiar todo lo que se imprime en
el terminal a un archivo que especifique, sin emular un terminal VT100.
Ambos mandatos son útiles para imprimir registros de diálogos de terminal.
Por ejemplo, para capturar la pantalla de un terminal mientras emula un VT100, en el indicador, escriba
lo siguiente:

capture screen.01

El sistema visualiza información similar a la siguiente:

El mandato Capture se ha iniciado. El archivo es screen.01.


Utilice ^P para el volcado de la pantalla al archivo screen.01.
Ahora se está emulando un terminal vt100.
Pulse cualquier tecla para continuar.

Después de entrar datos y volver el contenido de la pantalla, detenga el mandato capture; para ello,
pulse Control-D o escriba exit y pulse Intro. El sistema visualiza información similar a la siguiente:

El mandato Capture se ha completado. El archivo es screen.01.


Ya NO está emulando un terminal vt100.

Utilice el mandato cat para visualizar el contenido del archivo.


Por ejemplo, para capturar la pantalla de un terminal, en el indicador, escriba lo siguiente:

script

El sistema visualiza información similar a la siguiente:

El mandato Script se ha iniciado. El archivo es typescript.

Todo lo que se muestra en la pantalla se copia al archivo typescript.


Para detener el mandato script, pulse Control-D o teclee exit y pulse Intro. El sistema visualiza
información similar a la siguiente:

El mandato Script se ha completado. El archivo es typescript.

Utilice el mandato cat para visualizar el contenido del archivo.

Mandato para visualizar texto en letras grandes en la pantalla (mandato banner)


El mandato banner visualiza los caracteres ASCII de la pantalla utilizando letras más grandes.
Cada línea de la salida puede tener una longitud de hasta 10 dígitos (o caracteres en mayúsculas o en
minúsculas).
Por ejemplo, en el indicador de mandatos escriba lo siguiente:

Gestión del sistema operativo 371


banner GOODBYE!

El sistema visualiza ¡ADIÓS! en letras grandes en la pantalla.

Resumen de mandatos para la redirección de entrada y salida


Los siguientes mandatos son para la redirección de la entrada y la salida.

Elemento Descripción
> “Redirección de salida estándar” en la página 366
< “Redirección de entrada estándar” en la página 367
> > “Redireccionamiento de la salida para su adición a un archivo” en la página 367
| “Redirección de la salida utilizando conductos y filtros” en la página 369
banner Graba series de caracteres ASCII en letras grandes en la salida estándar
capture Permite que las pantallas del terminal puedan volcarse en un archivo
clear Borra la pantalla del terminal
echo Graba series de caracteres en la salida estándar
script Permite que la entrada y salida del terminal pueda copiarse en un archivo
tee Visualiza la salida estándar de un programa y la copia en un archivo

Recuperación de kernel de AIX


Desde AIX 6.1, se pueden recuperar opcionalmente los errores del kernel en determinadas rutinas, lo que
evita la inactividad no planificada del sistema.

La recuperación del kernel está inhabilitada de forma predeterminada. Si la recuperación del kernel está
habilitada, es posible que el sistema se detenga durante un breve período de tiempo durante una acción
de recuperación del kernel. Este tiempo suele ser inferior a dos segundos. Se producen las siguientes
acciones inmediatamente después de la acción de recuperación del kernel:
• La consola del sistema muestra el siguiente mensaje:

-------------------------------------------------------------------------
Se ha producido una acción de recuperación de errores del kernel. Se ha generado un
registro de recuperación en el registro de errores del sistema.
-------------------------------------------------------------------------

• AIX agrega una entrada al registro de errores. Puede enviar los datos del registro de errores a IBM para
obtener servicio de forma similar a como envía datos tras una finalización completa del sistema. A
continuación se muestra una entrada de ejemplo del registro de errores de recuperación:

ETIQUETA: RECUPERACIÓN
Fecha/Hora: Fri Feb 16 [Link] CST 2007
Tipo: INFO
Nombre recurso: RMGR
Descripción
Acción de recuperación del kernel
Datos de detalle
Nombre base del vuelco activo
RECOV_20070216200417_0000
Nombre de la función
w_clear
Nombre de FRR
w_init_clear_frr
Serie del síntoma
273
EEEE00009627A072
F10001001B18BBC0
w_clear+D0
wdog0030+288
test_index+4C
Datos del registro de recuperación

372 AIX Versión 7.2: Gestión del sistema operativo


0001 0000 0000 0000 F000 0000 2FFC AEB0 0000 0111 0000 0000 0000 0000 0021 25BC
8000 0000 0002 9032 EEEE 0000 9627 A072 F100 0100 1B18 BBC0 0000 0000 0000 0000
0000 0001 0000 0000 0006 0057 D2FF 8C00 0001 0148 0500 0000 8000 0000 0002 9032
.....

• AIX genera un vuelco activo. Los datos de un vuelco activo se encuentran, de forma predeterminada, en
el directorio /var/adm/ras/livedump y el archivo se llama RECOV_indicaciónhora_secuencia,
donde indicaciónhora especifica la hora a la que se ha producido la recuperación del kernel y secuencia
especifica el número de veces que se ha invocado la recuperación del kernel. Puede enviar datos de
vuelco activo a IBM para obtener servicio, de forma similar a como se envían datos tras una finalización
completa del sistema. Para obtener más información sobre vuelcos activos, consulte vuelcos activos en
Kernel Extensions and Device Support Programming Concepts.
Atención: Es posible que se pierdan algunas funciones tras una recuperación del kernel, pero el sistema
operativo continúa en un estado estable. Si es necesario, cierre y vuelva a iniciar el sistema para restaurar
las funciones perdidas.

Consideraciones sobre memoria y procesador


AIX mantiene datos en el estado de recuperación del kernel durante las principales operaciones del
kernel. Cuando la recuperación del kernel está habilitada, se necesitan instrucciones adicionales del
procesador para mantener los datos y se necesita memoria adicional para guardar los datos. El impacto
sobre el uso de procesador es mínimo. Se puede determinar el consumo de memoria adicional mediante
la siguiente ecuación, donde máxhebras es el número máximo de hebras que se ejecutan en el sistema y
númproc es el número de procesadores:

memoria necesaria = 4 KB x máxhebras + 128 KB x númproc

Tal como se muestra en el siguiente ejemplo, un sistema con 16 procesadores y un máximo de 1000
hebras consume 6304 KB adicionales:

4 x 1000 + 128 x 16 = 6304 KB

Habilitación e inhabilitación de la recuperación de kernel


Puede habilitar o inhabilitar la recuperación de kernel desde la interfaz de vía de acceso de SMIT.
Para habilitar o inhabilitar la recuperación de kernel, utilice la siguiente vía de acceso de SMIT:
Determinación de problemas > Recuperación de kernel > Cambiar estado de recuperación de kernel
> Cambiar estado de recuperación de siguiente kernel de arranque
También puede ver el estado actual de recuperación de kernel utilizando la siguiente vía de acceso de
SMIT:
Determinación de problemas > Recuperación de kernel > Mostrar estado de recuperación de kernel

AIX Event Infrastructure para AIX y clústeres AIX - AHAFS


AIX Event Infrastructure para AIX y clústeres AIX son una infraestructura de supervisión de sucesos
predefinidos y definidos por el usuario.

Introducción a la infraestructura de AIX Event Infrastructure


AIX Event Infrastructure es una infraestructura de supervisión de sucesos para la supervisión de sucesos
predefinidos o definidos por el usuario.
En AIX Event Infrastructure, se define un suceso como cualquier cambio de estado o valor que pueda
detectar el kernel o una extensión del kernel en el momento en que se produce el cambio. Los sucesos
que se pueden supervisar se representan como archivos en un seudosistema de archivos. Las siguientes
son algunas de las ventajas de AIX Event Infrastructure:
• No es necesario realizar sondeos constantemente. Cuando se producen los sucesos, se notifica a los
usuarios que supervisan estos sucesos.

Gestión del sistema operativo 373


• Al usuario que está supervisando el suceso se le proporciona información acerca de un suceso, por
ejemplo, un rastreo de pila y la información del usuario o del proceso.
• Se utilizan las interfaces del sistema existentes de modo que no sea necesaria una nueva interfaz de
programación de aplicaciones (API).
• El control se entrega a AIX Event Infrastructure en el momento preciso en que se produce el suceso.

Componentes de AIX Event Infrastructure


AIX Event Infrastructure consta de los siguientes cuatro componentes:
• La extensión del kernel que implementa el seudosistema de archivos.
• Los consumidores de sucesos que consumen los sucesos.
• Los generadores de sucesos que generan sucesos.
• El componente del kernel que sirve como interfaz entre la extensión del kernel y los generadores de
sucesos.

Extensión del kernel de AIX Event Infrastructure


La extensión del kernel de AIX Event Infrastructure implementa el seudosistema de archivos.
Todos los sucesos se representan como archivos en este sistema de archivos. Hay cuatro tipo de objetos
de archivo:
• Archivos .list: sólo existe un archivo .list en el seudosistema de archivos [Link]. Este es un
archivo especial que cuando se lee, devuelve todos los generadores de sucesos definidos actualmente.

374 AIX Versión 7.2: Gestión del sistema operativo


• Directorios .monFactory: las fábricas de supervisión son un tipo de directorio especial. Estas son
representaciones de directorios de generadores de sucesos. Los directorios de fábricas de supervisión y
sus subdirectorios padre se crean automáticamente para el usuario.
• subdirectorios: los subdirectorios se utilizan para facilitar la gestión y para representar nombres de
vías de acceso completos para los archivos de supervisión (consulte los archivos .mon).
• Archivos .mon: los archivos de supervisión representan los sucesos que se pueden supervisar. El
nombre de vía de acceso completo de un archivo de supervisión a partir de su fábrica de supervisión
padre, menos la extensión .mon es la representación completa del suceso que se está supervisando.
Por ejemplo, el archivo /aha/fs/[Link]/etc/[Link] se utiliza para supervisar las
modificaciones del archivo /etc/passwd. Los archivos de supervisión sólo pueden existir debajo de una
fábrica de supervisión.
No se pueden crear otros archivos regulares en este seudosistema de archivos. Dado que el sistema de
archivos de AIX Event Infrastructure es un sistema de archivos de la memoria, sólo pueden haber un
máximo de 32 KB de inodos. El número de inodos utilizado se visualizará en la salida del mandato df.
A continuación se muestra un ejemplo de la disposición del sistema de archivos de AIX Event
Infrastructure:

Nota:
El archivo [Link] existe directamente debajo de la raíz del sistema de archivos y contiene la lista de
generadores de sucesos que se han definido y que se pueden utilizar bajo esta instancia del sistema
operativo.
Utilizando la interfaz LFS, AIX Event Infrastructure convertirá la entrada de texto escrita en los archivos
de supervisión en especificaciones sobre cómo el usuario desea que se le notifiquen las apariciones de
sucesos. Cuando el usuario emite una llamada select() o una llamada read() de bloqueo que indique el
inicio de su supervisión, AIX Event Infrastructure notificará al generador de sucesos correspondiente que
inicie la supervisión del suceso especificado.
Cuando se detecte una aparición de sucesos, AIX Event Infrastructure notificará qué criterios de
supervisión se han cumplido a todos los consumidores que estén en espera.

Gestión del sistema operativo 375


Consumidores de sucesos
Los consumidores de sucesos son procesos de espacio de usuario que están a la espera de que se
produzcan sucesos.
Los consumidores configuran la supervisión de sucesos grabando información en un archivo de
supervisión, que especifica cómo y cuándo se les debe notificar. Los consumidores pueden esperar las
notificaciones de sucesos en una llamada select() o en una llamada read() de bloqueo.
AIX Event Infrastructure no tiene seguridad de hebras. Los procesos no deben utilizar varias hebras para
supervisar el mismo suceso.

Generadores de sucesos
Los generadores de sucesos son secciones del código dentro del kernel o de una extensión del kernel que
pueden detectar un suceso.
Cuando se produce un suceso supervisado, el generador de sucesos se lo notifica a la extensión del
kernel de AIX Event Infrastructure y envía cualquier información asociada relacionada con el suceso que
se ha de pasar al consumidor.
Actualmente, existen dos clases principales de generadores de sucesos:
• Los que supervisan un cambio de estado
• Los que supervisan un valor que supera los umbrales especificados por el usuario

Servicio del kernel ahafs_evprods


El servicio del kernel ahafs_evprods facilita las comunicaciones entre la extensión del kernel AIX Event
Infrastructure y los generadores de sucesos.
Para facilitar las comunicaciones entre la extensión del kernel AIX Event Infrastructure y los generadores
de sucesos, se exporta el servicio del kernel ahafs_evprods. Dentro del kernel, se utiliza una lista de
generadores de sucesos registrados para buscar los generadores de sucesos y para pasar información
entre los generadores de sucesos adecuados y la extensión del kernel.

Configuración de AIX Event Infrastructure


Pasos necesarios para configurar AIX Event Infrastructure.
Los únicos pasos necesarios para configurar AIX Event Infrastructure son:
1. Instalar el conjunto de archivos [Link].
2. Crear el directorio para el punto de montaje deseado.
3. Ejecutar el mandato siguiente:

mount –v ahafs <punto montaje> <punto montaje>

Ejemplo

,kdir /aha
mount -v ahafs /aha /aha

El montaje de un sistema de archivos AIX Event Infrastructure automáticamente cargará la extensión


del kernel y creará todas las fábricas de supervisión. Sólo se monta una instancia de un sistema de
archivos de AIX Event Infrastructure cada vez. Se puede montar un sistema de archivos de AIX Event
Infrastructure en un directorio normal pero se recomienda a los usuarios que utilicen /aha.

Vista de alto nivel de cómo funciona AIX Event Infrastructure


Un consumidor puede supervisar varios sucesos y varios consumidores pueden supervisar el mismo
suceso. Cada consumidor puede supervisar sucesos basados en valores con un valor de umbral diferente.
Para manejar esto, la extensión de kernel de AIX Event Infrastructure mantiene una lista de la
información de cada consumidor, que incluye:
• El tipo de espera especificado (WAIT_IN_READ o WAIT_IN_SELECT)

376 AIX Versión 7.2: Gestión del sistema operativo


• El nivel de información solicitado
• El o los umbrales que se han de supervisar (si se supervisa un suceso de valor de umbral)
• Se utiliza un almacenamiento intermedio para contener la información acerca de las apariciones de los
sucesos
La información de sucesos se almacena por proceso, de modo que los diferentes procesos que
supervisan el mismo suceso no alteran los datos del suceso. Cuando un proceso consumidor lea un
archivo de supervisión, únicamente leerá su propia copia de los datos del suceso.

Flujo típico de supervisión de un suceso


En este tema se describen los pasos de la supervisión de un suceso.
1. Un proceso intenta abrir o crear un archivo de supervisión.
2. AIX Event Infrastructure pasa el nombre de vía de acceso del archivo de supervisión al generador de
sucesos correspondiente. El generador de sucesos verifica que el archivo de supervisión representa
un suceso válido y que el proceso tiene acceso para supervisar el suceso.
3. El proceso graba la información en el archivo especificando:
a. El tipo de espera (WAIT_TYPE=WAIT_IN_READ o WAIT_TYPE=WAIT_IN_SELECT). El tipo de
espera predeterminado es WAIT_IN_SELECT.
b. Cuándo se ha de notificar. Para los sucesos de cambio de estado, el usuario debe especificar
CHANGED=YES. Para los sucesos de valores de umbral, el usuario puede especificar
THRESH_HI=<valor>, THRESH_LO=<valor> o ambos, en función de las posibilidades del
generador de sucesos asociado. No existe un valor predeterminado para esta especificación y no
se pueden especificar tanto CHANGED=YES como THRESH_*=<valor>.
4. A continuación, AIX Event Infrastructure asignará el bloque por proceso en el que almacenar esta
información si todavía no existe uno para este proceso y lo cumplimentará con la información escrita
por el usuario.
5. El proceso emite la llamada select() o una llamada read() de bloqueo en el archivo de supervisión
6. AIX Event Infrastructure llamará a ahafs_evprods para comprobar que los umbrales especificados
son válidos para este suceso en concreto. Por ejemplo, el generador de sucesos utilFs no permite
valores superiores al 100%. Si el umbral no es válido, la llamada select() o read() devolverá
RC_FROM_EVPROD y, una vez leído el archivo de supervisión, se devolverá EINVAL.
7. Para los generadores de sucesos de valores de umbral, sólo se envía un valor al generador de
sucesos para cada umbral (hi o lo) de supervisión. En el momento de select() o de read() de bloqueo,
AIX Event Infrastructure registrará este nuevo umbral con el generador de sucesos si se cumple una
de las condiciones siguientes:
a. Si ningún otro proceso está supervisando este sucesos, el o los umbrales especificados por el
consumidor se registrarán en el generador de sucesos.
b. Si hay otros procesos supervisando este suceso, entonces si el valor de THRESH_LO especificado
por el consumidor es superior al umbral bajo supervisado actualmente O si el valor de
THRESH_HI especificado por el consumidor es más bajo que el umbral alto supervisado
actualmente, AIX Event Infrastructure llama al servicio del kernel ahafs_evprods para que
actualice el umbral supervisado actualmente.
8. Al regresar, el servicio del kernel ahafs_evprods devuelve el valor real del suceso (en algunos casos).
Si el valor real devuelto ya cumple o supera cualquiera de los umbrales, inmediatamente se devuelve
la llamada read() o select() y el RC_FROM_EVPROD registrado en el almacenamiento intermedio de
suceso será EALREADY. Las llamadas read() o select() devolverán 0.
9. Para los generadores de sucesos de cambio de estado, siempre se llama a la función ahafs_evprods
para registrar el suceso.
10. Después de un registro correcto, AIX Event Infrastructure configura la notificación. Para los
consumidores que estén esperando select(), la notificación se configura mediante selreg(). Para los
consumidores que estén bloqueando una llamada read(), la hebra se coloca en suspensión con
e_sleep_thread().

Gestión del sistema operativo 377


11. Cuando el generador de sucesos detecta que se ha producido un suceso, notificará a AIX Event
Infrastructure la información relacionada con el suceso (esto es, la información acerca del proceso
que ha desencadenado el suceso, el valor actual, el código de retorno, etc.).
12. Durante esta devolución de llamada del generador de sucesos, AIX Event Infrastructure:
a. Determina el ahaNode correspondiente al suceso
b. Busca en la lista de consumidores en espera para determinar qué umbrales se han cumplido o se
han superado para notificarlo con la llamada selnotify() o e_wakeup(). Se notificará a todos los
consumidores que estén esperando un suceso de cambio de estado.
13. Cuando se haya notificado el suceso al proceso, éste lee el archivo de supervisión para obtener los
datos del suceso. El siguiente es un ejemplo de salida de un suceso.
Una salida de ejemplo para un generador de sucesos de cambio de estado que ha especificado que
debe realizarse un rastreo de pila:

BEGIN_EVENT_INFO
TIME_tvsec=1269377315
TIME_tvnsec=955475223
SEQUENCE_NUM=0
PID=2490594
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=cat
RC_FROM_EVPROD=1000
END_EVENT_INFO

Un ejemplo de un suceso de valor de umbral:

BEGIN_EVENT_INFO
TIME_tvsec=1269378095
TIME_tvnsec=959865951
SEQUENCE_NUM=0
CURRENT_VALUE=2
RC_FROM_EVPROD=1000
END_EVENT_INFO

Nota: Debido a la naturaleza asíncrona de la notificación de procesos, el valor actual devuelto puede
estar obsoleto en el momento en que un proceso lee el archivo de supervisión. A los usuarios se les
notifica cuando se cumple o supera el umbral en primer lugar, pero no se bloquearán otras operaciones
que pueden alterar los valores que se están supervisando.

Utilización de AIX Event Infrastructure


Todos los directorios del sistema de archivos AIX Event Infrastructure tienen una modalidad de acceso
de 1777 y todos los archivos tienen una modalidad de acceso de 0666.
Actualmente, todos los directorios del sistema de archivos AIX Event Infrastructure tienen una modalidad
de 1777 y todos los archivos tienen una modalidad de 0666. Estas modalidades no se pueden modificar,
pero la propiedad de los archivos y directorios se puede modificar. El control de acceso para la
supervisión de sucesos se puede realizar a nivel del generador de sucesos. Las horas de creación/
modificación no se mantienen y siempre se devuelven como la hora actual cuando se emite stat () en un
objeto de archivo dentro del seudosistema de archivos. Cualquier intento de modificar estas horas
devolverá un error.

Supervisión de sucesos
Creación del archivo de supervisión
Para supervisar un suceso, se debe crear el archivo de supervisión correspondiente al suceso.
Antes de supervisar un suceso, se debe crear el archivo de supervisión correspondiente al suceso. AIX
Event Infrastructure soporta open() con el distintivo O_CREAT. Como ejemplo, seguiremos los pasos
necesarios para supervisar el sistema de archivos /filesys/clj-fs para una utilización del 90%.
• También se deben crear los subdirectorios necesarios:

378 AIX Versión 7.2: Gestión del sistema operativo


mkdir /aha/fs/[Link]/filesys

• Abra el archivo /aha/fs/[Link]/filesys/[Link].


Para poder crear un archivo de supervisión, la extensión del kernel AIX Event Infrastructure llamará al
generador de sucesos para determinar si el suceso que se está solicitando es válido y para determinar si
el usuario tiene la suficiente autorización para supervisar el suceso especificado. Los siguientes son
algunos de los errores comunes que puede devolver una operación para crear o abrir un archivo de
supervisión:

Tabla 63. Códigos de retorno


Código de retorno Detalles
ENODEV No existe un suceso correspondiente en la vía de
acceso especificada.
Nota: También se puede devolver un error
ENODEV si se intenta abrir un archivo de
supervisión existente cuando el suceso ya no
existe.

EPERM El usuario no tiene permiso para supervisar el


suceso especificado.

ENOTSUP El suceso especificado no soporta la supervisión


mediante AIX Event Infrastructure.

Escribir en un archivo de supervisión


El proceso del consumidor escribe en el archivo de supervisión para especificar cómo y cuándo se le
deben notificar los sucesos.
Cuando se crea y abre el archivo de supervisión deseado, el proceso del consumidor escribirá en el
archivo de supervisión para especificar cómo y cuándo se le deben notificar los sucesos. Estos datos se
graban en los pares <clave>=<valor>, que pueden estar separados por un signo de punto y coma (;) o un
espacio en blanco. Los pares <clave>=<valor> aceptables son los siguientes:

Tabla 64. Pares <clave>=<valor> aceptables


Clave Valores aceptables Detalles
CHANGED YES Especifica que el suceso que se
ha de supervisar es de tipo
AHAFS_THRESHOLD_STATE y
que se debe notificar al
consumidor cuando cambia el
estado del suceso.

Gestión del sistema operativo 379


Tabla 64. Pares <clave>=<valor> aceptables (continuación)
Clave Valores aceptables Detalles
THRESH_HI Entero de 64 bits sin signo, Esta clave especifica el umbral
especificado en formato decimal alto del suceso. Cuando el
suceso ha alcanzado este umbral
(igual a o mayor que), se debe
notificar al consumidor.
Nota: Aunque este es un entero
de 64 bits, algunos generadores
de sucesos pueden tener límites
sobre qué valores pueden
supervisarse realmente. Por
ejemplo, los valores aceptables
para THRESH_HI para el
generador de sucesos utilFs son
entre 1 y 100, inclusive. La
validez del umbral para el
generador de sucesos no se
comprueba en el momento de la
grabación, sino durante el
momento de select() o de read()
de bloqueo.

THRESH_LO Entero de 64 bits sin signo, Esta clave especifica el umbral


especificado en formato decimal bajo del suceso. Cuando el
suceso ha alcanzado este umbral
(igual a o menor que), se debe
notificar al consumidor.
Nota: Aunque este es un entero
de 64 bits, algunos generadores
de sucesos pueden tener límites
sobre qué valores pueden
supervisarse realmente. Por
ejemplo, los valores aceptables
para THRESH_LO para el
generador de sucesos utilFs son
entre 1 y 100, inclusive. La
validez del umbral para el
generador de sucesos no se
comprueba en el momento de la
grabación, sino durante el
momento de select() o de read()
de bloqueo.

WAIT_TYPE WAIT_IN_SELECT (valor Especifica cómo esperará el


predeterminado), consumidor el suceso. Si el
WAIT_IN_READ consumidor desea bloquear el
suceso en una llamada select(),
debe especificar
WAIT_IN_SELECT. Si el
consumidor desea bloquear el
suceso en una llamada read(),
debe especificar
WAIT_IN_READ.

380 AIX Versión 7.2: Gestión del sistema operativo


Tabla 64. Pares <clave>=<valor> aceptables (continuación)
Clave Valores aceptables Detalles
INFO_LVL 1, 2 (valor predeterminado) o 3 Especifica qué datos del suceso
se deben registrar en el
almacenamiento intermedio del
usuario:
• INFO_LVL=1 registrará
cronológicamente la indicación
de la hora del suceso, el
número de secuencia, el código
de retorno del generador de
sucesos, la información* del
usuario, la información* del
proceso y el valor actual del
suceso (si corresponde).
• INFO_LVL=2 registrará todos
los datos desde el nivel 1, más
el mensaje del generador de
sucesos, si corresponde.
• INFO_LVL=3 registrará todos
los datos desde el nivel 2, más
la pila del suceso, si
corresponde.
Nota: La información del usuario,
la información del proceso, el
nombre del programa y el rastreo
de pila sólo están disponibles
para los generadores de sucesos
que han especificado el distintivo
AHAFS_STKTRACE_AVAILABLE
. No todos los generadores de
sucesos pasan mensajes.
Consulte la documentación del
generador de sucesos para
determinar qué información está
disponible. Los ejemplos de la
salida del suceso se muestran en
la sección “Lectura de datos de
sucesos” en la página 385.

Gestión del sistema operativo 381


Tabla 64. Pares <clave>=<valor> aceptables (continuación)
Clave Valores aceptables Detalles
NOTIFY_CNT -1 (valor predeterminado) o NOTIFY_CNT especifica cuántas
cualquier valor entre 1 y 32767, veces se debe producir el suceso
inclusive antes de que se notifique al
proceso. Si se especifica el valor
-1, se notificará al consumidor
cada vez que se aparezca el
suceso y cada aparición del
suceso se registrará en el
almacenamiento intermedio del
usuario. Si el consumidor
especifica un valor positivo que
no sea cero, el consumidor se
bloqueará hasta que el suceso se
haya producido el número de
veces especificado. Cuando el
suceso se haya producido el
número de veces especificado,
no se registrarán más sucesos
hasta que el consumidor se
bloquee en otra llamada select()
o en una llamada read() de
bloqueo. Consulte la sección
“Espera de sucesos” en la página
383 para obtener más
información.

CLUSTER YES Si el sistema forma parte de un


clúster y éste está activo, los
consumidores pueden
especificar esta clave para que se
le notifiquen las apariciones de
este suceso en otros nodos del
clúster. No todos los generadores
de sucesos soportan la
supervisión de todo el clúster.
Esta característica está
desactivada, off, de forma
predeterminada. Consulte la
sección “Sucesos de clúster” en
la página 405 para obtener más
información.

BUF_SIZE Un entero positivo, hasta Esta clave especifica el tamaño


1048576 del almacenamiento intermedio
que se debe utilizar para registrar
los datos de sucesos,
especificado en bytes. El tamaño
predeterminado es de 2048 y el
tamaño más pequeño asignado
será de 1024 bytes, incluso si el
consumidor solicita un tamaño
menor.

382 AIX Versión 7.2: Gestión del sistema operativo


Cuando se escribe información en un archivo de supervisión sólo se prepara para una llamada select() o
una llamada read() de bloqueo siguiente. La supervisión no comienza hasta que se realiza la llamada
select() o la llamada read() de bloqueo.
Por ejemplo, para supervisar en el sistema de archivos /filesys/clj-fs la primera aparición de una
utilización del 90% de una llamada read() de bloqueo, se graba la siguiente serie en el archivo /aha/fs/
[Link]/filesys/[Link]:

WAIT_TYPE=WAIT_IN_READ THRESH_HI=90 NOTIFY_CNT=1

Los códigos de retorno posibles de una llamada write() para un archivo de supervisión son:

Tabla 65. Códigos de retorno


Código de retorno Detalles
EINVAL Si se proporciona un valor no válido para
cualquiera de las claves anteriores, la operación de
escritura en el archivo de supervisión fallará con
EINVAL. Asimismo, si los parámetros de
notificación (CHANGED o THRESH_HI/LO)
especificados no coinciden con las posibilidades
del generador de sucesos, la operación de
escritura fallará con EINVAL. Por ejemplo, si el
consumidor especifica CHANGED=YES para el
consumidor de sucesos utilFs (que sólo supervisa
THRESH_HI/LO), la llamada de escritura
devolverá EINVAL. Si se especifica CLUSTER=YES
sin un clúster activo también se generará EINVAL.

EBUSY Si hay otra hebra en el proceso que actualmente


está esperando el suceso, un proceso de escritura
en el archivo de supervisión por parte de otra
hebra devolverá EBUSY.

ESTALE El archivo de supervisión se ha suprimido. Para


supervisar este suceso, el descriptor de archivos
se tendrá que cerrar para abrirlo a continuación
con O_CREAT

ENOMEM No se puede asignar la memoria temporal o la


memoria para el almacenamiento intermedio de
sucesos.

ENOSPC Un máximo de 512 procesos pueden supervisar un


archivo de supervisión. Si ya existen 512 que
tienen abierto este archivo y han escrito en el
mismo, la operación de escritura fallará con
ENOSPC.

Espera de sucesos
Las especificaciones de supervisión se graban en el archivo de supervisión.
Cuando se graban correctamente las especificaciones de supervisión en el archivo de supervisión, el
proceso del consumidor bloqueará una aparición de suceso utilizando select() o read(). A los
consumidores sólo se les notifican los sucesos que se producen una vez bloqueado select() o read().
Existen tres modos para que se produzca una devolución del proceso desde una llamada select() o read()
de bloqueo:

Gestión del sistema operativo 383


1. El proceso se ha producido el número de veces especificado.
• Se trata de un caso no de error. El consumidor debe leer los datos del suceso para determinar cómo
se ha de manejar el suceso.
2. Se ha producido un problema al configurar el suceso en la extensión del kernel de AIX Event
Infrastructure.
Se pueden producir errores antes de que se registre el suceso para supervisión en el generador de
sucesos:
• read()
– Si hay otra hebra que está a la espera de lectura, la lectura fallará con EBUSY
– Si no se ha realizado ninguna escritura antes de esta lectura, la lectura simplemente devolverá 0 y
se habrán leído 0 bytes.
• select()
Nota:
Debido a la implementación de la llamada del sistema select, para que select() devuelva un error,
las operaciones del sistema de archivos subyacente deben devolver EBADF. Como resultado, si se
cumplen cualquiera de las siguientes condiciones, select() devolverá EBADF.
– Otra hebra está intentando una operación select
– Se ha suprimido el archivo de supervisión
– No se ha realizado ninguna escritura con especificaciones de supervisión
– Se ha producido un error durante el registro en el subsistema IOS
En estos casos, no habrán datos de sucesos para leer.
3. Se ha producido un problema al configurar el suceso con el generador de sucesos.
Si se intenta registrar el suceso con el generador de sucesos, se registrará una entrada en el
almacenamiento intermedio para que la lea el consumidor. Para determinar qué error se ha producido,
en la documentación del generador de sucesos se debe hacer referencia al RC_FROM_EVPROD
devuelto en los datos del suceso. Tenga en cuenta que la salida de sucesos para este caso sólo
contendrá la indicación de la hora, el número de secuencia y el código de retorno del generador de
sucesos, independientemente del INFO_LVL que se haya especificado. Para obtener un ejemplo,
consulte la sección “Lectura de datos de sucesos” en la página 385.
En este caso, select() devolverá EBADF, pero read() devolverá el código de retorno de la operación
uio_move subyacente.
Si el proceso del consumidor ha especificado un NOTIFY_CNT mayor que 1, se registrará la información
sobre cada aparición del suceso en el almacenamiento intermedio del consumidor hasta que se haya
producido el número de sucesos solicitado. El proceso del consumidor sólo se activará si el suceso se ha
producido el número de veces solicitado o si se ha producido un suceso no disponible. Cuando se active
el proceso del consumidor, ya no supervisará el suceso hasta que vuelva a emitir la llamada select() o
read() de bloqueo para el archivo de supervisión.
Si un consumidor ha especificado un valor de NOTIFY_CNT de -1, el proceso del consumidor se activará
después de cada aparición del suceso y en el almacenamiento intermedio del consumidor se registrará
cualquier suceso que se produzca después de la llamada select() o read() de bloqueo inicial correcta.
Las llamadas select() y read() no realizarán bloqueos si en el almacenamiento intermedio existen datos
de sucesos que no se han leído.

Apariciones de sucesos no disponibles


Es posible que para algunos generadores de sucesos existan apariciones de sucesos que hagan que un
conlleven la invalidez del suceso supervisado.
Estos son algunos ejemplos:
• La muerte de un proceso para processMon y pidProcessMon .

384 AIX Versión 7.2: Gestión del sistema operativo


• El desmontaje de un sistema de archivos que contiene archivos supervisados para modDir y modFile.
• El desmontaje de un sistema de archivos que está siendo supervisando por utilFs.
• La supresión o el cambio de nombre de un archivo que está siendo supervisado por modDir o modFile
• La supresión de un generador de sucesos que actualmente se está utilizando para supervisar sucesos
(en este caso, RC_FROM_EVPROD será ENODEV).
Cuando se ha desencadenado una aparición de suceso no disponible, los consumidores no pueden
continuar supervisando dicho suceso hasta que vuelva a ser válido. Los siguientes son ejemplos de
sucesos que vuelven a ser válidos:
• Se vuelve a montar el sistema de archivos supervisado.
• Se vuelve a crear un archivo supervisado que se había suprimido.
• Se vuelve a crear un proceso que ha sido supervisado.
Cuando se desencadena un suceso local no disponible, la extensión del kernel de AIX Event
Infrastructure eliminará el o los archivos de supervisión afectados. Cuando se suprime un archivo de
supervisión, los consumidores que todavía tienen el archivo abierto podrán leer los datos de suceso, pero
no podrán grabar ni bloquear en espera una aparición de suceso en dicho archivo de supervisión. Cuando
el consumidor encuentra una aparición de suceso no disponible, deberá realizar la acción adecuada (que
presuntamente hará que el suceso vuelva a ser válido), cerrar el descriptor de archivo para el archivo de
supervisión y volver a abrir el archivo de supervisión con el distintivo O_CREAT.
Las apariciones de sucesos locales no disponibles también harán que se desbloqueen select() y read()
antes de que se haya desencadenado el número solicitado de apariciones de sucesos si el consumidor ha
especificado un valor NOTIFY_CNT > 1. Por ejemplo, si el consumidor está supervisando el archivo /foo
con un valor NOTIFY_CNT=3, el consumidor realizará una devolución de select() o read() si /foo se
elimina, aunque sea la primera aparición de un suceso con /foo.

Utilización de AIX Event Infrastructure para sondeos


AIX Event Infrastructure no requiere que los generadores de sucesos mantengan siempre el valor actual
de sucesos que se puede supervisar.
Esto es para permitir un mayor rendimiento ya que los generadores de sucesos no tienen la actividad
general que supone mantener este valor si no se están supervisando las apariciones del suceso.
Esto supone un problema cuando se utiliza el sondeo síncrono. Dado que no siempre se puede obtener el
valor actual de un suceso en cada punto del tiempo, las llamadas poll() o select() síncrona se manejan de
este modo:
• Cuando un proceso emite select() o poll() en un archivo de supervisión por primera vez, la extensión del
kernel AIX Event Infrastructure registrará dicho suceso para su supervisión con el generador de
sucesos.
– Para los generadores de sucesos que mantienen el valor actual, se devolverá el valor actual al
registro de sucesos de la extensión del kernel de AIX Event Infrastructure. Este valor se comprobará
con el valor de umbral del consumidor en ese momento. Si se ha superado el umbral del consumidor,
select() o poll() indicarán que se ha producido el suceso y tendrán un valor RC_FROM_EVPROD de
EALREADY.
• Se ignoran los distintivos POLLSYNC. Un suceso continúa registrado con el generador de sucesos hasta
que el suceso se produce el número de veces especificado o hasta que el usuario cierra el archivo.
• Las llamadas poll() posteriores tendrán el comportamiento siguiente:
– Si todavía no se ha producido el suceso, la llamada no devolverá ningún suceso de retorno.
– Si el suceso se ha producido el número de veces especificado desde la última llamada poll(), se
establecerán los sucesos de retorno para indicar que el suceso se ha producido.

Lectura de datos de sucesos


Los datos de sucesos de AIX Event Infrastructure constan de pares de palabra clave-valor.

Gestión del sistema operativo 385


Los datos de sucesos sólo se pueden leer una vez y en una sola llamada read() sólo se devolverá la
aparición de un suceso que contenga un valor de datos. Por ejemplo, presuponiendo que se producen dos
sucesos antes de que el consumidor lea el archivo de supervisión y cada suceso contiene 256 bytes de
datos. Si el consumidor llama a read() para 4096 bytes, sólo se devolverán al usuario los 256 byters del
primer suceso. Será necesario realizar una segunda llamada read() para obtener los datos del segundo
suceso. Se ignorará cualquier desplazamiento dado y los datos se leerán a partir del último byte no leído.
Los datos de sucesos tendrán como máximo 4096 bytes, aunque la mayor parte de los sucesos serán de
un tamaño inferior ( < 512 bytes). Se recomienda que cuando se lean sucesos, se utilice un
almacenamiento intermedio lo suficientemente grande para evitar que sólo se lea una parte de un
suceso.
Los datos de sucesos en AHAFS constan de pares de palabra clave = valor, con la excepción de
BUF_WRAP, EVENT_OVERFLOW, BEGIN_EVENT_INFO, END_EVENT_INFO, BEGIN_EVPROD_INFO,
END_EVPROD_INFO y STACK_TRACE, que son palabras clave especiales sin ningún valor. Estas son las
palabras clave que puede ver en los datos de sucesos:

Tabla 66. Palabras clave


Clave Valor Detalles
BUF_WRAP Ninguno El almacenamiento intermedio
del consumidor se maneja como
un almacenamiento intermedio
circular. Si los datos del suceso
más reciente sobregraban datos
no leídos, esta palabra clave será
la siguiente serie que devolverá
la llamada read(), incluso si el
consumidor ha leído
parcialmente la entrada anterior.
La llamada read() siguiente
devolverá el siguiente suceso
completo.

EVENT_OVERFLOW Ninguno Si los datos del suceso son


demasiado grandes para el
almacenamiento de datos de
sucesos del consumidor, se
devolverá esta palabra clave en
la primera llamada read(). Una
llamada read() posterior
devolverá los datos de sucesos
que hayan podido entrar en el
almacenamiento intermedio.
Nota: Si se encuentra
EVENT_OVERFLOW, la serie final
END_EVENT_INFO no estará
presente.

BEGIN_EVENT_INFO Ninguno Esta palabra clave significa el


inicio de los datos para una
aparición de sucesos.

END_EVENT_INFO Ninguno Esta palabra clave significa el


final de los datos para esta
aparición de sucesos específica.

386 AIX Versión 7.2: Gestión del sistema operativo


Tabla 66. Palabras clave (continuación)
Clave Valor Detalles
TIME_tvsec TIME_tvnsec Entero Estos dos campos registran la
indicación de la hora de la
aparición del suceso como
segundos y nanosegundos desde
Epoch.

SEQUENCE_NUM Entero Este campo registra el número de


veces que se ha producido el
suceso desde la primera llamada
select() o read() de bloqueo
satisfactoria. Este número se
restaura en 0 si falla la llamada
select() o read() de bloqueo, o si
el consumidor deja de supervisar
el suceso (si sobregraba las
especificaciones de supervisión
del suceso o si alcanza un
número de apariciones de
sucesos igual al valor de
NOTIFY_CNT especificado).

PID Entero El ID del proceso que ha


desencadenado la aparición del
suceso. Sólo está disponible con
un generador de sucesos que ha
especificado la posibilidad
AHAFS_STKTRACE_AVAILABLE
pero no la posibilidad
AHAFS_CALLBACK_INTRCNTX.

UID Entero El ID de usuario del usuario que


ha desencadenado la aparición
del suceso. Sólo está disponible
con un generador de sucesos que
ha especificado la posibilidad
AHAFS_STKTRACE_AVAILABLE
pero no la posibilidad
AHAFS_CALLBACK_INTRCNTX.

UID_LOGIN Entero El ID de inicio de sesión del


usuario que ha desencadenado la
aparición del suceso. Sólo está
disponible con un generador de
sucesos que ha especificado la
posibilidad
AHAFS_STKTRACE_AVAILABLE
pero no la posibilidad
AHAFS_CALLBACK_INTRCNTX.

Gestión del sistema operativo 387


Tabla 66. Palabras clave (continuación)
Clave Valor Detalles
GID Entero El ID de grupo del usuario que ha
desencadenado la aparición del
suceso. Sólo está disponible con
un generador de sucesos que ha
especificado la posibilidad
AHAFS_STKTRACE_AVAILABLE
pero no la posibilidad
AHAFS_CALLBACK_INTRCNTX.

PROG_NAME Serie El nombre del proceso que ha


desencadenado la aparición del
suceso. Sólo está disponible con
un generador de sucesos que ha
especificado la posibilidad
AHAFS_STKTRACE_AVAILABLE
pero no la posibilidad
AHAFS_CALLBACK_INTRCNTX.

CURRENT_VALUE Entero de 64 bits sin signo, en Esta clave sólo es para los
formato decimal generadores de sucesos
AHAFS_THRESHOLD_VALUE y
devolverá el valor actual del
suceso en el momento en que se
ha detectado la aparición del
suceso. Tenga en cuenta que
debido al retardo entre el
momento en que se notifica un
proceso y el momento en que se
leen los datos del suceso, el valor
actual real del suceso puede
haber cambiado.

RC_FROM_EVPROD Entero de 32 bits, en formato Este código de retorno procede


decimal del generador de sucesos, ya sea
como resultado de un error al
intentar configurar el suceso o
como resultado de la aparición
de un suceso. Generalmente, los
códigos de sucesos inferiores a
256 indican un error cuando
intentan registrar el suceso con
el generador de sucesos. Algunos
generadores de sucesos
devolverán sucesos de más de
256 para proporcionar más
información acerca de la
aparición del suceso. Estos
códigos de retorno se
documentan en sys/
ahafs_evProds.h

388 AIX Versión 7.2: Gestión del sistema operativo


Tabla 66. Palabras clave (continuación)
Clave Valor Detalles
BEGIN_EVPROD_INFO Serie* Estas dos palabras clave marcan
END_EVPROD_INFO el inicio y el fin de la serie
devuelta por el generador de
sucesos. Siempre habrá una línea
nueva después de
BEGIN_EVPROD_INFO y antes
de END_EVPROD_INFO. Para los
consumidores que hayan
especificado CLUSTER=YES,
aquí es donde se proporcionará
la información del nodo.

STACK_TRACE Serie* Para los consumidores que han


especificado INFO_LVL=3 con un
generador de sucesos que ha
especificado la posibilidad
AHAFS_STKTRACE_AVAILABLE
, pero no así la posibilidad
AHAFS_CALLBACK_INTRCNTX,
se proporcionará el rastreo de
pila de la aparición del suceso. La
palabra clave STACK_TRACE
indica que los datos de suceso
restantes, hasta la serie
END_EVENT_INFO, forman la
pila de la aparición del suceso.

NUM_EVDROPS_INTRCNTX Entero Esta palabra clave representa el


número de apariciones del
suceso de interrupción de
contexto que se han descartado
desde el momento en que se
especifica en las palabras claves
TIME0_tvsec y TIME0_tvnsec
en el informe. Las apariciones de
sucesos se descartan sólo
cuando la frecuencia de la
aparición del suceso es elevada.
TIME0_tvsec Entero Estas palabras clave registran la
indicación de fecha y hora del
TIME0_tvnsec
primer descarte de aparición de
suceso en segundos y
nanosegundos desde el Epoch.
Estas palabras clave se informan
junto a la palabra clave
NUM_EVDROPS_INTRCNTX.

Consolidación de sucesos duplicados


Si se produce el mismo suceso varias veces antes de que el consumidor haya leído los datos, las entradas
duplicadas se consolidarán en una entrada. Esta consolidación se indica mediante números de secuencia
no secuenciales sin una palabra clave BUF_WRAP correspondiente. La indicación de la hora y los
números de secuencia reflejarán la aparición más reciente del suceso.

Gestión del sistema operativo 389


Datos de suceso de ejemplo
Para un generador de sucesos que ha especificado AHAFS_THRESHOLD_STATE y
AHAFS_STKTRACE_AVAILABLE, y que pasará un mensaje a los consumidores de sucesos, los tres
niveles de salida serán similares a la siguiente salida:

INFO_LVL=1 INFO_LVL=2 INFO_LVL=3

BEGIN_EVENT_INFO BEGIN_EVENT_INFO BEGIN_EVENT_INFO


TIME_tvsec=1269863383 TIME_tvsec=1269863383 TIME_tvsec=1269863383
TIME_tvnsec=455993143 TIME_tvnsec=455993143 TIME_tvnsec=455993143
SEQUENCE_NUM=0 SEQUENCE_NUM=0 SEQUENCE_NUM=0
PID=6947038 PID=6947038 PID=6947038
UID=0 UID=0 UID=0
UID_LOGIN=0 UID_LOGIN=0 UID_LOGIN=0
GID=0 GID=0 GID=0
PROG_NAME=cat PROG_NAME=cat PROG_NAME=cat
RC_FROM_EVPROD=1000 RC_FROM_EVPROD=1000 RC_FROM_EVPROD=1000
END_EVENT_INFO BEGIN_EVPROD_INFO BEGIN_EVPROD_INFO
event producer message here event producer message here
END_EVPROD_INFO END_EVPROD_INFO
END_EVENT_INFO STACK_TRACE
ahafs_prod_callback+3C4
ahafs_cbfn_wrapper+30
ahafs_vn_write+204
vnop_rdwr+7E4
vno_rw+B4
rwuio+12C
rdwr+184
kewrite+16C
.svc_instr
write+1A4
_xwrite+6C
_xflsbuf+B0
__flsbuf+9C
copyopt_ascii+2C0
scat+388
main+11C
__start+68
END_EVENT_INFO

Para un generador de sucesos que ha especificado AHAFS_THRESHOLD_VALUE_HI y no ha especificado


AHAFS_STKTRACE_AVAILABLE, y que pasará un mensaje a los consumidores de sucesos, los tres
niveles de salida serán similares a la salida siguiente:

INFO_LVL=1 INFO_LVL=2 INFO_LVL=3

BEGIN_EVENT_INFO BEGIN_EVENT_INFO BEGIN_EVENT_INFO


TIME_tvsec=1269866715 TIME_tvsec=1269866715 TIME_tvsec=1269866715
TIME_tvnsec=16678418 TIME_tvnsec=16678418 TIME_tvnsec=16678418
SEQUENCE_NUM=0 SEQUENCE_NUM=0 SEQUENCE_NUM=0
CURRENT_VALUE=3 CURRENT_VALUE=3 CURRENT_VALUE=3
RC_FROM_EVPROD=1000 RC_FROM_EVPROD=1000 RC_FROM_EVPROD=1000
END_EVENT_INFO BEGIN_EVPROD_INFO BEGIN_EVPROD_INFO
event producer message here event producer message here
END_EVPROD_INFO END_EVPROD_INFO
END_EVENT_INFO END_EVENT_INFO

Formato de errores
Si existe un error en el generador de sucesos, todos los generadores de sucesos tendrán el formato
siguiente para todos los INFO_LVL:

BEGIN_EVENT_INFO
TIME_tvsec=1269868036
TIME_tvnsec=966708948
SEQUENCE_NUM=0
RC_FROM_EVPROD=20
END_EVENT_INFO

390 AIX Versión 7.2: Gestión del sistema operativo


Si un consumidor está supervisando un suceso AHAFS_THRESHOLD_VALUE y el valor actual ya supera el
umbral solicitado, también se utilizará el formato de error para registrar este suceso EALREADY:

BEGIN_EVENT_INFO
TIME_tvsec=1269868036
TIME_tvnsec=966708948
SEQUENCE_NUM=0
CURRENT_VALUE=1
RC_FROM_EVPROD=56
END_EVENT_INFO

BUF_WRAP y EVENT_OVERFLOW
Si se sobrescriben los datos no leídos con los datos de una nueva aparición del suceso, la primera salida
de read() en el archivo de supervisión será la palabra clave BUF_WRAP. Si se produce un reinicio del
almacenamiento intermedio Y un desbordamiento de suceso, BUF_WRAP siempre aparecerá en primer
lugar, seguido de EVENT_OVERFLOW. La siguiente es una salida de ejemplo de read() en el caso en que
se tenga tanto un reinicio del almacenamiento intermedio como un desbordamiento de sucesos:
La primera llamada read() devolverá:

BUF_WRAP

La segunda llamada read() devolverá:

EVENT_OVERFLOW

La tercera llamada read() devolverá los datos de suceso que ha podido insertar en el almacenamiento
intermedio:

BEGIN_EVENT_INFO
TIME_tvsec=1269863383
TIME_tvnsec=455993143
SEQUENCE_NUM=0
PID=6947038
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=cat
RC_FROM_EVPROD=1000
BEGIN_EVPROD_INFO
event producer message here
END_EVPROD_INFO
STACK_TRACE
ahafs_prod_callback+3C4
ahafs_cbfn_wrapper+30
ahafs_vn_write+204
vnop_rdwr+7E4
vno_rw+B4
rwuio+12C
rdwr+184
kewrite+16C
.svc_instr
write+1A4
_xwri

Si la información del suceso entra con la rapidez suficiente, es posible que se reciban dos entradas
BUF_WRAP seguidas. Si ve BUF_WRAP, aumente el tamaño del almacenamiento intermedio (utilizando
BUF_SIZE cuando grabe en el archivo de supervisión).

NUM_EVDROPS_INTRCNTX
Si se elimina una aparición de suceso de interrupción de contexto debido a una frecuencia elevada de
apariciones de suceso, la salida de una llamada read() en el archivo de sucesos, que representa dicho
suceso, contiene la palabra clave NUM_EVDROPS_INTRCNTX justo después de la línea que contiene la
palabra clave BEGIN_EVENT_INFO.
En el ejemplo siguiente se representa una salida de una llamada read():

BEGIN_EVENT_INFO
BEGIN_EVENT_INFO

Gestión del sistema operativo 391


NUM_EVDROPS_INTRCNTX=5508
TIME0_tvsec=1353437661
TIME0_tvnsec=75494625
TIME_tvsec=1353437661
TIME_tvnsec=741365037
SEQUENCE_NUM=6663
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
...msg desde generador-suceso...
END_EVPROD_INFO
END_EVENT_INFO

Este salida de ejemplo contiene los siguientes conjuntos de información:


• El valor NUM_EVDROPS_INTRCNTX=5508 es el número de apariciones del sucesos de interrupción de
contexto que se han descartado desde el momento en que se especifican que se especifica en los
campos TIME0_tvsec y TIME0_tvnsec.
• La información restante (es decir, SEQUENCE_NUM=6663, RC_FROM_EVPROD=0, ...msg from
event-producer..., etc) es sobre el suceso que se ha producido en el momento que se especifica
en los campos TIME_tvsec y TIME_tvnsec.

Generadores de sucesos predefinidos

modFile
El generador de sucesos modFile supervisa las modificaciones del contenido de un archivo.
Visión general
El generador de sucesos modFile reside en el directorio fs y supervisa las modificaciones de un
archivo. Se supervisan las siguientes operaciones vnode: vnop_rdwr(), vnop_map_lloff(),
vnop_remove(), vnop_ftrunc(), vnop_fclear() y vnop_rename(). Las modificaciones que no pasan a
través de la capa LFS no se pueden supervisar (esto es, grabaciones en los archivos correlacionados).
Los archivos no se pueden supervisar si:
• Están en un sistema de archivos remoto.
• Están en un sistema de archivos de tipo ahafs, procfs o namefs.
• Son un enlace simbólico.
• Residen bajo un directorio que acaba con una extensión de AIX Event Infrastructure
(.mon, .list, .monFactory).
• No se pueden supervisar los archivos de supervisión cuyo nombre de vía de acceso completo sea
mayor que MAXPATHLEN en el seudosistema de archivos de AIX Event Infrastructure.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_STKTRACE_AVAILABLE
AHAFS_REMOTE_EVENT_ENABLED

Códigos de retorno
El generador de sucesos modFile utiliza códigos de retorno definidos en <sys/ahafs_evProds.h>.
Estos códigos de retorno se utilizan para indicar cómo se ha modificado el contenido del directorio
supervisado:
AHAFS_MODFILE_WRITE
Se ha grabado en el archivo supervisado.
AHAFS_MODFILE_UNMOUNT
El sistema de archivos con tienen el archivo supervisado se ha desmontado. Este es un suceso no
disponible.
AHAFS_MODFILE_MAP
Un proceso ha correlacionado una parte del archivo supervisado para grabación.

392 AIX Versión 7.2: Gestión del sistema operativo


AHAFS_MODFILE_REMOVE
El archivo supervisado se ha eliminado. Este es un suceso no disponible.
AHAFS_MODFILE_RENAME
Se ha cambiado el nombre del archivo supervisado. Este es un suceso no disponible.
AHAFS_MODFILE_FCLEAR
Un proceso ha emitido fclear para el archivo supervisado.
AHAFS_MODFILE_FTRUNC
Un proceso ha emitido ftrunc para el archivo supervisado.
AHAFS_MODFILE_OVERMOUNT
El archivo supervisado está sobremontado.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar las modificaciones de archivos, se debe crear un archivo de supervisión con la misma
vía de acceso que el archivo que desea supervisar bajo el directorio [Link]. Por
ejemplo, para supervisar /etc/passwd, se debe utilizar el archivo /aha/fs/[Link]/etc/
[Link].
Datos de suceso de ejemplo
Los siguientes datos de suceso se generan a partir de la grabación de un suceso en un archivo
supervisado. Esta es la salida que se muestra con un valor de INFO_LVL de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271703118
TIME_tvnsec=409201093
SEQUENCE_NUM=0
PID=5701678
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=cat
RC_FROM_EVPROD=1000
STACK_TRACE
aha_cbfn_wrapper+30
ahafs_evprods+510
aha_vn_write+154
vnop_rdwr+7E8
vno_rw+B4
rwuio+100
rdwr+188
kewrite+104
.svc_instr
write+1A4
_xwrite+6C
_xflsbuf+A8
__flsbuf+C0
copyopt+2E8
scat+22C
main+11C
__start+68
END_EVENT_INFO

modFileAttr
El generador de sucesos modFileAttr supervisa las modificaciones de los atributos de un archivo.
Visión general
El generador de sucesos modFileAttr reside en el directorio fs y supervisa las modificaciones de los
atributos de un archivo o de un directorio (modalidad, propiedad y ACL). Se supervisan las siguientes
operaciones vnode: vnop_setattr() (sólo para operaciones V_OWN y V_MODE), vnop_setacl(),
vnop_setxacl(), vnop_remove(), vnop_rename() y vnop_rmdir().
Los archivos o directorios no se pueden supervisar si:
• Están en un sistema de archivos remoto

Gestión del sistema operativo 393


• Están en un sistema de archivos de tipo ahafs, procfs o namefs
• Residen bajo un directorio que acaba con una extensión de AIX Event Infrastructure
(.mon, .list, .monFactory)
• No se pueden supervisar los archivos de supervisión cuyo nombre de vía de acceso completo sea
mayor que MAXPATHLEN en el seudosistema de archivos de AIX Event Infrastructure.
Posibilidades

AHAFS_THRESHOLD_STATE

AHAFS_STKTRACE_AVAILABLE

AHAFS_REMOTE_EVENT_ENABLED

Códigos de retorno
El generador de sucesos modFileAttr utiliza códigos de retorno definidos en <sys/ahafs_evProds.h>.
Estos códigos de retorno se utilizan para indicar cómo se ha modificado el contenido del directorio
supervisado:
AHAFS_MODFILEATTR_UNMOUNT
El sistema de archivos que contiene el directorio o el archivo supervisado se ha desmontado. Este
es un suceso no disponible.
AHAFS_MODFILEATTR_REMOVE
El directorio o el archivo supervisado se ha eliminado. Este es un suceso no disponible.
AHAFS_MODFILEATTR_RENAME
El directorio o el archivo supervisado se ha renombrado. Este es un suceso no disponible.
AHAFS_MODFILEATTR_OVERMOUNT
El directorio o el archivo supervisado se ha sobremontado. Este es un suceso no disponible.
AHAFS_MODFILEATTR_SETACL
Los ACL del directorio o del archivo supervisado se han modificado.
AHAFS_MODFILEATTR_SETOWN
La propiedad del directorio o del archivo supervisado se ha modificado.
AHAFS_MODFILEATTR_SETMODE
La modalidad del directorio o del archivo supervisado se ha modificado.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar las modificaciones de archivos, se debe crear un archivo de supervisión con la misma
vía de acceso que el archivo que desea supervisar bajo el directorio [Link]. Por
ejemplo, para supervisar /etc/passwd, se debe utilizar el archivo /aha/fs/
[Link]/etc/[Link].
Datos de suceso de ejemplo
Los siguientes datos de suceso se generan a partir de que un proceso cambie la modalidad de un
archivo supervisado. Esta es la salida que se muestra con un valor de INFO_LVL de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1291994430
TIME_tvnsec=760097298
SEQUENCE_NUM=0
PID=5767216
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=chmod
RC_FROM_EVPROD=1010
STACK_TRACE
ahafs_evprods+70C

394 AIX Versión 7.2: Gestión del sistema operativo


aha_process_attr+120
vnop_setattr+21C
vsetattr@AF13_1+20
setnameattr+B4
chmod+110
.svc_instr
change+3C8
main+190
__start+68
END_EVENT_INFO

modDir
El generador de sucesos modDir supervisa las modificaciones del contenido de un directorio.
Visión general
El generador de sucesos modDir reside en el directorio fs y supervisa las modificaciones del
contenido de un directorio. Se supervisan las siguientes operaciones vnode: vnop_create(),
vnop_link(), vnop_symlink(), vnop_remove(), vnop_rename(), vnop_mkdir() y vnop_rmdir().
Los directorios no se pueden supervisar si:
• Están en un sistema de archivos remoto
• Están en un sistema de archivos de tipo ahafs, procfs o namefs
• Son un enlace simbólico
• Residen bajo un directorio que acaba con una extensión de AIX Event Infrastructure
(.mon, .list, .monFactory)
• No se pueden supervisar los archivos de supervisión cuyo nombre de vía de acceso completo sea
mayor que MAXPATHLEN en el seudosistema de archivos de AIX Event Infrastructure.
El generador de sucesos modDir no supervisa de forma recursiva las modificaciones de directorios.
Sólo se supervisan las modificaciones del directorio especificado.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_STKTRACE_AVAILABLE
AHAFS_REMOTE_EVENT_ENABLED

Códigos de retorno
El generador de sucesos modDir utiliza códigos de retorno definidos en <sys/ahafs_evProds.h>.
Estos códigos de retorno se utilizan para indicar cómo se ha modificado el contenido del directorio
supervisado:
AHAFS_MODDIR_CREATE
Se ha creado un objeto del sistema nuevo bajo el directorio supervisado.
AHAFS_MODDIR_UNMOUNT
El sistema de archivos con tienen el directorio supervisado se ha desmontado. Este es un suceso
no disponible.
AHAFS_MODDIR_REMOVE
Se ha eliminado un objeto del sistema de archivos dentro del directorio supervisado.
AHAFS_MODDIR_REMOVE_SELF
El directorio supervisado se ha eliminado o se ha cambiado su nombre. Este es un suceso no
disponible.
Mensaje del generador de sucesos
El nombre del objeto del sistema de archivos que ha desencadenado el suceso se incluye en los datos
del suceso.
Archivos de supervisión aceptables
Para supervisar las modificaciones en el contenido de un directorio, se debe crear un archivo de
supervisión con la misma vía de acceso que el directorio que desea supervisar bajo el directorio

Gestión del sistema operativo 395


[Link]. Por ejemplo, para supervisar si hay modificaciones en el directorio /home/
cheryl, se debe utilizar el archivo de supervisión /aha/fs/[Link]/home/[Link].
Datos de suceso de ejemplo
Los siguientes datos de suceso se han generado a partir de un archivo nuevo denominado file1 que se
está creando en un directorio supervisado. Esta es la salida que se muestra con un valor de INFO_LVL
de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271780397
TIME_tvnsec=24369022
SEQUENCE_NUM=0
PID=6095102
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=touch
RC_FROM_EVPROD=1000
BEGIN_EVPROD_INFO
file1
END_EVPROD_INFO
STACK_TRACE
aha_cbfn_wrapper+30
ahafs_evprods+510
aha_process_vnop+138
vnop_create_attr+4AC
openpnp+418
openpath+100
copen+294
kopen+1C
.svc_instr
open+F8
creat64+1C
main+1EC
__start+68
END_EVENT_INFO

utilFs
El generador de sucesos utilFs supervisa la utilización de un sistema de archivos.
Visión general
El generador de sucesos utilFs supervisa la utilización de un sistema de archivos como un porcentaje.
Reside en el directorio fs. Actualmente, sólo los sistemas de archivos JFS2 dan soporte a la
supervisión utilFs. Después de cada grabación, creación y supresión de archivos, se comprueba el
uso del sistema de archivos para ver si cumple o supera el umbral dado. Es posible que algunas
operaciones específicas del sistema de archivos afecten el uso del sistema de archivos, pero utilFs
puede no detectarlas hasta la siguiente grabación, creación o supresión de archivos. Los umbrales
que se superan debido a una supresión de objetos de archivos no se notificarán hasta la siguiente
grabación, creación o supresión de archivos.
Los sistemas de archivos cuya vía de acceso de archivo de supervisión supera el valor de
MAXPATHLEN en AHAFS no se pueden supervisar.
Para evitar un desbordamiento de notificaciones de sucesos y su posible impacto en el rendimiento,
se recomienda que los sucesos utilFs se supervisen con un valor de NOTIFY_CNT de 1.
Posibilidades

AHAFS_THRESHOLD_VALUE_HIGH
AHAFS_THRESHOLD_VALUE_LOW
AHAFS_REMOTE_EVENT_ENABLED

Los umbrales especificados deben ser entre 1 y 100, inclusive.


Códigos de retorno
El generador de sucesos utilFs utiliza códigos de retorno definidos en <sys/ahafs_evProds.h>.

396 AIX Versión 7.2: Gestión del sistema operativo


Estos códigos de retorno se utilizan para indicar cómo se ha modificado el contenido del directorio
supervisado:
AHAFS_UTILFS_THRESH_HIT
El sistema de archivos que se está supervisando ha alcanzado el umbral especificado.
AHAFS_UTILFS_UNMOUNT
El sistema de archivos que se está supervisando se ha desmontado. Este es un suceso no
disponible.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar el uso del sistema de archivos, se debe crear un archivo de supervisión con la misma
vía de acceso que el punto de montaje del sistema de archivos que se está supervisando bajo el
directorio [Link]. Por ejemplo, para supervisar el sistema de archivos /data/fs1, se debe
utilizar el archivo de supervisión /aha/fs/[Link]/data/[Link].
Datos de suceso de ejemplo
Los siguientes son datos de sucesos de un suceso AHAFS_UTILFS_THRESH_HIT para un valor de
INFO_LVL de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271705858
TIME_tvnsec=704241888
SEQUENCE_NUM=0
CURRENT_VALUE=10
RC_FROM_EVPROD=1000
END_EVENT_INFO

waitTmCPU
El generador de sucesos waitTmCPU supervisa el tiempo promedio de hebras ejecutables.
Visión general
El generador de sucesos waitTmCPU supervisa el tiempo promedio de espera de hebras ejecutables
que están esperando a obtener el tiempo de CPU en intervalos de un segundo, medidos en
milisegundos. waitTmCPU reside en el directorio cpu.
Posibilidades

AHAFS_THRESHOLD_VALUE_HIGH
AHAFS_CALLBACK_INTRCNTX
AHAFS_REMOTE_EVENT_ENABLED

Los umbrales especificados deben ser mayores que 0.


Códigos de retorno
Este generador de sucesos siempre devuelve 0 cuando se produce el suceso.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar este suceso, se debe utilizar el archivo de supervisión siguiente:

/aha/cpu/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.

Gestión del sistema operativo 397


Datos de suceso de ejemplo
Los siguientes son datos de suceso de ejemplo de un suceso waitTmCPU con un valor de INFO_LVL
de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271779504
TIME_tvnsec=18056777
SEQUENCE_NUM=0
CURRENT_VALUE=4
RC_FROM_EVPROD=0
END_EVENT_INFO

waitersFreePg
El generador de sucesos waitersFreePg supervisa el número de hebras que están esperando una trama
libre.
Visión general
El generador de sucesos waitersFreePg supervisa el número de hebras que están esperando una
trama libre durante intervalos de un segundo. waitersFreePg reside en el subdirectorio mem.
Posibilidades

AHAFS_THRESHOLD_VALUE_HIGH
AHAFS_CALLBACK_INTRCNTX
AHAFS_REMOTE_EVENT_ENABLED

Los umbrales especificados deben ser mayores que 0.


Códigos de retorno
Este generador de sucesos siempre devuelve 0 cuando se produce el suceso.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar este suceso, se debe utilizar el archivo de supervisión siguiente:

/aha/mem/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de ejemplo de un suceso waitersFreePg con un valor de
INFO_LVL de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271779680
TIME_tvnsec=347233732
SEQUENCE_NUM=0
CURRENT_VALUE=19843
RC_FROM_EVPROD=0
END_EVENT_INFO

waitTmPgInOut
El generador de sucesos waitTmPgInOut supervisa el promedio de tiempo de espera en milisegundos
para las hebras que están a la espera de operaciones de entrada o salida de página.
Visión general
El generador de sucesos waitTmPgInOut supervisa el promedio de tiempo de espera en
milisegundos para las hebras que están a la espera de que se completen las operaciones de entrada o
salida de página durante un segundo período. El generador de sucesos waitTmPgInOut reside bajo el
directorio mem.

398 AIX Versión 7.2: Gestión del sistema operativo


Posibilidades

AHAFS_THRESHOLD_VALUE_HIGH
AHAFS_CALLBACK_INTRCNTX
AHAFS_REMOTE_EVENT_ENABLED

Los umbrales especificados deben ser mayores que 0.


Códigos de retorno
Este generador de sucesos siempre devuelve 0 cuando se produce el suceso.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar este suceso, se debe utilizar el archivo de supervisión siguiente:

/aha/mem/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de ejemplo de un suceso waitTmPgInOut con un valor de
INFO_LVL de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271779359
TIME_tvnsec=941699413
SEQUENCE_NUM=0
CURRENT_VALUE=12
RC_FROM_EVPROD=0
END_EVENT_INFO

vmo
El generador de sucesos vmo supervisa los cambios en los parámetros ajustables vmo.
Visión general
El generador de sucesos vmo reside bajo el directorio mem y supervisa los cambios de los ajustables
vmo siguientes.
Nota: El mandato vmo es un mandato que se autodocumenta. Es posible que algunos de los
parámetros ajustables de la siguiente lista no estén soportados.
• npskill
• npswarn
• force_relalias_lite
• low_ps_handling
• maxpin% (se debe supervisar como el archivo maxpin_pct.mon)
• nokilluid
• relalias_percentage
• vmm_default_pspa
• npsrpgmin
• npsrpgmax
• npsscrubmin
• npsscrubmax
• scrubclean
• rpgcontrol
• rpgclean

Gestión del sistema operativo 399


• vm_modlist_threshold
• vmm_fork_policy
• lru_poll_interval
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_STKTRACE_AVAILABLE
AHAFS_REMOTE_EVENT_ENABLED

Códigos de retorno
Este generador de sucesos siempre devuelve 0 cuando se produce el suceso.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
Para supervisar cualquiera de los ajustables anteriores, se deben utilizar archivos de supervisión del
formato siguiente:

/aha/mem/[Link]/<tunable>.mon

Los archivos que no se corresponden con los sucesos anteriores no se pueden crear bajo este
directorio.
Datos de suceso de ejemplo
Los siguientes son datos de suceso de ejemplo de la modificación de un ajustable supervisado, con un
valor de INFO_LVL de 3.

BEGIN_EVENT_INFO
TIME_tvsec=1271770698
TIME_tvnsec=787565808
SEQUENCE_NUM=0
PID=5701808
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=vmo
RC_FROM_EVPROD=0
STACK_TRACE
aha_cbfn_wrapper+30
ahafs_evprods+510
vm_mon_tunable+B0
vm_chk_mod_tun+5CC
_vmgetinfo+53C
vmgetinfo+48
.svc_instr
vmo_write_vmsetkervars+134
vmo_write_dynamic_values+404
main+BC
__start+70
END_EVENT_INFO

schedo
Este generador de sucesos supervisa los cambios en los ajustables schedo.
Visión general
Actualmente, sólo se puede supervisar el ajustable vpm_xvcpus. Este generador de sucesos
devolverá una pila de rastreo y la información de suceso cuando se produzca el suceso. Este
generador de sucesos reside en el directorio cpu.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_STKTRACE_AVAILABLE
AHAFS_REMOTE_EVENT_ENABLED

400 AIX Versión 7.2: Gestión del sistema operativo


Códigos de retorno
Este generador de sucesos siempre devuelve 0 cuando se produce el suceso.
Mensaje del generador de sucesos
Este generador de sucesos no pasa ningún mensaje como parte de sus datos de sucesos.
Archivos de supervisión aceptables
El archivo de supervisión que se utiliza para supervisar este ajustable es:

/aha/cpu/[Link]/vpm_xvcpus.mon.

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de la modificación del ajustable vpm_xvcpus con un valor de
INFO_LVL de 3:

BEGIN_EVENT_INFO
TIME_tvsec=1271771009
TIME_tvnsec=251723285
SEQUENCE_NUM=0
PID=7143474
UID=0
UID_LOGIN=0
GID=0
PROG_NAME=schedo
RC_FROM_EVPROD=0
STACK_TRACE
aha_cbfn_wrapper+30
ahafs_evprods+510
schedtune+394
.svc_instr
schedo_write_schedparams+94
schedo_write_dynamic_values+6F0
main+1B0
__start+68
END_EVENT_INFO

pidProcessMon
El generador de sucesos pidProcessMon supervisa la muerte del proceso, en función del PID.
Visión general
El generador de sucesos pidProcessMon reside bajo el directorio cpu y supervisa la muerte del
proceso, en función del PID.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
El generador de sucesos pidProcessMon sólo devuelve un único código de retorno 0.
Mensaje del generador de sucesos
Este generador de suceso pasa el mensaje PROCESS_DOWN como parte de sus datos de suceso.
Archivos de supervisión aceptables
Para supervisar las muertes de procesos, se debe crear un archivo de supervisión bajo el directorio
[Link]. Se debe utilizar un archivo de supervisión con el formato

/aha/cpu/[Link]/<process_PID>.mon

Datos de suceso de ejemplo


Los siguientes datos de suceso se generan tras la muerte de un proceso supervisado. Esta es la salida
que se muestra con el valor predeterminado de INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1272348759

Gestión del sistema operativo 401


TIME_tvnsec=379259175
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=PROCESS_DOWN
END_EVPROD_INFO
END_EVENT_INFO

processMon
El generador de sucesos processMon supervisa la muerte de un proceso.
Visión general
El generador de sucesos processMon reside en el directorio cpu y supervisa la muerte del proceso, en
función del nombre de proceso. Sólo se supervisa el proceso padre de un proceso determinado con el
mismo nombre. Esto significa que, si se tiene un árbol de procesos abc (pid 123)->xyz (pid 345)-
>xyz (pid 567) y se solicita supervisar el proceso xyz, se supervisará en realidad (pid = 345).
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
El generador de sucesos processMon sólo devuelve un único código de retorno 0.
Mensaje del generador de sucesos
Este generador de suceso pasa el mensaje PROCESS_DOWN como parte de sus datos de suceso.
Archivos de supervisión aceptables
Para supervisar las muertes de procesos, se debe utilizar un archivo de supervisión con la misma vía
de acceso que la utilizada para iniciar el proceso, que debe crearse bajo el directorio
[Link]. Por ejemplo, para supervisar un proceso denominado test, ubicado en el
directorio /usr/samples/ahafs, se debe utilizar el archivo de supervisión /aha/cpu/
[Link]/usr/samples/ahafs/[Link].
Datos de suceso de ejemplo
Los siguientes datos de suceso se generan tras la muerte de un proceso supervisado. Esta es la salida
que se muestra con el valor predeterminado de INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1272348909
TIME_tvnsec=482502597
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=PROCESS_DOWN
END_EVPROD_INFO
END_EVENT_INFO

inetsock
El generador de sucesos inetsock supervisa las operaciones de zócalo del protocolo TCP (Transmission
Control Protocol)y del protocolo UDP (User Datagram Protocol).
Visión general
El generador de sucesos inetsock se coloca bajo el directorio de red y supervisa las operaciones de
zócalo.
Las operaciones de zócalo siguiente se supervisan para TCP:
• Creación de un zócalo
• Vinculación de un puerto o la dirección al zócalo
• Escuchar en el zócalo
• Aceptación y establecimiento de una conexión en el zócalo
• Conexión a un zócalo

402 AIX Versión 7.2: Gestión del sistema operativo


• Desconexión de un zócalo
• Cierre del zócalo
Las operaciones de zócalo siguientes se supervisan para UDP:
• Creación de un zócalo
• Vinculación de un puerto o la dirección al zócalo
• Cierre del zócalo
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_CALLBACK_INTRCNTX
AHAFS_REMOTE_EVENT_ENABLED

Mensaje del generador de sucesos


Este generador de sucesos pasa información que está disponible en el bloque de control de zócalo y
protocolo como parte de sus datos de suceso.
Los siguientes datos se pasan para las operaciones de zócalo TCP:

Operación de zócalo Datos


PRU_ATTACH Información común:
• PROG_NAME
• SO_FAMILY
• SO_PID
• SO_PROTO
• SO_TYPE
• SO_UID

PRU_BIND Información común más los elementos siguientes:


• SO_LADDR
• SO_LPORT

PRU_LISTEN Información común más los elementos siguientes:


• SO_LADDR
• SO_LPORT

PRU_ACCEPT Información común más los elementos siguientes:


• SO_FADDR
• SO_FPORT
• SO_LADDR
• SO_LPORT

PRU_CONNECT Información común más los elementos siguientes:


• SO_FADDR
• SO_FPORT
• SO_LADDR
• SO_LPORT

Gestión del sistema operativo 403


Operación de zócalo Datos
PRU_DISCONNECT Información común más los elementos siguientes:
• SO_FADDR
• SO_FPORT
• SO_LADDR
• SO_LPORT

PRU_DETACH, Información común más los elementos siguientes:


PRU_ABORT
• SO_LADDR
• SO_LPORT
• SO_FADDR
• SO_FPORT

Los siguientes datos se pasan para las operaciones de zócalo UDP:

Operación de zócalo Datos


PRU_ATTACH Información común:
• PROG_NAME
• SO_FAMILY
• SO_PID
• SO_PROTO
• SO_TYPE
• SO_UID

PRU_BIND, Información común más los elementos siguientes:


PRU_DYNBIND
• SO_LADDR
• SO_LPORT

PRU_DETACH, Información común más los elementos siguientes:


PRU_ABORT
• SO_LADDR
• SO_LPORT

Archivos de supervisión aceptables


Para supervisar las operaciones del zócalo, debe crearse un archivo de supervisión que tiene el
nombre de la operación del zócalo en el directorio [Link]. Por ejemplo, para
supervisar la creación del zócalo TCP, se utiliza el archivo de supervisión /aha/net/
[Link]/[Link]. De forma similar, para supervisar la creación del
zócalo UDP, se utiliza el archivo de supervisión /aha/net/[Link]/
[Link].
Los archivos siguientes se utilizan para todas las operaciones de zócalo TCP supervisables AHAFS
(Autonomic Estado Advisor File System):
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]

404 AIX Versión 7.2: Gestión del sistema operativo


• /aha/net/[Link]/[Link]
Los archivos siguientes se utilizan para todas las operaciones de zócalo UDP supervisables AHAFS:
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]
• /aha/net/[Link]/[Link]
Datos de suceso de ejemplo
Los siguientes datos de suceso se generan a partir de la creación de un zócalo. El siguiente ejemplo es
la salida que se muestra con una salida nivel de 2 (INFO_LVL=2):

AHAFS event: /aha/net/[Link]/[Link]


---------------------------------------------------

BEGIN_EVENT_INFO
Time: Lun Ene 23 [Link] 2012
Número de secuencia: 1
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
PROG_NAME=xmtopas
SO_FAMILY=2
SO_TYPE=1
SO_PROTO=6
SO_UID=0
SO_PID=5243048
END_EVPROD_INFO
END_EVENT_INFO

Sucesos de clúster
Cuando un sistema forma parte de un clúster, puede recibir notificaciones de los sucesos que se
producen en los otros nodos que forman parte del mismo clúster. Los generadores de sucesos que
especifican la posibilidad AHAFS_REMOTE_EVENT_ENABLED dan soporte a una supervisión que abarca
todo el clúster. Todos los generadores de sucesos de AIX Event Infrastructure, salvo pidProcessMon y
diskState pueden proporcionar este tipo de notificaciones remotas.
Comportamiento del mandato mkcluster con AIX Event Infrastructure:
Si AIX Event Infrastructure no se ha cargado en un sistema y se ejecuta el mandato mkcluster, el
seudosistema de archivos de AIX Event Infrastructure se montará en el directorio /aha y los nombres de
archivos de supervisión comenzarán a partir del directorio /aha. Si AIX Event Infrastructure ya se ha
cargado en un sistema y se ejecuta el mandato mkcluster, el pseudosistema de archivos de AIX Event
Infrastructure no se volverá a montar y los nombres de archivos de supervisión comenzarán a partir del
directorio en el que se haya montado el pseudosistema de archivos de AIX Event Infrastructure. Las
aplicaciones de cliente deben comprobar si el AIX Event Infrastructure se haya cargado el seudosistema
de archivos, para obtener las vías de acceso a archivos.
Para poder recibir los sucesos del clúster, debe especificar CLUSTER=YES cuando escriba el archivo de
supervisión que representa el suceso que se ha de supervisar en el clúster. Para que se puedan detectar
los sucesos remotos, un proceso de supervisión debe supervisar el suceso en cada nodo en que se
especifique CLUSTER=YES.
Los sucesos recibidos desde un nodo remoto no incluyen la información de usuario o de procesos, ni la
pila de rastreo, incluso si el generador de sucesos da soporte a la misma.
Para los sucesos recibidos no se da soporte al rastreo de pila de nodos remotos, incluso si el generador
de sucesos da soporte al mismo.
La información del clúster NODE_NUMBER, NODE_ID y CLUSTER_ID estará disponible entre los
delimitadores BEGIN_EVPROD_INFO y END_EVPROD_INFO para todos los sucesos de clúster. Esto
ayuda al programa de supervisión a identificar en qué nodo se ha producido el suceso. La información que
devuelve la salida del mandato lscluster -m en los campos: el ID abreviado del clúster para el nodo, el
uuid del nodo y los uuids del clúster devueltos en la salida de sucesos del AIX Event Infrastructure en los
campos NODE_NUMBER, NODE_ID, CLUSTER_ID respectivamente.

Gestión del sistema operativo 405


La siguiente es una salida de ejemplo de una aparición local y remota de un suceso con un INFO_LVL de
2, y un generador de sucesos que especifica la posibilidad AHAFS_STKTRACE_AVAILABLE.

Datos de suceso local Datos de suceso remoto

BEGIN_EVENT_INFO BEGIN_EVENT_INFO
TIME_tvsec=1262670289 TIME_tvsec=1262670289
TIME_tvnsec=453840229 TIME_tvnsec=248144872
SEQUENCE_NUM=0 SEQUENCE_NUM=0
PID=4194474 RC_FROM_EVPROD=0
UID=0 BEGIN_EVPROD_INFO
UID_LOGIN=0 EVENT_TYPE=PROCESS_DOWN
GID=0 NODE_NUMBER=1
PROG_NAME=[Link] NODE_ID=0xF079E8C801C11DF
RC_FROM_EVPROD=0 CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
BEGIN_EVPROD_INFO END_EVPROD_INFO
NODE_NUMBER=1 END_EVENT_INFO
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404

EVENT_TYPE=PROCESS_DOWN
END_EVPROD_INFO
END_EVENT_INFO

Generadores de sucesos predefinidos para una instancia AIX con reconocimiento de


clúster
Estos generadores de sucesos sólo están disponibles cuando el sistema forma parte de un clúster activo.

nodeList
El generador de sucesos nodeList supervisa los cambios de los miembros del clúster.
Visión general
El generador de sucesos nodeList reside en el directorio cluster y supervisa los nodos que se añaden
o eliminan o del clúster. Este generador de sucesos sólo está disponible cuando el sistema forma
parte de un clúster. Este suceso se genera cuando se añade o elimina un nodo del clúster (por
ejemplo, mediante el mandato chcluster).
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
nodeList devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes NODE_ADD y NODE_DELETE como parte de sus datos
de suceso. Asimismo, dado que se trata de un generador de sucesos del clúster, adicionalmente
pasará la información de NODE_NUMBER, NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios en la lista de nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/cluster/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso nodeList con el valor predeterminado de INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271922590
TIME_tvnsec=886742634
SEQUENCE_NUM=1

406 AIX Versión 7.2: Gestión del sistema operativo


RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=NODE_ADD
NODE_NUMBER=1
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

clDiskList
El generador de sucesos clDiskList supervisa los cambios de los miembros del clúster.
Visión general
El generador de sucesos clDiskList reside en el directorio disk y supervisa los nodos que se añaden o
eliminan del clúster. Este generador de sucesos sólo está disponible cuando el sistema forma parte
de un clúster. Este suceso se genera cuando se añade o elimina un disco del clúster (por ejemplo,
mediante el mandato chcluster).
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
clDiskList devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes DISK_ADD y DISK_DELETE como parte de sus datos
de suceso en el campo EVENT_TYPE. Pasará el DISK_NAME y el DISK_UID del disco
correspondiente. Asimismo, dado que forma parte de un generador de sucesos del clúster,
adicionalmente pasará la información NODE_NUMBER, NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios en la lista de discos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/disk/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso clDiskList con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271927983
TIME_tvnsec=696543410
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=DISK_ADD
DISK_NAME=cldisk1
DISK_UID=3E213600A0B800016726C000000FF4B8677C80F1724-100 FAStT03IBMfcp
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

linkedCl
El generador de sucesos linkedCl se genera cuando se enlaza o desenlaza un clúster con otro clúster.
Visión general
El generador de sucesos linkedCl reside en el directorio cluster y supervisa los cambios de estado de
enlace. Este generador de sucesos sólo está disponible cuando el sistema forma parte de un clúster.
Este suceso se genera cuando se enlaza o desenlaza un clúster con otro clúster.

Gestión del sistema operativo 407


Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
linkedCl devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de suceso pasa los mensajes LINK_UP o LINK_DOWN como parte de sus datos de
suceso. Pasará la información de LINK_ID correspondiente. Asimismo, dado que se trata de un
generador de sucesos del clúster, adicionalmente pasará la información de NODE_NUMBER,
NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios en la lista de nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/cluster/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso linkedCl con el valor predeterminado de INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271224025
TIME_tvnsec=795042625
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=LINK_DOWN
LINK_ID=0x7BE9C1BD
NODE_NUMBER=1
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

nodeContact
El generador de sucesos nodeContact supervisa el último estado de contacto del nodo de un clúster.
Visión general
El generador de sucesos nodeContact reside bajo el directorio cluster y supervisa el estado del último
contacto del nodo del clúster. Este generador de sucesos sólo está disponible cuando el sistema
forma parte de un clúster.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
nodeContact devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de suceso pasa los mensajes CONNECT_UP y CONNECT_DOWN como parte de sus
datos de suceso. Pasará el INTERFACE_NAME correspondiente. Asimismo, dado que se trata de un
generador de sucesos del clúster, adicionalmente pasará la información NODE_NUMBER, NODE_ID y
CLUSTER_ID.

408 AIX Versión 7.2: Gestión del sistema operativo


Archivos de supervisión aceptables
Para supervisar los cambios en la lista de nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/cluster/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso nodeContact con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271921874
TIME_tvnsec=666770128
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=CONNECT_DOWN
INTERFACE_NAME=en0
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

nodeState
El generador de sucesos nodeState supervisa el estado de un nodo del clúster.
Visión general
El generador de sucesos nodeState reside bajo el directorio del clúster y supervisa el estado de un
nodo del clúster. Este generador de sucesos sólo está disponible cuando el sistema forma parte de un
clúster. Este suceso se genera, por ejemplo, cuando se produce una colisión en el nodo o cuando éste
concluye.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
nodeState devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de suceso pasa los mensajes NODE_UP y NODE_DOWN como parte de sus datos de
suceso. Asimismo, dado que se trata de un generador de sucesos del clúster, adicionalmente pasará
la información NODE_NUMBER, NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios de estado de los nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/cluster/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso nodeState con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271921536
TIME_tvnsec=68254861
SEQUENCE_NUM=1
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO

Gestión del sistema operativo 409


EVENT_TYPE=NODE_UP
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

nodeAddress
El generador de sucesos nodeAddress supervisa la dirección de red del nodo.
Visión general
El generador de sucesos nodeAddress reside bajo el directorio cluster y supervisa la dirección de red
del nodo. Este generador de sucesos sólo está disponible cuando el sistema forma parte de un
clúster. Por ejemplo, este suceso se genera cuando se añade o elimina un alias de una interfaz de red.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
nodeAddress devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes ADDRESS_ADD y ADDRESS_DELETE como parte de
sus datos de suceso. Pasará la información de INTERFACE_NAME de la interfaz correspondiente y la
información FAMILY, ADDRESS y NETMASK de la dirección IP. Asimismo, dado que se trata de un
generador de sucesos del clúster, adicionalmente pasará la información NODE_NUMBER, NODE_ID y
CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios en la lista de nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/cluster/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso nodeAddress con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271922254
TIME_tvnsec=9053410
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=ADDRESS_ADD
INTERFACE_NAME=et0
FAMILY=2
ADDRESS=0x0A0A0A0A
NETMASK=0xFF000000
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

networkAdapterState
El generador de sucesos networkAdapterState supervisa la interfaz de red de un nodo del clúster.
Visión general
El generador de sucesos networkAdapterState reside bajo el directorio cluster y supervisa la interfaz
de red de un nodo del clúster. Este generador de sucesos sólo está disponible cuando el sistema
forma parte de un clúster. Este suceso se genera cuando una interfaz de red se desactiva o se activa.

410 AIX Versión 7.2: Gestión del sistema operativo


Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
networkAdapterState devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes ADAPTER_UP, ADAPTER_DOWN, ADAPTER_ADD y
ADAPTER_DEL como parte de sus datos de suceso. Pasará el INTERFACE_NAME correspondiente.
Asimismo, dado que se trata de un generador de sucesos del clúster, adicionalmente pasará la
información de NODE_NUMBER, NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios en la lista de nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/cluster/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso networkAdapterState con el valor predeterminado
de INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271920539
TIME_tvnsec=399378269
SEQUENCE_NUM=1
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=ADAPTER_UP
INTERFACE_NAME=en0
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

clDiskState
El generador de sucesos clDiskState supervisa los discos del clúster.
Visión general
El generador de sucesos clDiskState reside en el directorio disk y supervisa los discos del clúster.
Este generador de sucesos sólo está disponible cuando el sistema forma parte de un clúster. Este
suceso se genera cuando un disco del clúster se desactiva o se activa.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
clDiskState devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes DISK_UP y DISK_DOWN como parte de sus datos de
suceso en el campo EVENT_TYPE junto con el nombre del disco del clúster correspondiente.
Asimismo, dado que se trata de un generador de sucesos del clúster, adicionalmente pasará la
información NODE_NUMBER, NODE_ID y CLUSTER_ID.

Gestión del sistema operativo 411


Archivos de supervisión aceptables
Para supervisar los discos del clúster, se debe crear un archivo de supervisión bajo el directorio
[Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/disk/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso clDiskState con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271935734
TIME_tvnsec=265210314
SEQUENCE_NUM=1
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=DISK_DOWN
DISK_NAME=cldisk1
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

repDiskState
El generador de sucesos repDiskState supervisa los discos del repositorio.
Visión general
El generador de sucesos repDiskState reside en el directorio disk y supervisa los discos del
repositorio. Este generador de sucesos sólo está disponible cuando el sistema forma parte de un
clúster. Este suceso se genera cuando un disco del repositorio se desactiva o se activa.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
repDiskState devuelve 0 como código de retorno. Sólo si se elimina el clúster, se devuelve
AHAFS_CLUSTER_REMOVE (-1).
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes REP_UP y REP_DOWN como parte de sus datos de
suceso en el campo EVENT_TYPE, junto con el nombre de disco del disco del repositorio
correspondiente. Asimismo, dado que se trata de un generador de sucesos del clúster,
adicionalmente pasará la información de NODE_NUMBER, NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar discos del repositorio, se debe crear adicionalmente un archivo de supervisión en el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/disk/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso repDiskState con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271933757
TIME_tvnsec=134003703
SEQUENCE_NUM=1
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO

412 AIX Versión 7.2: Gestión del sistema operativo


EVENT_TYPE=REP_UP
DISK_NAME=hdisk2
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

diskState
El generador de sucesos diskstate supervisa los cambios de discos locales.
Visión general
El generador de sucesos diskState reside en el directorio disk y supervisa los cambios de discos
locales. Este generador de sucesos sólo está disponible cuando el sistema forma parte de un clúster.
Este suceso se genera cuando un disco local se desactiva o se activa. Este suceso se notificará sólo
para discos que están soportados por la infraestructura de almacenaje.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
diskState devuelve 0 como código de retorno. Sólo se devuelve AHAFS_CLUSTER_REMOVE (-1) si se
elimina el clúster.
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes LOCAL_UP y LOCAL_DOWN junto con el nombre de
disco local correspondiente como parte de sus datos de suceso. Asimismo, como generador de
sucesos del clúster adicionalmente pasará la información de NODE_NUMBER, NODE_ID y
CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar discos locales, se creará un archivo de supervisión en el directorio
[Link]. Se debe utilizar el nombre del archivo de supervisión con el formato

/aha/disk/[Link]/<hdiskn>.mon

junto con el nombre del disco local que se ha de supervisar.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso diskState con el valor predeterminado de
INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271935029
TIME_tvnsec=958362343
SEQUENCE_NUM=1
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=LOCAL_UP
DISK_NAME=hdisk4
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

vgState
El generador de sucesos vgstate puede verificar el estado del VG en un disco.
Visión general
El generador de sucesos vgState reside bajo el directorio disk. Este generador de sucesos sólo está
disponible cuando el sistema forma parte de un clúster. Cuando un se produce un suceso de
activación o desactivación de un disco local (registrado con diskState) se desencadena un suceso
VG_UP y VG_DOWN correspondiente para el grupo de volúmenes que reside en dicho disco. Con este

Gestión del sistema operativo 413


generador de sucesos, una aplicación puede verificar el estado de un VG en el disco con el
subsistema LVM.
Posibilidades

AHAFS_THRESHOLD_STATE
AHAFS_REMOTE_EVENT_ENABLED
AHAFS_CALLBACK_INTRCNTX

Códigos de retorno
vgState devuelve 0 como código de retorno. Sólo se devuelve AHAFS_CLUSTER_REMOVE (-1) si se
elimina el clúster.
Mensaje del generador de sucesos
Este generador de sucesos pasa los mensajes VG_UP y VG_DOWN como parte de sus datos de
suceso. Pasará el nombre de disco y el nombre de grupo de volúmenes correspondientes. Asimismo,
dado que se trata de un generador de sucesos del clúster, adicionalmente pasará la información de
NODE_NUMBER, NODE_ID y CLUSTER_ID.
Archivos de supervisión aceptables
Para supervisar los cambios en la lista de nodos, se debe crear un archivo de supervisión bajo el
directorio [Link]. Se debe utilizar el nombre de archivo de supervisión

/aha/disk/[Link]/[Link]

En este directorio no se pueden crear otros archivos de supervisión.


Datos de suceso de ejemplo
Los siguientes son datos de suceso de un suceso vgstate con el valor predeterminado de INFO_LVL.

BEGIN_EVENT_INFO
TIME_tvsec=1271915408
TIME_tvnsec=699408296
SEQUENCE_NUM=0
RC_FROM_EVPROD=0
BEGIN_EVPROD_INFO
EVENT_TYPE=VG_UP
DISK_NAME=hdisk3
VG_NAME=myvg
NODE_NUMBER=2
NODE_ID=0xF079E8C801C11DF
CLUSTER_ID=0x6EA7B08888D811DFB918BEB25635B404
END_EVPROD_INFO
END_EVENT_INFO

414 AIX Versión 7.2: Gestión del sistema operativo


Avisos
Esta información se ha desarrollado para productos y servicios ofrecidos en [Link].
Es posible que IBM no ofrezca en otros países los productos, servicios o características que se describen
en este documento. Póngase en contacto con el representante de IBM local para obtener información
sobre los servicios y productos actualmente disponibles en su área. Las referencias a programas,
productos o servicios de IBM no pretenden establecer ni implicar que sólo se puedan utilizar productos,
programas o servicios de IBM. También se puede utilizar otro producto, programa o servicio que tenga la
misma función y no infrinja el derecho de propiedad intelectual de IBM. Sin embargo, será
responsabilidad del usuario evaluar y verificar el funcionamiento de cualquier producto, programa o
servicio que no sea de IBM.
Puede que IBM tenga patentes o solicitudes de patente pendientes que cubran la materia descrita en
este documento. La entrega de este documento no le otorga ninguna licencia sobre dichas patentes.
Puede enviar sus consultas de licencias, por escrito, a la dirección siguiente:

IBM Director of Licensing


IBM Corporation North Castle Drive, MD-NC119
Armonk, NY 10504-1785
[Link].

Para realizar consultas sobre licencias relacionadas con información del juego de caracteres de doble
byte(DBCS), póngase en contacto con el Departamento de propiedad intelectual de IBM de su país o
envíe las consultas, por escrito, a:

Intellectual Property Licensing


Legal and Intellectual Property Law
IBM Japan Ltd.
19-21, Nihonbashi-Hakozakicho, Chuo-ku
Tokio 103-8510, Japón

INTERNATIONAL BUSINESS MACHINES CORPORATION PROPORCIONA ESTA PUBLICACIÓN "TAL CUAL"


SIN GARANTÍAS DE NINGUNA CLASE, NI EXPLÍCITAS NI IMPLÍCITAS, QUE INCLUYEN, PERO NO SE
LIMITAN A, LAS GARANTÍAS IMPLÍCITAS DE NO VULNERACIÓN, MERCANTIBILIDAD O ADECUACIÓN A
UN FIN DETERMINADO. Algunas jurisdicciones no permiten la renuncia a las garantías explícitas o
implícitas en determinadas transacciones; por lo tanto, es posible que esta declaración no sea aplicable
en su caso.
Esta información podría incluir imprecisiones técnicas o errores tipográficos. Periódicamente se realizan
cambios en la información que aquí se presenta; estos cambios se incorporarán en las nuevas ediciones
de la publicación. IBM puede realizar en cualquier momento mejoras o cambios en los productos o
programas descritos en esta publicación sin previo aviso.
Todas las referencias hechas en este documento a sitios web que no son de IBM se proporcionan
únicamente a título informativo y no representan en modo alguno una recomendación de dichos sitios
web. Los materiales de dichos sitios web no forman parte de los materiales para este producto de IBM y
el uso de dichos sitios web corre a cuenta y riesgo del Cliente.
IBM puede utilizar o distribuir la información que se le proporcione del modo que considere conveniente
sin incurrir por ello en ninguna obligación con el remitente.
Los tenedores de licencias de este programa que deseen disponer de información acerca de éste con el
fin de permitir: (i) el intercambio de información entre programas creados independientemente y otros
programas (incluido éste) y (ii) la utilización mutua de la información que se ha intercambiado, deben
ponerse en contacto con:

IBM Director of Licensing


IBM Corporation North Castle Drive, MD-NC119

© Copyright IBM Corp. 2010, 2018 415


Armonk, NY 10504-1785
[Link].

Esta información podría estar disponible, en función de los términos y condiciones correspondientes,
incluyendo en algunos casos el pago de una tarifa.
IBM proporciona el programa bajo licencia descrito en esta información y todo el material bajo licencia
disponible para él de acuerdo con los términos del Contrato del cliente de IBM, el Acuerdo internacional
de licencia de programas de IBM o cualquier contrato equivalente existente entre las partes.
Los ejemplos de datos de rendimiento y de clientes citados se presentan solamente a efectos ilustrativos.
Los resultados reales de rendimiento pueden variar en función de configuraciones específicas y
condiciones de operación.
La información relacionada con los productos que no son de IBM se ha obtenido de los proveedores de
tales productos, de los anuncios que éstos han publicado o de otras fuentes de información públicamente
disponibles. IBM no ha probado esos productos y no puede confirmar la precisión de su rendimiento, su
compatibilidad ni ningún otro aspecto. Las preguntas relacionadas con las posibilidades de los productos
que no son de IBM deben dirigirse a los proveedores de tales productos.
Las declaraciones relacionadas con las futuras directrices o intenciones de IBM están sujetas a cambios o
a su retirada sin previo aviso y sólo representan metas u objetivos.
Todos los precios de IBM que se muestran son precios actuales recomendados por IBM de venta al
público y están sujetos a cambios sin notificación previa. Los precios de los distribuidores pueden variar.
Esta documentación se suministra sólo a efectos de planificación. La información incluida en este
documento puede cambiar antes de que los productos descritos estén disponibles.
Esta información contiene ejemplos de datos y de informes que se utilizan diariamente en las
operaciones de las empresas. Para mostrarlos de la forma más completa posible, los ejemplos incluyen
nombres de personas, de empresas, de marcas y de productos. Todos estos nombres son ficticios y
cualquier similitud con nombres reales de personas o empresas es mera coincidencia.
LICENCIA DE COPYRIGHT:
Esta información contiene programas de aplicación de ejemplo en lenguaje fuente que ilustran técnicas
de programación en diversas plataformas operativas. Puede copiar, modificar y distribuir estos programas
de muestra de cualquier forma, sin pagar nada a IBM, con los fines de desarrollar, utilizar, comercializar o
distribuir programas de aplicación de acuerdo con la interfaz de programación de aplicaciones para la
plataforma operativa para la cual se han escrito los programas de muestra. Estos ejemplos no se han
comprobado de forma exhaustiva en todas las condiciones. Por consiguiente, IBM no puede garantizar ni
confirmar la fiabilidad, capacidad de servicio o funcionamiento de estos programas. Los programas de
muestra se proporcionan "TAL CUAL" sin garantía de ningún tipo. IBM no será responsable de ningún
daño resultante del uso de los programas de ejemplo.
Cada copia de cualquier parte de estos programas de ejemplo o de cualquier trabajo que derive de éstos
debe incluir un aviso de copyright, tal como se indica a continuación:
© (nombre de la empresa) (año).

Algunas partes de este código procede de los programas de ejemplo de IBM Corp. Sample Programs.
© Copyright IBM Corp. _especificar año o años_.

Consideraciones de política de privacidad


Los productos de software de IBM, que incluyen el software como soluciones de servicios, (“Ofertas de
software”) pueden utilizar cookies u otras tecnologías para recopilar información de uso de producto y así
mejorar la experiencia del usuario final y adaptar las interacciones con el usuario final o para otros fines.
En la mayoría de los casos, las Ofertas de software no recopilan información de identificación personal.
Algunas de nuestras Ofertas de software le ayudan a recopilar dicha información. En caso de que una

416 Avisos
Oferta de software utilice cookies para recopilar información de identificación personal, se detalla a
continuación información específica sobre el uso que hace de las cookies esta oferta.
Esta Oferta de software no utiliza cookies ni otras tecnologías para recopilar información de identificación
personal.
Si las configuraciones implementadas para esta Oferta de software le ofrece como cliente la posibilidad
de recopilar información de identificación personal de los usuarios finales mediante cookies y otras
tecnología, debería buscar asesoramiento jurídico sobre las leyes aplicables con respecto a la
recopilación de datos así como tener noción de los requisitos expresos de notificación y consentimiento.
Si desea obtener más información sobre el uso de varias tecnologías, incluyendo el uso de las cookies
para la recopilación de datos, consulte la Política de privacidad de IBM en [Link] y
las declaraciones de privacidad en línea de IBM en [Link] la sección
denominada “Cookies, balizas de web y otras tecnologías” y “Declaración de privacidad de productos
software y ofertas de Software-as-a-Service (SaaS) de IBM” en [Link]
product-privacy.

Marcas registradas
IBM, el logotipo de IBM e [Link] son marcas registradas o marcas comerciales registradas de
International Business Machines Corp., registradas en muchas jurisdicciones de todo el mundo. Puede
que otros productos o nombres de servicio sean marcas registradas de IBM u otras compañías. Se
encuentra disponible una lista de las marcas registradas de IBM en el sitio web en Copyright and
trademark information en [Link]/legal/[Link].
Linux es una marca registrada de Linus Torvalds en los Estados Unidos, en otros países o en ambos.
UNIX es una marca registrada de The Open Group en Estados Unidos y/o en otros países.
Windows es una marca registrada de Microsoft Corporation en los Estados Unidos, en otros países, o
ambos.

Avisos 417
418 AIX Versión 7.2: Gestión del sistema operativo
Índice

Caracteres Especiales Archivo /etc/environment 334


archivo /etc/inittab
. mandato incorporado cambio 8
shell Bourne 278 archivo /etc/passwd 210
shell Korn o POSIX 242 archivo /etc/profile 51
/etc/hosts 17 Archivo /etc/profile 335
/usr/bin/ksh93 229 archivo /etc/security/passwd 314
archivo inittab
daemon srcmstr en 188
A archivo motd 63
acceder a un sistema que no arranca 19 archivos
ACL .mwmrc 338
ejemplo 326 .profile 335
ejemplo para AIXC ACL 323 .Xdefaults 338
mantenimiento 320 .xinitrc 337
para objetos del sistema de archivos 320 /dev/null 368
actividad del sistema /etc/environment 334
realizar seguimiento 163 /etc/passwd 210
ahafs_evprods /etc/profile 335
definición 376 /etc/security/passwd 314
AIX adición de una sola línea de texto 371
visión general para gestores del sistema BSD archivador 48
espacio de paginación 351 Archivo .env 336
AIX Event Infrastructure (AHAFS) 373 ASCII 192
AIX Runtime Expert 64 binarios 192
AIXwindows búsqueda de una serie 200
archivos de arranque 336 cambio de los permisos 319
inicio del Gestor de ventanas 336 cambio de propiedad 316
alias clasificación de texto 200
creación 268 coincidencia de expresiones 197
de seguimiento de vía 269 comparación 201
eliminación 268 compresión 37
exportación 268 concatenación 367
listado 268 convenios de denominación 193
no soportados 268 copia 196
r 135 copia de cinta o disco 47
shell Korn o POSIX 268 copia de DOS 207
alias de mandatos copia de pantalla 371
shell Korn o POSIX 268 copia en DOS 207
sustitución de la tilde 269 corte de campos seleccionados de 202
alias de seguimiento de vía 269 creación con redirección desde el teclado 367
alias r 135 descompresión 39
anomalía del sistema desempaquetado 39
comprobar hardware 9 ejecutables 192
comprobar procesos 10 eliminación 195
reiniciar el sistema 11 eliminación de columnas 204
Apariciones de sucesos no disponibles eliminación de enlazados 206
definición 384 empaquetado 37
archivo enlace 204, 205
descriptor 365, 368 entorno 334
mandato 198 expansión 39
Archivo .env 336 expresiones normales 195
Archivo .mwmrc 338 formateo para visualización 199
Archivo .profile 51, 335 fusión de las líneas de varios 203
Archivo .Xdefaults 338 grabación en la salida 202
Archivo .xinitrc 337 HISTFILE 268
archivo /dev/null 368 identificación de tipo 198

419
archivos (continuación) arrancar (continuación)
localización de secciones 133 comprensión (continuación)
manejo 195 sistema de archivos RAM 19
metacaracteres 194 visión general 15
modalidades de acceso 316 desde disco duro para mantenimiento 5
mover 196 diagnosticar problemas 20
nombres de vías de acceso 193 Gestores del sistema BSD 350
numeración de líneas 204 rearrancar un sistema en ejecución 4
para gestores del sistema BSD 345, 350 sistema colgado 6
pegado de texto 203 arranque
permisos 192, 316 control de ventanas y aplicaciones 337
propiedad 315 asignación
realización de la copia de seguridad 49 valores y atributos 234
recuperación del almacenamiento 48 atributos
renombrar 196 soportados por el shell Korn o POSIX 234
restauración 27, 50 autenticación 314
supresión 195 autorización 323
supresión del DOS 208
unión 367
visión general 192
B
visualización de las primeras líneas 202 batería del reloj 61
visualización de las últimas líneas 202 batería del sistema 61
visualización de tipos 198 blancos
visualización del contenido 199 definición 211
archivos de arranque interpretación de 288
AIXwindows 336 bloqueo
Servidor X 336 del terminal 327
shell C 288 borrado de la pantalla 370
sistema 334 BSD
archivos de DOS comparación con AIX para gestores del sistema
conversión 207 espacio de paginación 351
copia 207 comparación para gestores del sistema
listado del contenido 208 arrancar 350
supresión 208 buscar y examinar archivos 350
archivos de inicio de sesión comparación de archivos 345
.profile 335 contabilidad 348
/etc/environment 334 copia de seguridad 349
/etc/profile 335 cron 362
Archivo .env 336 dispositivos 362
Archivo .profile 51 impresoras 356
Archivo /etc/profile 51 mandatos 358
archivos de perfil 334 NFS y NIS (anteriormente Páginas Amarillas) 347
archivos de recursos red 342, 347, 351, 352
modificación 338 rendimiento 355
archivos de texto sistemas de archivos 364
búsqueda de series 200 UUCP 363
clasificación 200 documentación en línea y mandato man 347
concatenación 367 buf_wrap 391
corte de secciones 202 búsqueda
creación desde la entrada de teclado 367 archivos 197
eliminación de columnas 204 palabras clave 140
numeración de líneas 204 series de texto en archivos 200
pegado de secciones 203 búsqueda con palabra clave
archivos enlazados mandato apropos 140
eliminación 206 bytes
argumentos cálculo del número de 201
en mandatos 131
aritmética
descomposición de números en factores 140 C
aritmética de enteros 221
cálculo del número
arrancar
bytes 201
comprensión
líneas 201
modalidad de mantenimiento 18
palabras 201
proceso de arranque del sistema 16

420
calendario contabilidad del sistema (continuación)
visualización 138 anomalía (continuación)
cambio recuperar 167
font por omisión 340 archivo holidays
indicador del sistema 341 actualizar 177
permisos 319 archivos
prioridad de los procesos 144 archivos de datos 166
teclas de control 341 archivos de informe y resumen 166
valores predeterminados 338 archivos del mandato runnact 168
cancelación formatos 170
procesos en primer plano 144 visión general 166
caracteres configurar 170
delimitación en el shell Korn o POSIX 226 datos de actividad del sistema
caracteres comodín visualización 173
asterisco 194 visualizar mientras se ejecuta un mandato 173
definición 211 datos de procesos
interrogante 194 informar 179
caracteres delimitadores recopilar 178
shell Bourne 276 datos de tiempo de conexión 162, 175, 178
shell Korn o POSIX 226 datos de uso de disco
cerrar el sistema 50 recopilar 179
cintas datos de uso de impresora
comprobación de la integridad 48 informar 163
copia en o desde 48 recopilar 180
utilización como soporte de copia de seguridad 23 errores de wtmp
clases arreglar 181
usuario 316 errores tacct
clases de caracteres arreglar 180
shell Bourne 215 informar datos
clasificación visión general 159
archivos de texto 200 informes
clDiskList 407 diario 159
clDiskState 411 fiscal 163
coincidencia de patrones mensuales 161, 162
shell Bourne 273 mandato runnacct
shell Korn o POSIX 237 inicio 167
combinación de mandatos 130 reinicio 167
comentarios mandatos
definición 211 ejecutar automáticamente 164
comparación de archivos 201 ejecutar desde el teclado 165
Componentes de AIX Event Infrastructure problemas
definición 374, 385 arreglar archivo holidays obsoleto 177
compresión arreglar errores de runacct 183
archivos 37 arreglar horas incorrectas 182
comprobación arreglar permisos de archivo incorrectos 182
estado del proceso 142 resumir registros 161
integridad de las cintas 48 tarifas
concatenación cargo 180
archivos de texto 367 informar 163
conductos uso de CPU
definición 211, 369 visualización 174
conexión 130 visión general 159
consola control de accesos
visualización del nombre 330 edición de información 327
consolidación de sucesos duplicados 389 establecimiento de información 325
Consumidores de sucesos 376 visualización de información 325
contabilidad de tarifas 180 control de trabajos
contabilidad de tiempo de conexión 178 shell C 296
contabilidad de uso de disco 179 shell Korn o POSIX 254
contabilidad de uso de impresora 180 Controlador de recursos del sistema
contabilidad del sistema funciones de 187
actividad del sistema inicio 188
datos 163 mandatos
anomalía lista de 188

421
convenios de denominación desempaquetado (continuación)
archivos 193 archivos 39
conversión detención
archivos de DOS 207 procesos en primer plano 144
copia diagnosticar problemas de arranque
archivos 196 acceder a un sistema que no arranca 19
archivos de cinta o disco 47 rearrancar un sistema con gráficos de placa 7
archivos de DOS 207 directorios
archivos del sistema operativo base 207 cambio de los permisos 319
archivos en cinta o disco 47 cambio de propiedad 316
en o desde cinta 48 enlace 204
en o desde disquetes 46 listado de los archivos de DOS 208
pantalla a archivo 371 modalidades de acceso 316
copia de seguridad permisos 316
archivos 20 diskState 413
archivos del usuario 26 dispositivo
compresión de archivos antes de 37 para gestores del sistema BSD 362
comprimir archivos 37 dispositivos
estrategia para gestionar visualización de información sobre 329
directrices para 22 disquetes
planificar 24 copia en o desde 46
gestores del sistema BSD 349 formatear 45
grupo de volúmenes definidos por el usuario 40 manejo 23
implementar con scripts 44 utilización como soporte de copia de seguridad 23
mandatos, lista de 20 distintivos
métodos 20 en mandatos 131
política 22 distintivos de mandatos 130
procedimiento para datos del sistema y del usuario 25 documento de entrada en línea 238, 368
procedimiento para sistemas de archivos del usuario 26 documentos de entrada en línea 368
realizar planificada regularmente 44
replicar un sistema (clonación) 25
restaurar datos 27
E
sistemas de archivos del usuario 26 edición
soportes 23 en línea en el shell Korn o POSIX 255
utilización del mandato smit 50 histórico de mandatos 135
visión general 20 información de control de accesos 327
corte edición en línea
secciones de archivos de texto 202 Modalidad de edición emacs 256
creación modalidad de edición gmacs 256
alias 268 Modalidad de edición vi 259, 260, 262
alias de mandato 136 shell Korn o POSIX 255
scripts de shell 216 editor ed 195
Creación del archivo de supervisión editor emacs
definición 378 edición en línea 255, 256
cron editor gmacs
para gestores del sistema BSD 362 edición en línea 255, 256
editor vi
D edición en línea 255, 259, 260, 262
mandatos de edición de búsqueda 260
daemon cron mandatos de edición de entrada 259
generar datos con 177 mandatos de edición de modificación de texto 260
daemon srcmstr 188 mandatos de edición de movimiento 259
definiciones mandatos de edición utilizados comúnmente 262
teclado 331 mandatos de edición varios 262
definiciones de menús 338 modalidad de control 259
definiciones de teclado modalidad de entrada 259
listado disponible actualmente 331 movimiento del cursor 259
Desasignación del procesador dinámico 54, 55 editores
descartar la salida 368 ed 195
descomposición de números en factores edición en línea 255
mandato factor 140 emacs 255, 256
descompresión gmacs 255, 256
archivos 39 vi 195, 255
desempaquetado ejecución

422
ejecución (continuación) expansión (continuación)
scripts de shell 216 archivos 38, 39
eliminación exportación
alias 268 alias 268
archivos enlazados 206 variables de shell 340
columnas de archivos de texto 204 expresiones
procesos de la planificación 147 búsqueda de archivos con coincidencia 197
procesos en segundo plano 147 condicionales 224
eliminación de delimitadores shell C 307
shell Korn o POSIX 238 expresiones normales 195
emergencia Extensión del kernel de AIX Event Infrastructure 374
cerrar en una 51
enlace
archivos 204, 205
F
directorios 204 filtros 369
enlaces Flujo de supervisión de un suceso 377
creación 205 fonts
eliminación 206 cambio 340
fijos 205 listado disponibles para utilizar 331
simbólicos 205 formatear
tipos 205 disquetes 45
visión general 204 formateo de texto
enlaces de botones del ratón 338 caracteres ampliados de un solo byte 137
enlaces de teclas 338 mandatos 137
entorno soporte de caracteres de varios bytes 138
archivo 334 soporte internacional de caracteres 137
establecimiento 334 Formato de errores 390
sistema 328
visualización actual 332
entorno del sistema G
Desasignación del procesador dinámico 54, 55
Generadores de sucesos
mensaje del día 63
definición 376
modalidad de 64 bits 53
gestión de la hora
perfil 51
grabación de mensajes de recordatorio 139
servicios de manipulación de datos de tiempo 52
mandato calendar 139
entornos de shell
mensajes de recordatorio 139
personalización 51
grupo de subsistemas
entornos de usuario
activar el rastreo 191
personalización 51
desactivar rastreo 191
entrada
descripción de 187
operador de redirección 367
detención 189
redirección 365
inicio 189
entrada estándar
renovar 191
copia en un archivo 370
visualizar estado 190
redirección 367
error estándar 365
errores de wtmp H
arreglar 181
errores tacct HISTFILE
arreglar 180 archivo 268
Escribir en un archivo de supervisión variable 218
definición 379 histórico de mandatos
espacio de paginación edición 135
AIX para gestores del sistema BSD 351 shell Korn o POSIX 268
Espera de sucesos sustitución 268
definición 383 history
establecimiento edición 135
información de control de accesos 325 listas en el shell C 310
prioridad inicial de los procesos 143 sustitución en el shell C 310
estado de la salida
shell Korn o POSIX 233 I
evaluación aritmética
shell Korn o POSIX 221 ID
expansión usuario 315

423
ID de usuario listado (continuación)
inicio de sesión 315 procesos planificados 146
idbgen 52 listas
identificador definición 211
definición 211 listas de asignación de parámetros
idiomas definición 211
bidireccionales 333 listas de control de accesos
idiomas bidireccionales 333 ejemplo 326
imágenes de arranque ejemplo para AIXC ACL 323
creación 12 mantenimiento 320
impresora para objetos del sistema de archivos 320
para gestores del sistema BSD 356
indicador
cambio 341
M
inetsock 402 mandato /usr/bin/psh 210
inicio mandato /usr/bin/sh 210
Gestor de ventanas de AIXwindows 336 mandato acledit 320, 327
procesos 141 mandato aclget 320, 325
shell C 288 mandato aclput 320, 325
shell Korn o POSIX 266 mandato aixterm 333
Shell Korn restringido 228 mandato alias 136
shell restringido 216 mandato apropos 140
inicio de sesión mandato at 145–147
ID de usuario 315 mandato atq 146, 147
shell 210 mandato awk 195
interpretación mandato backup 23, 49
blancos 288 mandato banner 371
mandato bsh 210, 216, 228
K mandato cal 138
mandato capture 371
ksh93 Mandato cat 199, 204, 367, 371
ampliaciones aritméticas 229 mandato chfont 340
asignaciones compuestas 229 mandato chgrp 326
conjuntos asociativos 229 mandato chmod 318–320
descripción 229 mandato chown 315, 316, 326
entornos de función 229 mandato clear 370
expansiones de parámetros 229 mandato colrm 204
funciones de disciplina 229 mandato compress 37, 38
histórico del shell 229 mandato cp 196
mandatos incorporados 229 mandato cpio 23
normas de búsqueda PATH 229 mandato cpio -i 47
referencias de nombres de variables 229 mandato cpio -o 47
valores de retorno de mandatos 229 mandato csh 210, 288
variables 229 mandato cut 202
variables compuestas 229 Mandato date 61
mandato del 206
mandato diag 61
L mandato diff 201
Lectura de datos de sucesos 385 mandato dosdel 208
línea de texto mandato dosdir 208
adición a un archivo 371 mandato dosread 207
líneas mandato doswrite 207
cálculo del número de 201 mandato echo 370, 371
linkedCl 407 mandato env 332
lista de mandatos mandato export 340
apropos 140 mandato factor 140
cal 138 mandato fdformat 45
factor 140 mandato find 49, 197
para el shell Bourne 274 mandato flcopy 46
para el shell C 296 mandato format 45
para el shell Korn o POSIX 223, 224 mandato fsck 22, 46
listado mandato grep 10, 200, 369
alias 268 mandato groups 315
mandato head 202

424
mandato history 134 mandato incorporado fc
mandato id 315 shell Korn o POSIX 249
mandato incorporado : mandato incorporado fg
shell Bourne 278 shell C 300
shell Korn o POSIX 242 shell Korn o POSIX 249
mandato incorporado @ mandato incorporado foreach
shell C 300 shell C 300
mandato incorporado alias mandato incorporado getopts
shell C 300 shell Korn o POSIX 249
shell Korn o POSIX 249, 268 mandato incorporado glob
mandato incorporado bg shell C 300
shell C 300 mandato incorporado goto
shell Korn o POSIX 249 shell C 300
mandato incorporado break mandato incorporado hangups
shell Bourne 278 shell C 300
shell C 300 mandato incorporado hash
shell Korn o POSIX 242 shell Bourne 278
mandato incorporado breaksw mandato incorporado hashstat
shell C 300 shell C 300
mandato incorporado case mandato incorporado history
shell C 300 shell C 300
mandato incorporado cd mandato incorporado if
shell Bourne 278 shell C 300
shell C 300 mandato incorporado jobs
shell Korn o POSIX 249 shell C 296, 300
mandato incorporado chdir shell Korn o POSIX 249
shell C 300 mandato incorporado kill
mandato incorporado command shell C 300
shell Korn o POSIX 249 shell Korn o POSIX 249
mandato incorporado continue mandato incorporado let
shell Bourne 278 shell Korn o POSIX 221, 249
shell C 300 mandato incorporado limit
shell Korn o POSIX 242 shell C 300
mandato incorporado default mandato incorporado login
shell C 300 shell C 300
mandato incorporado dirs mandato incorporado logout
shell C 300 shell C 300
mandato incorporado echo mandato incorporado newgrp
shell Bourne 278 shell Korn o POSIX 242
shell C 300 mandato incorporado nice
shell Korn o POSIX 249 shell C 300
mandato incorporado else mandato incorporado notify
shell C 300 shell C 300
mandato incorporado end mandato incorporado onintr
shell C 300 shell C 300
mandato incorporado endif mandato incorporado popd
shell C 300 shell C 300
mandato incorporado endsw mandato incorporado print
shell C 300 shell Korn o POSIX 249
mandato incorporado eval mandato incorporado pushd
shell Bourne 278 shell C 300
shell C 300 mandato incorporado pwd
shell Korn o POSIX 242 shell Bourne 278
mandato incorporado exec shell Korn o POSIX 249
shell Bourne 278 mandato incorporado read
shell C 300 shell Bourne 278, 283
shell Korn o POSIX 242, 266 shell Korn o POSIX 249
mandato incorporado exit mandato incorporado readonly
shell Bourne 278 shell Bourne 278
shell C 300 shell Korn o POSIX 242
shell Korn o POSIX 242 mandato incorporado rehash
mandato incorporado export shell C 300
shell Bourne 278 mandato incorporado repeat
shell Korn o POSIX 242, 266 shell C 300

425
mandato incorporado return mandato incorporado whence (continuación)
shell Bourne 278 shell Korn o POSIX 249
shell Korn o POSIX 242 mandato incorporado while
mandato incorporado set shell C 300
shell Bourne 278 mandato kill 10, 147, 157
shell C 300 mandato ksh 47, 210, 266
shell Korn o POSIX 242 mandato ln 204, 205
mandato incorporado setenv mandato lock 327
shell C 300 mandato login 323
mandato incorporado setgroups mandato ls 315, 317
shell Korn o POSIX 249 mandato lscfg 329
mandato incorporado setsenv mandato lscons 330
shell Korn o POSIX 249 mandato lsdisp 331
mandato incorporado shift mandato lsfont 331
shell Bourne 278 mandato lsgroup 318
shell C 300 mandato lskbd 331
shell Korn o POSIX 242 mandato lslpp 331
mandato incorporado source mandato lssrc 190
shell C 300 mandato man
mandato incorporado stop Gestores del sistema BSD 347
shell C 300 mandato more 199
mandato incorporado suspend mandato mv 196
shell C 300 mandato mwm 336
mandato incorporado switch mandato nice 143
shell C 300 mandato nl 204
mandato incorporado test mandato pack 37, 38
shell Bourne 278 mandato page 199
shell Korn o POSIX 249 mandato paste 203
mandato incorporado time mandato pg 157, 199, 204
shell C 300 mandato printenv 333
mandato incorporado times mandato ps 10, 142, 157, 249
shell Bourne 278 mandato psh 210, 266
shell Korn o POSIX 242 mandato r 135
mandato incorporado trap mandato refresh 191
shell Bourne 278 mandato renice 144, 157
shell Korn o POSIX 242 mandato restore 27, 49, 50
mandato incorporado type mandato rm 195, 206
shell Bourne 278 mandato rsh 210
mandato incorporado typeset mandato Rsh 210, 216, 228
shell Korn o POSIX 221, 234, 242, 266 mandato runacct
mandato incorporado ulimit inicio 167
shell Bourne 278 reinicio 167
shell Korn o POSIX 249 mandato script 371
mandato incorporado umask Mandato setclock 62
shell Bourne 278 mandato sh 210
shell C 300 mandato shutdown 132
shell Korn o POSIX 249 mandato smit
mandato incorporado unalias restauración de archivos 27
shell C 300 mandato smit rmat 147
shell Korn o POSIX 249, 268 mandato sort 200
mandato incorporado unhash mandato srcmstr 191
shell C 300 mandato startsrc 189
mandato incorporado unlimit mandato stopsrc 189
shell C 300 mandato stty 332, 341
mandato incorporado unset mandato su 323
shell Bourne 278 mandato tail 202
shell C 300 mandato tapechk 22, 48
shell Korn o POSIX 242 mandato tar 23, 37, 48
mandato incorporado unsetenv 300 mandato tcopy 48
mandato incorporado wait mandato tee 370
shell Bourne 278 mandato tn3270 342
shell C 300 mandato tracesoff 191
shell Korn o POSIX 249 mandato traceson 191
mandato incorporado whence mandato tsh 210

426
mandato tty 330 mandatos (continuación)
mandato uncompress 37–39 format 45
mandato unpack 37–39 formateo de texto 137
mandato wc 201 fsck 22, 46
mandato whatis 133 grep 10, 200, 369
mandato whereis 133 grupos 315
mandato who 157 guardar los entrados 134
mandato xinit 337 head 202
mandato xlock 327 history 134
mandato zcat 39 id 315
mandatos incorporados del shell Bourne 278
/usr/bin/psh 210 incorporados del shell C 300
/usr/bin/sh 210 incorporados del shell Korn o POSIX 241
< 367 inicio de sesión 323
> 366 kill 10, 147, 157
>> 367 ksh 47, 210, 266
| 369 ln 204, 205
acledit 320, 327 lock 327
aclget 320, 325 ls 315, 317
aclput 320, 325 lscfg 329
aixterm 333 lscons 330
alias 136 lsdisp 331
archivo 198 lsfont 331
at 145–147 lsgroup 318
atq 146, 147 lskbd 331
awk 195 lslpp 331
banner 371 man 133
bsh 210, 216, 228 more 199
capture 371 mv 196
cat 199, 204, 367, 371 mwm 336
chfont 340 nice 143
chgrp 326 nl 204
chmod 318–320 nombres 130
chown 315, 316, 326 pack 37, 38
clear 370 page 199
colrm 204 para gestores del sistema BSD 358
combinación 130 parámetros 131
compress 37, 38 paste 203
compuestos del shell Korn 264 pg 157, 199, 204
conexión 130 printenv 333
copia de seguridad 23, 49 ps 10, 142, 157, 249
cp 196 psh 210, 266
cpio 23 r 135
cpio -i 47 renice 144, 157
cpio -o 47 repetición de los entrados 135
creación de nombres abreviados 136 restore 27, 49, 50
csh 210, 288 rm 195, 206
cut 202 rsh 210
date 61 Rsh 210, 216, 228
definición 211 script 371
del 206 sentencias de uso 132
diag 61 setclock 62
diff 201 sh 210
distintivos 131 shell Bourne 275
dosdel 208 shell C 299
dosdir 208 shell Korn o POSIX 262
dosread 207 shutdown 132
doswrite 207 sintaxis 130
echo 370, 371 smit 27, 50, 340
env 332 smit rmat 147
export 340 sort 200
fdformat 45 stty 332, 341
find 49, 197 su 323
flcopy 46 sustitución de series 135

427
mandatos (continuación) mandatos incorporados (continuación)
tail 202 logout 300
tapechk 22, 48 mandato 249
tar 23, 37, 48 newgrp 242
tcopy 48 nice 300
tee 370 normales 241, 249, 278
tn 10 notify 300
tsh 210 onintr 300
tty 330 popd 300
uncompress 37–39 print 249
unpack 37–39 pushd 300
visión general 130 pwd 249, 278
wc 201 read 249, 278, 283
whatis 133 readonly 241, 242, 278
whereis 133 rehash 300
who 157 repeat 300
xinit 337 return 242, 278
xlock 327 set 242, 272, 278, 300
zcat 39 setenv 300
mandatos compuestos setgroups 249
shell Bourne 277 setsenv 249
mandatos de shell shell Bourne 274, 278
alias r 135 shell C 300
fc 135 shell Korn o POSIX 241
history 134 shift 242, 272, 278, 300
mandatos incorporados source 300
: 242, 278 stop 300
. 242, 278 suspend 300
@ 300 switch 300
alias 249, 268, 300 test 249, 278
bg 249, 300 time 300
break 242, 278, 300 times 242, 278
breaksw 300 trabajos 249, 296, 300
case 300 trap 242, 278
cd 249, 278, 300 type 278
chdir 300 typeset 221, 234, 241, 242, 266
continue 242, 278, 300 ulimit 249, 278
definición 211 umask 249, 278, 300
dirs 300 unalias 249, 268, 300
echo 249, 278, 300 unhash 300
else 300 unlimit 300
end 300 unset 242, 278, 300
endif 300 unsetenv 300
endsw 300 valor predeterminado 300
especiales 241, 242, 278 wait 249, 278, 300
eval 242, 278, 300 whence 249
exec 242, 266, 278, 300 while 300
exit 242, 278, 300 mandatos incorporados especiales
export 241, 242, 266, 278 shell Bourne 278
fc 135, 249, 268 shell Korn o POSIX 223, 242
fg 249, 300 mandatos incorporados normales
foreach 300 shell Korn o POSIX 224, 249
getopts 249 mandatos simples
glob 300 definición 211
goto 300 manejo de señales
hangups 300 shell Bourne 277
hash 278 shell C 299
hashstat 300 shell Korn o POSIX 255
history 300 mantenimiento
if 300 ACL 320
inicio de sesión 300 listas de control de accesos 320
kill 249, 300 mensaje del día
let 221, 249 cambio 63
limit 300 mensajes

428
mensajes (continuación) operandos
envío a la salida estándar 370 en mandatos 131
visualización en pantalla 370
mensajes de pantalla, responder a 157
mensajes, pantalla, responder a 157
P
metacaracteres Páginas Amarillas
definición 211 Gestores del sistema BSD 347
delimitación en el shell Korn o POSIX 226 páginas man
modalidad de 64 bits búsquedas con palabras clave 140
catálogos de archivos 53 palabras
modalidad de control 259 cálculo del número de 201
modalidad de entrada definición 211
definición 259 reservadas en el shell Korn o POSIX 229
mandatos de edición de entrada 259 palabras reservadas
modalidad de un solo usuario 51 shell Bourne 277
modalidades de acceso shell Korn o POSIX 229
archivos 316 pantallas
clases de usuarios 316 borrado 370
control 316 copia a archivo 371
directorios 316 copia de la pantalla en un archivo 370
representación numérica de 318 visualización de texto en una pantalla cada vez 199
representación simbólica 317 visualización del texto en letras grandes 371
visualización de información del grupo 318 parada del sistema operativo 132
moddir 395 parámetros
modDir 402 con nombre 234
modfile 392, 393 en mandatos 131
modFile 402 especiales 234, 236
modificadores posicionales 234
en mandatos 131 predefinidas 236
shell Korn o POSIX 234, 236
N parámetros con nombre 234
parámetros especiales 234
networkAdapterState 410 parámetros posicionales
NFS y NIS shell Bourne 272
Gestores del sistema BSD 347 pegado
NIS 347 secciones de archivos de texto 203
nivel de ejecución perfil
identificar 14 archivos 51
visualizar histórico 14 visión general 51
nivel de ejecución del sistema 14 permisos
nodeAddress 410 archivo 319
nodeContact 408 directorio 319
nodeList 406 personalización
nodeState 409 colores y fonts 338
nombre abreviado de los mandatos definiciones de menús 338
creación 136 enlaces de botones del ratón 338
nombres de vías de acceso enlaces de teclas 338
absolutos 193 entorno del sistema 340, 341
archivos 193 pidProcessMon 401, 402
NUM_EVDROPS_INTRCNTX 391 planificación
numeración procesos 145
líneas de archivos de texto 204 planificación de la red
número de identificación de proceso 140 TCP/IP 17
número de inodo 192, 204 prioridad de los procesos 155
número PID 140 problemas de terminal
detener procesos retenidos 157
procedimientos de recuperación
O acceder a un sistema que no arranca 19
opciones rearrancar un sistema con gráficos de placa 7
en mandatos 131 procedimientos de shell 130
operador de redirección de adición 367 proceso de arranque
operadores fases de 16
shell C 307 procesos
cambio de la prioridad 144

429
procesos (continuación) reloj (continuación)
cancelación de procesos en primer plano 144 restablecer 61
comprobación del estado 142 reloj del sistema
daemon 140 probar la batería 61
descripción 140 restablecer 61
detención de procesos en primer plano 144 remotos
eliminación de la planificación 147 shell 210
eliminación de procesos en segundo plano 147 rendimiento
en primer plano 140 Gestores del sistema BSD 355
en segundo plano 140 renombrar
establecimiento de la prioridad inicial 143 archivos 196
generar informes de contabilidad 179 repDiskState 412
gestión de 151, 152 restauración
inicio 141 archivos 27, 50
listado de los planificados 146 resúmenes
modificación de la prioridad de 155 archivos de arranque de AIXwindows 328
planificación para procesarlos posteriormente 145 archivos de arranque del sistema 328
por lotes 145 mandatos 372
recopilar datos de contabilidad sobre 178 para mandatos 148
reinicio de uno detenido 144 para procesos 148
supervisión de 152 personalización del entorno del sistema 328
terminación de 155 resúmenes de mandatos
vincular a un procesador 156 archivos 208
visualización de todos los activos 142 archivos de copia de seguridad 25
visualizar uso de CPU 174 entorno de usuario 333
zombie 140 información del sistema 333
procesos daemon 140 redirección de E/S 372
procesos en primer plano 140 seguridad de archivos 328
procesos en segundo plano 140 seguridad de sistemas 328
procesos por lotes 145 soportes de almacenamiento 25
procesos zombie 140 resúmenes de procesos 148
processMon 402
productos de software
visualización de información sobre 331
S
programa salida
copia de la salida en un archivo 370 descartar con el archivo /dev/null 368
Protocolo de control de transmisiones/Protocolo Internet 17 operador de redirección 366
redirección 365
R redireccionamiento a un archivo 366
salida de diagnóstico 365
rearrancar un sistema con gráficos de placa 7 salida de error 365
recurso de coproceso salida de error estándar
shell Korn o POSIX 240 redirección 368
red salida estándar
para gestores del sistema BSD 342, 347, 351, 352 adición a un archivo 367
red jerárquica 17 redirección 366
red plana 17 schedo 400, 402
redirección scripts de shell
entrada estándar 367 creación 216
entrada y salida de los coprocesos 241 especificación de un shell 213
entrada y salida en el shell Bourne 273 secuencia Control-C 10
entrada y salida en el shell Korn o POSIX 238 seguridad
salida a un archivo 366 archivo 314
salida de error estándar 368 archivo /etc/security/passwd 314
salida estándar 366 autenticación 314
redirección de E/S ID de usuario de inicio de sesión 315
estándar 365 identificación 314
shell Bourne 273 sistema 314
shell C 313 terminales desatendidos 315
shell Korn o POSIX 238 sentencias de uso
reiniciar el sistema 11 para mandatos 132
reinicio señal SIGINT 255
procesos detenidos 144 señal SIGQUIT 255
reloj señales

430
señales (continuación) shell Korn ampliado (continuación)
SIGINT 255 variables compuestas 229
SIGQUIT 255 shell Korn o shell POSIX
series alias de mandatos 268
búsqueda en archivos de texto 200 ampliado 229
Servidor X coincidencia de patrones 237
archivos de arranque 336 control de trabajos 254
shell Bourne delimitadores 226
caracteres delimitadores 276 edición 255
clases de caracteres 215 eliminación de delimitadores 238
coincidencia de patrones 273 entorno 266
entorno 270 estado de la salida 233
lista de mandatos incorporados 274 evaluación aritmética 221
mandatos 275 expresiones condicionales 224
mandatos compuestos 277 funciones 267
mandatos incorporados 278 histórico de mandatos 268
manejo de señales 277 inicio 266
palabras reservadas 277 lista de mandatos incorporados especiales 223
parámetros posicionales 272 lista de mandatos incorporados normales 224
redirección de la entrada y la salida 273 mandatos compuestos 264
sustitución condicional 271 mandatos incorporados 241
sustitución de mandatos 283 manejo de señales 255
sustitución de nombres de archivo 273 palabras reservadas 229
sustitución de variables 283 parámetros predefinidos 236
variables 285 recurso de coproceso 240
variables definidas por el usuario 284 redirección de la entrada y la salida 238
variables predefinidas 287 redirección de la entrada y la salida de los coprocesos
shell C 241
archivos de arranque 288 subdivisión de campos 222
control de trabajos 296 sustitución de la tilde 269
ejecución de mandatos 309 sustitución de mandatos 220
expresiones 307 sustitución de nombres de archivo 237
inicio 288 sustitución de parámetros 234, 235
limitaciones 288 utilización de mandatos 262
lista de mandatos incorporados 296 variables definidas por el usuario 218
listas de histórico 310 variables predefinidas 217
mandatos 299 Shell Korn restringido
mandatos incorporados 300 inicio 228
manejo de señales 299 shell por omisión 210
operadores 307 shell restringido
redirección de la entrada y la salida 313 inicio 216
sustitución de alias 289 shells
sustitución de mandatos 309 alias de mandatos en Korn o POSIX 268
sustitución de nombres de archivo 291 Bourne 210
sustitución de variables 290 C 210
sustitución del histórico 310 clases de caracteres en Bourne 215
variables de entorno 294 control de trabajos en el shell C 296
shell estándar control de trabajos en Korn o POSIX 254
expresiones condicionales 224 creación de scripts de shell 216
shell fiable 210 delimitación en Korn o POSIX 226
shell Korn ampliado edición en línea en Korn o POSIX 255
ampliaciones aritméticas 229 ejecución de mandatos en el shell C 309
asignaciones compuestas 229 entorno de Bourne 270
conjuntos asociativos 229 entorno de Korn o POSIX 266
descripción 229 estado de la salida en Korn o POSIX 233
entornos de función 229 estándar 210
expansiones de parámetros 229 evaluación aritmética en Korn o POSIX 221
funciones de disciplina 229 expresiones condicionales de Korn o POSIX 224
histórico del shell 229 fiables 210
mandatos incorporados 229 funciones 214
normas de búsqueda PATH 229 histórico de mandatos de Korn o POSIX 268
referencias de nombres de variables 229 inicio de Korn o POSIX 266
valores de retorno de mandatos 229 inicio de restringidos 216, 228
variables 229 inicio de sesión 210

431
shells (continuación) sistema de contabilidad (continuación)
inicio del shell C 288 archivos (continuación)
Korn 210 archivos de informe y resumen 166
lista de mandatos incorporados especiales para Korn o archivos del mandato runacct 168
POSIX 223 formatos 170
lista de mandatos incorporados normales para Korn o visión general 166
POSIX 224 configurar 170
lista de mandatos incorporados para Bourne 274 datos de actividad del sistema
listas de histórico en el shell C 310 informar 163
mandatos compuestos de Korn o POSIX 264 visualización 173
mandatos incorporados de Bourne 278 visualizar mientras se ejecuta un mandato 173
mandatos incorporados de C 300 datos de procesos
mandatos incorporados de Korn o POSIX 241 informar 179
manejo de señales en el shell C 299 recopilar 178
manejo de señales en Korn o POSIX 255 datos de tiempo de conexión
palabras reservadas en Korn o POSIX 229 informar 162
parámetros 234 recopilar 178
parámetros posicionales en Bourne 272 visualización 175
POSIX 210 datos de uso de disco
recurso de coproceso Korn o POSIX 240 informar 162
redirección de E/S en Korn o POSIX 238 visualización 176
redirección de I/O en Bourne 273 datos de uso de impresora
redirección de la entrada y la salida en el shell C 313 visualización 176
remotos 210 errores de wtmp
restringidos 210 arreglar 181
sustitución condicional en Bourne 271 errores tacct
sustitución de alias en el shell C 289 arreglar 180
sustitución de mandatos en Bourne 283 Gestores del sistema BSD 348
sustitución de mandatos en el shell C 309 informar datos
sustitución de mandatos en Korn o POSIX 220 visión general 159
sustitución de nombre de archivo en Korn o POSIX 237 informes
sustitución de nombres de archivo en Bourne 273 diario 159
sustitución de nombres de archivo en el shell C 291 fiscal 163
sustitución de variables en Bourne 283 mensuales 161, 162
sustitución de variables en el shell C 290 mandato runacct
sustitución del histórico en el shell C 310 inicio 167
terminología 211 reinicio 167
tipos 210 mandatos
utilización de mandatos de Korn o POSIX 262 ejecutar automáticamente 164
valor predeterminado 210 ejecutar desde el teclado 165
variables de entorno en el shell C 294 visión general 164
variables definidas por el usuario en Bourne 284 problemas
variables predefinidas de Bourne 287 arreglar archivo holidays obsoleto 177
variables que utiliza Bourne 285 arreglar errores de runacct 183
visión general 210 arreglar horas incorrectas 182
shutdown arreglar permisos de archivo incorrectos 182
emergencia 51 resumir registros 161
para modalidad de un solo usuario 51 tarifas
sin rearrancar 50 cargo 180
sistema informar 163
archivos de arranque 334 uso de CPU
cambio del indicador 341 visualización 174
entorno 328 visión general 159
iniciar el 3 sistema inactivo
personalizar entorno 340, 341 comprobar hardware 9
seguridad 314 comprobar procesos 10
variables por omisión 335 reiniciar el sistema 11
sistema de contabilidad sistema no operativo
anomalía comprobar hardware 9
recuperar 167 comprobar procesos 10
archivo holidays reiniciar el sistema 11
actualizar 177 sistema operativo
archivos cargar 11
archivos de datos 166 parada 132

432
sistemas de archivos sustitución de variables (continuación)
comprobación de la coherencia 46 shell Korn o POSIX 217
copia de seguridad con scripts 44
copia de seguridad de sistemas de archivos del usuario
26
T
ejemplo 193 TCP/IP
para gestores del sistema BSD 364 /etc/hosts 17
realización de reparaciones interactivas 46 denominación
sistemas de múltiples usuarios red jerárquica 17
cambiar niveles de ejecución en 15 red plana 17
sistemas de un solo usuario planificación de la red 17
cambiar niveles de ejecución en 15 teclado
soporte de caracteres de varios bytes cambiar atributos
entrada de caracteres 138 utilizar el mandato chhwkbd 358
formateo de texto 138 teclas de control
soporte internacional de caracteres cambio 341
formateo de texto 137 visualización de valores 332
soportes de almacenamiento 20 terminal, bloqueado 157
stderr 365 terminales
stdin 365 bloqueo 327
stdout 365 desatendidos 315
subdivisión de campos listado de los disponibles actualmente en el sistema
shell Korn o POSIX 222 331
subservidor para gestores del sistema BSD 365
activar el rastreo 191 visualización de asignaciones de teclas de control 332
desactivar rastreo 191 visualización de valores 333
descripción de 187 visualización del nombre 330
detención 189 terminología
inicio 189 para shells 211
visualizar estado 190 texto
subshells adición a un archivo 371
definición 211 visualización en letras grandes 371
subsistema Tipo de ACL
activar el rastreo 191 AIXC 321
desactivar rastreo 191 NFS4 322
detención 189 tipos de archivos
inicio 189 binarios 192
propiedades de 187 directorio 192
renovar 191 texto 192
visualizar estado 190 trabajos
Sucesos de clúster 405 eliminación de la planificación 147
supervisar procesos 152 listado de los planificados 146
supresión planificación 145
archivos 195
archivos de DOS 208
sustitución condicional U
shell Bourne 271
uso de CPU
sustitución de alias
visualización 174
shell C 289
usuario
sustitución de la tilde
clases 316
creación de alias de mandatos 269
grupos 315
sustitución de mandatos
visualización de información del grupo 318
shell Bourne 283
utilFs 396, 402
shell C 309
UUCP
shell Korn o POSIX 220
Gestores del sistema BSD 363
sustitución de nombres de archivo
shell Bourne 273
shell C 291 V
shell Korn o POSIX 237
sustitución de parámetros valores predeterminados
shell Korn o POSIX 235 cambio 338
sustitución de variables variable CDPATH 218
shell Bourne 283 variable COLUMNS 218
shell C 290 variable EDITOR 218

433
variable ENV 218 variables (continuación)
variable ERRNO 217 OPTIND 217
variable FCEDIT 218 PATH 218
variable FPATH 218 PPID 217
variable HISTSIZE 218, 268 predefinidas 217
variable HOME 218 PS1 218
variable IFS 218 PS2 218
variable LANG 218 PS3 218
variable LC_ALL 218 PS4 218
variable LC_COLLATE 218 PWD 217
variable LC_CTYPE 218 RANDOM 217
variable LC_MESSAGES 218 REPLY 217
variable LINENO 217 SECONDS 217
variable LINES 218 SHELL 218
variable MAIL 218 shell Bourne 285, 287
variable MAILCHECK 218 shell Korn o POSIX 217, 218
variable MAILPATH 218 subrayado 217
variable NLSPATH 218 TMOUT 218
variable OLDPWD 217 variable SHELL PROMPT 218
variable OPTARG 217 variables
variable OPTIND 217 SHELL PROMPT 218
variable PATH 218 VISUAL 218
variable PPID 217 variables de entorno
variable PS1 218 shell C 294
variable PS2 218 visualización de valores 333
variable PS3 218 variables de shell
variable PS4 218 definición 211
variable PWD 217 exportación 340
variable RANDOM 217 locales 340
variable REPLY 217 variables definidas por el usuario
variable SECONDS 217 shell Bourne 284
variable SHELL 218 variables predefinidas
variable subrayado 217 shell Bourne 287
variable TMOUT 218 shell Korn o POSIX 217
variable VISUAL 218 vgState 413
variables vincular un proceso a un procesador 156
CDPATH 218 Vista de alto nivel de AIX Event Infrastructure
COLUMNS 218 definición 376
definidas por el usuario 218 visualización
definidas por el usuario en Bourne 284 asignaciones de teclas de control 332
EDITOR 218 calendario 138
entorno de shell C 294 contenido de un archivo 199
ENV 218 contenido de un directorio de DOS 208
ERRNO 217 definiciones de teclado 331
exportación 340 dispositivos del sistema 329
FCEDIT 218 fonts disponibles 331
FPATH 218 información de control de accesos 325
HISTFILE 218 información del grupo 318
HISTSIZE 218, 268 nombre de consola 330
HOME 218 nombre de terminal 330
IFS 218 primeras líneas de los archivos 202
LANG 218 productos de software 331
LC_ALL 218 terminales disponibles 331
LC_COLLATE 218 texto de la pantalla en letras grandes 371
LC_CTYPE 218 tipos de archivos 198
LC_MESSAGES 218 últimas líneas de los archivos 202
LINENO 217 una pantalla cada vez 199
LINES 218 valores de variables de entorno 333
MAIL 218 variables de entorno 332
MAILCHECK 218 vmo 399, 402
MAILPATH 218
NLSPATH 218
OLDPWD 217
W
OPTARG 217 waitersFreePg 398, 402

434
waitTmCPU 397, 402
waitTmPgInOut 398, 402

435
436
IBM®

También podría gustarte