Tablice, procesy, sygnały i nie tylko
Transkrypt
Tablice, procesy, sygnały i nie tylko
Tablice, procesy, sygnały i nie tylko Kurs systemu Unix 1 Tablice w bash-u • Tablice można realizować za pomoca˛ konstrukcji eval, • ale jeżeli indeksami sa˛ liczby (od 0, jak w j˛ezyku C) to prościej b˛edzie użyć declare. • Tworzenie tablicy: declare -a T • Zapisywanie do tablicy: T[$i]=13 • Odczytywanie elementów: echo ${T[$i]} • Wszystkie elementy: echo ${T[*]} Kurs systemu Unix 2 O sterowaniu 2 zaległe słowa • Instrukcja break ma parametr, liczba mówiaca ˛ z ilu poziomów p˛etli mamy wyskoczyć. • Domyślna˛ jej wartościa˛ jest 1, co oznacza wyskok z najbardziej wewn˛etrznej p˛etli. Kurs systemu Unix 3 Instrukcja select • Umożliwia pisanie czegoś w rodzaju programów interakcyjnych. • Składnia: select zmienna in lista do instrukcje done • Definiujemy w ten sposób nieskończona˛ p˛etl˛e. • Można z niej wychodzić za pomoca˛ instrukcji break Kurs systemu Unix 4 Przykładowe zastosowanie echo "Wybierz ptaka:" select zmienna in pingwin kiwi kormoran do if [ $zmienna ] then echo "Wybraªe± ${zmienna}a" break else echo "Nic nie wybraªe±, a prosiªem..." echo "Spróbuj jeszcze raz!" fi done Kurs systemu Unix 5 Co widać na ekranie? Wybierz ptaka: 1) pingwin 2) kiwi 3) kormoran #? [ENTER] 1) pingwin 2) kiwi 3) kormoran #? 6 Nic nie wybraªe±, a prosiªem... Spróbuj jeszcze raz! #? 2 Wybraªe± kiwia Kurs systemu Unix 6 Sygnały • W pewnych sytuacjach do procesu wysyłane sa˛ sygnały (np. kończace ˛ procesy). • Za pomoca˛ polecenia trap można przechwytywać sygnały. • Składnia: trap polecenia sygnaª lub trap -l. • Przypisanie poleceń sygnałowi lub polecenie wypisania numerów sygnałów i ich skrótów. Kurs systemu Unix 7 Niektóre sygnały SIGINT SIGKILL użytkownik wpisuje znak przerwania (Ctrl-C) zakończenie (nieignorowalne, numer 9) SIGALRM budzik (upłynał ˛ kawałek czasu) SIGTERM grzeczna prośba o zakoćzenie SIGCHLD zakoćzył prac˛e proces potomny SIGPIPE Kurs systemu Unix nieprawidłowe działanie potoku mi˛edzy procesami 8 Użycie polecenia trap trap "echo proba przerwania" SIGINT input=a while [ "$input" == "a" ] do echo "Wpisz 'a' by kontynuowac, inny znak by zakonczyc" read input done echo "Skrypt zakonczony" Kurs systemu Unix 9 Dwa słowa o procesach • Proces to działajacy ˛ program. • Procesy maja˛ rodziców i moga˛ mieć dzieci. • Wywoływanie w tle: polecenie & • Polecenie ps oraz kill. PID 18237 1291 27919 Kurs systemu Unix TTY pts/6 pts/2 pts/9 TIME 0:00 0:00 0:00 CMD bash vi mailtool 10 Zatrzymywanie procesów • ( while true; do x=1; done ) & • PID TTY TIME CMD 18237 pts/6 0:00 bash 19701 pts/6 0:54 bash • usuni˛ecie: kill -9 19701 • Kurs systemu Unix 18237 pts/6 [1]+ Killed 0:00 bash ( while true; do x=1; done ) 11 Kilka użytecznych poleceń – date • Polecenie wyświetla (oraz zmienia) dat˛e. • Przykład ~> date '+DATE: %m/%d/%y%nTIME:%H:%M:%S' DATE: 03/11/02 TIME:13:18:05 Kurs systemu Unix 12 Polecenie cal • Wyświetla kalendarz na dowolny rok lub miesiac. ˛ • Uwzgl˛ednia reformy kalendarza (przejście na gregoriański, itp) • Składnia: cal [ [miesi¡c] rok ], podane jako liczby. • Brak opcji oznacza bieżacy ˛ miesiac. ˛ • Przykład: ~> cal 3 3003 March 3003 S M Tu W Th 1 2 3 6 7 8 9 10 13 14 15 16 17 20 21 22 23 24 27 28 29 30 31 Kurs systemu Unix F 4 11 18 25 S 5 12 19 26 13 Polecenie finger • Wyświetla różne informacje o użytkowniku. • Argumentem jest login użytkownika, jego imi˛e badź ˛ nazwisko. • Te informacje to: imi˛e, nazwisko, login, katalog domowy i używana powłoka, kiedy si˛e logował ostatnio i z jakiego komputera, kiedy przeczytał poczt˛e i czy ma jakieś plany. • Plany zapisane sa˛ w pliku .plan. Kurs systemu Unix 14 Sposoby komunikacji mi˛edzy użytkownikami • Poczta elektroniczna (mail, elm, pine, ...) • Komunikaty: write, wall, mesg. • Programy do konwersacji (talk adres [terminal]). Kurs systemu Unix 15 Obsługa poczty • Polecenie mail służy do wysyłania badź ˛ odczytywania wiadomości pocztowych • Zdecydowanie cz˛eściej do nadawania listów (ze skryptów), do odbioru bardziej nadaja˛ si˛e „interakcyjne” programy, jak pine czy elm • Sa˛ też oczywiście okienkowi klienci poczty, np.: kmail • Przykład (nadawanie): mail -s "temat" odbiorca < plik-z-listem Kurs systemu Unix 16 Klient poczty elm • Elm to interaktywny program obsługi poczty uruchamiany poleceniem elm. • Program umożliwia: – przegladanie, ˛ kasowanie, zapamietywanie wiadomości, – odpowiadanie na listy, – tworzenie nowych za pomoca˛ edytora (domyślnie vi), – obsług˛e różnych folderów poczty, – tworzenie aliasów (klawisz a), – dołaczanie ˛ plików do listu ( też klawisz a, ale kiedy indziej) – drukowanie listów (klawisz p), Kurs systemu Unix 17 Obsługa komunikatów • Polecenie write wysyła komunikat na konsol˛e innego użytkownika. • Składnia: write nazwa-uz [terminal] • Polecenie who umożliwia przejrzenie potencjalnych adresatów • Treść podaje si˛e z konsoli (przerywany znakiem końca pliku, czyli ^D). • Można wysłać coś do wszystkich (polecenie wall). • Polecenie mesg y | n pozwala na odrzucanie komunikatów. Kurs systemu Unix 18 Z innej beczki: polecenie more • Interaktywne polecenie wyświetlajace ˛ zawartość pliku • Skladnia: more nazwapliku • Komendy more iSPACE wyświetla nast˛epny ekran lub i linii i/wzorzec wyszukuje i-te wystapienie ˛ wzorca h wypisuje list˛e dost˛epnych poleceń !command wykonuje polecenie powłoki . powtarza ostatnia˛ komend˛e q wyjście z programu • Cz˛esto jest bogatszy wariant polecenia more o skromnej nazwie less, który umożliwia cofanie si˛e w pliku. Kurs systemu Unix 19 Plik z historia˛ poleceń • Plik z ostatnimi poleceniami to $HISTFILE. • Można g wyświetlic: – w całości, piszac ˛ history – ostatnie n linii, piszac ˛ history n. • Korzystanie z pliku historii: !! powtarza poprzednia˛ komend˛e !n powtarza komend˛e n-ta˛ !-n powtarza n-ta˛ od końca komend˛e !str powtarza ostatnia˛ komend˛e zaczynajac ˛ a˛ si˛e od str !?str? powtarza ostatnia˛ komend˛e zawierajac ˛ a˛ si˛e str Kurs systemu Unix 20 Drobne (acz użyteczne) polecenia • head bierze pierwsze linie z pliku (przykładowo head -10) • tail wyświetla końcówk˛e pliku (tail -5), • clear wymazuje ekran terminalu, • split oraz csplit dziela˛ pliki, za kryterium biorac ˛ wielkość lub inne rzeczy (tak powstałe pliki możemy połaczyć za pomoca˛ cat). • diff znajduje różnice mi˛edzy plikami tekstowymi. • Dla plików binarnych lepiej używać cmp. Kurs systemu Unix 21 Tworzenie linków • Za pomoca˛ linków można tworzyć w pewnym miejscu drzewa katalogów „złudzenie” pliku, który tak naprawd˛e jest gdzie indziej. • Mamy dwa rodzaje łaczy: ˛ 1. łacze ˛ twarde (wskaźnik na miejsce na dysku) 2. łacze ˛ symboliczne (zapami˛etana jest ścieżka dost˛epu do pliku) • do tworzenia łacza ˛ symbolicznego używamy opcji -s. • składnia jak cp, czyli ln -s nazwa-pliku nazwa-ª¡cza. • Polecenie ls wyświetla, co nast˛epuje: lrwxrwxrwx 1 prych Kurs systemu Unix 101 25 mar 18 12:53 link -> /home/prych/dyd/KursUnixa/ 22