aix tech tips: Bye-bye loops-bruk kommandoen «apply» i stedet

 Abstrakt teknologi bakgrunn med sekskantede former
En av de best bevarte hemmelighetene TIL aix kommandolinjen er» apply » kommandoen.

aldri hørt om det? Velkommen til klubben. To kolleger og jeg hadde over 60 års kombinert erfaring på AIX, og mellom oss hadde vi aldri en gang kommet over «apply».

så, hva gjør det og hvorfor skal du lære det? Veldig enkelt,» apply » vil kjøre en kommando for et sett med parametere. Det er nyttig, for eksempel hvis du vil endre en tuningparameter for et helt sett disker eller andre enheter. Eller kanskje du trenger å liste litt informasjon fra en rekke filer. Din venn er «apply».

hvis du allerede er kjent med noen grunnleggende skripting, vil du sannsynligvis se noen likheter med å kjøre en» for » loop.

her er jeg en grunnleggende bruk av apply-kommandoen. La oss bruke kommandoen «echo» til en liste over ord.

apply "echo" all cows eat grassallcowseatgrass

Ikke veldig spennende, antar jeg, men syntaksen er mye enklere enn å bruke en» for » – løkke. Her er hvordan det ville se ut:

for i in all cows eat grassdoecho $idone

Med «apply» trenger du bare å spesifisere «apply» og kommandoen («echo», i dette eksemplet).

hva med å erstatte ord om storfe kulinariske vaner med noe litt mer teknisk? Jeg skal liste attributter for et sett med fysiske volumer.

kommandoen for å liste attributtene ville være:

lsattr –El hdiskN

Så, for å bruke kommandoen» apply», ville det være:

apply "lsattr –El" hdisk0

sjansene er at du vil gjøre dette for en rekke disker; kanskje til og med alle diskene på AIX-systemet ditt. For å liste diskene, kan du bruke denne kommandoen:

lsdev –c disk –F name

Det ville produsere en liste over disker, for eksempel:

hdisk0hdisk1hdisk2

og så videre.

i bruk-kommandoen, i stedet for å oppgi disse diskene en etter en, kan du angi kommandoen for å liste dem. Det må være enten i backticks:

`lsdev –c disk –F name`

eller bruk $ (kommando ) syntaksen:

$(lsdev –c disk –F name)

Nå er det på tide å sette alt sammen. Som lsattr-kommandoen som vi søker på listen over disker, har mellomrom i den, må du sette den i anførselstegn:

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

dette kan være veldig nyttig hvis du vil gjøre endringer også.

her er kommandoen for å endre kødybden for en disk:

chdev –l hdisk0 –a queue_depth=16 –P

for å gjøre det for alle diskene, vil du erstatte disknavnet (hdisk0) med %1. Dette er for å indikere den første parameteren som genereres i hver av listene i apply-kommandoen.

Her går Vi:

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

Slik gjør du en hale kommando for å se på de siste 20 linjene i flere loggfiler:

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

du tror kanskje du bare kunne kjøre dette:

tail -20 *.log

men halekommandoen kan bare behandle en fil om gangen.

her er et annet eksempel. Anta at du vil ta en sikkerhetskopi av et sett med filer før du endrer dem. Det er mange måter å gjøre dette på, men bruk kommandoen ville fungere veldig bra:

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

Når du blir vant til den litt uvanlige syntaksen til apply-kommandoen, vil du sannsynligvis begynne å elske den. Jeg bruker det hele tiden, spesielt hvis jeg trenger å få en kommando som kjører i en enkelt linje.

Anthony English har jobbet med IBM-systemer siden 1991, og Har sett hvordan AIX og virtualisering kan håndtere alle typer forretningsmiljøer. Han er en anerkjent forfatter INNEN IT og skriver om forbedring av forretningssystemer gjennom bloggen sin http://anthonyenglish.com.au. Anthony er basert I Sydney, Australia, med sin kone og hans syv barn.

Leave a Reply

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert.