MATERIAAY DO ĆWICZEC LABORATORYJNYCH
(8)
Polecenia dotyczące procesów
Polecenie ps wyświetla informacje o uruchomionych procesach
ps Informacje o procesach uruchomionych z terminala, przy którym
pracuje użytkownik, np.
552 pts/1 0:01 csh
PID terminal czas wykonywania nazwa programu
siÄ™ procesu [min:sek]
PID jest numerem identyfikacyjnym procesu.
ps -f Opcja f powoduje wyświetlenie znacznie więcej informacji
o procesach związanych z bieżącym terminalem. Dodatkowo
podawane sÄ… m.in.:
UID nazwa użytkownika, który uruchomił proces
PPID numer PID procesu nadrzędnego (macierzystego)
STIME czas rozpoczęcia danego procesu
ps -l Jeszcze więcej informacji o procesach związanych z bieżącym
terminalem. Podawane sÄ… m.in.:
S stan procesu:
R stan aktywny (proces wykonujÄ…cy siÄ™)
S stan uśpiony (proces czeka na jakieś zdarzenie)
W stan oczekiwania (proces czeka na zakończenie się
procesu potomnego)
T proces zakończony
Z proces wstrzymany (pozostaje w pamięci i może
być wznowiony)
SZ wielkość pamięci zajmowanej przez proces w blokach.
ps -e Informacje o procesach uruchomionych na wszystkich terminalach
danej stacji roboczej
ps -ef Opcje można łączyć. Informacje o wszystkich procesach.
Znak ? w pozycji terminala, oznacza proces systemowy nie
związany z żadnym terminalem
ps -u a2 procesy użytkownika a2 (zamiast a2 wstawić swoją nazwę
użytkownika)
ps -ef | grep a2 wykonuje to samo co ps -fu a2
Polecenie kill służy do wysyłania do procesów określonych sygnałów
kill [sygnał] PID_procesu
kill -l Podaje listę sygnałów, które można wysłać do procesu
sh Uruchomienie procesu powłoki Bourne a, określenie numeru PID
tego procesu i usunięcie go z pamięci (przerwanie procesu).
ps
kill -KILL PID
lub kill -9 PID
cat & Uruchomienie procesu (polecenie cat) jako procesu
drugoplanowego ( w tle ), określenie numeru PID tego procesu, a
ps
następnie przerwanie go przez wysłanie do niego sygnału TERM.
kill -TERM PID
Podano 3 warianty wysłania sygnału TERM do procesu. Sygnał
lub kill -2 PID
TERM jest sygnałem domyślnym.
lub kill PID
Sygnał TERM (tzw. programowe przerwanie procesu) nie
gwarantuje przerwania procesu. Sygnał KILL natomiast przerywa
proces bezwarunkowo.
find / -name vfstab >& mm Uruchomienie procesu find, które wyszuka plik
vfstab, począwszy od katalogu głównego, a wynik,
wraz z komunikatami o błędach (symbol >&),
zapisze do pliku mm.
Kombinacja klawiszy Ctrl+C przerywa procesy
Ctrl+C
pierwszoplanowe, nie działa natomiast na procesy
drugoplanowe (działające w tle ).
Naciśnięcie klawiszy Ctrl+C wysyła do procesu
pierwszoplanowego sygnał TERM
ls / > root.files & Zadanie (proces) może być uruchomione w tle jako proces
drugoplanowy, przez umieszczenie na końcu wiersza symbolu
ampersand &. Zostanie wyświetlony wiersz np.
[2] 2171
numer zadania numer identyfikacyjny procesu
Po zakończeniu zadania wyświetlany jest np. komunikat
[2] +Done ls / > root.files
!f Powtórzenie ostatniego polecenia find i chwilowe przerwanie go.
Proces znajduje się nadal w pamięci.
Ctrl+Z
cat & Uruchomienie w tle jeszcze jednego procesu.
jobs Wyświetlenie listy procesów (zadań) uruchomionych przez
użytkownika. Procesy użytkownika nazywane są zadaniami (jobs).
Polecenie jobs pokazuje stan zadań
[1] -Stopped (user) find / -name ...
[2] +Stopped (user) cat ...
numer zadania status zadania (zatrzymane)
Znak + wskazuje ostatnie uruchomione zadanie, znak -
wskazuje zadanie przedostatnie.
Inne możliwe stany zadania to np.:
Terminated (zakończone)
Running (wykonujÄ…ce siÄ™)
find / -name *.o -print >& mm.o Uruchomienie następnego zadania i chwilowe
zatrzymanie go.
Ctrl+Z
jobs -l Dodatkowo wyprowadzany jest numer PID każdego zadania.
Do konkretnego zadania można się odwoływać za pomocą numeru PID, jak również za
pomocÄ… symboli:
% - bieżące zadanie
%n - zadanie o numerze n
kill %1 %2 Usunięcie zadania o numerze 1 i 2
jobs komunikat:
[1] +Terminated (user) find /
[2] +Terminated (user) cat..
!f Jeszcze raz wydajemy ostatnie polecenie find i chwilowo
Ctrl+Z zatrzymujemy go.
% Wznowienie wykonywania wstrzymanego zadania.
Chwilowo wstrzymane zadanie można przenieść do wykonywania
!f
w tle za pomocÄ… polecenia bg (background process).
Ctrl+Z
bg % Polecenie fg wznawia zadanie jako proces pierwszoplanowy.
Zadanie
1. Uruchomić program ftp w tle.
Za pomocą polecenia ps znalezć numer PID programu ftp
Przerwać proces poleceniem kill
2. Uruchomić program ftp jako proces pierwszoplanowy.
Usunąć ten proces z drugiego terminala.
Proces w chwili zakończenia, generuje sygnał status zakończenia (kod wyjścia) -
o wartościach z zakresu 0-255. Status równy zero (0) oznacza pomyślne zakończenie procesu.
Status różny od zera oznacza, że program nie został prawidłowo zakończony, lecz został
przerwany z powodu jakiegoś błędu.
cp test.0 test.3
Jeśli polecenie zakończy się pomyślnie, zwracany jest
status wyjścia =0.
echo $status
--> 0
cp test.0
Jeśli polecenie zakończy się niepomyślnie (nie podano
drugiego argumentu w poleceniu cp), zwracany jest
echo $status
status wyjścia `" 0.
--> 2
Wartość kodu wyjścia zależy od zaimplementowanej
w programie obsługi sytuacji wyjątkowych
grep ^piotr /etc/passwd
Jeśli żaden wiersz w pliku /etc/passwd nie zaczyna się
słowem piotr (czyli nie istnieje konto piotr), to
echo $status
wartością zmiennej status jest 1.
Powtórzyć obydwa polecenie dla użytkownika
istniejącego w systemie. W takim przypadku wartością
zmiennej status jest 0.
grep ^piotr /etc/passwd || echo Nie
Symbol || oznacza alternatywÄ™.
Komunikat zostanie wypisany
istnieje uzytkownik piotr
wtedy, kiedy polecenie grep
zakończy się niepomyślnie, tzn.
gdy zmienna status będzie miała
wartość różną od zera.
Gdyby użyć koniunkcji (&&) to
drugie polecenie zostanie
wykonane jeśli pierwsze
zakończy się pomyślnie.
Zmienne lokalne powłoki csh
Zmienne posiadają swoje nazwy, a ich wartościami mogą być teksty, słowa, symbole, liczby,
listy. Istnieje grupa zmiennych predefiniowanych przez system. Zmienne może również
definiować użytkownik.
Przyjęto umowę, aby nazwy zmiennych powłoki pisać małymi literami.
echo $home
Wartością zmiennej home jest ścieżka dostępu do katalogu
macierzystego użytkownika. Ustawiana jest automatycznie przy
echo ${home}
rozpoczynaniu sesji pracy.
Polecenie echo wyprowadza na standardowe wyjście (ekran
terminala) wartość zmiennej.
Dostęp do wartości danej zmiennej uzyskuje się przez poprzedzenie
jej nazwy znakiem dolara $. Nazwę można objąć nawiasami
klamrowymi.
echo $xxx
Ò! xxx: Undefined variable
Nie jest zdefiniowana zmienna o nazwie xxx
ls $home/Francja
Zmienną home można używać w różnych poleceniach.
Tutaj: użyto zmienną home zamiast symbolu tyldy (~)
Poniżej podano kilka innych standardowych (predefiniowanych) zmiennych powłoki.
user - nazwa pracującego aktualnie (zalogowanego) użytkownika
cwd - pełna nazwa katalogu bieżącego
history - liczba poleceń zapamiętywanych na liście polecenia history
prompt - postać znaku zachęty
shell - nazwa pliku w którym znajduje się program powłoki (csh)
Zadanie
Wyświetlić wartości powyższych zmiennych za pomocą polecenia echo
Do ustawiania wartości zmiennej lokalnej służy polecenie set
set x=plik
Zdefiniowanie zmiennej x o wartości plik .
echo $x
echo ${x}
Do wartości zmiennej x można się odwoływać w dwojaki sposób
echo ${x}12
Odwołanie się do zmiennej przy użyciu nawiasów klamrowych,
pozwala m.in. składanie ze sobą łańcuchów znaków.
Zostanie wyprowadzona nazwa plik12.
set y=`echo ${x}x`
Zdefiniowanie nowych zmiennych y i z o wartościach plikx
lub
set z=${x}x
echo $x $y
set history=20
Zmienna history jest interpretowana przez powłokę. Jej
wartością jest liczba zapamiętywanych ostatnich poleceń
wprowadzonych przez użytkownika
set savehist=5
Ustawienie zmiennej savehist powoduje zapisanie do pliku
.history w katalogu macierzystym, ostatnich 5 poleceń z listy
historii. Przy ponownym zalogowaniu siÄ™, plik ten jest
przeczytany i na liście poleceń historii zostają umieszczone
zawarte w nim polecenia.
Normalnie, po wylogowaniu siÄ™, lista historii zostaje
wyczyszczona.
set prompt= -->
Nowy znak zachęty będzie teraz miał postać: -->
hostname
Polecenie to podaje nazwÄ™ stacji roboczej
set prompt= `hostname`%
Standardowa postać znaku zachęty.
W miejscu oznaczonym przez apostrofy
(lewe), zostanie podstawiony wynik działania
polecenia hostname
Obok nazwy stacji wyświetlona będzie nazwa
set prompt= `hostname` $user>
użytkownika.
Na początku będzie wyświetlany numer
set prompt= \! `hostname` >
bieżącego polecenia na liście historii. Obok
nazwa stacji i symbol >
Zmienna path przechowuje listę katalogów, które przeszukuje powłoka (shell) dla
odnalezienia plików wykonywalnych (programów)
echo $path
Polecenie echo wyświetli ścieżki poszukiwań
programów uruchamianych przez danego użytkownika
set path=/usr/bin
Zdefiniowanie nowej ścieżki
users
Program users znajduje siÄ™ w katalogu /usr/ucb,
którego nie ma na ścieżce path. Wydanie więc
polecenia users powoduje wyświetlenie komunikatu:
users: Command not found
/usr/ucb/users
Program można uruchomić podając pełną ścieżkę do
pliku z tym programem. Polecenie users wyświetla
wszystkich użytkowników aktualnie zalogowanych na
stacji.
set path=( $path
Do istniejącej ścieżki path, dodanie katalogu /usr/ucb.
Lista katalogów jest przeszukiwana od lewej do prawej.
/usr/ucb )
users
Teraz program zostanie odnaleziony i uruchomiony.
set cdpath=( /usr ~ )
Tak jak zmienna path definiuje ścieżki wyszukiwania
programów, tak zmienna cdpath definiuje ścieżki
wyszukiwania katalogów dla polecenia cd.
cd bin
Polecenie to spowoduje przejście do katalogu /usr/bin.
System nie wyprowadzi komunikatu o błędzie, mimo,
że katalog bin nie znajduje się w katalogu bieżącym.
set nazwa= Piotr Wielki
Zmienna nazwa jest zmiennÄ… lokalnÄ…. Nie jest
dostępna dla innych procesów (tu: w procesie csh).
echo $nazwa
csh
echo $nazwa
--> Undefined variable
exit
set x=( w1 w2 w3 )
Wartością zmiennej x jest lista. Elementy tej listy ujęte
są w nawiasy okrągłe.
echo $x
echo $x[3]
set x[2]=zzz
Zmiana drugiego elementu listy x na zzz
echo $x
Polecenie set bez parametrów, wyświetla listę
set
wszystkich zdefiniowanych zmiennych powłoki
unset x
Usunięcie definicji zmiennej
$?zmienna test, czy zmienna jest zdefiniowana, tzn. czy ma jakąś wartość. Wartością
zwracaną przez test jest wartość:
" 1 (true) jeśli zmienna jest zdefiniowana
" 0 (false) jeśli zmienna nie jest zdefiniowana
echo $?prompt --> 1
echo $?bmw --> 0
set noclobber
Po ustawieniu zmiennej noclobber, istniejÄ…ce pliki nie
sÄ… nadpisywane przez operacje przekierowania
sort test.0 > test.0
Pojawi się komunikat informujący, że plik test.0 już
istnieje. Gdyby zmienna noclobber nie była ustawiona,
plik test.0 zostałby zniszczony.
set ignoreeof
Ustawienie zmiennej ignoreeof, zabezpiecza
użytkownika przed wylogowaniem się przez
przypadkowe użycie klawiszy Ctrl+D. Do wylogowania
się należy wówczas użyć polecenia logout.
set filec
Jeśli zmienna filec jest ustawiona, wtedy po
wprowadzeniu pierwszych znaków w nazwie pliku w
dowolnym poleceniu) i naciśnięciu klawisza ESC,
powłoka uzupełni nazwę brakującymi znakami.
touch sympozjum
Po napisaniu pierwszych trzech znaków w nazwie pliku
i naciśnięciu klawisza ESC, powłoka doda brakujące
ls l sym
znaki do pełnej nazwy sympozjum
touch rozdz_1_3.doc
Jeśli w katalogu znajduje się kilka podobnych nazw
rozdz_1_4.doc
plików, wtedy po napisaniu pierwszych kilku znaków
i naciśnięciu klawisza ESC, powłoka wyprowadzi
ls l roz
następne znaki wspólne w nazwach i zatrzyma się w
--> rozdz_1_
miejscu gdzie nazwy się różnią. Użytkownik musi teraz
sam dopisać następne(y) znaki i ewentualnie ponownie
--> 3
nacisnąć klawisz ESC.
--> rozdz_1_3.doc
roz
Po napisaniu kilku pierwszych znaków nazw plików
i naciśnięciu klawiszy Ctrl+d, powłoka wypisze
wszystkie nazwy plików zaczynające się tymi znakami.
Wyszukiwarka
Podobne podstrony:
Unix lab 9
Unix lab 7
Unix lab 10
Unix lab 3
Unix lab 4
Unix lab 1
Unix lab 5
Lab UNIX files and directories management
Lab Wprowadzenie do systemu UNIX
Lab Introductin to UNIX System
Lab Wprowadzenie do systemu UNIX
Lab cpp
lab 2
T2 Skrypt do lab OU Rozdział 6 Wiercenie 3
IE RS lab 9 overview
lab pkm 3
lab chemia korozja
lab tsp 3
więcej podobnych podstron