Wykład 12
System operacyjny
Linux
Drzewo katalogów.
Podstawowe komendy
Różnice między
dystrybucjami
Nie dotyczą one omawianych dziś
podstawowych komend. Widoczne są
natomiast
w
położeniu
plików
systemowych,
w
stosowanych
narzędziach
admini-stracyjnych,
a
przede wszystkim w zawartości pakie-
tów programów dołączanych dodatkowo
do „rdze-nia” systemu.
Drzewo katalogów systemu
Linux
Katalog główny oznaczany jest znakiem /
(„slash”) na początku ścieżki dostępu.
Komendy
a)
ls /home
b)
ls home
wyświetlą: a) zawartość katalogu
home
umieszczone-go w katalogu głównym, b)
zawartość katalogu
home
istniejącego w
aktualnym katalogu roboczym
Drzewo katalogów systemu
Linux
/
/
mnt/cdro
m/mnt/f
oppy
/usr/bin
/usr/loc
al
/boot
/bin
/lib
/sbin
/etc
/
home
/var
/tmp
/usr
/mnt
Drzewo katalogów systemu
Linux
/boot
zawiera pliki uruchomieniowe
systemu, np. plik z jądrem (
kernelem
)
systemu
/bin
i
/sbin
zawierają podstawowe
komendy dostępne ogólnie (/bin) i tylko
dla root-a (/sbin)
/lib
zawiera biblioteki - nie są to
programy, a raczej zbiory procedur, z
których programy korzystają
Biblioteki w systemie
Linux
Biblioteki zawierają procedury często
używane przez programy. Nazwy mają
format
lib*.a
albo
lib*.so
Ponieważ „urzędowym” językiem Linuxa
jest C, najważniejsza biblioteka to
libc
(oraz związana z nią
libm
zawierająca
funkcje
matematyczne).
Dawniej
używano wersji
libc5
, dziś obowiązuje
libc6
zwana też
glibc2
Biblioteki w systemie
Linux
Biblioteki dzielimy na
statyczne
i
dynamiczne
(mają one odpowiednio
rozszerzenia
*.a
i
*.so
)
Procedury z
bibliotek statycznych
są
włączane
na
stałe
do
programu.
Program jest więc większy.
Procedury z
bibliotek dynamicznych
pozostają w nich i są wywoływane „w
razie potrzeby”. Program jest mniejszy,
ale mogą wystąpić konfikty wersji.
Drzewo katalogów systemu
Linux
/usr
zawiera
pliki
programów
użytkowych,
dodatko-we
komendy,dokumentację itp. Dzieli się na
liczne
podkatalogi,
jak
/usr/bin,
/usr/sbin, /usr/lib
/etc
to katalog, w którym zapisane są
dane konfigu-racji systemu (np. lista
użytkowników i plik z hasła-mi -
/etc/passwd
),
skrypty
uruchamiające
usługi itp.
Drzewo katalogów systemu
Linux
/tmp
zawiera pliki tymczasowe. Jest
czyszczony przy uruchamianiu systemu.
/var
zawiera m.in. zapis pracy systemu
(
/var/log/
)
/mnt
(skrót od
mount
) to miejsce, gdzie
zwykle „podmontowane” zostają inne
urządzenia fizyczne (CDROM, stacja
dysków) - np. /mount/foppy
Katalogi i nie tylko
/dev
zawiera pseudo-pliki będące w
rzeczywistości odnośnikami do urządzeń
wejścia/wyjścia, np.
/dev/fd0
(stacja
dysków A:) albo
/dev/psaux
(mysz).
swap
(„obszar wymiany”) to podręczna
pamięć dys-kowa - jest używana, gdy
brakuje RAM-u. Zwykle zakładana na
osobnej partycji lub dysku zgodnie z
zasadą:
objętość „swap” 2 * ilość RAM
Procesy
Zadania (programy) w systemie Linux
istnieją jako tzw.
procesy
. Każdy z nich
ma swój numer (
Process Identity
,
PID
).
Listę
najaktywniejszych
procesów
pokazuje komenda
top
(przerywana
przez
Ctrl
-
C
). Sporo procesów to tzw.
demony
(ang.
daemon
) - programy
„uśpione”, czekające na jakiś sygnał -
np.
„demon”
klawiatury,
sieciowy,
dyskowy.
Nazwy
procesów-demonów
kończą się na „d” np.
inetd
Powłoki (shell)
Użytkownik nie pracuje bezpośrednio z
systemem, ale w ramach tzw.
powłoki
(ang.
shell
). Wybór powłoki, z jaką
użytkownik chce pracować, to zwykle
kwestia gustu i przyzwyczajeń. Do
najczęściej stoso-wanych należą:
bash
,
csh
i jej nowszy klon
tcsh
,
ksh
. Powłokę
wywołuje się jak program - np. wpisanie
komendy
csh
przerzuci nas do powłoki
csh.
Komendy - sesja
logout
- komenda kończąca pracę.
Czasem zamiast „logout” trzeba użyć
komendy
exit
login
- komenda umożliwia rozpoczęcie
pracy jako inny użytkownik
passwd
- umożliwia zmianę hasła
who
- pokazuje listę pracujących
użytkowników
whoami
- pokazuje login bieżącego
użytkownika
Komendy - katalogi
ls
- komenda wyświetla zawartość
katalogów.
Ma
wiele
opcji
pomocniczych, np.
ls -a
wyświetla
dodat-kowo pliki ukryte, zaś
ls -l
wyświetla
opis
plików
w
wersji
rozszerzonej
-
podaje
atrybuty,
właściciela, rozmiar. Komenda
ls -i
podaje numery identyfika-cyjne plików -
użyteczne do rozpoznania, czy mamy do
czynienia z plikiem, czy skrótem.
Komendy - skróty
ln
- komenda tworzy skrót-połączenie
(ang.
link
) do danego pliku. Na przykład
komenda
ln -s /usr/local/bin/start_quake ./quake
utworzy w bieżącym katalogu plik
„quake”
będący
skrótem
(
linkiem
symbolicznym
) do pliku o nazwie
start_quake z katalogu /usr/local/bin.
Linki
służą do utworzenia „kopii” pliku
czy programu w pożąda-nym miejscu.
Komendy - katalogi
pwd
- komenda podaje bieżący katalog
cd
katalog
-
komenda
powoduje
przejście do danego katalogu, np.
cd
praca
albo
cd ../dysk2
albo
cd /usr
cp źródło cel
- komenda kopiuje plik
(pliki) źródłowy we wskazane miejsce,
np. cp plik*.txt /mnt/foppy Podobna
komenda
mv źródło cel
przenosi plik.
rm
plik
-
kasuje
nieodwracalnie
wskazany plik
Komendy - katalogi
mkdir katalog
- komenda zakłada nowy
katalog
rmdir katalog
- komenda kasuje dany
katalog, jeśli jest on pusty. Jednak jeśli
tak nie jest, komenda nie zadziała.
Trzeba wtedy najpierw opróżnić dany
katalog, np. tak:
rm katalog/*
rmdir katalog
Komendy - czas
date
- komenda podaje aktualny czas i
datę
time polecenie
- komenda mierzy czas
wykonania danego polecenia, np.
time ls
-l /home
Czas w systemie Linux dzieli się na
user
time
,
system time
i
wall clock time
: czas
wykorzystany
przez
pro-ces
użytkownika, czas obsługi procesu przez
system oraz rzeczywisty czas od startu
do ukończenia proce-su.
Komendy - przekierowania
Jeżeli
chcemy,
by
dana
komenda
zapisała wyniki działania do pliku,
korzystamy ze znaku
>
ls praca > spis
Jeżeli komenda ma czytać dane z pliku,
używamy znaku
<
mój_program
<
dane_wejściowe
>
wyniki
Komendy - zadania w tle
Jeżeli chcemy, by dana komenda została
uruchomiona w tle (jako samodzielny
proces), korzy-stamy ze znaku
&
mój_program
<
dane_wejściowe
>
wyniki &
Uruchomienie komendy
top
powoduje
pokazanie tabelki aktywnych procesów.
Podobnie działa komenda
ps
albo też
ps
-u nazwa_użytkownika
Komendy - procesy
Jeżeli
chcemy
przerwać
działanie
procesu biegnącego w tle, korzystamy z
komendy
kill
, ale wcześniej (komendą
top lub ps) musimy poznać numer PID
danego procesu:
ps -u demo
> 998
sh
> 1004
mój_program < dane > wyniki
> 1014
ps -u demo
kill 1004
Komendy - pliki
file plik
- podaje opis pliku (czy jest to
program itp.)
touch plik
- tworzy pusty plik albo
aktualizuje datę pliku już istniejącego
cat plik, more plik, less plik
-
przeglądają zawartość danego pliku. Nie
stosować do plików binarnych!
echo wyrażenie
- wypisuje podane
wyrażenie tekstowe np.
echo „Na
zdrowie” > pozdrowienia
Komendy - pliki
head -N plik
- podaje N pierwszych linii
danego pliku, np.
head -10 lista
tail -N plik
- podaje N ostatnich linii
danego pliku, np.
tail -10 lista
tail -f plik
- śledzi przyrastanie danego
pliku - podaje jego ostatnie linie i czeka,
czy nie pojawią się następ-ne. Użyteczne
przy pracy z programami zapisują-cymi
dane nieregularnie lub co jakiś czas.
Komendy - pliki
diff plik1 plik2
- podaje linie, którymi
różnią się dwa pliki tekstowe; dla plików
binarnych stwierdza tylko, czy są one
identyczne, czy nie.
grep „wyrażenie” plik
- podaje linie
pliku, w których występuje (albo w
wersji
grep -n
nie występuje) po-dane
wyrażenie, np.
grep 1200 lista
grep „kilka wyrazów” lista
Komendy - archiwizacja
compress plik
,
gzip plik
,
bzip2 plik
- trzy
komendy kompresujące plik (podane w
kolejności od najstar-szej do najnowszej
i najlepszej). Produkują odpo-wiednio
pliki
plik.Z
,
plik.gz
oraz
plik.bz2
Do rozpakowania posłużą komendy
uncompress plik.Z
,
gzip -d plik.gz
albo
gunzip plik.gz
,
bzip2 -d plik.bz2
Komendy - archiwizacja
tar cf archiwum.tar plik1 plik2 plik3...
-
tworzy plik-archiwum zawierający w
sobie pliki (katalogi) plik1...
Do
rozpakowania
archiwum
służy
komenda
tar xf archiwum.tar
tar xf archiwum.tar -C katalog_docelowy
tar xf archiwum.tar plik1
- wypakuje
tylko plik1
tar tf archiwum.tar
- testuje i wyświetla
spis plików
Atrybuty plików
Atrybuty plików widoczne są po użyciu
komendy
ls -l
Najważniejsze to:
d
(katalog),
r
(prawo
do odczytu),
w
(prawo do zapisu i
skasowania),
x
(prawo do uruchomienia
pliku lub wejścia do katalogu),
l
(link
symboliczny)
ls -l
> drwxr-xr-x demo
user katalog
>
-rwxr--r--
demo
user
plik_z_programem
Komendy - atrybuty plików
chmod atrybuty plik
- zmienia atrybuty
danego pliku
chmod -w+x programik
- zabrania
zapisu (i kasowa-nia) pliku programik,
ale pozwala go wykonywać
chown
właściciel
plik
-
zmienia
właściciela danego pliku, np.
chown
demo:users programik
Uwaga: przy tej operacji zwykle trzeba
być root-em!
Komendy - administracja,
sieć
su
- umożliwia przejście na konto root-a
(oczywiście gdy znamy hasło), lub w
formie
su nazwa
- przejście na konto
użytkownika
nazwa
ftp adres.sieciowy
- połączenie z danym
komputerem w celu przesyłania plików,
np.
ftp sunsite.icm.edu.pl.
telnet adres.sieciowy
- zalogowanie się
na komputerze o podanym adresie.
Niebezpieczny - połączenie nie jest
szyfrowane!
Komendy - sieć
ssh nazwa@adres.sieciowy
- zalogowanie
się
jako
użytkownik
nazwa
na
komputerze
o
podanym
adre-sie.
Połączenie
jest
szyfrowane.
Należy
używać tej komendy zamiast telnet-a.
ping adres.sieciowy
- sprawdzenie, czy
komputer o podanym adresie jest
aktywny
(odpowiada
na
żąda-nie
połączenia)
Komendy - sieć
host adres.sieciowy
- podaje inną formę
danego
adre-su:
zamienia
adres
„słowny” na czterobajtowy kod IP lub
odwrotnie. Przykład:
host www.wp.pl
traceroute adres.sieciowy
- podaje drogę
pakietu
się-ciowego
z
naszego
komputera na ten o podanym adresie.
Przydatne w diagnostyce sieci.