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