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: |
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 |
passwd | passwd [uzivatel] | Zmeni heslo uzivatele. Root smi menit i hesla ostatnich |
passwd xmyslik | Zmeni heslo uzivateli xmyslik. Jen pro roota | |
adduser | adduser | Zalozi noveho uzivatele (jen pro roota) |
whoami | whoami | Vypise username pod kterym jste zalogovani |
who | who | Vypise seznam zalogovanych uzivatelu |
who -w | Navic vypise zda ma uzivatel povolen prijem zprav na terminal | |
who am i | Vypise kdo jste | |
w | w | Vypise seznam uzivatelu a ktere programy maji spustene |
finger | finger [uzivatel/pocitac] | Zjisti informace o uzivateli, pocitaci a online uzivatelich |
finger root | Vypise informace o spravci tohoto pocitace | |
finger root@www.smrt.cz | Vypise informace o spravci pocitace www.smrt.cz | |
finger @www.smrt.cz | Vypise kdo je zrovna zalogovany na www.smrt.cz | |
groups | groups [uzivatel] | Vypise v kterych skupinach je uzivatel |
groups | Vypise skupiny ve kterych jste (viz /etc/groups) | |
groups root | Vypise ve kterych skupinach je root | |
mesg | mesg | Vypise zda mate povolen prijem zprav na terminal |
mesg n | Zakaze prijem zprav | |
mesg y | Povoli prijem zprav | |
talk | talk [username] [terminal] | Spusti program pro konverzaci mezi dvema uzivateli |
talk xmyslik | Pokud ma xmyslik nastaveno mesg y, vypise se mu kdo ho talkuje | |
talk | Kdyz vas nekdo talkuje, takto mu odpovite | |
talk root ttyp4 | Takto muzete nekoho vyzvat/odpovedet na specifickem terminalu (kdyz je zalogovan vicekrat) | |
write | write <username> | Posle uzivateli na terminal zpravu. Ukoncuje se CTRL-D |
write xmyslik tty2 | Posle zpravu uzivateli xmyslik jen na tty2 | |
wall | wall [soubor] | Posle vsem uzivatelum zpravu na terminal. Root muze poslat i cem, co maji mesg n |
wall | Cte zpravu z standartniho vstupu. Ukoncuje se CTRL-D | |
wall upozorneni.txt | Posle vsem uzivatelum soubor upozorneni.txt na terminal | |
mail <uzivatel[@pocitac]> | Posle mail danemu uzivateli/precte vasi schranku | |
mail root | Posle mail rootovi. Ukoncuje se teckou na samostatnem radku | |
mail root@www.smrt.cz | Posle mail spravci pocitace www.smrt.cz | |
mail | Necha vas interaktivne prohlednout vasi schranku |
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:
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
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 |
mc | mc | Zakladni prikaz Linuxu (Midnight Commander) |
mc -b | Spusti mc monochromaticky | |
mc -c | Spusti mc barevne (default kdyz to jde) | |
pwd | pwd | Vypise aktualni adresar |
cd | cd <adresar> | Zmeni aktualni adresar |
cd | Vrati se do domaciho adresare | |
cd / | Skoci do korenoveho (root) adresare. root zde mini hlavni, nadrazeny, nikoliv uzivatele | |
cd .. | O adresar vys | |
cd ~lada | Do domaciho adresare uzivatele lada | |
ls | ls <adresar> | Vypise soubory v adresari |
ls | Vypise soubory v aktualnim adresari | |
ls / | Vypise soubory v korenovem (root) adresari. | |
ls -l | Vypise soubory v dlouhem formatu - vlastnik, prava, casy | |
ls -a | Vypise vsechny soubory v adresari (i ty zacinajici teckou) | |
ls -la /home/* | Vypise dlouze vsechny soubory v domacich adresarich uzivatelu | |
cp | cp <co> <kam> | Zkopiruje soubor |
cp zprava.txt zprava.bak | Zkopiruje 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 | |
rm | rm <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.bak | Bez 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 | |
mkdir | mkdir <adresar(e)> | Vytvori adresar(e) |
mkdir ~/tmp/ | Vytvori adresar tmp v domacim adresari | |
mkdir /tmp/moje/ /tmp/sources/ | Vytvori prislusne adresare | |
ln | ln <zdroj> <cil(e)> | Vytvori link (odkaz) na soubor, adresar |
ln /var/X11R6/lib/XF86Config XF86Config | Vytvori v akt. adresari soubor tvrde linkovany se souborem /var/X11R6/lib/XF86Config | |
ln -s /var/X11R6/lib/XF86Config XF86Config | To same, ale vytvori symbolicky link | |
ln -s /usr/src/ ~/kompilace | Vytvori symlink z domaciho adresare na /usr/src | |
chmod | chmod <mod> <soubor(y)> | Meni (nastavuje) pristupova prava u souboru a adresaru |
chmod +x a.out | Nastavi flagy x(executable) u souboru - spustitelne -??x??x??x | |
chmod -w,+rx a.out | Shodi flag w(write),nastavi flagy r(read)x(executable) u souboru - spustitelne -r-xr-xr-x | |
chmod a=-rwx,g=+x,u=+rw exploze_snu | Zrusi 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 ukazka | Nastavi prava -r---w---x u souboru ukazka | |
chmod 751 startx | Nastavi prava -rwxr-x--x u souboru | |
umask | umask [maska] | Zmeni, resp. zobrazi masku defaultne pouzivanou pro nastaveni poc. prav vytvarenych souboru/adresaru |
umask 126 | Nove vytvorene soubory budou mit prava -rw-r----- , nove adresare drw-r-x--x Pozor jedna se o masku, tedy doplnek! | |
chown | chown [uzivatel][:skupina] <soubor(y)> | Zmeni vlastnika souboru, adresare - jen pro roota! |
chown xmyslik ~xmyslik/ftp/incoming/ukoly.txt | Zmeni 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 | |
find | find [cesta] [podminka] [akce] | Najde soubor/adresar podle podminky (jmeno, cas, prava...) |
find ~ -iname "*.dvi" -print | najde 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 -print | Najde soubory uzivatele, prohledava i symlinkovane adresare | |
find / -type p -print | Najde soubor typu FIFO (roura-pipe) | |
du | du [adresar] | Vypise kolik zabira adresar(e) |
du | Vypise 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 | |
mount | mount <zarizeni> <mountpoint> | Primontuje partisnu do adresaroveho stromu |
mount | Vypise ktere filesystemy a partisny jsou namontovane | |
mount /dev/fd0 /A/ -t msdos | Primontuje 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,user | Namontuje scsi cdrom | |
mount smrt:/cdrom /mnt/cdrom/ -t nfs -o ro | Pripoji sitovy adresar cdrom pocitace smrt do bodu /mnt/cdrom/ | |
mount /DOS/ | Pripoji partisnu definovanou v /etc/fstab pod adresar | |
umount | umount <zarizeni/mountpoint> | Odmontuje partisnu podle jmena zarizeni nebo adresare |
umount /dev/fd0 | Odmontuje floppy | |
umount /A/ | To same ale pomoci mountpointu | |
df | df [adresar/zarizeni] | Vypise obsazeni namontovaneho disku/partisny |
df | Vypise vsechna namontovana zarizeni/partisny | |
df . | Vypise obsazeni zarizeni, na nemz je akt. adresar | |
df /dev/hda1 | Vypise obsazeni namontovane partisny |
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 |
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 |
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 |
smrt:~$ killall -9 top smrt:~$ killall -HUP sendmail |
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 |
Prikazy pro praci s procesy | ||
---|---|---|
Prikaz | Priklady | Funkce |
pstree | pstree | Vypise hierarchicky strom procesu |
top | top | Zobrazuje seznam procesu - interaktivni |
ps | ps | Vypise procesy uzivatele |
ps a | Vypise vsechny procesy | |
ps u | Vypis procesu v dlouhem formatu | |
ps au | Vsechny procesy v dlouhem formatu | |
kill | kill {PID procesu} | Posle procesu signal ukoncit |
kill -9 8340 | Bez vyzvy odstreli program 8340 (natvrdo signalem SIGKILL) | |
kill -l | Vypise seznam signalu | |
killall | killall {jmeno procesu} | Posle procesu jmenem {} signal ukoncit (SIGTERM) |
killall -HUP sendmail | Posle signal SIGHUP vsem procesum nazvem sendmail (znovuprecteni konfig souboru) | |
killall -i bash | Pred zaslanim signalu se interaktivne pta na potvrzeni akce | |
nice | nice [-priorita] <prikaz> [argumenty_prikazu] | Spusti prikaz se zmenenou prioritou |
nice xfractint | Spusti prikaz se snizenou prioritou | |
nice l3enc souce.wav dest.mp3 | Spusti prikaz s nizsi prioritou a parametry | |
nice -20 l3enc souce.wav dest.mp3 | Spusti prikaz s nejnizsi prioritou (+20) | |
nice -n "-20" mpeg_play video.mpg | Spusti prikaz s nejvyssi prioritou (-20 - smi jen root) | |
renice | renice <priorita> <PID> | Zmeni prioritu beziciho procesu |
renice +5 987 | Snizi prioritu procesu 987 na 5 | |
renice -20 -u root | Zmeni prioritu vsech procesu uzivatele root na maximalni | |
renice +20 -g users | Snizi prioritu vsech procesu uzivatelu ve skupine users na minimum | |
at | at {CAS} | Spusti prikaz nebo skript v danem case |
at -f budik.skript 12:30 | Prida 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 days | Za 3 dny v 4.00 odpoledne spusti budik | |
at -f budik.skript 10am Jul 31 | Spusti budik 31.cervence v 10 rano | |
atq | atq | Vypise seznam nacasovanych jobu |
atq -v | Vypise seznam nacasovanych i dokoncenych jobu | |
atrm | atrm [ID_jobu] | Odstrani job z fronty |
atrm | Odstrani posledni job z fronty jobu | |
atrm c00da1c6c.02 | Odstrani job s ID c00da1c6c.02 z fronty jobu | |
batch | batch [CAS] | Jako at ale spusti job az pri nizkem zatizeni (load). Nemusi se uvadet cas |
free | free | Vypise informace o volne pameti |
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 |
xload | tload |
Prikazy pro zobrazeni statusu a systemovych informaci | ||
---|---|---|
Prikaz | Priklady | Funkce |
free | free | Vypise vyuziti pameti |
procinfo | procinfo | Vypise informace o pameti a preruseni |
uptime | uptime | Vypise jak dlouho jiz bezi pocitac |
tload | tload | Zobrazuje na terminalu textove zatizeni |
xload | xload | Zobrazuje zatizeni v okne v X window |
xsysinfo | xsysinfo | Zobrazuje zatizeni a volnou pamet v X window |
reboot | reboot | Rebootne pocitac (jen root) |
halt | halt | Zastavi pocitac (jen root) |
shutdown | shutdown <CAS> [hlaska_uzivatelum] | Rozbehne shutdown systemu (odstrileni procesu, reboot/halt) |
shutdown 12:45 | Provede shutdown v 12:45 | |
shutdown +5 "Za 5 minut koncime!" | Provede shutdown za 5 minut a upozorni uzivatele | |
shutdown -h now | Provede shutdown ted a zastavi pocitac (haltem) | |
shutdown -c | Zrusi jiz bezici ci nacasovany shutdown | |
init | init [runlevel] | Zmeni runlevel (soft. konfigurace) systemu |
init s | System prejde do single-user modu | |
init c | Zpusobi 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....