Aix Tech tip: pętle pa-pa – zamiast tego użyj polecenia „zastosuj”

abstrakcyjne tło technologii z sześciokątnymi kształtami
jedną z najlepiej strzeżonych tajemnic linii poleceń AIX jest polecenie „Zastosuj”.

nigdy o tym nie słyszałeś? Witaj w klubie. Dwóch kolegów i ja mieliśmy ponad 60-letnie doświadczenie w pracy w AIX i, między nami, ani razu nie natknęliśmy się na”apply”.

co to robi i dlaczego warto się tego nauczyć? Bardzo prosto, „zastosuj” uruchomi polecenie dla zestawu parametrów. Jest to przydatne na przykład, jeśli chcesz zmienić parametr strojenia dla całego zestawu dysków lub innych urządzeń. A może trzeba wymienić niektóre informacje z wielu plików. Twój przyjaciel to „aplikuj”.

jeśli znasz już podstawowe Skrypty, prawdopodobnie zauważysz pewne podobieństwa do uruchamiania pętli „for”.

oto podstawowe użycie polecenia apply. Zastosujmy polecenie „echo” do listy słów.

apply "echo" all cows eat grassallcowseatgrass

chyba niezbyt ekscytujące, ale składnia jest o wiele łatwiejsza niż użycie pętli „for”. Tak by to wyglądało:

for i in all cows eat grassdoecho $idone

z „apply” musisz tylko określić „apply” i polecenie („echo”, w tym przykładzie).

co powiesz na zastąpienie słów o bydlęcych zwyczajach kulinarnych czymś bardziej technicznym? Wyszczególnię tutaj atrybuty dla zbioru woluminów fizycznych.

polecenie do listy atrybutów będzie:

lsattr –El hdiskN

tak więc, aby użyć polecenia „zastosuj”, byłoby:

apply "lsattr –El" hdisk0

istnieje szansa, że chcesz to zrobić dla wielu dysków; może nawet dla wszystkich dysków w systemie AIX. Aby wyświetlić listę dysków, możesz użyć tego polecenia:

lsdev –c disk –F name

które stworzy listę dysków, takich jak:

hdisk0hdisk1hdisk2

i tak dalej.

w poleceniu zastosuj, zamiast wymieniać te dyski jeden po drugim, możesz określić polecenie, które ma je wyświetlać. Musi być albo w backticks:

`lsdev –c disk –F name`

lub użyj składni $ (polecenie):

$(lsdev –c disk –F name)

teraz nadszedł czas, aby poskładać to wszystko do kupy. Ponieważ polecenie lsattr, które stosujemy do listy dysków, zawiera spacje, musisz umieścić je w cudzysłowie:

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

może to być bardzo przydatne, jeśli chcesz wprowadzić zmiany.

oto polecenie zmiany głębokości kolejki dla jednego dysku:

chdev –l hdisk0 –a queue_depth=16 –P

aby to zrobić dla wszystkich dysków, podmienisz nazwę dysku (hdisk0)na % 1. Ma to na celu wskazanie pierwszego parametru wygenerowanego w każdej z list polecenia zastosuj.

zaczynamy:

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

oto jak wykonać polecenie tail, aby spojrzeć na ostatnie 20 linii kilku plików dziennika:

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

możesz pomyśleć, że możesz to po prostu uruchomić:

tail -20 *.log

ale polecenie tail może przetwarzać tylko jeden plik na raz.

oto kolejny przykład. Załóżmy, że chcesz wykonać kopię zapasową zestawu plików przed ich zmianą. Istnieje wiele sposobów, aby to zrobić, ale polecenie Zastosuj działa bardzo dobrze:

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

gdy przyzwyczaisz się do nieco nietypowej składni polecenia apply, prawdopodobnie zaczniesz go kochać. Używam go cały czas, zwłaszcza jeśli potrzebuję polecenia działającego w jednej linii.

Anthony English, pracując nad systemami IBM od 1991 roku, widział, jak AIX i wirtualizacja mogą zarządzać wszystkimi rodzajami środowisk biznesowych. Jest uznanym autorem w dziedzinie IT i pisze o doskonaleniu systemów biznesowych na swoim blogu pod adresem http://anthonyenglish.com.au. Anthony mieszka w Sydney w Australii, z żoną i siedmiorgiem dzieci.

Leave a Reply

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.