jedním z nejlépe střežených tajemství příkazového řádku AIX je příkaz“ použít“.
nikdy jste o tom neslyšeli? Vítejte v klubu. Dva kolegové a já jsme měli více než 60 let zkušeností s AIX a mezi námi jsme nikdy nenarazili na „apply“.
co to dělá a proč byste se to měli naučit? Velmi jednoduše, „apply“ spustí příkaz pro sadu parametrů. Je užitečné například, pokud chcete změnit parametr ladění pro celou sadu disků nebo jiných zařízení. Nebo možná budete muset uvést některé informace z několika souborů. Váš přítel je „použít“.
pokud již znáte některé základní skriptování, pravděpodobně uvidíte některé podobnosti se spuštěním smyčky“ pro“.
zde je základní použití příkazu apply. Použijeme příkaz „echo“ na seznam slov.
apply "echo" all cows eat grassallcowseatgrass
není to příliš vzrušující, předpokládám, ale syntaxe je mnohem jednodušší než použití smyčky „pro“. Zde je návod, jak by to vypadalo:
for i in all cows eat grassdoecho $idone
pomocí „použít“ stačí zadat“ použít „a příkaz (v tomto příkladu“ echo“).
co takhle nahradit slova o kulinářských návycích něčím trochu techničtějším? Chystám se uvést atributy pro sadu fyzických svazků.
příkaz k vypsání atributů bude:
lsattr –El hdiskN
Chcete-li použít příkaz „Použít“, bylo by to:
apply "lsattr –El" hdisk0
je pravděpodobné,že byste to chtěli udělat pro řadu disků; možná i všechny disky v systému AIX. Chcete-li seznam disků, můžete použít tento příkaz:
lsdev –c disk –F name
to by vytvořilo seznam disků, jako například:
hdisk0hdisk1hdisk2
a tak dále.
v příkazu apply můžete namísto výpisu těchto disků jeden po druhém zadat příkaz k jejich seznamu. Musí to být buď v zádech:
`lsdev –c disk –F name`
nebo použijte syntaxi $( command ) :
$(lsdev –c disk –F name)
nyní je čas dát to všechno dohromady. Vzhledem k tomu, že příkaz lsattr, který aplikujeme na seznam disků, obsahuje mezery, musíte jej uvést do uvozovek:
apply "lsattr –El" $(lsdev –c disk –F name)
to může být opravdu užitečné, pokud chcete provést změny, také.
zde je příkaz pro změnu hloubky fronty pro jeden disk:
chdev –l hdisk0 –a queue_depth=16 –P
Chcete – li to provést pro všechny disky, nahradili byste název disku (hdisk0)číslem %1. Tím se označuje první parametr generovaný v každém ze seznamů příkazu apply.
jdeme na to:
apply "chdev –l %1 –a queue_depth=16 –P" $(lsdev –c disk –F name)
zde je návod, jak provést příkaz ocasu a podívat se na poslední řádky 20 několika souborů protokolu:
apply "tail -20 %1" $(ls *.log)
možná si myslíte, že byste to mohli spustit:
tail -20 *.log
příkaz tail však může zpracovávat pouze jeden soubor najednou.
zde je další příklad. Předpokládejme, že chcete provést zálohu sady souborů před jejich změnou. Existuje mnoho způsobů, jak to udělat, ale příkaz apply by fungoval velmi dobře:
apply "cp %1 %1.bak" $(ls *.cfg)
jakmile si zvyknete na mírně neobvyklou syntaxi příkazu apply, pravděpodobně ji začnete milovat. Používám to po celou dobu, zvláště pokud potřebuji příkaz spuštěný v jednom řádku.
Anthony English pracoval na systémech IBM od roku 1991 a viděl, jak AIX a virtualizace mohou spravovat všechny druhy obchodních prostředí. Je uznávaným autorem v oblasti IT a píše o zlepšení obchodních systémů prostřednictvím svého blogu na http://anthonyenglish.com.au. Anthony sídlí v australském Sydney se svou ženou a sedmi dětmi.