Uno dei segreti meglio custoditi della riga di comando AIX è il comando “apply”.
Mai sentito parlare? Beh, benvenuto nel club. Due colleghi ed io abbiamo avuto oltre 60 anni di esperienza combinata su AIX e, tra di noi, non avevamo mai incontrato una volta “apply”.
Quindi, cosa fa e perché dovresti impararlo? Molto semplicemente, “apply” eseguirà un comando per un insieme di parametri. È utile, ad esempio, se si desidera modificare un parametro di ottimizzazione per un intero set di dischi o altri dispositivi. O forse è necessario elencare alcune informazioni da un numero di file. Il tuo amico è “applica”.
Se hai già familiarità con alcuni script di base, probabilmente vedrai alcune somiglianze con l’esecuzione di un ciclo “for”.
Qui è un uso di base del comando apply. Applichiamo il comando “echo” a un elenco di parole.
apply "echo" all cows eat grassallcowseatgrass
Non terribilmente eccitante, suppongo, ma la sintassi è molto più semplice che usare un ciclo “for”. Ecco come sarebbe:
for i in all cows eat grassdoecho $idone
Con “applica” devi solo specificare “applica”e il comando (“echo”, in questo esempio).
Che ne dici di sostituire le parole sulle abitudini culinarie bovine con qualcosa di un po ‘ più tecnico? Ho intenzione di elencare gli attributi per un insieme di volumi fisici.
Il comando per elencare gli attributi sarebbe:
lsattr –El hdiskN
Quindi, per usare il comando” applica”, sarebbe:
apply "lsattr –El" hdisk0
È probabile che tu voglia farlo per un certo numero di dischi; forse anche per tutti i dischi del tuo sistema AIX. Per elencare i dischi, è possibile utilizzare questo comando:
lsdev –c disk –F name
Ciò produrrebbe un elenco di dischi, come:
hdisk0hdisk1hdisk2
e così via.
Nel comando Applica, invece di elencare i dischi uno per uno, è possibile specificare il comando per elencarli. Deve essere in backticks:
`lsdev –c disk –F name`
oppure usa la sintassi $( comando ) :
$(lsdev –c disk –F name)
Ora è il momento di mettere tutto insieme. Poiché il comando lsattr che stiamo applicando all’elenco dei dischi contiene spazi, è necessario inserirlo tra virgolette:
apply "lsattr –El" $(lsdev –c disk –F name)
Questo può essere davvero utile se si desidera apportare modifiche, anche.
Ecco il comando per modificare la profondità della coda per un disco:
chdev –l hdisk0 –a queue_depth=16 –P
Per farlo per tutti i dischi, devi sostituire il nome del disco (hdisk0) con %1. Questo per indicare il primo parametro generato in ciascuno degli elenchi del comando applica.
Eccoci qua:
apply "chdev –l %1 –a queue_depth=16 –P" $(lsdev –c disk –F name)
Ecco come eseguire un comando di coda per esaminare le ultime 20 righe di diversi file di registro:
apply "tail -20 %1" $(ls *.log)
Potresti pensare di poterlo eseguire:
tail -20 *.log
ma il comando tail può elaborare solo un file alla volta.
Ecco un altro esempio. Supponiamo di voler fare un backup di un set di file prima di cambiarli. Ci sono molti modi per farlo, ma il comando apply funzionerebbe molto bene:
apply "cp %1 %1.bak" $(ls *.cfg)
Una volta che ci si abitua alla sintassi leggermente insolita del comando apply, probabilmente inizierai ad amarlo. Lo uso tutto il tempo, specialmente se ho bisogno di ottenere un comando in esecuzione in una singola riga.
Avendo lavorato su sistemi IBM dal 1991, Anthony English ha visto come AIX e la virtualizzazione possono gestire tutti i tipi di ambienti aziendali. È un autore ben riconosciuto nel campo IT e scrive di miglioramento dei sistemi aziendali attraverso il suo blog a http://anthonyenglish.com.au. Anthony ha sede a Sydney, in Australia, con sua moglie e i suoi sette figli.