Uzitecne a zakladni prikazy Linuxu


Predpokladam, ze nevite o Unixu nic a ze ted sedite u pocitace, mate nainstalovanou nejakou distribuci Linuxu (treba RedHat nebo Slackware, ktery pouzivam ja) a kouka na vas vyzva treba
darkstar login:
Tedy predne - v unixu jsou uzivatele, kazdy ma sve jmeno (username) a heslo (password ;-). Po instalaci systemu nejsou zalozeni zadni uzivatele, pouze superuzivatel root, ktery vetsinou jeste nema zmenene heslo. Takze doporucuji, ted se zalogujte jako root a zmente heslo prikazem passwd.
Linux 2.0.10 (darkstar.(none)) (tty1)

darkstar login: root
Linux 2.0.10. (Posix).

darkstar:~# passwd
Changing password for root
Enter new password: ******
Re-type new password: ******
Password changed.

Ted uz pri kazdem dalsim prihlaseni budete mit heslo. Linux disponuje tzv. virtualnimi konzolemi (zkratka VT), na kterych muzete zaroven pracovat. Prepina se mezi nimi pomoci LALT+F1 az LALT+F6 (nebo LCTRL+LALT+Fneco), nebo treba az F12 pokud si to zkonfigurujete (kde a jak pozdeji). Takze zkuste podrzet levy ALT a zmacknout k tomu F2. Nyni se znovu zalogujte jako root a zadejte jiz nove heslo. Ted se zpatky prepnete pomoci LALT+F1. Mezi VT se lze pohybovat take pomoci LALT+sipka_vlevo a LALT+sipka_vpravo. To dela cyklicky posun o 1 obrazovku. Takze si zkuste na kazde z nich zalogovat a overit si, ze tam bezi neco jineho.


Protoze je vcelku nebezpecne hrat si se systemem jako uzivatel root, vytvorime si nyni nejake ucty pro testovaci ucely. V unixu krome toho, ze ma kazdy uzivatel sve username ma jeste skupinu, do ktere patri. Souvisi to s pristupovymi pravy, jak ukazu dale.

Prikaz, kterym root vytvori ucet na systemu je adduser. Tento prikaz vytvori prazdny domovsky adresar uzivatele a zaradi ho do databaze uzivatelu (v souboru /etc/passwd).

smrt:~# adduser

Adding a new user. The username should not exceed 8 characters
in length, or you may run into problems later.

Enter login name for new account (^C to quit): test

Editing information for new user [test]

Full Name: Testovaci Ucet
GID [100]: 
Group 'users', GID 100
First unused uid is 501

UID [501]: 

Home Directory [/home/test]: 

Shell [/bin/bash]: 

Password [test]: 

Information for new user [test]:
Home directory: [/home/test] Shell: [/bin/bash]
uid: [501] gid: [100]

Is this correct? [y/N]: y

Adding login [test] and making directory [/home/test]

Adding the files from the /etc/skel directory:
./.kermrc -> /home/test/./.kermrc
./.less -> /home/test/./.less
./.lessrc -> /home/test/./.lessrc
./.term -> /home/test/./.term
./.term/termrc -> /home/test/./.term/termrc
./.inputrc -> /home/test/./.inputrc

Tam, kde vam prikaz nabidne nejakou hodnotu v [] tak jenom odbachnete ENTER. Na vysvetlenou: na filesystemu se u kazdeho souboru uklada jmeno a skupina vlastnika, ale jako 16-bitove cislo (tedy uid=UserID a gid=GroupID). Proto vam system nabidl nejaka uid (musi byt unikatni) a gid (standartni skupina je users, ale muzete si vytvorit vlastni skupiny s libovolnym nazvem a nejakym cislem gid v souboru /etc/groups).

Uzivatel muze byt i ve vice skupinach, zjistite to prikazem groups. Pokus si nejste jisti jako kdo jste zalogovani, je na to prikaz whoami nebo who am i. Samotny prikaz who vypise kdo je na systemu zalogovany.

darkstar:~# groups 
root bin daemon sys adm disk wheel floppy control junk others
darkstar:~# whoami
root
darkstar:~# who am i
sdarkstar!root     tty2    Aug 13 21:04
darkstar:~# who
root     tty1     Aug 13 19:24
root     tty2     Aug 13 19:27
peta     ttyp0    Aug 13 19:24 (:0.0)
peta     ttyp1    Aug 13 19:26 (:0.0)
peta     ttyp2    Aug 13 19:26 (:0.0)
root     ttyp3    Aug 13 19:51 (temp.cz)
a        ttyp5    Aug 13 19:54 (temp.cz)
root     ttyp6    Aug 13 21:04 (temp.cz)

ve vypisu who je nejprve jmeno_uzivatele,terminal,datum_zalogovani_a_cas a odkud je pripojen. K Linuxu se muzete pripojit pres sit prikazem telnet jmeno_pocitace a potom system ukazuje ze jste pripojeni na terminalu ttyp# misto tty# (lokalni VT). Posledni sloupec zobrazuje, z ktereho pocitace je uzivatel prilogovan (temp.cz) nebo zdali pracuje se systemem X Window (:0.0).

Nyni se nekde zalogujte jako uzivatel test a ukazu vam ty nejzakladnejsi prikazy unixu pro praci se soubory.

Prikazy pro praci s uzivateli

Prikaz

Priklady

Funkce

passwdpasswd [uzivatel]Zmeni heslo uzivatele. Root smi menit i hesla ostatnich
passwd xmyslikZmeni heslo uzivateli xmyslik. Jen pro roota
adduseradduserZalozi noveho uzivatele (jen pro roota)
whoamiwhoamiVypise username pod kterym jste zalogovani
whowhoVypise seznam zalogovanych uzivatelu
who -wNavic vypise zda ma uzivatel povolen prijem zprav na terminal
who am iVypise kdo jste
wwVypise seznam uzivatelu a ktere programy maji spustene
fingerfinger [uzivatel/pocitac]Zjisti informace o uzivateli, pocitaci a online uzivatelich
finger rootVypise informace o spravci tohoto pocitace
finger root@www.smrt.czVypise informace o spravci pocitace www.smrt.cz
finger @www.smrt.czVypise kdo je zrovna zalogovany na www.smrt.cz
groupsgroups [uzivatel]Vypise v kterych skupinach je uzivatel
groupsVypise skupiny ve kterych jste (viz /etc/groups)
groups rootVypise ve kterych skupinach je root
mesgmesgVypise zda mate povolen prijem zprav na terminal
mesg nZakaze prijem zprav
mesg yPovoli prijem zprav
talktalk [username] [terminal]Spusti program pro konverzaci mezi dvema uzivateli
talk xmyslikPokud ma xmyslik nastaveno mesg y, vypise se mu kdo ho talkuje
talkKdyz vas nekdo talkuje, takto mu odpovite
talk root ttyp4Takto muzete nekoho vyzvat/odpovedet na specifickem terminalu (kdyz je zalogovan vicekrat)
writewrite <username>Posle uzivateli na terminal zpravu. Ukoncuje se CTRL-D
write xmyslik tty2Posle zpravu uzivateli xmyslik jen na tty2
wallwall [soubor]Posle vsem uzivatelum zpravu na terminal. Root muze poslat i cem, co maji mesg n
wallCte zpravu z standartniho vstupu. Ukoncuje se CTRL-D
wall upozorneni.txtPosle vsem uzivatelum soubor upozorneni.txt na terminal
mailmail <uzivatel[@pocitac]>Posle mail danemu uzivateli/precte vasi schranku
mail rootPosle mail rootovi. Ukoncuje se teckou na samostatnem radku
mail root@www.smrt.czPosle mail spravci pocitace www.smrt.cz
mailNecha vas interaktivne prohlednout vasi schranku


Zakladni prikazy pro praci se soubory


Kazdy uzivatel ma domaci adresar. Po zalogovani je aktualni cesta nastavena na nej. Presvedcite se o tom prikazem pwd (Print Working Directory). Mezi adresari se skace prikazem cd <jmeno_adresare> (Change Directory). Samotny prikaz cd vas vrati do domaciho adresare. Obsah adresare se vypisuje prikazem ls nebo lepe a prehledneji v delsi forme ls -l. Aktualni adresar lze referencovat pomoci tecky . , nadrazeny adresar pomoci dvou tecek ..

darkstar:~$ pwd
/home/test
darkstar:~$ ls -l
total 0
darkstar:~$ cd ..
darkstar:/home$ ls
a/         boby/      down/      ftp/       koblizek/  lada/      test/
bbs/       bruce/     faxadmin/  k/         l/         peta/   
darkstar:/home$ ls -l
total 28
drwxr-x---  80 a        users       12288 Aug 13 12:54 a/
drwxr-xr-x   3 bbs      users        1024 Mar 14 15:57 bbs/
drwxr-xr-x   4 boby     users        1024 Jan 11  1996 boby/
drwxr-xr-x   2 bruce    users        1024 May 18 22:34 bruce/
drwxr-xr-x   4 down     users        1024 Apr  7 06:27 down/
drwxr-xr-x   3 faxadmin users        1024 Apr 13 02:49 faxadmin/
drwxr-xr-x   8 root     root         1024 Jan 11  1996 ftp/
drwxr-xr-x   7 k        root         1024 Jan 11  1996 k/
drwxr-xr-x   3 koblizek root         1024 Jan 11  1996 koblizek/
drwxr-xr-x   8 l        users        1024 Apr 26 03:38 l/
drwxr-xr-x   6 lada     users        1024 Aug  5 05:53 lada/
drwxr-xr-x  16 peta     users        2048 Aug 13 19:24 peta/
drwxr-xr-x   3 test     users        1024 Aug 13 21:05 test/
darkstar:/home$ cd
darkstar:~$

Z dalsich prikazu jen strucne: kopirovani je prikazem cp <co> <kam>, smazani souboru je rm <jmeno_souboru>, vytvoreni adresare mkdir <jmeno_adresare> a smazani adresare rmdir <jmeno_adresare>.

V linuxu je mozne dosazovat za jmena souboru neuplne nazvy doplnene hvezdickami (jakykoli string) etc. Funguje to tak, ze napisete treba ls K*.[cC] a shell expanduje nazev tak, ze z aktualniho adresare vezme vsechna jmena souboru jez zacinaji pismenem velke K, pak maji libovolne dlouhy pocet pismen a konci priponou .c nebo .C a preda ho prikazu ls. Vypada to takhle:

darkstar:~$ ls
Headery.h    Konec_M$.C     
Kravina.c    atakdale.txt
darkstar:~$ ls -l K*.[cC]

....tady shell vybere ty jmena, ktera odpovidaji vzoru K*.[cC] a posle je prikazu ls, je to tedy to same jako

darkstar:~$ ls -l Kravina.c Konec_M$.C
-rwxr-xr-x  16 test     users        2048 Aug 13 19:24 Kravina.c
-rwxr-xr-x   3 test     users        1024 Aug 13 21:05 Konec_M$.C

V nazvech souboru muzete pouzivat nahradu za 1 pismeno ?, nahradu 1 pismena ze skupiny pismen [abcDFfe], nahradu z intervalu ascii [A-K] , [0-9,A-F] , nahradu za libovolny retezec Se*svazem_na*casy a libovolne kombinace tohodle Plan[0-9][0-9]?etiletky_za_rok19[0-9][0-9][HhSs]rave_splnime_a_*jinak.[cChH] nebo Panove[a-h,A-H]*spachali_sebevrazdu_*ti_bodnymi_ranami_do_*c* . Krome tohodle celeho jeste muzete pouzit tzv. completion (dokonceni) jmena souboru automaticky shellem. Napisete prvnich par pismen jmena souboru a zmacknete tabulator <TAB> pokud tyto pismena jiz identifikuji jednoznacne soubor, tak se jeho jmeno doplni. Pokud ne, tak vam po chvili buseni do tabulatoru shell (tohle funguje jen u shellu bash) shell nabidne soubory, ktere pasuji. Ukazka:

darkstar:~$ ls
Mame    Masa    Mise
Mnoho   Na
darkstar:~$ ls M<TABULATOR>

tady shell pipne, jako ze vam oznamuje ze je vic variant. Zkusim jeste jednou tab:

darkstar:~$ ls M<TABULATOR>
piiiiiiiiiiip
<TABULATOR>
Mame    Mnoho      Masa      Mise
darkstar:~$ ls Ma<TABULATOR>
piiiiiiiiiiip
<TABULATOR>
Mame    Masa 
darkstar:~$ ls Mam<TABULATOR>

...ted se to automaticky doplni na

darkstar:~$ ls Mame

Jiste jste si vsimli tech pismen pred nazvy souboru (-rwxr-xr--). Jsou to typ souboru, pristupova prava pro vlastnika, uzivatele ze skupiny vlastnika souboru a vsechny ostatni (cizaci). Jak jsem uvedl, uzivatele maji skupinu, do ktere patri.
Vypada to nejak takhle:

ukazka pristupovych prav k souboru

Na tomto obrazku jsou popsany tyto soubory: Soubor Skripta1.dvi ma nastaveno cteni pro vsechny uzivatele (pismeno r) a zapis pouze pro vlastnika (w) - to je normalni pokud chcete dat tento soubor (skripta v TeXu) ke cteni vsem studentum. Soubor Hot1.mpg ma nastaveno cteni a zapis pouze pro vlastnika - je tedy privatni. Podle nazvu souboru je zrejme jasne, proc. Tak vidite co si na skolnich pocitacich schovavaji ucitele.... Posledni ukazkou je soubor startx. Ma nastaveno cteni (r) a spustitelnost (x) pro vsechny uzivatele. Zapis do nej (w) ma pravo jen jeho vlastnik - spravce systemu root. Tento posledni soubor je ukazkou toho, jak jsou bezne nastaveny prava u unixovych executable (neboli spustitelnych) souboru.

Mezi priklady je take adresar.

dalsich 9 pismen je rozdeleno do 3 skupin, ktera kontroluji pristupova prava pro vas (vlastnik souboru), uzivatele ve vasi skupine a ostatni uzivatele. Prikazem jez nastavuje pristupova prava je chmod. Logicky muzete nastavit prava jen u souboru, ktery vam patri. Ukazka:

darkstar:~$ ls -l
total 1
-rw-r--r--   1 test     users           9 Aug 13 23:51 neco
darkstar:~$ chmod 642 neco
smrt:~$ ls -l
total 1
-rw-r---w-   1 test     users           9 Aug 13 23:51 neco

-           normalni soubor
 rw-        pristupova prava vlastnika (test) souboru
    r--     pristupova prava uzivatelu ze skupiny users
       -w-  pristupova prava vsech ostatnich

r -pravo soubor cist
w -pravo zapisovat do souboru
x -pravo spustit soubor (executable) - muze byt i skript

Zminil jsem zde typ souboru symbolicky link. Je to neco jako URL na webu, tedy odkaz nekam jinam. Symbolickymi linky jde delat odkazy na soubory i na adresare. Prikazem na vytvoreni symbolickeho linku je prikaz ln -s. Prikaz ln umi udelat i tzv. tvrdy link, coz znamena ze obsah jednoho souboru je videt pod ruznymi jmeny v filesystemu. K tomu se dostaneme v dalsich kapitolach.
smrt:~$ ln -s /var/X11R6/lib/XF86Config XF86Config
smrt:~$ ls -l
lrwxrwxrwx   1 test     users          25 Mar 11 17:53 XF86Config -> /var/X11R6/lib/XF86Config

Dalsimi prikazy souvisejicimi s diskem a soubory jsou:
mount - pripoji filesystem do adresaroveho stromu
umount - odpoji namontovany filesystem
du (directory usage) - vypise kolik zabiraji adresare a data v nich
df (disk free) - kolik mista je vyuzito a zbyva na namontovanych partisnach
find - vyhleda v danem adresari (a pod nim) soubor/adresar s danou podminku (jmeno, cas ....)

Prikazy pro praci se soubory

Prikaz

Priklady

Funkce

mcmcZakladni prikaz Linuxu (Midnight Commander)
mc -bSpusti mc monochromaticky
mc -cSpusti mc barevne (default kdyz to jde)
pwdpwdVypise aktualni adresar
cdcd <adresar>Zmeni aktualni adresar
cdVrati se do domaciho adresare
cd /Skoci do korenoveho (root) adresare. root zde mini hlavni, nadrazeny, nikoliv uzivatele
cd ..O adresar vys
cd ~ladaDo domaciho adresare uzivatele lada
lsls <adresar>Vypise soubory v adresari
lsVypise soubory v aktualnim adresari
ls /Vypise soubory v korenovem (root) adresari.
ls -lVypise soubory v dlouhem formatu - vlastnik, prava, casy
ls -aVypise vsechny soubory v adresari (i ty zacinajici teckou)
ls -la /home/*Vypise dlouze vsechny soubory v domacich adresarich uzivatelu
cpcp <co> <kam>Zkopiruje soubor
cp zprava.txt zprava.bakZkopiruje soubor zprava.txt do zprava.bak
cp zprava.txt /home/xmyslik/Zkopiruje soubor zprava.txt do adresare uzivatele xmyslik pod jmenem zprava.txt
cp -d /home/xmyslik/tmp/* /tmp/Zkopiruje vsechny soubory do adresare /tmp, symlinky kopiruje jako symlinky
cp -f zprava.txt ~xmyslik/zkopiruje soubor zprava.txt do adresare uzivatele xmyslik, prepise pripadne cilovy soubor
cp -r texty/ /tmp/xmyslik/zkopiruje soubory v adresari texty do adresare /tmp/xmyslik i s podadresari
rmrm <soubor(y)>Smaze soubor(y)
rm -i zprava.*Smaze vsechny zpravy (s jakoukoli priponou), u kazde se pta na potvrzeni
rm -f zprava.txt zprava.bakBez pripadneho ptani smaze tyto soubory
rm -r ~/tmp/Rekurzivne smaze adresar tmp v domacim adresari a vsechno pod nim
rm -rf /tmp/xmyslik/Bez ptani smaze rekurzivne obsah docasneho adresare /tmp/xmyslik
mkdirmkdir <adresar(e)>Vytvori adresar(e)
mkdir ~/tmp/Vytvori adresar tmp v domacim adresari
mkdir /tmp/moje/ /tmp/sources/Vytvori prislusne adresare
lnln <zdroj> <cil(e)>Vytvori link (odkaz) na soubor, adresar
ln /var/X11R6/lib/XF86Config XF86ConfigVytvori v akt. adresari soubor tvrde linkovany se souborem /var/X11R6/lib/XF86Config
ln -s /var/X11R6/lib/XF86Config XF86ConfigTo same, ale vytvori symbolicky link
ln -s /usr/src/ ~/kompilaceVytvori symlink z domaciho adresare na /usr/src
chmodchmod <mod> <soubor(y)>Meni (nastavuje) pristupova prava u souboru a adresaru
chmod +x a.outNastavi flagy x(executable) u souboru - spustitelne -??x??x??x
chmod -w,+rx a.outShodi flag w(write),nastavi flagy r(read)x(executable) u souboru - spustitelne -r-xr-xr-x
chmod a=-rwx,g=+x,u=+rw exploze_snuZrusi r(read)w(write)x(execute) pro a(all), prida x pro g(group), prida rw pro vlastnika u(user) : -rw---x--- !zalezi na poradi!
chmod 421 ukazkaNastavi prava -r---w---x u souboru ukazka
chmod 751 startxNastavi prava -rwxr-x--x u souboru
umaskumask [maska]Zmeni, resp. zobrazi masku defaultne pouzivanou pro nastaveni poc. prav vytvarenych souboru/adresaru
umask 126Nove vytvorene soubory budou mit prava -rw-r-----, nove adresare drw-r-x--x Pozor jedna se o masku, tedy doplnek!
chownchown [uzivatel][:skupina] <soubor(y)>Zmeni vlastnika souboru, adresare - jen pro roota!
chown xmyslik ~xmyslik/ftp/incoming/ukoly.txtZmeni vlastnika souboru na xmyslik
chown xmyslik:users /var/httpd/htdocs/myslik/Zmeni vlastnika i skupinu adresare
chown :root ukol1.c ukol2.c ostatni/Zmeni pouze skupinu u souboru a adresare
chown -R root:root ostatni/Rekurzivne zmeni vlastnictvi vsech souboru a adresaru pod ostatni/ vcetne
findfind [cesta] [podminka] [akce]Najde soubor/adresar podle podminky (jmeno, cas, prava...)
find ~ -iname "*.dvi" -printnajde vsechny soubory *.dvi nebo *.DVI v home adresari a vypise jejich jmena a cesty
find /users/ -name core -exec rm {} ;najde vsechny coredumpy a smaze je
find ~root -follow -user xmyslik -printNajde soubory uzivatele, prohledava i symlinkovane adresare
find / -type p -printNajde soubor typu FIFO (roura-pipe)
dudu [adresar]Vypise kolik zabira adresar(e)
duVypise kolik zabira akt. adresar a podadresare
du /home/Vypise kolik zabiraji adresare uzivatelu /home/
du -b /home/Vypise obsazeni v bytech misto v 512B blocich
du -k /tmp/Vypise obsazeni v kilobytech
du -s /home/Vypise kolik zabira /home/ bez vypisu podadresaru
mountmount <zarizeni> <mountpoint>Primontuje partisnu do adresaroveho stromu
mountVypise ktere filesystemy a partisny jsou namontovane
mount /dev/fd0 /A/ -t msdosPrimontuje disketu s msdos filesystemem
mount /dev/hda1 /usr/Pripoji partisnu s filesystemem ext2 pod /usr/
mount /dev/scd0 /cdrom/ -t iso9660 -o exec,ro,nosuid,userNamontuje scsi cdrom
mount smrt:/cdrom /mnt/cdrom/ -t nfs -o roPripoji sitovy adresar cdrom pocitace smrt do bodu /mnt/cdrom/
mount /DOS/Pripoji partisnu definovanou v /etc/fstab pod adresar
umountumount <zarizeni/mountpoint>Odmontuje partisnu podle jmena zarizeni nebo adresare
umount /dev/fd0Odmontuje floppy
umount /A/To same ale pomoci mountpointu
dfdf [adresar/zarizeni]Vypise obsazeni namontovaneho disku/partisny
dfVypise vsechna namontovana zarizeni/partisny
df .Vypise obsazeni zarizeni, na nemz je akt. adresar
df /dev/hda1Vypise obsazeni namontovane partisny
sync, cat, more, less, grep, fgrep, sort


Prikazy pro praci s procesy


OS Unix je postaven na procesech. Proces je samostatny program, jemuz je pridelovan procesor. V Unixu tradicne je obvykle hodne bezicich/spicich/na neco cekajicich procesu. Procesem je program copy, telnet, netscape...v dobe kdy jsou spusteny. Kazdy uzivatel muze spustit vice procesu, muze je spustit na pozadi, pozastavovat/rozbihat procesy, spoustet procesy v dany cas, posilat procesum signaly apod. Proces vznikne tak, ze je spusten jinym procesem. Hierarchicky ve stromove strukture to muze vypadat takto:
smrt:~$ pstree
init-+-5*[agetty]
     |-asWedit
     |-3*[bash---bash---mc-+-bash]
     |                     `-cons.saver]
     |-bash---bash---mc-+-bash---man---sh---less
     |                  `-cons.saver
     |-bash
     |-bash---bash---startx---xinit-+-X
     |                              `-fvwm-+-GoodStuff
     |                                     |-oclock
     |                                     |-xload
     |                                     `-xsysinfo
     |-6*[color_xterm---mc---bash]
     |-color_xterm---bash---bash---mc---bash
     |-3*[color_xterm---rlogin---rlogin]
     |-color_xterm---bash---pstree
     |-2*[color_xterm---bash]
     |-crond
     |-gpm
     |-httpd---2*[httpd]
     |-inetd---3*[in.rlogind---bash---bash---mc---bash]
     |-innd
     |-kerneld
     |-kflushd
     |-klogd
     |-kswapd
     |-lpd
     |-mgetty
     |-netscape2
     |-rpc.mountd
     |-rpc.nfsd
     |-rpc.portmap
     |-sendmail
     |-syslogd
     |-update
     |-xfontsel
     |-xfs
     `-xmix

Zakladni prikaz pro vypis spustenych procesu je prikaz ps. Bez parametru vypise procesy, jez mate spusteny:
smrt:~$ ps
  PID TTY STAT  TIME COMMAND
  139   3 S    0:00 -bash 
  140   4 S    0:00 -bash 
  141   5 S    0:00 -bash 
  142   6 S    0:00 -bash 
  450   4 S    0:00 -bash 
  451   4 S    0:00 /usr/local/bin/mc -P -x -c 
  453  p0 S    0:00 bash -rcfile .bashrc 
  595   3 S    0:00 -bash 
  596   3 S    0:02 /usr/local/bin/mc -P -x -c 
  598  p5 S    0:00 bash -rcfile .bashrc 
 2852   6 S    0:00 -bash 
 2853   6 S    0:00 sh /usr/X11/bin/startx -- -bpp 16 
 2859   6 S    0:36 fvwm 
 2864   6 S    0:00 xload -hl red -nolabel -jumpscroll 1 -update 2 
 2865   6 S    4:12 xsysinfo -geometry 207x120 
 2866   6 S    0:00 oclock 
 2875   6 S    0:00 /usr/lib/X11/fvwm/GoodStuff 7 4 /usr/lib/X11/fvwm/system.fv
 2877   6 R  110:51 netscape2 -install 
 2922  p3 S    0:00 /usr/local/bin/mc -P -x -c 
 2924  p4 S    0:00 bash -rcfile .bashrc 
 2927  p8 S    0:00 -bash 
 2940  p8 S    0:00 -bash 
 2941  p8 S    0:16 /usr/local/bin/mc -P -x -c 
 2943  pa S    0:00 bash -rcfile .bashrc 
 3179  p9 S    0:04 /usr/local/bin/mc -P -x -c 
 3181  pb S    0:00 bash -rcfile .bashrc 
 3236  pc S    0:00 (rlogin)
 3239  pc S    0:00 (rlogin)
 3699   6 S    0:00 xmix 
 4535  q3 S    0:00 (rlogin)
 4538  q3 S    0:04 (rlogin)
 4593  qe S    0:00 -bash 
 4645  qa S    0:00 rlogin -l root localhost 
 4648  qa S    0:00 rlogin -l root localhost 
 4891  r4 S    0:00 -bash 
 5312  q7 S    0:01 /usr/local/bin/mc -P -x -c 
 5314  q8 S    0:00 bash -rcfile .bashrc 
 5608  q0 S    0:01 /usr/local/bin/mc -P -x -c 
 5610  q1 S    0:00 bash -rcfile .bashrc 
 5726   6 S    0:00 xfontsel 
 5728   6 S    0:26 asWedit 
 5792  pf S    0:01 /usr/local/bin/mc -P -x -c 
 5794  q2 S    0:00 bash -rcfile .bashrc 
 5884  q6 S    0:00 /usr/local/bin/mc -P -x -c 
 5886  qc S    0:00 bash -rcfile .bashrc 
 5891  qc R    0:00 ps 
Jen male vysvetleni:
PID je cislo procesu, pod kterym je proces veden v systemu. Pomoci tohoto cisla se identifikuje a muze skrze nej byt i odstrelen...
TTY je nazev terminalu, z ktereho byl prikaz spusten, resp. na kterem bezi. I spojeni pres sit telnetem se tvari jako terminaly.
STAT je status - program muze v zasade bezet (R - running) nebo na neco cekat (S - sleep).
COMMAND je jmeno programu s parametry, jak byl spusten. Pokud je COMMAND v zavorkach, znamena to ze prislusny program je vyswapovan z pameti na disk.

Dalsim prikazem pro manipulaci s procesy je interaktivni program top. po spusteni ukazuje tabulku procesu a kazdych par sekund ji obcerstvuje. Muzete v nem stisknutim k odstrelit proces podle jeho cisla (kill), stiskem r muzete zmenit prioritu procesu (renice), otaznikem ? dostanete kratky help.

smrt:~$ top
  3:05pm  up 1 day, 14:29, 22 users,  load average: 0.80, 0.72, 0.65
120 processes: 116 sleeping, 4 running, 0 zombie, 0 stopped
CPU states: 28.2% user, 30.1% system, 43.4% nice, 42.0% idle
Mem:  63476K av, 62384K used,  1092K free, 29264K shrd,   256K buff
Swap: 72572K av,  8120K used, 64452K free                9492K cached

  PID USER     PRI  NI  SIZE  RSS SHARE STAT  LIB %CPU %MEM   TIME COMMAND
 2877 xmyslik   17   0 12464 11120  3436 R       0 20.8 17.5 113:44 netscape2
 5895 root       1   0  1284 1284   804 R     848 15.3  2.0   0:01 color_xterm
 2855 root       0 -10 20512 17748  1492 S <     0 14.0 27.9  95:17 X
 5935 xmyslik    1   0   480  480   340 S       0  3.8  0.7   0:03 top
 5937 xmyslik    9   0   476  476   340 R       0  3.5  0.7   0:01 top
 2865 xmyslik    0   0   560  500   328 S     416  0.2  0.7   4:15 xsysinfo
 5728 xmyslik    0   0  4308 4156  1916 S       0  0.2  6.5   0:33 asWedit
 2859 xmyslik    0   0   736  652   368 S     316  0.1  1.0   0:37 fvwm
 5934 root       0   0   868  868   428 S     448  0.1  1.3   0:00 rxvt
    1 root       0   0   160   72    56 S      48  0.0  0.1   0:28 init
    2 root       0   0     0    0     0 SW      0  0.0  0.0   0:00 kflushd
    3 root     -12 -12     0    0     0 SW<     0  0.0  0.0   0:00 kswapd
  137 root       0   0   196  196   144 S       0  0.0  0.3   0:00 bash
  138 root       0   0   196  196   144 S       0  0.0  0.3   0:00 bash
    6 root       0   0    60   44    28 S       0  0.0  0.0   0:04 kerneld
   38 root       0   0   192  164    88 S     112  0.0  0.2   0:00 crond
   10 root       0   0    80   32    20 S      24  0.0  0.0   0:07 update
 5542 root       0   0   248  248   160 S       0  0.0  0.3   0:00 mgetty
   70 root       0   0   200  136    92 S      92  0.0  0.2   0:03 syslogd
   72 root       0   0   148   92    56 S      68  0.0  0.1   0:02 klogd
   74 root       0   0   156   68    44 S      40  0.0  0.1   0:00 inetd
   76 root       0   0    92   16    16 S       0  0.0  0.0   0:00 lpd
 5884 xmyslik    0   0   952  952   528 S       0  0.0  1.4   0:00 mc
   89 root       0   0   440  352   292 S       0  0.0  0.5   0:00 sendmail
  135 root       0   0   600  500   212 S     112  0.0  0.7   0:00 xfs
 2852 xmyslik    0   0   284  284   208 S       0  0.0  0.4   0:00 bash

Mozna by se zde sluselo uvest, jak Linux reprezentuje prioritu procesu (sloupce PRI a NI). Zakladnim pravidlem je, ze cim nizsi cislo priority, tim vice casu venuje Linux teto uloze oproti jinym. Ordinerni uzivatel smi nastavovat pouze 0 ~ 20, nastaveni zapornych hodnot je dovoleno jen rootovi (-20 ~ -1). Pokud chcete zmenit uloze prioritu neinteraktivne tak je na to prikaz renice. Napr.
smrt:~$ renice 5 2877
2877: old priority 0, new priority 5

Na odstreleni procesu je prikaz kill, pokud chcete odstrelit vsechny procesy s urcitym jmenem je na to killall.
smrt:~$ kill 5935
smrt:~$ killall top
smrt:~$ killall fghdfhg
fghdfhg: no process killed
Prikaz kill se chova tak, ze posle procesu upozorneni (signal - obycejne integerove cislo), ze by jako bylo vhodne aby se odstranil ze systemu. Pokud proces tvrdosijne odmita reagovat na samotny kill, je mozno mu poslat jine "upozorneni" jako parametr prikazu kill. Nejznamejsim je signal 9, fyzicke odstreleni bez vyzvy a bez sance po sobe uklidit. Na nektere signaly mohou programy reagovat ruzne, treba znovuprectenim konfiguracniho souboru. Kill s parametrem signalu se posila takto:
smrt:~$ killall -9 top
smrt:~$ killall -HUP sendmail
Signaly tedy lze uvadet jejich symbolickym jmenem ci cislem signalu.
U vsech prikazu zde (a plati to i obecne o UNIXovych prikazech) plati ze kdyz prikaz nic nevypise, tak se vykonal bez chyby.

Poslednimi zde zminovanymi prikazy jsou prikazy pro spousteni procesu v dany cas. Jsou to at - zaradi program do fronty jobu, atq - vypise joby ve fronte, atrm - odstrani job z fronty. Kazdy uzivatel ma svou frontu a root muze manipulovat se vsemi.
smrt:~$ at -f budik.skript 12:24
Job c00da1c6c.02 will be executed using /bin/sh
smrt:~$ atq
Date                    Owner   Queue   Job#
12:24:00 03/06/97       xmyslik c       c00da1c6c.02
smrt:~$ atrm c00da1c6c.02
Pokud pouzijete jen atrm bez argumentu tak se odstrani posledne zadany job z fronty.

Prikazy pro praci s procesy

Prikaz

Priklady

Funkce

pstreepstreeVypise hierarchicky strom procesu
toptopZobrazuje seznam procesu - interaktivni
pspsVypise procesy uzivatele
ps aVypise vsechny procesy
ps uVypis procesu v dlouhem formatu
ps auVsechny procesy v dlouhem formatu
killkill {PID procesu}Posle procesu signal ukoncit
kill -9 8340Bez vyzvy odstreli program 8340 (natvrdo signalem SIGKILL)
kill -lVypise seznam signalu
killallkillall {jmeno procesu}Posle procesu jmenem {} signal ukoncit (SIGTERM)
killall -HUP sendmailPosle signal SIGHUP vsem procesum nazvem sendmail (znovuprecteni konfig souboru)
killall -i bashPred zaslanim signalu se interaktivne pta na potvrzeni akce
nicenice [-priorita] <prikaz> [argumenty_prikazu]Spusti prikaz se zmenenou prioritou
nice xfractintSpusti prikaz se snizenou prioritou
nice l3enc souce.wav dest.mp3Spusti prikaz s nizsi prioritou a parametry
nice -20 l3enc souce.wav dest.mp3Spusti prikaz s nejnizsi prioritou (+20)
nice -n "-20" mpeg_play video.mpgSpusti prikaz s nejvyssi prioritou (-20 - smi jen root)
renicerenice <priorita> <PID>Zmeni prioritu beziciho procesu
renice +5 987Snizi prioritu procesu 987 na 5
renice -20 -u rootZmeni prioritu vsech procesu uzivatele root na maximalni
renice +20 -g usersSnizi prioritu vsech procesu uzivatelu ve skupine users na minimum
atat {CAS}Spusti prikaz nebo skript v danem case
at -f budik.skript 12:30Prida skript do seznamu jobu urcenych k spusteni - na nejblizsi cas 12:30
at -q z -f budik.skript 12:30...navic do uzivatelovy fronty z - ma nizsi priority pri behu
at -f budik.skript 4pm + 3 daysZa 3 dny v 4.00 odpoledne spusti budik
at -f budik.skript 10am Jul 31Spusti budik 31.cervence v 10 rano
atqatqVypise seznam nacasovanych jobu
atq -vVypise seznam nacasovanych i dokoncenych jobu
atrmatrm [ID_jobu]Odstrani job z fronty
atrmOdstrani posledni job z fronty jobu
atrm c00da1c6c.02Odstrani job s ID c00da1c6c.02 z fronty jobu
batchbatch [CAS]Jako at ale spusti job az pri nizkem zatizeni (load). Nemusi se uvadet cas
freefreeVypise informace o volne pameti

nohup, fg, bg, jobs, suspend




Prikazy pro zobrazeni statusu a systemovych informaci


S multitaskingem, pameti a soubezne bezicimi procesy souvisi nasledujici prikazy: free, uptime, tload, xload, procinfo Prikaz uptime vypise, jak dlouho pocitac bezi od posledniho spusteni a symbolicke zatizeni (load). Load je dejme tomu pocet procesu, ktere se snazi v dany cas o beh. Bude-li tedy jeden proces za 1 sekundu vyzadovat procesor 0.5 sekundy, bude zatizeni - load 0.5 . Kdyz navic dalsi proces bude vyzadovat procesor 0.75 sekundy ze sekundy, tedy 75%, bude load 0.5+0.75 Poznamka: vyzadovat beh neznamena nutne vzdy zrat cykly procesoru. Proces muze chtit bezet, ale kdyz zrovna ceka na nejake V/V zarizeni (treba DAT streamer), tak sice nezere cykly procesoru, ale zvysuje load.
Prikazy xload a tload maji za ukol zobrazovat zatizeni v zavislosti na case, xload v grafice v X window a tload na textove konzoli. Procinfo vypise zajimave informace o systemu.
smrt:~$ free
             total       used       free     shared    buffers     cached
Mem:         63536      62552        984      40868       1128      19596
-/+ buffers:            41828      21708
Swap:        72572         64      72508
smrt:~$ uptime
  6:12pm  up 19:39, 16 users,  load average: 1.43, 1.15, 1.10
smrt:~$ procinfo
Linux version 2.0.28 (root@smrt) (gcc version 2.7.2.1) #7 [smrt]

Memory:        Total        Used        Free      Shared     Buffers
Mem:           63536       62632         904       40908        1156
Swap:          72572          64       72508

Bootup: Wed Mar 05 22:32:26 1997    Load average: 1.44 1.17 1.10 3/93 1347

user  :       0:55:08.02   4.7%     page in :   633893    disk 1:   346500
nice  :      16:16:07.94  82.7%     page out:  1096282    disk 2:     6158
system:       0:41:57.84   3.6%     swap in :        1    disk 3:    38067
idle  :       1:47:05.57   9.1%     swap out:       16
uptime:      19:40:19.36            context : 25353549

irq  0:   7081937   timer               irq  8:         0                      
irq  1:     18926   keyboard            irq  9:         0   WD8003             
irq  2:         0   cascade             irq 10:         0                      
irq  3:         0                       irq 11:        21                      
irq  4:    206624 + serial              irq 12:         0                      
irq  5:    750597   sound blaster       irq 13:         1   math error         
irq  6:         0                       irq 14:    489695 + ide0               
irq  7:   6235559 + serial              irq 15:    324619 + ide1

xloadtload
xload tload

Prikazy pro zobrazeni statusu a systemovych informaci

Prikaz

Priklady

Funkce

freefreeVypise vyuziti pameti
procinfoprocinfoVypise informace o pameti a preruseni
uptimeuptimeVypise jak dlouho jiz bezi pocitac
tloadtloadZobrazuje na terminalu textove zatizeni
xloadxloadZobrazuje zatizeni v okne v X window
xsysinfoxsysinfoZobrazuje zatizeni a volnou pamet v X window
rebootrebootRebootne pocitac (jen root)
halthaltZastavi pocitac (jen root)
shutdownshutdown <CAS> [hlaska_uzivatelum]Rozbehne shutdown systemu (odstrileni procesu, reboot/halt)
shutdown 12:45Provede shutdown v 12:45
shutdown +5 "Za 5 minut koncime!"Provede shutdown za 5 minut a upozorni uzivatele
shutdown -h nowProvede shutdown ted a zastavi pocitac (haltem)
shutdown -cZrusi jiz bezici ci nacasovany shutdown
initinit [runlevel]Zmeni runlevel (soft. konfigurace) systemu
init sSystem prejde do single-user modu
init cZpusobi znovuprecteni konfigurace (/etc/inittab) a spusteni/zastaveni tam definovanych programu


Jak jsem napsal jiz predem, nemusite si lamat hlavu s tim, ze si nepamatujete prikazy. Pamatujte si jen ty co casto pouzivate. Pro praci s procesy vam staci vedet, ze existuje top. Pri praci se soubory staci umet ovladat Midnight Commander - mc. To ze existuji verze programu, operujici s procesy nebo soubory v unixu je vyhodne protoze je muzete pouzivat ve skriptech - tedy davkovych souborech. Pokud se podivate na manualovou stranku ke kteremukoli z jednoduchych programu, urcite se zjevite co vsechno to ma za volby. To ocenite pokud budete potrebovat nejakou specielni funkci a od toho jsou prave manualove stranky, aby vam pomohly. Ja si nepamatuji ani ty nejzakladnejsi volby u trivialnich programu. Myslim, ze beznemu uzivateli mnohem vice pomuze blbnik s priklady pouziti prikazu nez vycerpavajici a neprehledny seznam moznosti. Proto budu na konci kazde kapitoly delat prehled vsech prikazu a variant, ktere se v ni objevily. Melo by se to pak dat vytisknout.



To byl takovy prekotny uvod do luxovani, jenom abyste umeli spustit mc. Dalsi kapitola je o filosofii unixu/Linuxu obecne, pro ty kteri netusi. Neberte to moc vazne, ta kapitola je hodne kecaci (zatim v ni chybi obrazky). Prectete si ji na dobrou noc....

Kapitola 2 - Filosofie Unixu obecne