Consejo técnico de AIX: bucles de adiós: use el comando’ aplicar ‘ en su lugar

 Fondo de tecnología abstracta con formas hexagonales
Uno de los secretos mejor guardados de la línea de comandos de AIX es el comando «aplicar».

¿Nunca has oído hablar de él? Bueno, bienvenido al club. Dos colegas y yo teníamos más de 60 años de experiencia combinada en AIX y, entre nosotros, nunca nos habíamos encontrado con «aplicar».

Entonces, ¿qué hace y por qué debería aprenderlo? Muy simple, «apply» ejecutará un comando para un conjunto de parámetros. Es útil, por ejemplo, si desea cambiar un parámetro de ajuste para un conjunto completo de discos u otros dispositivos. O tal vez necesite enumerar información de varios archivos. Tu amigo es «aplicar».

Si ya está familiarizado con algunos scripts básicos, probablemente verá algunas similitudes con la ejecución de un bucle «for».

Aquí es un uso básico del comando apply. Vamos a aplicar el comando «eco» a una lista de palabras.

apply "echo" all cows eat grassallcowseatgrass

No es muy emocionante, supongo, pero la sintaxis es mucho más fácil que usar un bucle «for». Así es como se vería:

for i in all cows eat grassdoecho $idone

Con «apply» solo necesita especificar «apply»y el comando («echo», en este ejemplo).

¿Qué tal reemplazar las palabras sobre hábitos culinarios bovinos con algo un poco más técnico? Voy a enumerar los atributos de un conjunto de volúmenes físicos.

El comando para listar los atributos sería:

lsattr –El hdiskN

Por lo tanto, para usar el comando «aplicar», sería:

apply "lsattr –El" hdisk0

Lo más probable es que desee hacer esto para varios discos; tal vez incluso para todos los discos de su sistema AIX. Para enumerar los discos, puede usar este comando:

lsdev –c disk –F name

Que produciría una lista de discos, como:

hdisk0hdisk1hdisk2

y así sucesivamente.

En el comando apply, en lugar de enumerar los discos uno por uno, puede especificar el comando para enumerarlos. Necesita estar en comillas simples inclinadas:

`lsdev –c disk –F name`

o usar $( comando ) sintaxis:

$(lsdev –c disk –F name)

Ahora es el momento de ponerlo todo junto. Como el comando lsattr que estamos aplicando a la lista de discos tiene espacios, debe ponerlo entre comillas:

apply "lsattr –El" $(lsdev –c disk –F name)

Esto puede ser muy útil si también quieres hacer cambios.

Aquí está el comando para cambiar la profundidad de cola de un disco:

chdev –l hdisk0 –a queue_depth=16 –P

Para hacer esto con todos los discos, debe sustituir el nombre del disco (hdsk0) por %1. Esto es para indicar el primer parámetro generado en cada una de las listas del comando apply.

Aquí vamos:

apply "chdev –l %1 –a queue_depth=16 –P" $(lsdev –c disk –F name)

He aquí cómo hacer un comando de cola para ver las últimas 20 líneas de varios archivos de registro:

apply "tail -20 %1" $(ls *.log)

Podría pensar que podría ejecutar esto:

tail -20 *.log

pero el comando tail solo puede procesar un archivo a la vez.

Aquí hay otro ejemplo. Supongamos que desea hacer una copia de seguridad de un conjunto de archivos antes de cambiarlos. Hay muchas maneras de hacer esto, pero el comando apply funcionaría muy bien:

apply "cp %1 %1.bak" $(ls *.cfg)

Una vez que se acostumbre a la sintaxis ligeramente inusual del comando apply, probablemente comenzará a amarlo. Lo uso todo el tiempo, especialmente si necesito ejecutar un comando en una sola línea.

Tras trabajar en sistemas IBM desde 1991, Anthony English ha visto cómo AIX y la virtualización pueden gestionar todo tipo de entornos empresariales. Es un autor reconocido en el campo de las TI y escribe sobre la mejora de los sistemas empresariales a través de su blog en http://anthonyenglish.com.au. Anthony vive en Sídney, Australia, con su esposa y sus siete hijos.

Leave a Reply

Deja una respuesta

Tu dirección de correo electrónico no será publicada.