een van de best bewaarde geheimen van de Aix opdrachtregel is het commando ’toepassen’.
nooit van gehoord? Welkom bij de club. Twee collega’ s en ik hadden meer dan 60 jaar gecombineerde ervaring op AIX en, tussen ons, we hadden nooit een keer over “toepassen”.
dus, wat doet het en waarom zou je het moeten leren? Heel eenvoudig,” apply ” zal een commando uitvoeren voor een set parameters. Het is bijvoorbeeld handig als je een tuning parameter wilt wijzigen voor een hele set schijven of andere apparaten. Of misschien moet je een lijst van informatie uit een aantal bestanden. Je vriend is “solliciteren”.
Als u al bekend bent met enkele basis scripts, zult u waarschijnlijk enige overeenkomsten zien met het draaien van een “for” lus.
hier is een basisgebruik van het apply Commando. Laten we het commando “echo” toepassen op een lijst met woorden.
apply "echo" all cows eat grassallcowseatgrass
niet erg spannend, denk ik, maar de syntaxis is een stuk makkelijker dan het gebruik van een “for” lus. Hier is hoe het eruit zou zien:
for i in all cows eat grassdoecho $idone
met ” apply “hoef je alleen” apply”en het commando (“echo”, in dit voorbeeld) op te geven.
wat dacht je van het vervangen van de woorden over de culinaire gewoonten van runderen door iets technischer? Ik ga een lijst maken van de attributen voor een set fysieke volumes.
het commando om de attributen te tonen zou zijn:
lsattr –El hdiskN
dus, om het “apply” commando te gebruiken, zou het zijn:
apply "lsattr –El" hdisk0
de kans is groot dat u dit voor een aantal schijven wilt doen; misschien zelfs voor alle schijven op uw Aix-systeem. Om de schijven weer te geven, kunt u dit commando gebruiken:
lsdev –c disk –F name
dat een lijst van schijven zou produceren, zoals:
hdisk0hdisk1hdisk2
en zo verder.
in de opdracht toepassen kunt u, in plaats van deze schijven één voor één te tonen, de opdracht opgeven om ze weer te geven. Het moet ofwel in backticks zijn:
`lsdev –c disk –F name`
of gebruik de $ (command ) syntaxis:
$(lsdev –c disk –F name)
nu is het tijd om het allemaal samen te voegen. Omdat het lsattr commando dat we toepassen op de lijst met schijven spaties bevat, moet je het tussen aanhalingstekens plaatsen:
apply "lsattr –El" $(lsdev –c disk –F name)
dit kan erg handig zijn als je ook wijzigingen wilt aanbrengen.
hier is het commando om de wachtrijdiepte voor één schijf te wijzigen:
chdev –l hdisk0 –a queue_depth=16 –P
om dat Voor alle schijven te doen, zou u de schijfnaam (hdisk0) vervangen door de %1. Dit is om de eerste parameter aan te geven die is gegenereerd in elk van de lijsten van het apply Commando.
hier gaan we:
apply "chdev –l %1 –a queue_depth=16 –P" $(lsdev –c disk –F name)
hier is hoe je een tail commando te doen om te kijken naar de laatste 20 regels van verschillende logbestanden:
apply "tail -20 %1" $(ls *.log)
u zou kunnen denken dat u dit gewoon kunt uitvoeren:
tail -20 *.log
maar het tail commando kan slechts één bestand tegelijk verwerken.
hier is een ander voorbeeld. Stel dat u een back-up van een set bestanden wilt maken voordat u ze wijzigt. Er zijn veel manieren om dit te doen, maar het apply commando zou heel goed werken:
apply "cp %1 %1.bak" $(ls *.cfg)
als je eenmaal gewend bent aan de enigszins ongebruikelijke syntaxis van het apply Commando, zul je er waarschijnlijk van gaan houden. Ik gebruik het de hele tijd, vooral als ik een commando op één regel moet laten draaien.Anthony English heeft sinds 1991 aan IBM-systemen gewerkt en heeft gezien hoe AIX en virtualisatie allerlei zakelijke omgevingen kunnen beheren. Hij is een bekende auteur op het gebied van IT en hij schrijft over verbetering van bedrijfssystemen via zijn blog op http://anthonyenglish.com.au. Anthony is gevestigd in Sydney, Australië, met zijn vrouw en zijn zeven kinderen.