Astuce technique d’AIX : Bye-bye loops – utilisez plutôt la commande ‘apply’

 Contexte technologique abstrait avec des formes hexagonales
L’un des secrets les mieux gardés de la ligne de commande AIX est la commande « apply ».

Jamais entendu parler de ça? Bienvenue au club. Deux collègues et moi avions plus de 60 ans d’expérience combinée sur AIX et, entre nous, nous n’avions jamais rencontré « postuler ».

Alors, que fait-il et pourquoi devriez-vous l’apprendre? Très simplement, « apply » exécutera une commande pour un ensemble de paramètres. C’est utile, par exemple, si vous souhaitez modifier un paramètre de réglage pour tout un ensemble de disques ou d’autres périphériques. Ou peut-être avez-vous besoin de lister des informations à partir d’un certain nombre de fichiers. Votre ami est « appliquer ».

Si vous êtes déjà familier avec certains scripts de base, vous verrez probablement des similitudes avec l’exécution d’une boucle « for ».

Voici une utilisation de base de la commande apply. Appliquons la commande « echo » à une liste de mots.

apply "echo" all cows eat grassallcowseatgrass

Pas très excitant, je suppose, mais la syntaxe est beaucoup plus facile que d’utiliser une boucle « for ». Voici à quoi cela ressemblerait:

for i in all cows eat grassdoecho $idone

Avec « appliquer », il vous suffit de spécifier « appliquer » et la commande (« echo », dans cet exemple).

Que diriez-vous de remplacer les mots sur les habitudes culinaires des bovins par quelque chose d’un peu plus technique? Je vais lister les attributs d’un ensemble de volumes physiques.

La commande pour lister les attributs serait:

lsattr –El hdiskN

Donc, pour utiliser la commande « apply », ce serait:

apply "lsattr –El" hdisk0

Il y a de fortes chances que vous souhaitiez le faire pour un certain nombre de disques; peut-être même tous les disques de votre système AIX. Pour lister les disques, vous pouvez utiliser cette commande:

lsdev –c disk –F name

Cela produirait une liste de disques, tels que:

hdisk0hdisk1hdisk2

et ainsi de suite.

Dans la commande apply, au lieu de lister ces disques un par un, vous pouvez spécifier la commande pour les lister. Il doit être soit en backticks:

`lsdev –c disk –F name`

ou utilisez la syntaxe $(command):

$(lsdev –c disk –F name)

Il est maintenant temps de tout mettre en place. Comme la commande lsattr que nous appliquons à la liste des disques contient des espaces, vous devez la mettre entre guillemets:

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

Cela peut être très pratique si vous souhaitez également apporter des modifications.

Voici la commande pour changer la profondeur de file d’attente pour un disque:

chdev –l hdisk0 –a queue_depth=16 –P

Pour ce faire, pour tous les disques, vous devez remplacer le nom du disque (hdisk0) par le %1. Il s’agit d’indiquer le premier paramètre généré dans chacune des listes de la commande apply.

C’est parti:

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

Voici comment faire une commande de queue pour regarder les 20 dernières lignes de plusieurs fichiers journaux:

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

Vous pourriez penser que vous pourriez simplement exécuter ceci:

tail -20 *.log

mais la commande tail ne peut traiter qu’un seul fichier à la fois.

Voici un autre exemple. Supposons que vous souhaitiez effectuer une sauvegarde d’un ensemble de fichiers avant de les modifier. Il y a beaucoup de façons de le faire, mais la commande apply fonctionnerait très bien:

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

Une fois que vous vous habituerez à la syntaxe légèrement inhabituelle de la commande apply, vous commencerez probablement à l’aimer. Je l’utilise tout le temps, surtout si j’ai besoin d’une commande s’exécutant sur une seule ligne.

Ayant travaillé sur les systèmes IBM depuis 1991, Anthony English a vu comment AIX et la virtualisation peuvent gérer toutes sortes d’environnements métier. Il est un auteur reconnu dans le domaine de l’informatique et il écrit sur l’amélioration des systèmes d’entreprise via son blog à http://anthonyenglish.com.au. Anthony est basé à Sydney, en Australie, avec sa femme et ses sept enfants.

Leave a Reply

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.