Skryptologia i systemy kolejkowe



Podobne dokumenty
Skryptologia i systemy kolejkowe

Wstęp do informatyki. stęp do informatyki Polecenia (cz.2)

Bash - wprowadzenie. Bash - wprowadzenie 1/39

Tablice, procesy, sygnały i nie tylko. Kurs systemu Unix 1

PowerShell. Sławomir Wawrzyniak

PL/SQL. Zaawansowane tematy PL/SQL

G PROGRAMMING. Part #4

Spis treści 1. Wstęp 2. Projektowanie systemów informatycznych

- wszystkie elementy - wszystkie elementy

WYMAGANIA EDUKACYJNE I KRYTERIA OCENIANIA Z PRZEDMIOTU PROGRAMOWANIE APLIKACJI INTERNETOWYCH

Pętle w PERLU postać ogólna

Sieci i systemy operacyjne I Ćwiczenie 3. Przekierowania strumieni we/wy. Filtry.

System operacyjny Linux

API transakcyjne BitMarket.pl

Środowisko programisty Zestaw 7

Powłoka interpreter poleceń systemu UNIX

Instrukcja obsługi Norton Commander (NC) wersja 4.0. Autor: mgr inż. Tomasz Staniszewski

PERSON Kraków

Powłoka I. Popularne implementacje. W stylu sh (powłoki zdefiniowanej w POSIX) W stylu csh. bash (najpopularniejsza) zsh ksh mksh.

Uniwersytet Rzeszowski

Elementy cyfrowe i układy logiczne

Praca na wielu bazach danych część 2. (Wersja 8.1)

Pracownia internetowa w ka dej szkole (edycja 2004/2005)

Instrukcja użytkowania DRIVER. Programator z przewodem sterowniczym. DRIVER 610 lub lub 2 strefy DRIVER

Wprowadzenie do obsługi systemów obliczeniowych PCSS

Bash i algorytmy. Elwira Wachowicz. 20 lutego

emszmal 3: Automatyczne księgowanie przelewów w menedżerze sprzedaży BaseLinker (plugin dostępny w wersji ecommerce)

1. Podstawy budowania wyra e regularnych (Regex)

Bazy danych. Andrzej Łachwa, UJ, /15

Powłoka (shell) Powłoka ksh

Strategia rozwoju kariery zawodowej - Twój scenariusz (program nagrania).

Powłoka bash. Kurs systemu Unix 1

Wtedy wystarczy wybrać właściwego Taga z listy.

Przekierowanie wejścia wyjścia:

emszmal 3: Automatyczne księgowanie przelewów w sklepie internetowym Magento (plugin dostępny w wersji ecommerce)

WYKŁAD 8. Postacie obrazów na różnych etapach procesu przetwarzania

System operacyjny Linux

Kilka zasad o których warto trzeba pamiętać

1 Przygotował: mgr inż. Maciej Lasota

Instrukcja UŜytkownika HaloŚląski - serwisu telefonicznego dla klientów korporacyjnych

enova Workflow Obieg faktury kosztowej

Wdrożenie modułu płatności eservice dla systemu Virtuemart 2.0.x

Interpreter poleceń oraz zmienne środowiskowe

Zastosowanie metod statystycznych do problemu ujednoznaczniania struktury zdania w języku polskim

BASH - LINIA POLECEŃ. Bioinformatyka 2018/2019

Zad.1 Pokazać pierwszeństwo trybu odmów przed zezwalaj.

ECDL Advanced Moduł AM3 Przetwarzanie tekstu Syllabus, wersja 2.0

PRACOWNIA INFORMATYCZNA BASH - PODSTAWOWE INFORMACJE

Warszawa, r.

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

PODSTAWY METROLOGII ĆWICZENIE 4 PRZETWORNIKI AC/CA Międzywydziałowa Szkoła Inżynierii Biomedycznej 2009/2010 SEMESTR 3

Warsztat naukowca a problem formatu informacji bibliograficznej generowanej przez systemy informacyjne. Remigiusz Sapa IINiB UJ

8. Konfiguracji translacji adresów (NAT)

JĘZYK SHELL JEST PEŁNYM JĘZYKIEM PROGRAMOWANIA

GEO-SYSTEM Sp. z o.o. GEO-RCiWN Rejestr Cen i Wartości Nieruchomości Podręcznik dla uŝytkowników modułu wyszukiwania danych Warszawa 2007

INSTRUKCJA OBSŁUGI URZĄDZENIA: HC8201

Niezależnie od rodzaju materiału dźwiękowego ocenie podlegały następujące elementy pracy egzaminacyjnej:

Opis obsługi systemu Ognivo2 w aplikacji Komornik SQL-VAT

Instrukcja obsługi platformy zakupowej e-osaa (klient podstawowy)

Budowa systemów komputerowych

Podstawy programowania

Pracownia internetowa w każdej szkole. Opiekun pracowni internetowej SBS 2003 PING

Systemy operacyjne. Programowanie w shellu: BASH. Wydział Inżynierii Metali i Informatyki Przemysłowej

VinCent Office. Moduł Drukarki Fiskalnej

Skrypty BASH a. Systemy Operacyjne 2. Mateusz Hołenko. 4 października 2012

I. Zakładanie nowego konta użytkownika.

SKRÓCONA INSTRUKCJA OBSŁUGI ELEKTRONICZNEGO BIURA OBSŁUGI UCZESTNIKA BADANIA BIEGŁOŚCI

INSTRUKCJA DO PROGRAMU LICZARKA 2000 v 2.56

KRYTERIA OCENIANIA W KLASIE II

Podstawy pracy w arkuszu kalkulacyjnym MS Excel

Podstawy obsługi systemów UNIX/Linux

Strona główna góra

Harmonogramowanie projektów Zarządzanie czasem

Spis treści. Rozdział 1 ewyniki. mmedica - INSTR UKC JA UŻYTKO W NIKA

Użytkowanie elektronicznego dziennika UONET PLUS.

PODRĘCZNIK UŻYTKOWNIKA

Stanowisko Rzecznika Finansowego i Prezesa Urzędu Ochrony Konkurencji i Konsumentów w sprawie interpretacji art. 49 ustawy o kredycie konsumenckim

Dziedziczenie : Dziedziczenie to nic innego jak definiowanie nowych klas w oparciu o już istniejące.

Zarządzanie projektami. wykład 1 dr inż. Agata Klaus-Rosińska

Instalacja programu. Omówienie programu. Jesteś tu: Bossa.pl

Przetwarzanie tekstu 2. Operacje na plikach tekstowych w systemie Linux

9. Dynamiczne generowanie grafiki, cz. 3

SCENARIUSZ LEKCJI WYCHOWAWCZEJ: AGRESJA I STRES. JAK SOBIE RADZIĆ ZE STRESEM?

Kancelaris - Zmiany w wersji 2.50

1. Korzyści z zakupu nowej wersji Poprawiono Zmiany w słowniku Stawki VAT Zmiana stawki VAT w kartotece Towary...

Procedura weryfikacji badania czasu przebiegu 1 paczek pocztowych

Podstawy Informatyki Gramatyki formalne

,,Nie bój się matematyki - Program zajęć wyrównawczych z matematyki dla uczniów klas VI Szkoły Podst. nr 5 w Nowym Dworze Maz.

Instalacja programów Ubuntu

2.Prawo zachowania masy

Zdalne odnawianie certyfikatów do SWI

PROE wykład 7 kontenery tablicowe, listy. dr inż. Jacek Naruniec

Systemy mikroprocesorowe - projekt

I. Tryb linii komend w systemach DOS/Windows.

ASD - ćwiczenia III. Dowodzenie poprawności programów iteracyjnych. Nieformalnie o poprawności programów:

Regulamin korzystania z serwisu

INSTRUKCJA OBSŁUGI MC-2810 CYFROWY SYSTEM GŁOŚNIKOWY 5.1 KANAŁÓW DO KINA DOMOWEGO

ANALOGOWE UKŁADY SCALONE

WSTĘP DO PROGRAMOWANIA

Transkrypt:

Skryptologia i systemy kolejkowe Franek Rakowski, Maria Fronczak, Maciek Cytowski 3 czerwiec 2005 p.1/70

Program 1. Wstęp do skryptologii 2. Powłoka tcsh 3. Powłoka bash 4. Program awk 5. Program sed 6. Makefile - programy automatycznej kompilacji 7. Skrypty PBS 3 czerwiec 2005 p.2/70

1. Wstęp dp skryptologii 3 czerwiec 2005 p.3/70

Powłoki Środowisko pracy Powłoki sa po prostu programami Rodziny powłok: sh: bash csh: tcsh ksh 3 czerwiec 2005 p.4/70

Powłoki - interpretery poleceń Proste (bardzo) języki programowania Skrypty - programy Skrypty sa intepretowane Polecenia wbudowane - opisy w bashu: help nazwapoleceniawbudowanego (Polecenia zewnętrzne - opisy przez: man nazwapoleceniazewnętrznego) 3 czerwiec 2005 p.5/70

Ogólna budowa skryptu Linie zaczynajace się od # sa komentarzami Wyjatki: Wpisywanie w 1. wierszu, od 1. kolumny, nazwy interpretatora, dla którego skrypt jest przeznaczony: #!/bin/bash polecenia systemu kolejkowego: #PBS -l cput=24:00:00 3 czerwiec 2005 p.6/70

Uruchomienie skryptu Nadajac mu prawa do wykonywania i uruchamiajac jak każdy program: chmod +x nazwaskryptu./nazwaskryptu (Wykonanie przez interpreter potomny) Wywołujac interpreter z nazwa skryptu: bash nazwaskryptu (Wykonanie przez interpreter potomny) Korzystajac z polecenia source: source nazwaskryptu (lub krócej:. nazwaskryptu (Wykonanie przez bieżacy interpreter) 3 czerwiec 2005 p.7/70

Różnice przy różnych sposobach uruchamiania > less skrypt1: #!/bin/bash export ZMIENNA1=newvalue cd /home/users/mfroncz/src > pwd /home/users/mfroncz > echo $ZMIENNA1 oldvalue 3 czerwiec 2005 p.8/70

Różnice przy różnych sposobach uruchamiania >./skrypt1 > pwd /home/users/mfroncz > echo $ZMIENNA1 oldvalue > source skrypt1 > pwd /home/users/mfroncz/src > echo $ZMIENNA1 newvalue 3 czerwiec 2005 p.9/70

2. Powłoka tcsh 3 czerwiec 2005 p.10/70

Powłoka csh i tcsh przykład: #!/bin/tcsh set a while ( $a <= 20 ) echo $a @ a=$a + 1 # Operacje arytmetyczne, uwaga na spacje! end 3 czerwiec 2005 p.11/70

Powłoka csh i tcsh opcje: -f unset, setenv, unsetenv @ a++ 3 czerwiec 2005 p.12/70

Powłoka csh i tcsh Zmienne - definiowanie i odwoływanie się do zmiennych: set a a = 3 echo $a unset a set lancuch=(mag jest dziwny) echo $lancuch[2] echo $lancuch 3 czerwiec 2005 p.13/70

Powłoka csh i tcsh set lancuch=(mag$a jest dziwny) ale set lancuch=(mag $a jest dziwny) czy set lancuch= mag jest dziwny 3 czerwiec 2005 p.14/70

Powłoka csh i tcsh Substytucje zmiennych: $$ numer procesu $argv[*] $argv[number] ${?name} ${#name} wszystkie parametry wywołania parametr wywołania 1 jeśli zmienna name istnieje, 0 liczba słów w zmiennej name 3 czerwiec 2005 p.15/70

Powłoka csh i tcsh Modyfikatory zmiennych: set a=plik.txt np: echo $a :r rdzeń nazwy pliku :e rozszerzenie nazwy pliku 3 czerwiec 2005 p.16/70

Powłoka csh i tcsh wyrażenia logiczne: ( $a <= 20 ) $$ i == = >= < lub!=! glob-pattern <= > pętla foreach: foreach i (wordlist)... end 3 czerwiec 2005 p.17/70

Podstawienia Variable substitution: $$ numer procesu history substitution:! ostatnie polecenie command substitution: wykonuje polecenie w cudzysłowie 3 czerwiec 2005 p.18/70

Podstawienia ale foreach i (*) == foreach i ( ls ) foreach i in ( seq 1 10 ) echo $i end 3 czerwiec 2005 p.19/70

Podstawienia Instrukcje warunkowe: if (expr1) then... else if (expr2) then... else... endif expr1 warunek logiczny np. ( $i <= 100 ), ( $a!= ) lub -op plik opcje filetest np. ( -e plik ), op= -efxrwzd... 3 czerwiec 2005 p.20/70

Cudzysłowy i dołaczenia - zachowuje wszystkie znaki, nawet, zwraca jedno słowo. - zachowuje znaki podstawień zmiennych np. $, bez podstawień plików np. *,?, zwraca jedno słowo. - wykonuje polecenie i zwraca jego wynik - ciag wyrazów. Dołaczanie innych plików z przenoszeniem zmiennych: source./plik.tcsh 3 czerwiec 2005 p.21/70

3. Powłoka bash 3 czerwiec 2005 p.22/70

Wejście/wyjście - wiadomości podstawowe Deskryptory: 0 - standardowe wejście (stdin) 1 - standardowe wyjście (stdout) 2 - standardowy strumień diagnostyczny (stderr) Każdemu otwartemu plikowi odpowiada co najmniej jeden deskryptor 3 czerwiec 2005 p.23/70

Przekierowywanie stdin i stdout Przekierowanie: pliku na standardowe wejście: < nazwapliku standarowego wyjścia na plik z nadpisaniem (skasowanie poprzedniej treści tego pliku) > nazwapliku standarowego wyjścia na plik z dopisaniem na koniec tego pliku: > > nazwapliku Np.:./program < plikwejściowy > > plikwyjściowy 3 czerwiec 2005 p.24/70

Przekierowywanie stderr Przekierowanie: standarowego strumienia diagnostycznego na plik z nadpisaniem (skasowanie poprzedniej treści tego pliku): 2> nazwapliku standarowego strumienia diagnostycznego na plik z dopisaniem na koniec tego pliku: 2> > nazwapliku To zadziała zawsze:./program 2> plikwyjściowy 3 czerwiec 2005 p.25/70

Przekierowywanie stdout i stderr jednocześnie Skopiowanie stderr na stdout: 2>&1 W bashu można użyć do jednoczesnego przekierowania po prostu:./program > plik 2> plik W tcsh przejdzie tylko:./program >& plik Uwaga:./program 2>&1 > plik przekieruje na plik tylko stdout. Stderr trafi na stdout (sprzed przekierowania) 3 czerwiec 2005 p.26/70

Zmienne zwykłe - bash Nie trzeba ich deklarować, ale można: help declare Sprawdzanie wartości: echo $NAZWAZMIENNEJ Ustawianie wartości (domyślnie napisy, można zadeklarować inaczej) NAZWAZMIENNEJ=WARTOŚĆ (bez spacji!) Np.: napis1= Ala ma kota ; napis2=$napis1 Często przypisanie wraz z eksportowaniem: export NAZWAZMIENNEJ=WARTOŚĆ 3 czerwiec 2005 p.27/70

Zmienne środowiskowe - bash Zmienne takie jak: HOME, SHELL, USER, PWD. Sprawdzenie wartości wszystkich: set Operacje (poza deklarowaniem) jak na zmiennych zwykłych Przypisanie nawet bez export widoczne w programach wywoływanych z bieżacej instancji interpretera 3 czerwiec 2005 p.28/70

Parametry wywołania skryptu Do kolejnych parametrów skryptu odwołujemy się przez: $1, $2,..., $9, ${10}, ${11},... $0 - nazwa skryptu $# - liczba parametrów $* lub $@ - napis złożony ze wszystkich parametrów $? - kod zakończenia ostatniego polecenia 3 czerwiec 2005 p.29/70

Parametry wywołania skryptu - c.d. Do poruszania się po liście parametrów służy shift: shift n przesuwa listę w lewo o n pozycji: parametr o numerze n + 1 staje się pierwszy shift (bez parametrów) równoznaczne z shift 1 Uwaga! set NAPIS1 NAPIS2 w bashu ustawi $1 na NAPIS1, $2 na NAPIS2, a wyzeruje wszystkie dalsze parametry ($3, $4,...) (W tcsh set NAPIS1 NAPIS2 ustawi wartość zmiennej NAPIS1 na NAPIS2) 3 czerwiec 2005 p.30/70

Kody zakończenia poleceń Polecenia przekazuja kody zakończenia: 0 - zakończenie pomyślne, 1 - zakończenie z błędem. Polecenia można łaczyć: rm -f plik echo Błąd w rm polecenie1; polecenie2 - zwykłe złożenie: wykonaj polecenie1, potem wykonaj polecenie2 polecenie1 && polecenie2 - wykonaj polecenie2 jeśli polecenie1 zakończylo się sukcesem polecenie1 polecenie2 - wykonaj polecenie2 jeśli polecenie1 zakończyło się porażka 3 czerwiec 2005 p.31/70

Instrukcja if if COMMANDS1 then COMMANDS2 [else COMMANDS3] fi if COMMANDS1 then COMMANDS2 [else COMMANDS3]fi Wykonywane COMMANDS1 i zależnie od kodu ich zakończenia COMMANDS2 albo COMMANDS3. Przy zagnieżdżaniu można używać elif 3 czerwiec 2005 p.32/70

Polecenie wbudowane test Polecenie test używane jako warunek if: Porównywanie liczb: -eq -ne -lt -le -gt -ge Porównywanie napisów: =,!= ; -z - pusty, -n niepusty Testowanie plików: -d katalog, -f plik zwykły Łaczenie testów: negacja!, koniunkcja -a, altermatywa -o Inne: help test if test -w $1 -a -f $1; then...; fi 3 czerwiec 2005 p.33/70

Operacje arytmetyczne Zadeklarowanie zmiennej jako całkowitoliczbowej i zwykłe operatory: declare -i k=0; k=k+1; Polecenie wbudowane let lub $[ ] lub $(( )): k=0; let k=k+1; k=0; k=$[k+1]; Jeśli obliczone wyrażenie daje 0, kodem zakończenia let jest 1, wpp. 0. Polecenie zewnętrzne expr (dla każdej operacji nowy proces!): k=0; k=$(expr $k + 1) (spacje sa istotne) 3 czerwiec 2005 p.34/70

Pętla while while COMMANDS1 do COMMANDS2 done while COMMANDS1; do COMMANDS2; done Póki kod zakończenia COMMANDS1 równy 0, wykonuje COMMANDS2 3 czerwiec 2005 p.35/70

Pętla for for NAME [ in WORDS...] do COMMANDS done WORDS jest lista obiektów Jeśli nie podamy WORDS, for iteruje się po parametrach skryptu `seq n` daje listę liczb naturalnych od 1 do n Nowsza składnia: for (( expr1; expr2; expr3)); do list; done for k in 1 2; do echo $k; done 3 czerwiec 2005 p.36/70

Funkcje (bash) [ function ] NAME () { COMMANDS; } Wywołanie: nazwafunkcji [arg] Odwołania do parametrów przez $1, $2,... (przesłonięcie parametrów skryptu) deklaracja zmiennych lokalnych: local i Kodem zakończenia funkcji jest kod ostatniego wykonanego polecenia Do wyniku (ostatnio wołanej) funkcji można się odwołać przez $? 3 czerwiec 2005 p.37/70

4. Program awk 3 czerwiec 2005 p.38/70

Wklejanie innych programów - awk awk BEGIN{...na dobry początek...} \ {... polecenia awk przetwarzające \ każdy rekord pliku...} \ END{...polecenia na zakończenie...} <plik awk BEGIN{} { if(fnr>4){e=\$5*627.5;printf("%d\t%f\n",\$1,e)} } END{} < plik.inp > plik.out 3 czerwiec 2005 p.39/70

awk (Aho, Weiberger, Kernighan) #!/bin/tcsh set a=ala set lan=(mag jest dziwny) echo lan awk {print $1 " $a "} Operacje zmiennoprzecinkwe: set y= echo 3 awk {e=$1*2.23;print e} echo $y lub set y= echo scale=2;3*2/20 bc -l 3 czerwiec 2005 p.40/70

awk (Aho, Weiberger, Kernighan) elementy awk: sformatowane wyjście: printf operacje arytmetyczne zmiennoprzecinkowe, wbudowane funkcje: sin(),cos(),exp(),... if ()...;else... for(i-1;i<=3;i++)...; break,exit,continue. array[] - tablice wbudowane zmienne: NF,NR,FNR,FILENAME,ARGC,ARGV 3 czerwiec 2005 p.41/70

5. Program sed 3 czerwiec 2005 p.42/70

Sed Język skryptowy do operacji na plikach, przetwarza je linia po linii Kopiuje podane pliki na standardowe wyjście, dokonujac przy okazji ich edycji zgodnie z podanymi komendami Komendy można podać wywołujac seda badź podać sedowi jako skrypt: sed -e s/pies/kot/g plik sed -f skrypt plik Postać komend: [adres1 [, adres2]] funkcja [argumenty] 3 czerwiec 2005 p.43/70

Wyrażenia regularne Sed używa wyrażeń regularnych takich jak grep. ˆ - pasuje do poczatku linii $ - pasuje do końca linii. - pasuje do pojedynczego znaku (znak)* - pasuje do dowolnie wielu wystapień znaku pod rzad (znak)? - pasuje do 0 lub 1 wystapień znaku [ajz] - pasuje do któregoś z wyminionych znaków [ajz] - pasuje do dowolnego znaku poza wyminionymi 3 czerwiec 2005 p.44/70

Komenda podstawienia [adres1[, adres2]]s/wzorzec/czymzastapić/[flagi] Możliwe flagi: g - zastap wszystkie wystapienia wzorca n - zastap n-te wystapienie wzorca Adresy identyfikuja linie, w których chcemy dokonywać podstawień Możliwe adresy: /wyrażenieregularne/ - linie, których część pasuje do wyrażenia numer linii ($ - ostatnia linia) 3 czerwiec 2005 p.45/70

Adresy - dokładniej Jeśli w liście adresów podamy 2 adresy: adres1, adres2, komenda dotyczyć będzie linii: od pierwszego wystapienia adres1 do pierwszego wystapienia adres2 od wystapienia adres1 po już trafionym wystapieniu adres2 do następnego wystapienia adres2 Operator negacji! wskazuje, że komenda odnosi się do linii nieybranych przez adres (badź adresy). 3 czerwiec 2005 p.46/70

Przykład podstawienia > cat plik Ala ma kota, ale nie ma psa. Ala ma kota i psa. > sed -e /nie/s/psa/chomika/g plik Ala ma kota, ale nie ma chomika. Ala ma kota i psa. 3 czerwiec 2005 p.47/70

Komenda usunięcia [adres1[, adres2]]d > cat plik Ala ma kota, ale nie ma psa. Ala ma kota i psa. Ala ma psa, ale nie kota. > sed -e 2,$d plik Ala ma kota, ale nie ma psa. 3 czerwiec 2005 p.48/70

Wstawianie tekstu Komenda i wstawia tekst przed bieżac a linia: sed -e 1iJakisTekst plik wstawi JakisTekst przed poczatkiem pliku. Komenda a wstawia tekst za bieżac a linia: sed -e $ajakistekst plik wstawi JakisTekst na końcu pliku. Komenda c pozwala zastapić zawartość linii: sed -e 10cNowaZawartośćLinii10 plik 3 czerwiec 2005 p.49/70

Komendy różne Wiele komend: sed -e 1,4d 6,9d plik lub: sed -e 1,4d -e 6,9d plik Wyłaczenie wypisywania na stdout: sed -n -e komenda (lub #n w pierwszej linii sedowego skryptu) Wypisywanie: sed -n -e 1,10p 3 czerwiec 2005 p.50/70

Makefile - programy automatycznej kompilacji 3 czerwiec 2005 p.51/70

Reguły Reguły sa postaci: cel: lista zależności TAB polecenie Np.: prog: prog.o err.o gcc -Wall -o prog prog.o err.o Plik Makefile może zawierać wiele reguł Domyślnie wykonywana jest pierwsza reguła z pliku Można wywołać make podajac nazwę celu, np: make prog, make clean 3 czerwiec 2005 p.52/70

Cele i zależności clean: Cele moga, choć nie musza być nazwami plików do zbudowania Lista zależności to oddzielona spacjami lista nazw plików i celów Nazwy plików w zależnościach określaja pliki, których zmiana powoduje ponowne wybudowanie celu Nazwy plików w regule moga zawierać uogólnienia (np. *), rozwijane jak w shellu. rm -f *.o core 3 czerwiec 2005 p.53/70

Zmienne W Makefile można używać zmiennych, definiuje się je przez: NAZWAZMIENNEJ = wartosc Odwołanie się do zmiennej jak do zmiennych w shellu: $NAZWAZMIENNEJ Można odwoływać się do zmiennych shellowych, ale definicje zmiennych w Makefile przysłaniaja wartości ze środowiska Znaki specjalne w wartości zmiennej (jak *) rozwijane sa dopiero w momencie użycia 3 czerwiec 2005 p.54/70

Zmienne - przykład CC = gcc CFLAGS = -Wall prog: prog.o err.o $(CC) $(CFLAGS) -o prog prog.o err.o 3 czerwiec 2005 p.55/70

Zmienne specjalne By nie powtarzać identycznych definicji $@ - nazwa celu danej reguły $< - nazwa pierwszego celu, od którego zależy cel w danej regule $? - lista nazw celów, od których zależy cel w danej regule, a które sa nowsze niż ten cel $ˆ - lista nazw wszystkich celów, od których zależy cel w danej regule $* - nazwa celu w bieżacej regule bez rozszerzenia (.c,.h,.o) 3 czerwiec 2005 p.56/70

Reguły domyślne Stosowane, gdy żadna jawna reguła nie pasuje do podanej nazwy celu Do zdefiniowania reguły domyślnej używa się reguły, która w nazwie celu ma % (% może też występować w zależnościach) %.o : %.c $(CC) -c $(CFLAGS) $< Alternatywna, jeszcze krótsza notacja dla powyższego:.c.o : $(CC) -c $(CFLAGS) $< 3 czerwiec 2005 p.57/70

Inny styl definiowania zaleznosci objects = err.o prog.o prog: $(objects) cc -o prog $(objects) $(objects) : defs.h 3 czerwiec 2005 p.58/70

Budowa Makefile a, opcje make Znak # rozpoczyna komentarz, który ciagnie się do końca wiersza Typowe cele: all, clean Opcje make: -f nazwapliku używa podanego pliku zamiast Makefile -n - wypisuje polecenia, jakie byłyby wykonane, ale bez wykonania -i - ignoruje błędy 3 czerwiec 2005 p.59/70

7. Skrypty PBS 3 czerwiec 2005 p.60/70

PBS w ICM System kolejkowy PBS w ICM znajdziemy na: halo tornado latimerii Wykonywanie obliczeń na tych maszynach dozwolone jest tylko i wyłacznie przy użyciu PBS. 3 czerwiec 2005 p.61/70

Idealny użytkownik Idealny scenariusz pracy: przygotowanie programu identyfikacja zasobów których potrzebuje program załaczenie programu do systemu kolejkowego, właściwie określajac zasoby Dzięki kontroli nad systemem kolejkowym mamy (praktycznie) pełna kontrolę nad przepływem pracy na danej maszynie. 3 czerwiec 2005 p.62/70

o PBS dostępny na wszystkich systemach unix-owych klastry Linux-owe dwie gałęzie: OpenPBS oraz PBSpro 3 czerwiec 2005 p.63/70

Zasoby w orębie jednego CPU, PBS wymaga określenia co najmniej dwóch zasobów: czasu CPU Ilości pamięci dla równoległych zadań wieloprocesorowych, PBS musi również wiedzieć ile node ów/cpu zajmie zadanie inne rzeczy do rozważenia: nazwa zadania? gdzie skierować standardowe wyjście i bład? czy system powinien zawiadomić nas mail em po zakończeniu zadania? 3 czerwiec 2005 p.64/70

Przydatne opcje PBS -l mem=n[kmg] (zadanie wykorzysta N [kilo mega giga] bajtów pamięci) -l cput=hh:mm:ss (maksymalny czas CPU na zadanie PBS) -l walltime=hh:mm:ss (maksykalny czas zegarowy na zadanie PBS) -l nodes=n:ppn=m (zadanie wykorzysta N node ów, w tym na każdym po M procesorów) halo!!! -I (uruchom jako zadanie interaktywne) -N jobname (nazwa zadania) 3 czerwiec 2005 p.65/70

Przydatne opcje PBS cd. -S shell (użyj powłoki shell zamiast domyślnej do interpretacji skryptu PBS) -q queue (zadanie ma być wstawione do wskazanej kolejki queue) -o outfile (skieruj standardowe wyjście do pliku outfile) -e errfile (skieruj bład do pliku errfile) -j oe (połacz standardowe wyjście i bład) -m e (wyślij mail a do użytkownika po zakończeniu zadania) 3 czerwiec 2005 p.66/70

PBS różnice na latimerii: konieczne jest ustawianie limitow na: pamiec, czas oraz liczbe procesow liczbę procesorów ustawiamy za pomoca: -l ncpus=n na tornado: liczbę procesorów ustawiamy za pomoca: -l mppe N dla MSP lub -l mppssp N dla SSP 3 czerwiec 2005 p.67/70

Operacje na zadaniu Załaczanie zadania: z użyciem polecenia qsub: sheed@halo:# qsub submit.pbs Opcje moga być również podane z linii komend. Monitorowanie zadania: z użyciem polecenia qstat qstat qstat -a qstat -f qstat -Q Modyfikacja i zabijanie zadania: qalter w celu zmiany przydzielonych zasobów oraz qdel w celu zabicia zadania identyfikowanego poprzez job_id 3 czerwiec 2005 p.68/70

Przykładowy skrypt #!/bin/tcsh #PBS -N zadanie #PBS -l nodes=8:ppn=2 #PBS -l walltime=24:00:00 #PBS -l file=5gb #PBS -m e echo Job started echo " " at date echo " " on host hostname echo " " working directory is $PBS_O_WORKDIR echo " " will run on cat < $PBS_NODEFILE set numprocs= wc -l < $PBS_NODEFILE #uruchamiamy zadanie mpi owe programem mpiexec #ponizsza komenda jest rownowazna w stosunku do #mpirun -nolocal -np $numprocs -machinefile $PBS_NODEFILE./cpi mpiexec -transform-hostname=s/^n/a/./cpi echo Job finished at date 3 czerwiec 2005 p.69/70

Co dalej? zapraszamy na kolejne szkolenia działu KDM zapraszamy na dni otawrte działu KDM (info na http://www.icm.edu.pl/kdm/) adres pocztowy grupy kdm-support: kdm-support@icm.edu.pl inne wydarzenia w ICM 3 czerwiec 2005 p.70/70