UNIX to jeden z popularniejszych w świecie wielozadaniowych i
wielodostępnych systemów operacyjnych. Został opracowany w Laboratoriach
Bell'a w 1969 r. Napisano go w języku C przez co łatwo może być przenoszony na
różne komputery. Unix może być instalowany na komputerach osobistych typu IBM PC
i Macintosh, na komputerach średniej mocy, np. VAX oraz bardzo dużej mocy, np.
SUN, SGI. System Unix posiada bardzo wiele odmian opracowanych przez różne
firmy. W chwili obecnej występują dwie rodziny systemu UNIX: System V oraz BSD.
Popularną odmianą Unix'a na komputery typu IBM PC jest Linux - darmowa, dostępna
w Internecie wersja, opracowana przez Fina Linus'a Torvalds'a oraz BSD -
rozwijana przez programistów związanych z Uniwerytetem Berkeley. UNIX jest
systemem uniwersalnym - jest stosowany jako system operacyjny dla baz danych,
zadań obliczeniowych, serwerów sieciowych, systemów czasu rzeczywistego i wielu
innych.
Najważniejsze cechy systemu, które przyczyniły się do jego
popularności:
- prosty i spójny język poleceń,
- duży wybór narzędzi programowych dla środowiska systemowego oraz programów
usługowych i użytkowych,
- łatwość przenoszenia programów na inne maszyny,
- duża wydajność i niezawodność.
Drzewiasta struktura systemu Unix BSD
Struktura systemu Unix V
W nowszych wersjach systemu UNIX (np. System V ) drzewo katalogowe fizycznie
umieszcza się zazwyczaj na kilku partycjach. Ma to na celu oddzielenie katalogów
praktycznie niezmiennych od katalogów, których zawartość zmienia się, a także
wydzielenie części katalogów niezbędnych do uruchomienia systemu. Można na
przykład w pierwszej partycji umieścić katalogi niezbędne do uruchomienia
systemu: dev, etc, sbin, bin, lib, w drugiej
partycji katalog usr, w trzeciej - katalog var, w czwartej -
tmp, a w piątej home.
Cechy charakterystyczne systemu UNIX:
- System plików jest zorganizowany w spójną hierarchiczna strukturę
drzewiastą o dostępie niezależnym od urządzenia (wszystkie dyski, woluminy,
urządzenia wej/wyj są umieszczone w jednym drzewie),
- Nazwy plików nie maja ściśle określonego formatu. Rozszerzenie nazwy (np.
.txt) ma znaczenie informacyjne. Unix rozróżnia w nazwach plików wielkie i
małe litery.
- Każdy użytkownik ma swój identyfikator, hasło oraz katalog osobisty.
- Użytkownicy systemu są łączeni w grupy.
- Każdy plik ma swojego właściciela oraz grupę.
- UNIX rozróżnia cztery podstawowe typy praw dostępu do pliku lub katalogu:
prawo odczytu (r), prawo zapisu(w), prawo wykonania lub wejścia
(x), brak praw (-), oddzielnie dla użytkownika, grupy i
pozostałych użytkowników.
- Pamięć zewnętrzna (dyski twarde, dyskietki, itp.) nazywana jest
wolumenami wymienialnymi i jest dostępna po wcześniejszym jej
zamontowaniu, tzn. dołączeniu do dowolnego istniejącego katalogu,
- Po zakończeniu pracy z wolumenem wymienialnym należy go odmontować,
- UNIX jest systemem wielozadaniowym (z wywłaszczeniem) i
wielodostępnym, tzn. z jednego komputera unix'owego może korzystać
jednocześnie wielu użytkowników, a każdy z nich może uruchomić kilka procesów,
- Pracę całego systemu koordynuje JĄDRO (kernel) - zarządza
przydziałem pamięci i czasu procesora, ma dostęp do urządzeń. Żaden program
nie ma bezpośredniego dostępu do urządzeń wej/wyj. Dostęp do jądra jest
możliwy tylko przez wywołania funkcji systemowych (jest to charakterystyczna
cecha systemu UNIX).
- Część systemu operacyjnego, która interpretuje polecenia i z którą
bezpośrednio styka się użytkownik nazywa się POWŁOKĄ (shell). W UNIX'ie
dostępnych jest kilka powłok, najbardziej popularne to: Bourne Shell
(sh), C-Shell (csh) oraz Korn shell (ksh).
- Wszystkie pliki startowe systemu są napisane w shell'u dzięki czemu proces
startu jest czytelny i łatwo podlega modyfikacjom.
- Procesem nazywany jest działający w danej chwili program wraz z
jego danymi i środowiskiem. Każdy proces ma swojego właściciela. Procesy
działają w wyizolowanej przestrzeni adresowej i nie czują obecności innych
procesów.
- Proces może być wykonywany interaktywnie, bądź w tle.
- Komunikacja między procesami a urządzeniami we/wy odbywa się za pomocą
plików urządzeń strumieniowych lub blokowych umieszczonych w katalogu
/dev, a pomiędzy procesami za pomocą łączy, kolejek (ang. FIFO -
First Input First Output), potoków, sygnałów oraz IPC
(Inter-Process Communication - kolejki komunikatów, semafory oraz pamięć
dzielona).
- Narzędzia systemowe mają postać wielu małych programów. Dzięki potokom
można łatwo połączyć kilka prostych programów do wykonania dużej i złożonej
pracy.
- O ile nie podamy pełnej ścieżki do programu, to będzie on poszukiwany w
katalogach wymienionych w zmiennej środowiskowej PATH. W szczególności
nie jest przeszukiwany katalog bieżący, o ile nie zostanie jawnie wymieniony w
PATH.
Wybrane polecenia (Unix odróżnia małe i wielkie litery):
date - wyświetlanie aktualnej daty i godziny;
who -
wyświetlanie informacji o użytkownikach, pracujących w danej chwili w systemie;
who am i -
wyświetlanie identyfikatora użytkownika pracującego właśnie w systemie (tzn.
naszego identyfikatora);
finger - wyświetlanie danych o użytkownikach; finger [identyfikator lub nazwa] - wyświetlanie danych wybranego użytkownika;
man - wyświetlanie instrukcji obsługi polecenia;
man man - opis
polecenia man;
whatis [nazwa_polecenia] - podaje funkcje
danego polecenia;
passwd - zmiana hasła;
logout - zakończenie sesji;
touch - powoduje otwarcie pliku do zapisu i zamknięcie; touch [nazwa
pliku]
ls - wyświetlanie zawartości katalogu bieżącego -
wyświetlane są tylko nazwy plików i podkatalogów;
ls -l - polecenie z opcją -l powoduje wyświetlenie dodatkowych informacji na temat plików
(długość, atrybuty, właściciel) i rodzaju pliku. Opcja -a wyświetla pliki ukryte (zaczynające sie .);
cd - zmiana katalogu; np. cd [nazwa
katalogu];
cp - kopiowanie plików;
cp [nazwa pliku
źródłowego] [nazwa pliku docelowego]; plik źródłowy pozostaje nie zmieniony; w przeciwieństwie do DOS'a polecenie to zawsze musi mieć 2 argumenty nazwa pliku to ciąg znaków, może być ona podana w sposób względny - z ewentualną ścieżką od katalogu bieżącego, np. kowalski/moj.plik.txt
lub moj.plik.txt, gdy plik znajduje się w katalogu bieżącym bądź też w sposób bezwzględny - z podaniem ścieżki od korzenia systemu plikowego np.
/usr/kowalski/moj.plik.txt nazwa katalogu - również może być ona podana w sposób względny lub bezwzględny
mv - przemieszczanie plików; np. mv [nazwa pliku
źródłowego] [nazwa pliku docelowego] - plik źródłowy zostaje usunięty;
rm - usuwanie plików; np rm [nazwa pliku];
rm -r - usunięcie całego poddrzewa plikowego łącznie z podkatalogami;
mkdir - utworzenie nowego katalogu;
np mkdir [nazwa katalogu]
rmdir - usuwanie katalogu; np. rmdir [nazwa katalogu] - usuwany katalog musi być pusty
ln - utworzenie
dodatkowego dowiązania do pliku; np ln [nazwa pliku]
[nazwa dowiązania do pliku];
chmod - zmiana praw dostępu do pliku
chmod [prawa] [pliki].
np. chmod 755 plik, chmod u+x,g-wx,o=x plik;
mount - przyłączenie podsystemu plikowego;
mount [nazwa pliku specjalnego] [nazwa podkatalogu]; plik specjalny jest charakterystyczny dla danego urządzenia, zawiera on informację o sposobie dostępu do urządzenia przez system; podkatalog, do którego ma być dołączone
urządzenie musi istnieć i być pusty; np. mount /dev/fd0
/usr/kowalski/A - dołączenie dyskietki do podkatalogu A w katalogu domowym użytkownika.
umount - odłączenie podsystemu plikowego; umount
[nazwa podkatalogu]; np. umount /usr/kowalski/A
cat - wyświetlenie zwartości pliku lub plików; cat [nazwa pliku lub plików];
echo - wypisanie tekstu na ekranie; wypisany tekst można też skierować do pliku np. echo [tekst] > [nazwa pliku];
Inne polecenia:
tty - wyświetlenie nazwy terminala;
clear - wyczyszczenie ekranu;
mailx - nadawanie i odbieranie poczty;
pwd -
wyświetlenie nazwy aktualnego katalogu;
more - wyświetlenie treści
pliku tekstowego; more [nazwa pliku]
find - wyszukiwanie pliku
lub katalogu;
du - ilość zajmowanego miejsca przez plik lub katalog;
quota - ilość miejsca na dysku dostępna dla użytkownika;
at - wykonanie polecenia o określonej porze;
ps -
wyświetlenie listy procesów w systemie; ps -ef (lub ps -aux w BSD)- wyświetlenie procesów uruchomionych.
Znaki o specjalnym znaczeniu:
/ korzeń systemu plikowego, separator katalogów w zapisie ścieżki;
* metaznak: dowolny ciąg znaków, ciąg może być pusty; np. cp
a*b /tmp - polecenie kopiowania plików, których nazwa zaczyna się od małego
a, a kończy się małym b z katalogu bieżącego do katalogu
tmp; rm * - polecenie usunięcia z katalogu bieżącego wszystkich plików za wyjątkiem plików ukrytych, które rozpoczynają się od
kropki;
? metaznak: pojedynczy znak; np. cp ??? /tmp -
polecenie skopiowania z katalogu bieżącego do katalogu tmp wszystkich
plików, których nazwa ma dokładnie 3 znaki;
[. . .] metaznak: dowolny
pojedynczy znak spośród wymienionych w nawiasie; np. rm [Aa-f0-9]* - polecenie usunięcia z katalogu bieżącego plików, których nazwa rozpoczyna się literą A lub małą literą od a do f lub cyfrą;
\
znak wycofania znaczenia; np. mv gwiazdka\* gw - polecenie zmiany nazwy pliku z gwiazdka* na gw - wycofano znaczenie metaznaku *
. katalog bieżący; np. cp /usr/kowalski/dane . - polecenie
skopiowania pliku dane do katalogu bieżącego;
.. katalog nadrzędny
wobec bieżącego.
UWAGA! Znaki są
interpretowane przez powłokę - dla polecenia wywołanego z * argumentami są
wszystkie nazwy plików w danym katalogu.
Atrybuty oznaczające prawa dostępu do pliku:
Po wykonaniu ls -l w pierwszej kolumnie pojawia się informacja o typie pliku i prawach dostępu do tego pliku. Pierwszy znak oznacza:
Symbol |
Oznaczenie |
- |
plik zwykły |
d |
katalog |
l |
dowiązanie symboliczne |
p |
FIFO |
c |
plik urządzenia znakowego |
b |
plik urządzenia blokowego |
Następne 3 trzy-znakowe pola określają prawa dla użytkownika, grupy oraz
pozostałych użytkowników:
- -rwxr-x--- oznacza prawa rwx dla użytkownika (odczyt, zapis
i wykonanie), prawa rx dla grupy (odczyt i wykonanie) oraz brak praw
dla pozostałych użytkowników.
- drwx--x--x oznacza prawa rwx dla użytkownika (odczyt, zapis
i wyjście), prawo x dla grupy i pozostałych (prawo wejścia oznacza
możliwość uczynienia danego katalogu bieżącym).