You are on page 1of 214

www.nhipsongcongnghe.

net

I H C QU C GIA H N I TR NG I H C CNG NGH


=====================================

H QUANG TH Y NGUY N TR THNH

Gio trnh:

I U HNH UNIX - LINUX


Dnh cho sinh vin ngnh Cng ngh thng tin, i n t - Vi n thng, Ton tin ng d ng

H N I - 2004

M CL C
L I GI I THI U ..................................................................................................... 9 CHNG 1. GI I THI U CHUNG V LINUX...................................................... 10 1.1. Gi i thi u v UNIX v Linux...................................................................................... 10 1.1.1. Xu t x , qu trnh ti n ha v m t s c trng c a h i u hnh UNIX ......... 10 1.1.2. Gi i thi u s b v Linux................................................................................... 13 1.2. S b v cc thnh ph n c a Linux ........................................................................... 17 1.2.1. S b v nhn ..................................................................................................... 18 1.2.2. S b v shell ..................................................................................................... 18 1.3. Gi i thi u v s d ng l nh trong Linux..................................................................... 20 1.3.1. Cc quy c khi vi t l nh................................................................................... 22 1.3.3. Lm n gi n thao tc g l nh ........................................................................... 25 1.3.4. Ti p n i dng l nh.............................................................................................. 29 1.4. Trang Man ................................................................................................................... 29 CHNG 2. THAO TC V I H TH NG ........................................................... 32 2.1. Qu trnh kh i ng Linux......................................................................................... 32 2.2. Th t c ng nh p v cc l nh thot kh i h th ng ................................................ 33 2.2.1. ng nh p........................................................................................................... 33 2.2.2. Ra kh i h th ng................................................................................................. 36 2.2.3. Kh i ng l i h th ng ....................................................................................... 38 2.2.4. Kh i ng vo ch ho ............................................................................. 38 2.3. L nh thay i m t kh u .............................................................................................. 42 2.4. L nh xem, thi t t ngy, gi hi n t i v xem l ch trn h th ng ........................... 45 2.4.1 L nh xem, thi t t ngy, gi .............................................................................. 45 2.4.2. L nh xem l ch .................................................................................................... 47 2.5. Xem thng tin h th ng .............................................................................................. 48 2.6. Thay i n i dung d u nh c shell .............................................................................. 49 2.7. L nh g i ngn ng tnh ton s h c .......................................................................... 50 CHNG 3. H TH NG FILE ............................................................................. 53 3.1 T ng quan v h th ng file........................................................................................... 53 3.1.1. M t s khi ni m ................................................................................................ 53 3.1.2. S b ki n trc n i t i c a h th ng file............................................................. 57 3.1.3. M t s thu t ton lm vi c v i inode ................................................................. 63 3.1.4. H tr nhi u h th ng File.................................................................................. 66 3.1.5. Lin k t t ng trng (l nh ln) ............................................................................ 71

3.2 Quy n truy nh p th m c v file ................................................................................ 72 3.2.1 Quy n truy nh p .................................................................................................. 72 3.2.2. Cc l nh c b n .................................................................................................. 75 3.3 Thao tc v i th m c.................................................................................................... 80 3.3.1 M t s th m c c bi t ...................................................................................... 80 3.3.2 Cc l nh c b n v th m c ................................................................................ 83 3.4. Cc l nh lm vi c v i file ............................................................................................ 87 3.4.1 Cc ki u file c trong Linux ................................................................................ 87 3.4.2. Cc l nh t o file.................................................................................................. 88 3.4.3 Cc l nh thao tc trn file .................................................................................... 90 3.4.4 Cc l nh thao tc theo n i dung file .................................................................... 98 3.4.5 Cc l nh tm file ................................................................................................ 106 3.5 Nn v sao lu cc file ................................................................................................ 115 3.5.1 Sao lu cc file (l nh tar) .................................................................................. 115 3.5.2 Nn d li u ....................................................................................................... 118 CHNG 4. QU N TR QU TRNH................................................................. 122 4.1 Qu trnh trong UNIX................................................................................................ 122 4.1.1. S b v qu trnh............................................................................................. 122 4.1.2. S b c u trc i u khi n c a UNIX................................................................ 123 4.1.3. Cc h th ng con trong nhn ............................................................................ 125 4.1.4. S b v i u khi n qu trnh ........................................................................... 129 4.1.5. Tr ng thi v chuy n d ch tr ng thi ................................................................ 130 4.1.6. S ngng ho t ng v ho t ng tr l i c a qu trnh.................................... 132 4.1.7. S b v l nh i v i qu trnh ........................................................................ 132 4.2. Cc l nh c b n.......................................................................................................... 133 4.2.1. L nh fg v l nh bg ............................................................................................ 133 4.2.2. Hi n th cc qu trnh ang ch y v i l nh ps ................................................... 135 4.2.3. H y qu trnh v i l nh kill ............................................................................... 137 4.2.4. Cho my ng ng ho t ng m t th i gian v i l nh sleep.................................. 139 4.2.5. Xem cy qu trnh v i l nh pstree.................................................................... 139 4.2.6. L nh thi t t l i u tin c a qu trnh nice v l nh renice......................... 141 CHNG 5. QU N L TI KHO N NG I DNG ......................................... 142 5.1 Ti kho n ng i dng ................................................................................................ 142 5.2 Cc l nh c b n qu n l ng i dng ........................................................................ 142 5.2.1 File /etc/passwd ................................................................................................ 143 5.2.2 Thm ng i dng v i l nh useradd................................................................... 143 5.2.3 Thay i thu c tnh ng i dng ........................................................................ 146 5.2.4 Xa b m t ng i dng (l nh userdel).............................................................. 147 3

5.3 Cc l nh c b n lin quan n nhm ng i dng ................................................... 148 5.3.1 Nhm ng i dng v file /etc/group ................................................................. 148 5.3.2 Thm nhm ng i dng .................................................................................... 149 5.3.3 S a i cc thu c tnh c a m t nhm ng i dng (l nh groupmod) ................ 149 5.3.4 Xa m t nhm ng i dng (l nh groupdel) ...................................................... 150 5.4 Cc l nh c b n khc c lin quan n ng i dng ................................................ 150 5.4.1 ng nh p v i t cch m t ng i dng khc khi dng l nh su ....................... 150 5.4.2 Xc nh ng i dng ang ng nh p (l nh who) ............................................ 151 5.4.3 Xc nh cc qu trnh ang c ti n hnh (l nh w)....................................... 153 CHNG 6. TRUY N THNG V M NG UNIX-LINUX................................... 154 6.1. L nh truy n thng ..................................................................................................... 154 6.1.1. L nh write......................................................................................................... 154 6.1.2. L nh mail.......................................................................................................... 155 6.1.3. L nh talk ........................................................................................................... 156 6.2 C u hnh Card giao ti p m ng .................................................................................. 156 6.3. Cc d ch v m ng ...................................................................................................... 159 6.3.1 H thng tin m ng NIS...................................................................................... 159 6.4 H th ng file trn m ng ............................................................................................. 164 6.4.1 Ci t NFS ....................................................................................................... 165 6.4.2 Kh i ng v d ng NFS.................................................................................... 166 6.4.3 C u hnh NFS server v Client .......................................................................... 167 6.4.4 S d ng mount................................................................................................... 167 6.4.5 Unmount ............................................................................................................ 168 6.4.6 Mount t ng qua t p c u hnh........................................................................ 168 CHNG 7. L P TRNH SHELL V L P TRNH C TRN LINUX ................... 170 7.1. Cch th c pipes v cc y u t c b n l p trnh trn shell ..................................... 170 7.1.1. Cch th c pipes ................................................................................................ 170 7.1.2. Cc y u t c b n l p trnh trong shell ........................................................ 171 7.2. M t s l nh l p trnh trn shell ................................................................................ 175 7.2.1. S d ng cc ton t bash .................................................................................. 175 7.2.2. i u khi n lu ng .............................................................................................. 179 7.2.3 Cc ton t nh h ng vo ra........................................................................... 193 7.2.4. Hi n dng vn b n............................................................................................ 194 7.2.5. L nh read c d li u cho bi n ng i dng ..................................................... 194 7.2.6. L nh set ............................................................................................................ 195 7.2.7. Tnh ton trn cc bi n ..................................................................................... 196 7.2.8. Chng trnh v d ............................................................................................ 196

7.3. L p trnh C trn UNIX ............................................................................................. 197 7.3.1. Trnh bin d ch gcc ........................................................................................... 197 7.3.2. Cng c GNU make ......................................................................................... 201 7.3.3. Lm vi c v i file............................................................................................... 203 7.3.4. Th vi n lin k t............................................................................................... 211 7.3.5 Cc cng c cho th vi n ................................................................................. 220 TI LI U THAM KH O ...................................................................................... 223 CH THCH M T S THU T NG ................................................................... 224 T REDHAT-LINUX ........................................ 227 PH L C A. QU TRNH CI

AA. Ci t phin b n RedHat 6.2 ................................................................................. 228 AA.1. T o a m m kh i ng ................................................................................... 228 AA.2. Phn vng l i a DOS/Windows hi n th i.................................................. 228 AA.3. Cc b c ci t (b n RedHat 6.2 v kh i ng t CD-ROM)....................... 229 AA.4. Cc h n ch v ph n c ng i v i Linux ........................................................ 239 PH L C B. TRNH SO N TH O VIM .............................................................. 242 B.1 Kh i ng vim ............................................................................................................ 244 B.1.1 M chng trnh so n th o vim........................................................................ 244 B.1.2. Tnh nng m nhi u c a s .............................................................................. 245 B.1.3. Ghi v thot trong vim ..................................................................................... 246 B.2. Di chuy n tr so n th o trong Vim ......................................................................... 247 B.2.1. Di chuy n trong vn b n .................................................................................. 247 B.2.2. Di chuy n theo cc i t ng vn b n............................................................. 248 B.2.3. Cu n mn hnh................................................................................................. 248 B.3. Cc thao tc trong vn b n ...................................................................................... 249 B.3.1. Cc l nh chn vn b n trong vim..................................................................... 249 B.3.2. Cc l nh xo vn b n trong vim ...................................................................... 250 B.3.3. Cc l nh khi ph c vn b n trong vim ............................................................ 250 6.3.4. Cc l nh thay th vn b n trong vim ................................................................ 250 B.3.5. Sao chp v di chuy n vn b n trong vim ....................................................... 252 B.3.6. Tm ki m v thay th vn b n trong vim ......................................................... 253 B.3.7. nh d u trong vim ......................................................................................... 254 B.3.8. Cc phm s d ng trong ch chn............................................................... 255 B.3.9. M t s l nh trong ch o............................................................................. 256 B.3.10. Cc l nh l p ................................................................................................... 256 B.4. Cc l nh khc ............................................................................................................ 257 B.4.1. Cch th c hi n cc l nh bn trong Vim........................................................... 257 B.4.2. Cc l nh lin quan n file............................................................................... 257

PH L C C. MIDNIGHT COMMANDER ............................................................ 259 C.1. Gi i thi u v Midnight Commander (MC) ............................................................ 259 C.2. Kh i ng MC .......................................................................................................... 259 C.3. Giao di n c a MC ..................................................................................................... 259 C.4. Dng chu t trong MC .............................................................................................. 260 C.5. Cc thao tc bn phm.............................................................................................. 261 C.6. Th c n thanh ngang (menu bar)......................................................................... 263 C.7. Cc phm ch c nng ................................................................................................. 266 C.8. B so n th o c a Midnight Commander................................................................ 267 PH L C D. SAMBA.......................................................................................... 270 D.1 Ci t Samba ............................................................................................................ 270 D.2 Cc thnh ph n c a Samba ...................................................................................... 271 D.3 File c u hnh Samba .................................................................................................. 272 D.4 Cc ph n c bi t c a file c u hnh Samba............................................................. 275 D.5 Qu n l ng i dng trong Samba............................................................................ 282 D.6 Cch s d ng Samba t cc my tr m.................................................................... 284 D.6.1 Cch s d ng t cc my tr m l Linux ........................................................... 284 D.6.2 Cch s d ng t cc my tr m l Windows ..................................................... 287

L I GI I THI U
Trong hn m i nm tr l i y h i u hnh Linux

CHNG 1. GI I THI U CHUNG V LINUX


1.1. Gi i thi u v UNIX v Linux
1.1.1. Xu t x , qu trnh ti n ha v m t s c trng c a h i u hnh UNIX Nm 1965, Vi n cng ngh Massachusetts (MIT: Massachusetts Institute of Technology) v Phng th nghi m Bell c a hng AT&T th c hi n d n xy d ng m t h i u hnh c tn g i l Multics (MULTiplexed Information and Computing Service) v i m c tiu: t o l p c m t h i u hnh ph trn vng lnh th r ng (ho t ng trn t p cc my tnh c k t n i), a ng i dng, c nng l c cao v tnh ton v lu tr . D n ni trn thnh cng m c h t s c khim t n v ng i ta bi t n m t s khi m khuy t kh kh c ph c c a Multics. Nm1969, Ken Thompson, m t chuyn vin t i phng th nghi m Bell, ng i tham gia d n Multics, cng Dennics Richie vi t l i h i u hnh a-bi ton trn my PDP-7 v i tn l UNICS (UNiplexed Information and Computing Service) t m t cu g i a c a m t ng nghi p. Trong h i u hnh UNICS, m t s kh i th o u tin v H th ng file c Ken Thompson v Dennis Ritchie th c hi n. n nm 1970 h i u hnh c vi t trn assembler cho my PDP-11/20 v mang tn l UNIX. Nm 1973, Riche v Thompson vi t l i nhn c a h i u hnh UNIX trn ngn ng C, v h i u hnh tr nn d dng ci t t i cc lo i my tnh khc nhau; tnh ch t nh th c g i l tnh kh chuy n (portable) c a UNIX. Tr c , kho ng nm 1971, h i u hnh c th hi n trn ngn ng B (m d a trn ngn ng B, Ritche pht tri n thnh ngn ng C). Hng AT&T ph bi n chng trnh ngu n UNIX t i cc tr ng i h c, cc cng ty thng m i v chnh ph v i gi khng ng k . Nm 1982, h th ng UNIX-3 l b n UNIX thng m i u tin c a AT&T. Nm 1983, AT&T gi i thi u H th ng UNIX-4 phin b n th nh t trong c trnh so n th o vi, th vi n qu n l mn hnh c pht tri n t i h c T ng h p California, Berkley. Giai o n 1985-1987, UNIX-5 phin b n 2 v 3 tng ng c a ra vo cc nm 1985 v 1987. Trong giai o n ny, c kho ng 100000 b n UNIX c ph bi n trn th gi i, ci t t my vi tnh n cc h th ng l n. u th p k 1990. UNIX-5 phin b n 4 c a ra nh l m t chu n c a UNIX. y l s k t h p c a cc b n sau: AT&T UNIX-5 phin b n 3, Berkley Software Distribution (BSD), XENIX c a MicroSoft SUN OS C th tm th y cc n i dung lin quan t i m t s phin b n m i c a UNIX t i a ch website http://problem.rice.edu/. Cc nhm nh cung c p khc nhau v UNIX ang ho t ng trong th i gian hi n nay ck n nh sau: Unix International (vi t t t l UI). UI l m t t ch c g m cc nh cung c p th c hi n vi c chuy n nh ng h th ng UNIX-5 v cung c p b n AT&T theo cc

nhu c u v thng bo pht hnh m i, ch ng h n nh i u ch nh b n quy n. Giao di n h a ng i dng l Open Look. Open Software Foundation (OSF). OSF c h tr b i IBM, DEC, HP ... theo h ng pht tri n m t phin b n c a Unix nh m tranh ua v i h th ng UNIX-5 phin b n 4. Phin b n ny c tn l OSF/1 v i giao di n h a ng i dng c g i l MOTIF. Free SoftWare Foundation (FSF): m t c ng ng do Richard Stallman kh i x ng nm 1984 ch trng pht hnh cc ph n m m s d ng t do, trn c s m t h i u hnh thu c lo i UNIX. B ng sau y li t k m t s ci t UNIX kh ph bi n (th ng th y c ch X cu i tn g i c a H i u hnh): Tn h AIX A/UX Dynix HP-UX Irix Linux NextStep OSF/1 SCO UNIX Solaris SunOS Ultrix Unicos UnixWare XENIX Nh cung c p International Business Machines Apple Computer Sequent Hewlett-Packard Silicon Graphics Free SoftWare Foundation Next Digital Equipment Corporation Santa Cruz Operation Sun Microsystems Sun Microsystems Digital Equipment Corporation Cray Novell MicroSoft N n pht tri n AT&T System V AT&T System V BSD (Berkeley SoftWare Distribution) BSD AT&T System V BSD BSD AT&T System V AT&T System V BSD UNIX BSD UNIX AT&T System V AT&T System V AT&T System III-MS

D i y li t k m t s c trng c a h i u hnh UNIX: H i u hnh c vi t trn ngn ng b c cao; b i v y, r t d c, d hi u, d thay i ci t trn lo i my m i (tnh d mang chuy n, nh ni), C giao di n ng i dng n gi n nng l c cung c p cc d ch v m ng i dng mong mu n (so snh v i cc h i u hnh c t tr c th giao di n c a UNIX l m t ti n b v t b c), Th a mn nguyn t c xy d ng cc chng trnh ph c t p t nh ng chng trnh n gi n hn: tr c h t c cc m un c b n nh t c a nhn sau pht tri n c ton b h i u hnh, S d ng duy nh t m t h th ng File c c u trc cho php d dng b o qu n v s d ng hi u qu ,

S d ng ph bi n m t d ng n gi n trnh by n i t i c a File nh m t dng cc byte cho php d dng khi vi t cc chng trnh ng d ng truy nh p, thao tc v i cc d li u trong File, C k t n i n gi n v i thi t b ngo i vi: cc file thi t b c t s n trong H th ng File t o ra m t k t n i n gi n gi a chng trnh ng i dng v i cc thi t b ngo i vi, L h i u hnh a ng i dng, a qu trnh, trong m i ng i dng c th th c hi n cc qu trnh c a mnh m t cch c l p. M i thao tc vo - ra c a h i u hnh c th c hi n trn h th ng File: m i thi t b vo ra tng ng v i m t file. Chng trnh ng i dng lm vi c v i file m khng c n quan tm c th tn file c t cho thi t b no trong h th ng. Che khu t c u trc my i v i ng i dng, m b o tnh c l p tng i c a chng trnh i v i d li u v ph n c ng, t o i u ki n thu n l i hn cho ng i l p trnh khi vi t cc chng trnh ch y UNIX v i cc i u ki n ph n c ng hon ton khc bi t nhau. 1.1.2. Gi i thi u s b v Linux Linus Tovalds (m t sinh vin Ph n lan) a ra nhn (phin b n u tin) cho h i u hnh Linux vo thng 8 nm 1991 trn c s c i ti n m t phin b n UNIX c tn Minix do Gio s Andrew S. Tanenbaum xy d ng v ph bi n. Nhn Linux tuy nh song l t ng gi. K t h p v i cc thnh ph n trong h th ng GNU, h i u hnh Linux c hnh thnh. V cng t th i i m , theo t t ng GNU, hng nghn, hng v n chuyn gia trn ton th gi i (nh ng ng i ny hnh thnh nn c ng ng Linux) tham gia vo qu trnh pht tri n Linux v v v y Linux ngy cng p ng nhu c u c a ng i dng. D i y l m t s m c th i gian quan tr ng trong qu trnh hnh thnh v pht tri n h i u hnh Linux. Sau ba nm nhn Linux ra i, n ngy 14-3-1994, h i u hnh Linux phin b n 1.0 c ph bi n. Thnh cng l n nh t c a Linux 1.0 l n h tr giao th c m ng TCP/IP chu n UNIX, snh v i giao th c socket BSD- tng thch cho l p trnh m ng. Trnh i u khi n thi t b c b sung ch y IP trn m t m ng Ethernet ho c trn tuy n n ho c qua modem. H th ng file trong Linux 1.0 v t xa h th ng file c a Minix thng th ng, ngoi ra h tr i u khi n SCSI truy nh p a t c cao. i u khi n b nh o c m r ng h tr i u khi n trang cho cc file swap v nh x b nh c a file c quy n (ch c m t nh x b nh ch c c thi hnh trong Linux 1.0). Vo thng 3-1995, nhn 1.2 c ph bi n. i u ng k c a Linux 1.2 so v i Linux 1.0 ch n h tr m t ph m vi r ng v phong ph ph n c ng, bao g m c ki n trc tuy n ph n c ng PCI m i. Nhn Linux 1.2 l nhn k t thc dng nhn Linux ch h tr PC. M t i u c n lu v cc nh ch s cc dng nhn (h i u hnh) Linux. H th ng ch s c chia thnh m t s m c, ch ng h n hai m c nh 2.4 ho c ba m c nh 2.2.5. Trong cch nh ch s nh v y, quy c r ng v i cc ch s t m c th hai tr i, n u l s ch n th dng nhn kh n nh v tng i hon thi n, cn n u l s l th dng nhn v n ang c pht tri n ti p. 1 0

Thng 6-1996, nhn Linux 2.0 c ph bi n. C hai c trng n i b t c a Linux 2.0 l h tr ki n trc ph c h p, bao g m c c ng Alpha 64-bit y , v h tr ki n trc a b x l. Phn ph i nhn Linux 2.0 cng thi hnh c trn b x l Motorola 68000 v ki n trc SPARC c a SUN. Cc thi hnh c a Linux d a trn vi nhn GNU Mach cng ch y trn PC v PowerMac. T i nm 2000, nhn Linux 2.4 c ph bi n. M t trong c i m c quan tm c a nhn ny l n h tr m k t Unicode 32 bt, r t thu n l i cho vi c xy d ng cc gi i php ton di n v tri t iv iv n ngn ng t nhin trn ph m vi ton th gi i. V n phn ph i v gi y php Linux V l thuy t, m i ng i c th kh i t o m t h th ng Linux b ng cch ti p nh n b n m i nh t cc thnh ph n c n thi t t cc site ftp v bin d ch chng. Trong th i k u tin, ng i dng Linux ph i ti n hnh ton b cc thao tc ny v v v y cng vi c l kh v t v . Tuy nhin, do c s tham gia ng o c a cc c nhn v nhm pht tri n Linux, ti n hnh th c hi n nhi u gi i php nh m lm cho cng vi c kh i t o h th ng v tv .M t trong nh ng gi i php i n hnh nh t l cung c p t p cc gi chng trnh ti n d ch, chu n ha. Nh ng t p h p nh v y hay nh ng b n phn ph i l l n hn nhi u so v i h th ng Linux c s . Chng th ng bao g m cc ti n ch b sung cho kh i t o h th ng, cc th vi n qu n l, cng nh nhi u gi c ti n d ch, s n sng kh i t o c a nhi u b cng c UNIX dng chung, ch ng h n nh ph c v tin, trnh duy t web, cng c x l, so n th o vn b n v th m ch cc tr chi. Cch th c phn ph i ban u r t n gi n song ngy cng c nng c p v hon thi n b ng phng ti n qu n l gi tin ti n. Cc b n phn ph i ngy nay bao g m cc c s d li u ti n ha gi, cho php cc gi d dng c kh i t o, nng c p v lo i b . Nh phn ph i u tin th c hi n theo phng chm ny l Slakware, v chnh h l nh ng chuy n bi n m nh m trong c ng ng Linux i v i cng vi c qu n l gi kh i t o Linux. Ti n ch qu n l gi RPM (RedHat Package Manager) c a cng ty RedHat l m t trong nh ng phng ti n i n hnh. Nhn Linux l ph n m m t do c phn ph i theo Gi y php s h u cng c ng ph n m m GNU GPL. Cc thnh ph n tch h p H i u hnh Linux Linux s d ng r t nhi u thnh ph n t D n ph n m m t do GNU, t h i u hnh BSD c a i h c Berkeley v t h th ng X-Window c a MIT. Th vi n h th ng chnh c a Linux c b t ngu n t D n GNU, sau c r t nhi u ng i trong c ng ng Linux pht tri n ti p, nh ng pht tri n ti p theo nh v y ch y u lin quan t i vi c gi i quy t cc v n nh thi u v ng a ch (l i trang), thi u hi u qu v g r i. M t s thnh ph n khc c a D n GNU, ch ng h n nh trnh bin d ch GNU C (gcc), v n l ch t l ng cao nn c s d ng nguyn xy trong Linux. Cc tool qu n l m ng c b t ngu n t m 4.3BSD song sau c c ng ng Linux pht tri n, ch ng h n nh th vi n ton h c ng x l d u ch m ng Intel v cc trnh i u khi n thi t b ph n c ng m thanh PC. Cc tool qu n l m ng ny sau l i c b sung vo h th ng BSD.

1 1

H th ng Linux c duy tr g n nh b i m t m ng l i khng ch t ch cc nh pht tri n ph n m m c ng tc v i nhau qua Internet, m ng l i ny g m cc nhm nh v c nhn ch u trch nhi m duy tr tnh ton v n c a t ng thnh ph n. M t l ng nh cc site phn c p ftp Internat cng c ng ng vai tr nh kho theo chu n de facto ch a cc thnh ph n ny. Ti li u Chu n phn c p h th ng file (File System Hierarchy Standard) c c ng ng Linux duy tr nh m gi tnh tng thch xuyn qua s khc bi t r t l n gi a cc thnh ph n h th ng. M ts c i m chnh c a Linux D i y trnh by m t s c i m chnh c a c a h Linux tng thch v i nhi u h i u hnh Linux hi n t i:

i u hnh nh DOS, MicroSoft Windows ...:

Cho php ci t Linux cng v i cc h i u hnh khc trn cng m t c ng. Linux c th truy nh p n cc file c a cc h i u hnh cng m t a. Linux cho php ch y m ph ng cc chng trnh thu c cc h i u hnh khc. Do gi l d dng. c chu n c a UNIX nn s chuy n i gi a Linux v cc h UNIX khc c trng l a ng i dng, a

Linux l m t h i u hnh UNIX tiu bi u v i cc chng trnh v a x l.

Linux c giao di n ho (GUI) th a h ng t h th ng X-Window. Linux h tr nhi u giao th c m ng, b t ngu n v pht tri n t dng BSD. Thm vo , Linux cn h tr tnh ton th i gian th c. Linux kh m nh v ch y r t nhanh ngay c khi nhi u qu trnh ho c nhi u c a s . Linux c ci t trn nhi u ch ng lo i my tnh khc nhau nh PC, Mini v vi c ci t kh thu n l i. Tuy nhin, hi n nay cha xu t hi n Linux trn my tnh l n (mainframe). Linux ngy cng c h tr b i cc ph n m m ng d ng b sung nh so n th o, qu n l m ng, qu n tr c s d li u, b ng tnh ... Linux h tr t t cho tnh ton song song v my tnh c m (PC-cluster) l m t h ng nghin c u tri n khai ng d ng nhi u tri n v ng hi n nay. L m t h i u hnh v i m ngu n m , c pht tri n qua c ng ng ngu n m (bao g m c Free Software Foundation) nn Linux pht tri n nhanh. Linux l m t trong m t s t cc h i u hnh c quan tm nhi u nh t trn th gi i hi n nay. Linux l m t h i u hnh h tr a ngn ng m t cch ton di n nh t. Do Linux cho php h tr cc b m chu n t 16 bit tr ln (trong c cc b m ISO10646, Unicode) cho nn vi c b n a ha trn Linux l tri t nh t trong cc h i u hnh. Tuy nhin cng t n t i m t s kh khn lm cho Linux cha th c s tr thnh m t h i u hnh ph d ng, d i y l m t s kh khn i n hnh: Tuy c cng c h tr ci t, tuy nhin, vi c ci t Linux cn tng i ph c t p v kh khn. Kh nng tng thch c a Linux v i m t s lo i thi t b ph n c ng cn th p do cha c cc trnh i u khi n cho nhi u thi t b ,

1 2

Ph n m m ng d ng ch y trn n n Linux tuy phong ph song so v i m t s h i u hnh khc, c bi t l khi so snh v i MS Windows, th v n cn c kho ng cch. V i s h tr c a nhi u cng ty tin h c hng u th gi i (IBM, SUN, HP ...) v s tham gia pht tri n c a hng v n chuyn gia trn ton th gi i thu c c ng ng Linux, cc kh khn c a Linux ch c ch n s nhanh chng c kh c ph c. Chnh v l hnh thnh m t s nh cung c p Linux trn th gi i. B ng d i y l tn c a m t s nh cung c p Linux c ti ng nh t v a ch website c a h . ng ch nh t l Red Hat Linux (t i M ) v Red Flag Linux (t i Trung Qu c). Red Hat c coi l lu i v tin c y, cn Red Flag l m t cng ty Linux c a Trung qu c, c quan h v i c ng ng Linux Vi t nam v chng ta c th h c h i m t cch tr c ti p kinh nghi m cho qu trnh a Linux vo Vi t nam. Tn cng ty a ch website Caldera OpenLinux www.caldera.com Corel Linux www.corel.com Debian GNU/Linux www.debian.com Linux Mandrake www.mandrake.com Red Hat Linux www.redhat.com Red Flag Linux www.redflag-linux.com Slackware Linux www.slackware.com SuSE Linux www.suse.com TurboLinux www.turbolinux.com

1.2. S b v cc thnh ph n c a Linux


H th ng Linux, c thi hnh nh m t h i u hnh UNIX truy n th ng, g m shell v ba thnh ph n ( d ng m chng trnh) sau y: - Nhn h i u hnh ch u trch nhi m duy tr cc i t ng tr u t ng quan tr ng c a h i u hnh, bao g m b nh o v qu trnh. Cc m un chng trnh trong nhn c c quy n trong h th ng, bao g m c quy n th ng tr c b nh trong. - Th vi n h th ng xc nh m t t p chu n cc hm cc ng d ng tng tc v i nhn, v thi hnh nhi u ch c nng c a h th ng nhng khng c n c cc c quy n c a m un thu c nhn. M t h th ng con i n hnh c thi hnh d a trn th vin h th ng l h th ng file Linux. - Ti n ch h th ng l cc chng trnh thi hnh cc nhi m v qu n l ring r , chuyn bi t. M t s ti n ch h th ng c g i ra ch m t l n kh i ng v c u hnh phng ti n h th ng, m t s ti n ch khc, theo thu t ng UNIX c g i l trnh ch y ng m (daemon), c th ch y m t cch th ng xuyn (th ng theo chu k), i u khi n cc bi ton nh h ng ng cc k t n i m ng m i n, ti p nh n yu c u logon, ho c c p nh t cc file log. Ti n ch (hay l nh) c s n trong h i u hnh (d i y ti n ch c coi l l nh th ng tr c). N i dung chnh y u c a ti li u ny gi i thi u chi ti t v m t s l nh thng d ng nh t c a Linux. H th ng file s c gi i thi u trong chng 3. Trong cc chng sau c c p t i nhi u n i dung lin quan n nhn v shell, song d i y l m t s nt s b v chng.

1 3

1.2.1. S b v nhn Nhn (cn c g i l h li) c a Linux, l m t b cc mdun chng trnh c vai tr i u khi n cc thnh ph n c a my tnh, phn ph i cc ti nguyn cho ng i dng (cc qu trnh ng i dng). Nhn chnh l c u n i gi a chng trnh ng d ng v i ph n c ng. Ng i dng s d ng bn phm g n i dung yu c u c a mnh v yu c u c nhn g i t i shell: Shell phn tch l nh v g i cc chng trnh tng ng v i l nh th c hi n. M t trong nh ng ch c nng quan tr ng nh t c a nhn l gi i quy t bi ton l p l ch, t c l h th ng c n phn chia CPU cho nhi u qu trnh hi n th i cng t n t i. i v i Linux, s l ng qu trnh c th ln t i con s hng nghn. V i s l ng qu trnh ng th i nhi u nh v y, cc thu t ton l p l ch c n ph i hi u qu : Linux th ng l p l ch theo ch Round Robin (RR) th c hi n vi c lun chuy n CPU theo l ng t th i gian. Thnh ph n quan tr ng th hai trong nhn l h th ng cc m un chng trnh ( c g i l l i g i h th ng) lm vi c v i h th ng file. Linux c hai cch th c lm vi c v i cc file: lm vi c theo byte (k t ) v lm vi c theo kh i. M t c i m ng ch l file trong Linux c th c nhi u ng i cng truy nh p t i nn cc l i g i h th ng lm vi c v i file c n m b o vi c file c truy nh p theo quy n v c chia x cho ng i dng. 1.2.2. S b v shell M t s n i dung chi ti t v shell (cn c g i l h v ) trong Linux c trnh by trong chng "L p trnh trn shell". Nh ng n i dung trnh by d i y cung c p m t cch nhn s b v shell v vai tr c a n trong ho t ng chung c a h i u hnh. Ng i dng mong mu n my tnh th c hi n m t cng vi c no th c n g l nh th hi n yu c u c a mnh h th ng p ng yu c u . Shell l b d ch l nh v ho t ng nh m t k t n i trung gian gi a nhn v i ng i dng: Shell nh n dng l nh do ng i dng a vo; v t dng l nh ni trn, nhn tch ra cc b ph n nh n c m t hay m t s l nh tng ng v i cc o n vn b n c trong dng l nh. M t l nh bao g m tn l nh v tham s : t u tin l tn l nh, cc t ti p theo (n u c) l cc tham s . Ti p theo, shell s d ng nhn kh i sinh m t qu trnh m i (kh i t o qu trnh) v sau , shell ch i qu trnh con ny ti n hnh, hon thi n v k t thc. Khi shell s n sng ti p nh n dng l nh c a ng i dng, m t d u nh c shell (cn g i l d u nh c nh p l nh) xu t hi n trn mn hnh. Linux c hai lo i shell ph bi n l: C-shell (d u nh c %), Bourne-shell (d u nh c $) v m t s shell pht tri n t cc shell ni trn (ch ng h n, TCshell - tcsh v i d u nh c ng m nh > pht tri n t C-shell v GNU Bourne - bash v i d u nh c bash # pht tri n t Bourne-shell). D u m i phn bi t shell ni trn khng ph i hon ton r rng do Linux cho php ng i dng thay i l i d u nh c shell nh vi c thay gi tr cc bi n mi tr ng PS1 v PS2. Trong ti li u ny, chng ta s d ng k hi u "hng ro #" bi u th d u nh c shell. C-shell c tn g i nh v y l do cch vi t l nh v chng trnh l nh Linux t a nh ngn ng C. Bourne-shell mang tn tc gi c a n l Steven Bourne. M t s l nh trong Cshell (ch ng h n l nh alias) khng cn c trong Bourne-shell v v v y nh n bi t h th ng ang lm vi c v i shell no, chng ta g l nh: # alias N u m t danh sch xu t hi n th shell ang s d ng l C-shell; ng c l i, n u xu t hi n thng bo "Command not found" th shell l Bourne-shell. L nh c chia thnh 3 lo i l nh:

1 4

L nh th ng tr c (c s n c a Linux). Tuy t i a s l nh c gi i thi u trong ti li u ny l l nh th ng tr c. Chng bao g m cc l nh c ch a s n trong shell v cc l nh th ng tr c khc. File chng trnh ngn ng my: ch ng h n, ng i dng vi t trnh trn ngn ng C qua b d ch gcc (bao g m c trnh k t n i link) t o ra m t chng trnh trn ngn ng my. File chng trnh shell (Shell Scrip). Khi k t thc m t dng l nh c n g phm ENTER shell phn tch v th c hi n l nh.

1.3. Gi i thi u v s d ng l nh trong Linux


Nh gi i thi u ph n trn, Linux l m t h i u hnh a ng i dng, a nhi m, c pht tri n b i hng nghn chuyn gia Tin h c trn ton th gi i nn h th ng l nh cng ngy cng phong ph; n th i i m hi n nay Linux c kho ng hn m t nghn l nh. Tuy nhin ch c kho ng vi ch c l nh l thng d ng nh t i v i ng i dng. Ti li u ny cng h n ch gi i thi u kho ng vi ch c l nh . Chng ta ng e ng i v s l ng l nh c gi i thi u ch chi m m t ph n nh trong t p h p l nh b i v y l nh ng l nh thng d ng nh t v chng cung c p m t ph m vi ng d ng r ng l n, th a mn yu c u c a chng ta. Cng nh ni trn, ng i dng lm vi c v i my tnh thng qua vi c s d ng tr m cu i: ng i dng a yu c u c a mnh b ng cch g "l nh" t bn phm v giao cho h i u hnh x l. Khi ci t Linux ln my tnh c nhn th my tnh c nhn v a ng vai tr tr m cu i, v a ng vai tr my tnh x l. D ng t ng qut c a l nh Linux c th c vi t nh sau: # <Tn l nh> [<cc tham s >] trong : Tn l nh l m t dy k t , khng c d u cch, bi u th cho m t l nh c a Linux hay m t chng trnh. Ng i dng c n h i u hnh p ng yu c u g c a mnh th ph i ch n ng tn l nh. Tn l nh l b t bu c ph i c khi g l nh. Cc tham s c th c ho c khng c, c vi t theo quy nh c a l nh m chng ta s d ng, nh m cung c p thng tin v cc i t ng m l nh tc ng t i. ngha c a cc d u [, <, >, ] c gi i thch ph n quy t c vi t l nh. Cc tham s c phn ra thnh hai lo i: tham s kha (sau y th ng dng l "ty ch n") v tham s v tr. Tham s v tr th ng l tn file, th m c v th ng l cc i t ng ch u s tc ng c a l nh. Khi g l nh, tham s v tr c thay b ng nh ng i t ng m ng i dng c n h ng tc ng t i. Tham s kha chnh l nh ng tham s i u khi n ho t ng c a l nh theo cc tr ng h p ring. Trong Linux, tham s kha th ng b t u b i d u tr "-" ho c hai d u tr lin ti p "--". Khi g l nh, cng gi ng nh tn l nh, tham s kha ph i c vi t chnh xc nh trnh by trong m t l nh. M t l nh c th c m t s ho c r t nhi u tham s kha. Ph thu c vo yu c u c th c a mnh, ng i dng c th ch n m t ho c m t s cc tham s kha khi g l nh. Trong m t l nh, th ng xu t hi n thu t ng ty-ch n. Ty ch n l nh (th c ch t l tham s kha) cho php i u ch nh ho t ng c a l nh trong Linux, lm cho l nh c tnh ph d ng cao. Tu ch n l nh cho php l nh c th p ng mu n c a ng i dng i v i h u h t (tuy khng ph i lc no cng v y) cc tnh hu ng t ra cho thao tc ng v i l nh. 1 5

K hi u "" bi u th vi c g phm h t dng <Enter>. k t thc m t yu c u, ng i dng nh t thi t ph i g phm "". V d , khi ng i dng g l nh xem thng tin v cc file: # ls -l g trong l nh ny: ls l tn l nh th c hi n vi c a danh sch cc tn file/ th m c con trong m t th m c, -l l tham s kha, cho bi t yu c u xem y thng tin v cc i t ng hi n ra. Ch , trong tham s kha ch ci (ch "l") ph i i ngay sau d u tr "-". Tng ng v i l nh ls cn c cc tham s kha -a, -L, ... v chng cng l cc ty ch n l nh. Trong m t s tham s kha c nhi u ch ci thay cho m t d u "-" l hai d u "--" u tham s . V d , nh tr ng h p tham s --file c a l nh date. g* l tham s v tr ch r ng i dng c n xem thng tin v cc file c tn g i b t u l ch ci "g". Trong ti li u ny, quy c r ng khi vi t m t l nh (trong m t l nh v g l nh) th khng c n ph i vi t d u "" cu i dng l nh , song lun ghi nh r ng phm ENTER ("") l b t bu c khi g l nh. Lu : Linux (v UNIX ni chung) c xy d ng trn ngn ng l p trnh C, v v y khi g l nh ph i phn bi t ch th ng v i ch hoa. Ngo i tr m t s ngo i l , trong Linux chng ta th y ph bi n l: Cc tn l nh l ch th ng, M t s tham s c th l ch th ng ho c ch hoa (v d , trong l nh date v th i gian h th ng th hai tham s -r v -R c ngha hon ton khc nhau). Tn cc bi n mi tr ng cng th ng dng ch hoa. Trong ti li u ny, t i nh ng dng vn b n di n gi i, s d ng cch vi t tn l nh, cc tham s kha b ng ki u ch khng chn, m nh date, -R, -r ... Linux phn bi t siu ng i dng (ti ng Anh l superuser ho c root, cn c g i l ng i qu n tr hay ng i dng t i cao ho c siu ng i dng) v i ng i dng thng th ng. Trong t p h p l nh c a Linux, c m t s l nh m ch siu ng i dng m i c php s d ng cn ng i dng thng th ng th khng c php (v d nh l nh adduser th c hi n vi c b sung thm ng i dng). M t khc trong m t s l nh, v i m t s tham s kha th ch siu ng i dng c php dng, cn v i m t s tham s khc th m i ng i dng u c php (v d nh l nh passwd thay i m t kh u ng i dng). M t dng l nh c th c nhi u hn m t l nh, trong l nh sau c ngn cch b i v i l nh i ngay tr c b ng d u ";" ho c d u "|". V d v m t s dng l nh d ng ny: # ls -l; date # head Filetext | sort >temp Sau khi ng i dng g xong dng l nh, shell ti p nh n dng l nh ny v phn tch n i dung vn b n c a l nh. N u l nh c g ng th n c th c hi n; ng c l i, trong tr ng h p c sai st khi g l nh th shell thng bo v sai st v 1 6

d u nh c shell l i hi n ra ch l nh ti p theo c a ng i dng. V ph bi n, n u nh sau khi ng i dng g l nh, khng th y thng bo sai st hi n ra th c ngha l nh c th c hi n m t cch bnh th ng. Tr c khi i vo n i dung chi ti t cc l nh thng d ng, chng ta xem xt v m t s quy nh dng trong m t l nh c trnh by trong ti li u ny. 1.3.1. Cc quy c khi vi t l nh Trong ti li u ny, cc l nh c trnh by theo m t b quy t c c php nh t qun. B quy t c ny cho php phn bi t trong m i l nh cc thnh ph n no l b t bu c ph i c, cc thnh ph n no c th c ho c khng ... D i y l n i dung c a cc quy t c trong b quy t c . Tn l nh l b t bu c, ph i l t u tin trong b t k l nh no, ph i c g ng nh khi m t l nh. Tn khi ni m c n m trong c p d u ngo c quan h (< v >) bi u th cho m t l p i t ng v l tham s b t bu c ph i c. Khi g l nh th tn khi ni m (c th c coi l "tham s hnh th c") ph i c thay th b ng m t t (th ng l tn file, tn th m c ... v c th c coi l "tham s th c s ") ch i t ng lin quan n thao tc c a l nh. V d , m t c php c a l nh more xem n i dung file l # more <file> th t more l tn l nh, cn <file> l tham s trong file l tn khi ni m v l tham s b t bu c ph i c. L nh ny c tc ng l hi n ln mn hnh theo cch th c cu n n i dung c a file v i tn ch trong l nh. xem n i dung file c tn l temp, ng i dng g l nh: # more temp Nh v y, tn l nh more c g ng nh m t c php (c n i dung v v tr) cn "file" c thay th b ng t "temp" l tn file m ng i dng mu n xem n i dung. Cc b ph n n m gi a c p d u ngo c vung [ v ] l c th g ho c khng g cng c. V d , c php c a l nh halt l # halt [ty-ch n] V i cc ty ch n l -w, -n, -d, -f, -i m m i ty ch n cho m t cch th c ho t ng khc nhau c a l nh halt. L nh halt c tc ng chnh l lm ng ng ho t ng c a h i u hnh, tuy nhin khi ng i dng mu n c m t cch ho t ng no c a l nh ny th s ch n m t (ho c m t s ) tu ch n l nh tng ng. M t s cch g l nh halt c a ng i dng nh sau y l ng c php: # halt # halt -w # halt -n # halt -f Cc gi tr c trong c p | v | trong cc b ph n cch nhau b ng d u s ng "|" cho bi t c n ch n m t v ch m t trong cc gi tr n m gi a hai d u ngo c . 1 7

V d , khi gi i thi u v ty ch n l nh c a l nh tail xem ph n cu i n i dung c a file, chng ta th y: -f, --follow[={tn | c t }] Nh v y, sau tham s kha --follow, n u xu t hi n thm d u b ng "=" th ph i c ho c tn ho c c t . y l tr ng h p cc ch n l a "lo i tr nhau". D u ba ch m ... th hi n vi c l p l i thnh ph n c php i ngay tr c d u ny, vi c l p l i c th t khng n nhi u l n (khng k chnh thnh ph n c php ). Cch th c ny th ng c dng v i cc tham s nh tn file. V d , m t l nh chown nh sau: chown [ty-ch n] <ch >[,[nhm]]<file>... Nh v y trong l nh chown c th khng c ho c c m t s ty ch n l nh v c t m t n nhi u tn file. Cc b ph n trong m t l nh, n u khng n m trong cc c p d u [ ], <>, { } th khi g l nh th c s ph i g y ng nh khi m t (ch , quy t c vi t tn l nh l m t tr ng h p ring c a quy t c ny). Vi c k t h p cc d u ngo c v i nhau cho php t o ra cch th c s d ng quy t c t h p cc tham s trong l nh. V d , l nh more bnh th ng c c php l: # more <file> c ngha l thay <file> b ng tn file c n xem n i dung, n u k t h p thm d u ngo c vung [ v ], t c l c d ng sau (chnh l d ng t ng qut c a l nh more): # more [<file>] th <file> ni chung ph i c trong l nh more, tuy nhin trong m t s tr ng h p c th b qua tham s file. Lu : i v i nhi u l nh, cho php ng i dng g tham s kha k t h p tng ng v i ty_ch n trong m t l nh. Tham s kha k t h p c vi t theo cch <xu-k-t >, trong xu-k-t g m cc ch ci trong tham s kha. V d , trong m t l nh in l ch cal: cal [ty-ch n] [thng [nm] ] c ba tham s kha l -m, -j, -y. Khi g l nh c th g m t t h p no t ba tham s kha ny c tnh hu ng s d ng l nh theo mu n. Ch ng h n, n u g l nh cal -mj 3 th l nh cal th c hi n theo i u khi n c a hai tham s kha -m (ch n Th Hai l ngy u tu n, thay v cho ng m nh l Ch Nh t) v -j (hi n th ngy trong thng d i d ng s ngy trong nm k t u nm). V v y, khi vi t [ty-ch n] trong m t l nh bi u th c vi c s d ng t ng ty ch n, nhi u ty ch n ho c k t h p cc tu ch n. Trong m t s l nh, c hai tham s kha cng tng ng v i m t tnh hu ng th c hi n l nh, trong m t tham s g m m t k t cn tham s kia l i l m t t . Tham s di m t t l tham s chu n c a l nh, cn tham s m t k t l cch vi t ng n g n. Tham s chu n dng c trong m i Linux v khi g ph i c k t trong t . 1 8

V d , khi m t l nh date c ty ch n: -d, --date=STRING nh v y hai tham s -d v --date=STRING c cng ngha. Ngoi nh ng quy c trn y, ng i dng ng qun m t quy nh c b n l c n phn bi t ch hoa v i ch th ng khi g l nh. 1.3.3. Lm n gi n thao tc g l nh Vi c s d ng bn phm nh p l nh tuy khng ph i l m t cng vi c n ng n , song Linux cn cho php ng i dng s d ng m t s cch th c thu n ti n hn khi g l nh. M t s trong nh ng cch th c l: S d ng vi c khi ph c dng l nh, S d ng cc phm c bi t, S d ng cc k hi u thay th v phm <Tab>, S d ng thay th alias, S d ng chng trnh l nh. Cch th c s d ng chng trnh l nh (shell script) s c gi i thi u chi ti t trong cc chng sau. D i y, chng ta xem xt cch th c s d ng vi c khi ph c dng l nh, phm c bi t v k hi u thay th . C ch khi ph c dng l nh Linux cung c p m t cch th c c bi t l kh nng khi ph c l nh. T i d u nh c shell: Ng i dng s d ng cc phm mi tn ln/xu ng (/) trn bn phm nh n l i cc dng l nh c a vo tr c y t i d u nh c shell, ch n m t trong cc dng l nh v bin t p l i n i dung dng l nh theo ng yu c u m i c a mnh. V d , ng i dng v a g xong dng l nh: # ls -l tenfile* sau mu n g l nh ls -l tentaptin th t i d u nh c c a shell, ng i dng s d ng cc phm di chuy n ln () ho c xu ng () nh n c: # ls -l tenfile* dng cc phm t t di chuy n, xo k t (xem ph n sau) c c: # ls -l ten v g ti p cc k t "taptin" nh n c: # ls -l tentaptin chnh l k t qu mong mu n. Trong tr ng h p s l ng k t thay th l r t t so v i s l ng k t c a ton dng l nh th hi u qu c a cch th c ny r t cao. Lu : Vi c nh n lin ti p cc phm di chuy n ln () ho c xu ng () cho php ng i dng nh n c cc dng l nh g t tr c m khng ch dng l nh m i c g. Cch th c ny tng t v i cch th c s d ng ti n ch DOSKEY trong h i u hnh MS-DOS. 1 9

M t s phm c bi t khi g l nh Khi ng i dng g l nh c th x y ra m t s tnh hu ng nh sau: Dng l nh ang g c ch sai st, khng ng theo yu c u c a ng i dng v v y c n ph i s a l i i cht n i dung trn dng l nh . Trong tr ng h p c n s d ng cc phm c bi t (cn g i l phm vi t t t hay phm t t) di chuy n, xo b , b sung vo n i dung dng l nh. Sau khi s d ng cch th c khi ph c dng l nh, chng ta nh n c dng l nh tng t v i l nh c n g v sau s d ng cc phm t t hon thi n l nh. D i y gi i thi u cc phm t t v ngha c a vi c s d ng chng: Nh n phm di chuy n con tr sang bn ph i m t v tr Nh n phm di chuy n con tr sang bn tri m t v tr Nh n phm <ESC-BACKSPACE> xo m t t bn tri con tr Nh n phm <ESC-D> xo m t t bn ph i con tr Nh n phm <ESC-F> di chuy n con tr sang bn ph i m t t Nh n phm <ESC-B> di chuy n con tr sang bn tri m t t Nh n phm <CTRL-A> di chuy n con tr v u dng l nh Nh n phm <CTRL-E> di chuy n con tr v cu i dng Nh n phm <CTRL-U> xa dng l nh C th dng phm <ALT> thay cho phm <ESC>. Cc k hi u m t nhm file v phm <Tab> Khi g l nh th c s nhi u tr ng h p ng i dng mong mu n m t tham s trong l nh khng ch xc nh m t file m l i lin quan n m t nhm cc file m tn g i c a cc file trong nhm c chung m t tnh ch t no . Trong nh ng tr ng h p nh v y, ng i dng c n s d ng cc k hi u m t nhm file (wildcards), chng ta g i l k hi u m t nhm (cn c g i l k hi u thay th ). Ng i ta s d ng cc k t *, ? v c p hai d u [ v ] m t nhm file. Cc k t ny mang ngha nh sau khi vi t vo tham s tn file th c s : "*" : l k t m t nhm g m m i xu k t (thay th m i xu). M t ny cho m t nhm l n nh t trong ba m t . "?" : m t nhm g m m i xu v i di khng qu 1 (thay th m t k t ). Nhm ny l t p con c a nhm u tin (theo k t "*"). [xu-k-t ] : m t nhm g m m i xu c di 1 l m i k t thu c xu ni trn. M t ny cho m t nhm c l c l ng b nh t trong ba m t . Nhm ny l t p con c a nhm th hai (theo k t "?"). Khi g l nh ph i g c hai d u [ v ]. M t d ng khc c a m t nhm ny l [<k_t _1>-<k_t _2>] ngha l gi a c p d u ngo c c ba k t trong k t gi a l d u n i (d u -) th cch vi t ny tng ng v i vi c li t k m i k t t <k_t _1> n <k_t _2>. Ch ng h n, cch vi t [a-d] tng ng v i cch vi t [abcd]. V d , gi s khi mu n lm vi c v i t t c cc file trong m t th m c no , ng i dng g * thay th tham s file th xc nh c cc tn file sau (chng ta vi t b n tn file trn m t dng): 2 0

info-dir mail.rc mtab shadowsyslog.conf temp

initlog.conf mailcap mtools.conf shells temp termcap

inittab minicom.users services smb.conf termcap

lynx.cfg motd shadow sysctl.conf up2date.conf

N u ng i dng g s* ( nh c cc tn file sau:


shadow syslog.conf

ch cc tn c ch ci

u l s) thay th tham s file th xc

shadow-

shells sysctl.conf

N u ng i dng g [si]* ( ch cc tn c ch ci u l s ho c i, ch dng c hai k t [ v ]) thay th tham s file th xc nh cc tn file sau:


info-dir shadow sysctl.conf initlog.conf inittab shadowshells syslog.conf services smb.conf

Lu : Nh v y, Linux (v UNIX ni chung) khng ch s d ng hai k t m t nhm * v ? m cn c cch th c s d ng c p k t [ v ]. C n phn bi t c p d u [ v ] c s d ng khi ng i dng g l nh c ngha hon ton khc v i ngha c a chng khi c s d ng trong m t l nh. Hn th n a, Linux cn cung c p cho ng i dng cch th c s d ng phm <TAB> hon thnh n t tn file (tn th m c) trong l nh. V d , khi chng ta g dng l nh # ls /u<TAB>local<TAB>b<TAB> th n cng tng ng nh g dng l nh (v y chnh l n i dung xu t hi n t i d u nh c shell): # ls /usr/local/bin v i i u ki n trong th m c /usr ch c th m c local c b t u b i ch "l" v trong th m c local cng ch c th m c bin c b t u b i ch "b". Trong tr ng h p n u nh m t k t cha xc nh, ng i dng c n g thm k t ti p theo trong tn file (tn th m c) v nh n phm <TAB> hon thnh dng l nh. 1.3.4. Ti p n i dng l nh Nh lu trn y, m t dng l nh c th g m m t ho c m t s l nh, m t khc tham s c a l nh c th l r t di khng th trong khun kh c a m t dng vn b n c. Khi g l nh, n u dng l nh qu di, Linux cho php ng t dng l nh xu ng dng d i b ng cch thm k t bo hi u chuy n dng "\" t i cu i dng; trong tr ng h p , k t "\" ph i l k t cu i cng thu c dng l nh tr c. V d , # cd vsd\ thumuc th dng th hai l ph n ti p theo c a dng th nh t v k t h p c hai dng ny th c ch t l m t dng l nh Linux. 2 1

1.4. Trang Man


Chng ta c th ni r ng Linux l m t h i u hnh r t ph c t p v i hng nghn l nh v m i l nh l i c th c t i vi ho c vi ch c tnh hu ng s d ng do chng cho php c nhi u ty ch n l nh. thu c h t c n i dung t t c cc l nh c a Linux l m t i u h t s c kh khn, c th ni l khng th . Linux cho php ng i dng s d ng cch th c g i trang Man c c cc thng tin y gi i thi u n i dung cc l nh. D i y l m t s n i dung v cch th c s d ng trang Man. "Man" l t vi t t t c a "manual", c coi l ti li u tr c tuy n trong Linux lu tr ton b cc l nh c s n v i cc thng tin tham kh o kh y cho php ng i dng c th m ra nh n c tr gip. m trang Man c a m t l nh, chng ta s d ng l nh man c a Linux v g: # man <tn-l nh> N i dung c a trang Man tuy khng ph i l qu kh hi u, song hi u h t c n cng i h i khng t th i gian. Tuy v y, n u qun n i dung m t l nh no th cch t t nh t l hy s d ng trang Man. C u trc chung c a m t trang Man nh sau: COMMAND(1) Linux Programmer's Manual COMMAND(1) NAME tn l nh - khi qut tc d ng c a l nh SYNOPSIS c php c a l nh DESCRIPTION m t c th hn v tc d ng c a l nh OPTIONS li t k cc ty ch n l nh v tc d ng c a chng FILES li t k cc file m l nh s d ng ho c tham chi u n SEE ALSO li t k cc l nh, cc ti li u, ..., c lin quan n l nh REPORTING BUGS a ch lin h n u g p l i khi s d ng l nh AUTHOR tn tc gi c a l nh Ng i dng th m ch khng nh chnh xc tn l nh. Linux cn c m t cch th c h tr ng i dng c th nhanh chng tm c l nh c n s d ng trong tr ng h p ch nh nh ng ch ci u c a tn l nh, l cch th c s d ng phm TAB. Trong cch th c ny, ng i dng ch c n nh m t s ch ci u tin c a tn l nh. C th trnh by cch th c theo c php sau y: # <dy-ch -ci><TAB><TAB> Trong dy-ch -ci c t m t n m t vi ch ci thu c ph n u c a tn l nh. Ch r ng, cc ch ci v hai phm <TAB> ph i c g lin ti p nhau. K t h p cch th c ny v i cch th c s d ng l nh man (v i s phong ph v ty ch n c a l nh man) nh n c m t cch th c kh tuy t v i tr gip ng i dng.

2 2

V d , mu n s d ng l nh history nhng l i khng nh chnh xc tn l nh c vi t ra nh th no m ch nh n c b t u b i ch h, hy g ch h t i d u nh c shell v nh n phm TAB hai l n, s th y m t danh sch cc l nh c ch ci u tin l h c hi n ra trn mn hnh: # h<TAB><TAB>
h2ph hostname hltest helptool head hboot htdigest hoststat hinotes hexbin help h2xs hcc htpasswd host hipstopgm hexdump helpme halt hpcdtoppm hostid history hf77 hcp hash hpftodit

Nh v y, t t c cc l nh c tn b t u v i ch h c hi n th trn mn hnh v cho php ng i dng c th xc nh c l nh c n quan tm. Tr ng h p t n t i m t s l ng l n cc l nh c cng ch ci u tin m ng i dng g, thay v hi n h t m i tn l nh, h i u hnh cho ra m t thng bo h i ng i dng c mu n xem ton b cc l nh hay khng. Ng i dng p ng thng bo tu theo mu n c a mnh. V d , khi ng i dng g n i dung nh sau: # p<TAB><TAB> th h th ng p l i l:
There are 289 possibilities. Do you really wish to see them all? (y or n)

Ng i dng g phm "y" n u mu n xem, ho c g "n" n u b qua. Ng i dng c th g nhi u hn m t ch ci u tn l nh v i u cho php gi m b t s tn l nh m h th ng tm c v hi n th . Ch ng h n, khi bi t hai ch ci u l "pw" v ng i dng g: # pw<TAB><TAB> th h th ng s hi n ra danh sch cc tn l nh b t u b i "pw":
pwck pwconv pwd pwdb_chkpwd pwunconv

Trong tr ng h p ny, ng i dng s nh n bi t c tn l nh ang c n tm thu n ti n hn.

2 3

CHNG 2. THAO TC V I H TH NG
2.1. Qu trnh kh i ng Linux
Trong ph n ny, chng ta xem xt s b qu trnh kh i ng h i u hnh Linux. M t trong nh ng cch th c kh i ng Linux ph bi n nh t l cch th c do chng trnh LILO (LInux LOader) th c hi n. Chng trnh LILO c n p ln a c a my tnh khi ci t h i u hnh Linux. LILO c n p vo Master Boot Record c a a c ng ho c vo Boot Sector t i phn vng kh i ng (trn a c ng ho c a m m). Gi s my tnh c a chng ta ci t Linux v s d ng LILO kh i ng h i u hnh. LILO thch h p v i vi c trn my tnh c ci t m t s h i u hnh khc nhau v theo , LILO cn cho php ng i dng ch n l a h i u hnh kh i ng. Giai o n kh i ng Linux ty thu c vo c u hnh LILO c l a ch n trong qu trnh ci t Linux. Trong tnh hu ng n gi n nh t, Linux c kh i ng t a c ng hay a m m kh i ng. Qu trnh kh i ng Linux c th c m t theo s sau: T heo s ny, LILO c t i vo my th c hi n m vi c u tin l a nhn vo b nh trong v sau t i chng trnh init th c hi n vi c kh i ng Linux. N u ci t nhi u phin b n Linux hay ci Linux cng cc h i u hnh khc (trong cc tr ng h p nh th , m i phin b n Linux ho c h i u hnh khc c gn nhn - label phn bi t), th thng bo sau y c LILO a ra: Nhn init
LILO boot:

LILO

cho php nh p xu l nhn c a m t trong nh ng h i u hnh hi n c trn my kh i ng n. T i th i i m , ng i dng c n g nhn c a h i u hnh c n kh i ng vo, v d , g
LILO boot: linux

n u ch n kh i n u ch n kh i Lu :

ng ng

lm vi c trong Linux, ho c g lm vi c trong MS-DOS, Windows. ch n,

LILO boot: dos

N u chng ta khng nh c nhn c a h i u hnh c trong my hy g phm <TAB> c LILO cho bi t nhn c a cc h i u hnh.
LILO boot: <TAB>

s hi n ra danh sch cc nhn (v d nh): linux dos ... v hi n l i thng bo ni trn ta g nhn c a h i u hnh. LILO cng cho php t ch ch n ng m nh h i u hnh kh i ng m theo n u chng ta khng c tc ng g sau thng bo ch n h i u hnh th LILO s t ng ch n h i u hnh ng m nh ra kh i ng. N u chng ta khng can thi p vo cc file tng ng c a trnh LILO th h i u hnh Linux l h i u hnh ng m nh. Gi s Linux c ch n kh i ng. Khi init th c hi n, chng ta s th y m t chu i (kho ng vi ch c) dng thng bo cho bi t h th ng ph n c ng c Linux nh n di n v 2 4

thi t l p c u hnh cng v i t t c trnh i u khi n ph n m m c n p khi kh i ng. Qu trnh init l qu trnh kh i th y, l cha c a m i qu trnh. T i th i i m kh i ng h th ng init th c hi n vai tr u tin c a mnh l ch y chng trnh shell trong file /etc/inittab v cc dng thng bo trn y chnh l k t qu c a vi c ch y chng trnh shell . Sau khi chng trnh shell trn c th c hi n xong, b t u qu trnh ng i dng ng nh p (login) vo h th ng.

2.2. Th t c ng nh p v cc l nh thot kh i h th ng
2.2.1. ng nh p Sau khi h th ng Linux (l y Red Hat 6.2 lm v d ) kh i hi n nh ng dng sau:
Ret Hat Linux release 6.2 (Zoot) Kernel 2.2.14-5.0 on an i686 May1 login:

ng xong, trn mn hnh xu t

Dng th nh t v dng th hai cho bi t lo i phin b n Linux, phin b n c a nhn v Chng ta c th thay i cc dng hi n th nh trnh by trn y b ng cch s a i file /etc/rc.d/rc.local nh sau: Thay o n chng trnh echo "" > /etc/issue echo "$R" >> /etc/issue echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue cp -f /etc/issue /etc/issue.net echo >> /etc/issue thnh echo "" > /etc/issue echo "Thng bo mu n hi n th " >> /etc/issue v d s a thnh: echo "" > /etc/issue echo "This is my computer" >> /etc/issue th trn mn hnh ng nh p s c d ng sau:
This is my computer hostname login:

ki n trc ph n c ng c trn my, dng th ba l d u nh c ng nh p ng i dng th c hi n vi c ng nh p. Ch l cc dng trn y c th thay i cht t ty thu c vo phin b n Linux. T i d u nh c ng nh p, hy nh p tn ng i dng (cn g i l tn ng nh p): y l tn k hi u cung c p cho Linux nh m nh n di n m t ng i dng c th . Tn ng nh p ng v i m i ng i dng trn h th ng l duy nh t, km theo m t m t kh u ng nh p.
May1 login: root Password:

2 5

Khi nh p xong tn ng nh p, h th ng s hi n ra thng bo h i m t kh u v di chuy n con tr xu ng dng ti p theo ng i dng nh p m t kh u. M t kh u khi c nh p s khng hi n th trn mn hnh v chnh i u gip trnh kh i s "nhm ng" c a ng i khc. N u nh p sai tn ng nh p ho c m t kh u, h th ng s a ra m t thng bo l i:
May1 login: root Password: Login incorrect My1 login:

N u ng nh p thnh cng, ng i dng s nhn th y m t s thng tin v h th ng, m t vi tin t c cho ng i dng... Lc , d u nh c shell xu t hi n ng i dng b t u phin lm vi c c a mnh.
May1 login: root Password: Last login: Fri Oct 27 14:16:09 on tty2 Root[may1 /root]#

Dy k t trong dng cu i cng chnh l d u nh c shell. Trong d u nh c ny, root l tn ng i dng ng nh p, may1 l tn my v /root tn th m c hi n th i (v y l ng i dng root). Khi d u nh c shell xu t hi n trn mn hnh th i u c ngha l h i u hnh s n sng ti p nh n m t yu c u m i c a ng i dng. D u nh c shell c th khc v i trnh by trn y (M c 2.7 cung c p cch thay i d u nh c shell), nhng c th hi u n l chu i k t b t u m t dng c ch a tr chu t v lun xu t hi n m i khi h i u hnh hon thnh m t cng vi c no . 2.2.2. Ra kh i h th ng k t thc phin lm vi c ng i dng c n th c hi n th t c ra kh i h th ng. C r t nhi u cch cho php thot kh i h th ng, y chng ta xem xt m t s cch thng d ng nh t. Cch n gi n nh t m b o thot kh i h th ng ng n l nh n t h p phm CTRL+ALT+DEL. Khi , trn mn hnh s hi n th m t s thng bo c a h th ng v cu i cng l thng bo thot tr c khi t t my. C n ch l: N u ang lm vi c trong mi tr ng X Window System, hy nh n t h p phm CTRL+ALT+BACKSPACE tr c r i sau hy nh n CTRL+ALT+DEL. Cch th hai l s d ng l nh shutdown v i c php nh sau: shutdown [ty-ch n] <time> [c nh-bo] L nh ny cho php d ng t t c cc d ch v ang ch y trn h th ng. Cc ty-ch n c a l nh ny nh sau: -k : khng th c s shutdown m ch c nh bo. -r : kh i -f : kh i ng l i ngay sau khi shutdown. ng l i nhanh v b qua vi c ki m tra a. -h : t t my th c s sau khi shutdown.

2 6

-F : kh i

ng l i v th c hi n vi c ki m tra a.

-c : b qua khng ch y l nh shutdown. Trong ty ch n ny khng th a ra tham s th i gian nhng c th a ra thng bo gi i thch trn dng l nh g i cho t t c cc ng i dng. -t s -giy : qui nh init(8) ch kho ng th i gian s -giy t m d ng gi a qu trnh g i c nh bo v tn hi u kill, tr c khi chuy n sang m t m c ch y khc. v hai tham s v tr cn l i: time : t th i i m shutdown. Tham s time c hai d ng. D ng tuy t i l gg:pp (gg: gi trong ngy, pp: pht) th h th ng s shutdown khi ng h my trng v i gi tr tham s . D ng tng i l +<s > l h n sau th i kho ng <s > pht s shutdown; coi shutdown l p t c tng ng v i +0. c nh-bo : thng bo g i n t t c ng i dng trn h th ng. Khi l nh th c hi n t t c cc my ng i dng u nh n c c nh bo. V d , khi ng i dng g l nh: shutdown +1 Sau mot phut nua he thong se shutdown! trn mn hnh c a t t c ng i dng xu t hi n thng bo "Sau mot phut nua he thong se shutdown! " v sau m t pht th h th ng shutdown th c s . Cch th ba l s d ng l nh halt v i c php nh sau: halt [ty-ch n] L nh ny t t h n my. Cc tu ch n c a l nh halt: -w : khng th c s t t my nhng v n ghi cc thng tin ln file /var/log/wtmp ( y l file lu tr danh sch cc ng i dng ng nh p thnh cng vo h th ng). -d : khng ghi thng tin ln file /var/log/wtmp. Ty ch n -n c ngha tng t song khng ti n hnh vi c ng b ha. -f : th c hi n t t my ngay m khng th c hi n l n l t vi c d ng cc d ch v c trn h th ng. -i : ch th c hi n d ng t t c cc d ch v m ng tr c khi t t my. Chng ta c n nh r ng, n u thot kh i h th ng khng ng cch th d n n h u qu l m t s file hay ton b h th ng file c th b h h ng. Lu : C th s d ng l nh exit tr v d u nh c ng nh p ho c k t thc phin lm vi c b ng l nh logout. 2.2.3. Kh i ng l i h th ng Ngoi vi c thot kh i h th ng nh cc cch th c trn y ( n t h p ba phm Ctrl+Alt+Del, dng l nh shutdown ho c l nh halt), khi c n thi t (ch ng h n, g p ph i tnh hu ng m t trnh ng d ng ch y qu n) c th kh i ng l i h th ng nh l nh reboot. C php l nh reboot: reboot [ty-ch n] L nh ny cho php kh i ng l i h th ng. Ni chung th ch siu ng i dng m i c php s d ng l nh reboot, tuy nhin, n u h th ng ch c duy nh t m t ng i dng ang

2 7

lm vi c th l nh reboot v n c th c hi n song h th ng i h i vi c xc nh n m t kh u. Cc ty ch n c a l nh reboot nh sau l -w, -d, -n, -f, -i c ngha tng t nh trong l nh halt. 2.2.4. Kh i ng vo ch ho Linux cho php nhi u ch kh i ng, nh ng ch ny c li t k trong file /etc/inittab. D i y l n i dung c a file ny: # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, <miquels drinkel.nl.mugnet.org> # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) - y l ch d ng ho t ng c a h th ng # 1 - Single user mode - y l ch n ng i dng, ta c th ng nh p vo ch ny trong tr ng h p mu n kh c ph c m t s s c . # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) - y l ch a ng i dng, giao di n text, khng h tr k t n i m ng. # 3 - Full multiuser mode Ch a ng i dng, giao di n text # 4 unused Khng s d ng ch ny # 5 - X11 - y l ch a ng i dng, giao di n ho # 6 - reboot (Do NOT set initdefault to this) Ch kh i ng l i my tnh # id:3:initdefault: - y l ch ng m nh h th ng s s d ng kh i ng # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Things to run in every runlevel. ud::once:/sbin/update # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now #ca::ctrlaltdel:/bin/echo "You can't do that" # When our UPS tells us power has failed, assume we have a few minutes 2 8

# of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 #3:2345:respawn:/sbin/mingetty tty3 #4:2345:respawn:/sbin/mingetty tty4 #5:2345:respawn:/sbin/mingetty tty5 #6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 # xdm is now a separate service x:5:respawn:/etc/X11/prefdm nodaemon Trong ch kh i ng s 3 l ch kh i ng vo ch Text, v ch 5 l kh ng vo ch ho . Nh v y cho my tnh kh i ng vo ch ho ta s a l i dng c u hnh id:3:initdefault: thnh id:5:initdefault:

Trong Linux c m t s lo i giao di n ho do m t s t ch c vi t ra. Hai t ch c n i ti ng l GNOME (http://www.gnome.org) v KDE (http://www.kde.org) vi t ra cc giao di n ho mang tn trng v i t ch c l GNOME v KDE. Cng tu vo vi c c ci giao di n GNOME hay KDE m khi kh i ng vo ch ho , my tnh c cc giao di n tng ng. Trn hnh trn l giao di n GNOME m khi kh i ng vo ch ho . M t khc, cc giao di n ny lin t c c pht tri n, do

2 9

m i phin b n s c s khc nhau. Trong giao di n ng nh p h a, h th ng hi n th h p tho i cho php ng i dng nh p vo tn ti kho n; sau khi ng i dng nh p tn ti kho n c a mnh, h th ng h i ti p m t kh u. N u c tn ti kho n v m t kh u u chnh xc th ng i dng c php vo h th ng v m t giao di n lm vi c m i s hi n ra nh hnh d i.

2.3. L nh thay

i m t kh u

M t kh u l v n r t quan tr ng trong cc h th ng a ng i dng v m b o tnh b o m t t i a, c n thi t ph i ch t i vi c thay i m t kh u. Th m ch trong tr ng h p h th ng ch c m t ng i s d ng th vi c thay i m t kh u v n l r t c n thi t. M t kh u l m t xu k t i km v i tn ng i dng m b o cho php m t ng i vo lm vi c trong h th ng v i quy n h n c quy nh. Trong qu trnh ng nh p, ng i dng ph i g ng tn v m t kh u, trong g m t kh u l cng vi c b t bu c ph i th c hi n. Tn ng i dng c th c c ng khai song m t kh u th tuy t i ph i c m b o b m t. Vi c ng k tn v m t kh u c a siu ng i dng c ti n hnh trong qu trnh kh i t o h i u hnh Linux. Vi c ng k tn v m t kh u c a m t ng i dng thng th ng c ti n hnh khi m t ng i dng m i ng k tham gia s d ng h th ng. Thng th ng siu ng i dng cung c p tn v m t kh u cho ng i dng m i (c th do ng i dng ngh ) v dng l nh adduser (ho c l nh useradd) ng k tn v m t kh u v i h 3 0

th ng. Sau , ng i dng m i nh t thi t c n thay i m t kh u b o m vi c gi b m t c nhn tuy t i. L nh passwd cho php thay i m t kh u ng v i tn ng nh p ng i dng. C php l nh passwd: passwd [ty-ch n] [tn-ng i-dng] v i cc ty ch n nh sau: -k : thay i m t kh u ng i dng. L nh i h i ph i xc nh n quy n b ng vi c g m t kh u ang dng tr c khi thay i m t kh u. Cho php ng i dng thay i m t kh u c a mnh c l p v i siu ng i dng. -f : t m t kh u m i cho ng i dng song khng c n ti n hnh vi c ki m tra m t kh u ang dng. Ch siu ng i dng m i c quy n s d ng tham s ny. -l : kha m t ti kho n ng i dng. Vi c kha ti kho n th c ch t l vi c d ch b n m ha m t kh u thnh m t xu k t v ngha b t u b i k hi u "!". Ch siu ng i dng m i c quy n s d ng tham s ny. -stdin : vi c nh p m t kh u ng i dng ch c ti n hnh t thi t b vo chu n khng th ti n hnh t ng d n (pipe). N u khng c tham s ny cho php nh p m t kh u c t thi t b vo chu n ho c t ng d n. -u : m kha (tho b kha) m t ti kho n ( i ng u v i tham s -l). Ch siu ng i dng m i c quy n s d ng tham s ny. -d : xa b m t kh u c a ng i dng. Ch siu ng i dng m i c quy n s d ng tham s ny. -S : hi n th thng tin ng n g n v tr ng thi m t kh u c a ng i dng c a ra. Ch siu ng i dng m i c quy n s d ng tham s ny. N u tn-ng i-dng khng c trong l nh th ng m nh l chnh ng i dng g l nh ny. V d khi ng i dng user1 g l nh: # passwd user1 h th ng thng bo:
Changing password for user user1 New UNIX password:

ng i dng nh p m t kh u m i c a mnh vo. Sau khi ng i dng g xong m t kh u m i, h th ng cho ra thng bo:
BAD PASSWORD: it is derived from your password entry Retype new UNIX password:

ng i dng kh ng nh m t l n n a m t kh u v a g dng trn (nh ph i g l i ng h t nh l n tr c). Ch nn qu phn vn v thng bo dng pha trn v h u h t khi g m t kh u m i lun g p nh ng thng bo ki u i lo i nh v y, ch ng h n nh:
BAD PASSWORD: it is too simplistic/systematic

V sau khi chng ta kh ng

nh l i m t kh u m i, h th ng cho ra thng bo:

Passwd: all authentication tokens updated successfully.

cho bi t vi c thay i m t kh u thnh cng v d u nh c shell l i hi n ra. Khi siu ng i dng g l nh:

3 1

# passwd -S root s hi n ra thng bo


Changing password for user root Password set, MD5 encryption

cho bi t thu t ton m ha m t kh u m Linux s d ng l m t thu t ton hm bm c tn l MD5. Lu : C m t l i khuyn i v i ng i dng l nn ch n m t kh u khng qu n gi n qu (nh m trnh ng i khc d d tm ra) ho c khng qu ph c t p (trnh kh khn cho chnh ng i dng khi ph i ghi nh v g m t kh u). c bi t khng nn s d ng h tn, ngy sinh, s i n tho i ... c a b n thn ho c ng i thn lm m t kh u v y l m t trong nh ng tr ng h p m t kh u n gi n nh t. N u thng bo m t kh u qu n gi n c l p i l p l i m t vi l n v khng c thng bo m t kh u m i thnh cng quay v d u nh c shell th nn g l i l nh v ch n m t m t kh u m i ph c t p hn i cht.

2.4. L nh xem, thi t

t ngy, gi hi n t i v xem l ch trn h th ng

2.4.1 L nh xem, thi t t ngy, gi L nh date cho php c th xem ho c thi t t l i ngy gi trn h th ng. C php c a l nh g m hai d ng, d ng xem thng tin v ngy, gi : date [ty-ch n] [+ nh-d ng] v d ng thi t t l i ngy gi cho h th ng: date [ty-ch n] [MMDDhhmm[ [CC[YY] ]-ss]] Cc ty-ch n nh sau: -d, --date=xu-vn-b n : hi n th th i gian d i d ng xu-vn-b n, m khng l y "th i gian hi n t i c a h th ng nh theo ng m nh; xu-vn-b n c t trong hai d u nhy n ho c hai d u nhy kp. -f, --file=file-vn-b n : gi ng nh m t tham s --date nhng ng v i nhi u ngy c n xem: m i dng c a file-vn-b n c vai tr nh m t xu-vn-b n trong tr ng h p tham s --date. -I, --iso-8601[=m-t ] : hi n th ngy gi theo chu n ISO-8601 (v d : 2000-11-8). -I tng ng v i tham s --iso-8601='date' V i --iso-8601: n u m-t l 'date' (ho c khng c) th hi n th ngy, n u m-t l 'hours' hi n th ngy+gi , n u m-t l 'minutes': ngy+gi +pht; n u m-t l 'seconds': ngy + gi + pht + giy. -r, --reference= file : hi n th th i gian s a i file l n g n y nh t. -R, --rfc-822 : hi n th ngy theo RFC-822 (v d : Wed, 8 Nov 2000 09:21:46 -0500). -s, --set=xu-vn-b n : thi t t l i th i gian theo ki u xu-vn-b n. -u, --utc, --universal : hi n th ho c thi t t th i gian theo UTC (v d : Wed Nov 8 14:29:12 UTC 2000). --help : hi n th thng tin tr gip v thot.

3 2

Trong d ng l nh date cho xem thng tin ngy, gi th tham s nh-d ng i u khi n cch hi n th thng tin k t qu . nh-d ng l dy c t m t n nhi u c p g m hai k t , trong m i c p k t u tin l % cn k t th hai m t nh d ng. Do s l ng nh d ng l r t nhi u v v y chng ta ch xem xt m t s nh d ng i n hnh ( xem y cc nh d ng, s d ng l nh man date). D i y l m t s nh d ng i n hnh: %% : Hi n ra chnh k t %. %a : Hi n ra thng tin tn ngy trong tu n vi t t t theo ngn ng b n a. %A : Hi n ra thng tin tn ngy trong tu n vi t y theo ngn ng b n a. %b : Hi n ra thng tin tn thng vi t t t theo ngn ng b n a. %B : Hi n ra thng tin tn thng vi t y theo ngn ng b n a. Trong d ng l nh date cho php thi t t l i ngy gi cho h th ng th tham s [MMDDhhmm[ [CC[YY] [.ss]] m t ngy, gi m i c n thi t t, trong : MM: hai s ch thng, DD: hai s ch ngy trong thng, hh: hai s ch gi trong ngy, mm: hai s ch pht, CC: hai s ch th k , YY: hai s ch nm trong th k . Cc dng ngay d i y trnh by m t s v d s d ng l nh date, m i v d c cho tng ng v i m t c p hai dng, trong dng trn m t l nh c g cn dng d i l thng bo c a Linux. # date
Wed Jan 3 23:58:50 ICT 2001

# date -d='01/01/2000'
Sat Jan 1 00:00:00 ICT 2000

# date -iso-8601='seconds'
2000-12-01T00:36:41-0500

# date -d='01/01/2001'
Mon Jan 1 00:00:00 ICT 2001

# date 010323502001.50
Wed Jan 3 23:50:50 ICT 2001

# date +%a%A
Wed Wednesday

# date +%a%A%b%B
Wed Wednesday Jan January

# date +%D%%%j
01/05/01%005

2.4.2. L nh xem l ch L nh cal cho php xem l ch trn h th ng v i c php nh sau: cal [ty-ch n] [<thng> [<nm>]] 3 3

n u khng c tham s , l ch c a thng hi n th i s c hi n th . Cc tu-ch n l: -m : ch n ngy Th hai l ngy u tin trong tu n (m c nh l ngy Ch nh t). -j : hi n th s ngy trong thng d i d ng s ngy trong nm (v d : ngy 1/11/2000 s c hi n th d i d ng l ngy th 306 trong nm 2000, s ngy b t u c tnh t ngy 1/1). -y : hi n th l ch c a nm hi n th i. V d : # cal 1 2001
January 2001 Su Mo 1 7 8 14 15 21 22 28 29 Tu 2 9 16 23 30 We 3 10 17 24 31 Th 4 11 18 25 Fr 5 12 19 26 Sa 6 13 20 27

Khi nh p dng l nh trn, trn mn hnh s hi n th l ch c a thng 1 nm 2001, m c nh ch n ngy ch nh t l ngy b t u c a tu n. D i y l v d hi n th s ngy trong thng 3 d i d ng s ngy trong nm 2001. # cal -j 3 2001
March 2001 Su Mo 63 70 77 84 64 71 78 85 Tu 65 72 79 86 We 66 73 80 87 Th 60 67 74 81 88 Fr 61 68 75 82 89 Sa 62 69 76 83 90

2.5. Xem thng tin h th ng


L nh uname cho php xem thng tin h th ng v i c php l: uname [ty-ch n] N u khng c tu ch n th hi n tn h i u hnh. L nh c cc ty ch n l: -a, --all : hi n t t c cc thng tin. -m, --machine : ki u ki n trc c a b x l (i386, i486, i586, i686...). -n, --nodename : hi n tn c a my. -r, --release : hi n nhn c a h -s, --sysname : hi n tn h i u hnh. i u hnh.

-p, --processor : hi n ki u b x l c a my ch . V d , n u g l nh # uname -a 3 4

th mn hnh s hi n ra nh sau:
Linux linuxsrv.linuxvn.net 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown

# Thng tin hi n ra c t t c 6 tr ng l: Tn h i u hnh: Linux Tn my: linuxsrv.linuxvn.net Tn nhn c a h i u hnh: 2.2.14-5.0 Ngy s n xu t: #1 Tue Mar 7 21:07:39 EST 2000 Ki u ki n trc b x l: i686 Ki u b x l c a my ch : unknown V d n u g l nh: # uname -spr th mn hnh s hi n ra nh sau:
Linux 2.2.14-5.0 unknown

l tn h i u hnh, tn nhn v ki u b x l c a my ch . Lu : Chng ta lm r thm n i dung lu trong m c 1.3.1 v tham s kha k t h p: Trong v d trn y khi vi t tham s -spr l yu c u th c hi n l nh usame v i ngha k t h p tnh hu ng theo c ba tham s kha -s, -p, -r. Ch r ng, khng th vi t -s -p -r thay cho -spr c. Nh lu m c 1.3.1 trong nhi u l nh c a Linux cho php vi t k t h p cc tham s kha theo cch th c nh trn mi n l cc tham s khng xung kh c v i nhau.

2.6. Thay

i n i dung d u nh c shell

Trong Linux c hai lo i d u nh c: d u nh c c p m t (d u nh c shell) xu t hi n khi nh p l nh v d u nh c c p hai (d u nh c nh p li u) xu t hi n khi l nh c n c d li u c nh p t bn phm v tng ng v i hai bi n nh c tn l PS1 v PS2. PS1 l bi n h th ng tng ng v i d u nh c c p 1: Gi tr c a PS1 chnh l n i dung hi n th c a d u nh c shell. nh n bi t thng tin h th ng hi n t i, m t nhu c u t ra l c n thay i gi tr c a cc bi n h th ng PS1 v PS2. Linux cho php thay i gi tr c a bi n h th ng PS1 b ng l nh gn tr m i cho n. L nh ny c d ng: # PS1='<dy k t >' Nm (5) k t u tin c a l nh gn trn y (PS1=') ph i c vi t lin ti p nhau. Dy k t n m gi a c p hai d u nhy n (c th s d ng c p hai d u kp ") v khng c php ch a d u nhy. Dy k t ny bao g m cc c p k t i u khi n v cc k t khc, cho php c th c d u cch. C p k t i u khi n g m hai k t , k t u tin l d u s xui "\" cn k t th hai nh n m t trong cc tr ng h p li t k trong b ng d i y. B ng d i y gi i thi u m t s c p k t i u khi n c th c s d ng khi mu n thay i d u nh c l nh:

C p k t

i u khi n

ngha

3 5

\! \# \$ \\ \d \h \n \s \t \u \W \w

Hi n th th t c a l nh trong l ch s Hi n th th t c a l nh Hi n th d u -la ($). i v i siu ng i dng (super user), th hi n th d u s hi u (#) Hi n th d u s (\) Hi n th ngy hi n t i Hi n th tn my (hostname) K hi u xu ng dng Hi n th tn h shell Hi n th gi hi n t i Hi n th tn ng i dng Hi n th tn th c s c a th m c hi n th i (v d th m c hi n th i l /mnt/hda1 th tn th c s c a n l /hda1) Hi n th tn y c a th m c hi n th i (v d /mnt/hda1)

V d , hi n th i d u nh c shell c d ng: root[may1 /hda1]# Sau khi g l nh root@may1 /hda1]# PS1='[\h@\u \w : \d]\$' th d u nh c shell c thay i l: [may1@root /mnt/hda1 : Fri Oct 27 ]# ngoi vi c i th t gi a tn ng i dng v my cn cho chng ta bi t thm v ngy h th ng qu n l v tn y c a th m c hi n th i. Linux cung c p cch th c hon ton tng t nh i v i bi n PS1 thay i gi tr bi n h th ng PS2 tng ng v i d u nh c c p hai.

2.7. L nh g i ngn ng tnh ton s h c


Linux cung c p m t ngn ng tnh ton v i chnh xc ty thng qua l nh bc. Khi yu c u l nh ny, ng i dng c cung c p m t ngn ng tnh ton (v cho php l p trnh tnh ton c d ng ngn ng l p trnh C) ho t ng theo thng d ch. Trong ngn ng l p trnh c cung c p (t m th i g i l ngn ng bc), t n t i r t nhi u cng c h tr tnh ton v l p trnh tnh ton: ki u php ton s h c phong ph, php ton so snh, m t s hm chu n, bi n chu n, c u trc i u khi n, cch th c nh ngha hm, cch th c thay i chnh xc, t l i ch thch ... Ch c n s d ng m t ph n nh tc ng c a l nh bc, chng ta c m t "my tnh s b m tay" hi u qu . C php l nh bc: bc [ty-ch n] [file...] v i cc tu ch n sau y: -l, --mathlib : th c hi n php tnh theo chu n th vi n ton h c (v d : 5/5=1.00000000000000000000). -w, --warn : khi th c hi n php tnh khng tun theo chu n POSIX (POSIX l m t chu n trong Linux) th m t c nh bo xu t hi n. 3 6

-s, --standard : th c hi n php tnh chnh xc theo chu n c a ngn ng POSIX bc. -q, --quiet : khng hi n ra l i gi i thi u v ph n m m GNU khi dng bc. Tham s file l tn file ch a chng trnh vi t trn ngn ng bc, khi l nh bc th c hi n s t ng ch y cc file chng trnh ny (N u c nhi u tham s th c ngha s ch y nhi u chng trnh lin ti p nhau). D i y l m t v d s d ng l nh bc d ng n gi n nh t. Khi g l nh t i d u nh c: # bc -l mn hnh xu t hi n l i gi i thi u v GNU khi dng bc v ngn ng bc c kch ho t ph c v ng i dng.
bc 1.05 Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 5^3 125 12+12+78*7-62/4 554.50000000000000000000 a=4 a^a 256 a*78 312 b=45 a*b 180 a/b .08888888888888888888 a%b .00000000000000000040

y * l php nhn, ^ l php tnh lu th a, / l php chia l y thng, % l chia l y ph n d. Lu : Ngn ng l p trnh tnh ton bc l m t ngn ng r t m nh c n i dung h t s c phong ph cho nn trong khun kh c a ti li u ny khng th m t h t cc n i dung c a ngn ng c. Chng ta c n s d ng l nh man bc nh n c thng tin y v l nh bc v ngn ng tnh ton bc. y trnh by s b m t s y u t c b n nh t c a ngn ng (bt l vi t t t c a bi u th c, b l vi t t t c a bi n): Cc php tnh: - bt: l y i; ++ b, --b, b ++, b --: php ton tng, gi m b; cc php ton hai ngi c ng +, tr -, nhn *, chia /, l y ph n d %, ly th a nguyn

3 7

b c ^; gn =; gn sau khi thao tc <thao tc>=; cc php ton so snh <, <=, >, >=, b ng ==, khc != ... Php so snh cho 1 n u ng, cho 0 n u sai. B n bi n chu n l scale s l ng ch s ph n th p phn; last gi tr tnh ton cu i cng; ibase c s h m i v i input v obase l c s h m v i output (ng m nh hai bi n ny c gi tr 10). Cc hm chu n sin s (bt); cosin c (bt); arctg a (bt); lgarit t nhin l (bt); m c s t nhin e (bt); hm Bessel b c nguyn n c a bt l j (n, bt).

3 8

CHNG 3. H TH NG FILE
3.1 T ng quan v h th ng file
3.1.1. M t s khi ni m Ng i dng t ng lm vi c v i h i u hnh DOS/Windows th r t quen bi t v i cc khi ni m: file (t p tin), th m c, th m c hi n th i ... m b o tnh h th ng v thu n ti n cho ng i dng cha t ng lm vi c thnh th o v i m t h i u hnh no khc, chng ny v n gi i thi u v cc khi ni m ny m t cch s b . M t i t ng i n hnh trong cc h i u hnh l file. File l m t t p h p d li u c t ch c c h i u hnh qu n l theo yu c u c a ng i dng. Cch t ch c d li u trong file thu c v ch c a n l ng i t o ra file. File c th l m t vn b n (tr ng h p c bi t l chng trnh ngu n trn C, PASCAL, shell script ...), m t chng trnh ngn ng my, m t t p h p d li u ... H i u hnh t ch c vi c lu tr n i dung file trn cc thi t b nh lu di (ch ng h n a t ) v m b o cc thao tc ln file. Chnh v c h i u hnh m b o cc ch c nng lin quan n file nn ng i dng khng c n bi t file c a mnh lu vng no trn a t , b ng cch no c/ghi ln cc vng c a a t m v n th c hi n c yu c u tm ki m, x l ln cc file. H i u hnh qu n l file theo tn g i c a file (tn file) v m t s thu c tnh lin quan n file. Tr c khi gi i thi u m t s n i dung lin quan n tn file v tn th m c, chng ta gi i thi u s b v khi ni m th m c. lm vi c c v i cc file, h i u hnh khng ch qu n l n i dung file m cn ph i qu n l cc thng tin lin quan n cc file. Th m c (directory) l i t ng c dng ch a thng tin v cc file, hay ni theo m t cch khc, th m c ch a cc file. Cc th m c cng c h i u hnh qu n l trn v t d n ngoi v v v y, theo ngha ny, th m c cng c coi l file song trong m t s tr ng h p phn bi t v i "file" th m c, chng ta dng thu t ng file thng th ng. Khc v i file thng th ng, h i u hnh l i quan tm n n i dung c a th m c. M t s n i dung sau y lin quan n tn file (bao g m c tn th m c): Tn file trong Linux c th di t i 256 k t , bao g m cc ch ci, ch s , d u g ch n i, g ch chn, d u ch m. Tn th m c/file trong Linux c th c nhi u hn m t d u ch m, v d : This_is.a.VERY_long.filename. N u trong tn file c d u ch m "." th xu con c a tn file t d u ch m cu i cng c g i l ph n m r ng c a tn file (ho c file). V d , tn file trn y c ph n m r ng l .filename. Ch r ng khi ni m ph n m r ng y khng mang ngha nh m t s h i u hnh khc (ch ng h n nh MS-DOS). Lu : Chng ta nn lu r ng, khng ph i k t no cng c ngha. N u c hai file ch khc nhau k t cu i cng, th i v i Linux, l hai file c th trng tn. B i l , Linux ch l y 32 hay 64 k t u tin trong tn file m thi (ty theo phin b n Linux), ph n tn file cn l i dnh cho ch c a file, Linux theo di thng tin, nhng th ng khng xem cc k t ng sau k t th 33 hay 65 l quan tr ng i v i n. Xin nh c l i lu v phn bi t ch hoa v ch th ng i v i tn th m c/file, v d hai file FILENAME.tar.gz v filename.tar.gz l hai file khc nhau.

3 9

N u trong tn th m c/file c ch a kho ng tr ng, s ph i t tn th m c/file vo trong c p d u nhy kp s d ng th m c/file . V d , t o th m c c tn l My document ch ng h n, hy nh dng l nh sau: # mkdir "My document" M t s k t sau khng c s d ng trong tn th m c/file: !, *, $, &, # ... Khi s d ng chng trnh mc (Midnight Commander), vi c hi n th tn file s b sung m t k t theo ngha: d u "*" cho file kh thi trong Linux, d u "~" cho file sao lu, d u "." cho file n, d u "@" cho file lin k t... T p h p t t c cc file c trong h i u hnh c g i l h th ng file l m t h th ng th ng nh t. B i chnh t cch th c s d ng th m c, h th ng file c t ch c lgic theo d ng hnh cy: H th ng file c xu t pht t m t th m c g c ( c k hi u l "/") v cho php t o ra th m c con trong m t th m c b t k. Thng th ng, khi kh i t o Linux c ngay h th ng file c a n. Hnh 3.1. cho minh h a m t ph n trong cy lgic c a h th ng file.

ch m t file hay m t th m c, chng ta c n a ra m t ng d n, v d d n xc nh file Xclients trong hnh 3.1. chng ta vi t nh sau:
/etc/X11/xinit/Xclients

ng

ng d n ny cho bi t Xclients n m trong xinit, xinit n m trong X11, X11 /

root

bin

etc

usr

home dev

peng

office52 sh date who X11 src bin user1 user2

tty00 tty01

xinit Xclients Xmodmap Hnh 3.1. M t ph n c u trc lgic d ng cy c a h th ng File

n m trong etc v etc n m trong g c /.

4 0

Tn file th ng l tham s th c s khi g l nh v cng vi c g l nh tr nn r t n ng n i v i ng i dng n u nh trong l nh ph i g m t ng d n di theo d ng trn ( c bi t v i tn g i l ng d n tuy t i). V v y, Linux (cng nh nhi u h i u hnh khc) s d ng khi ni m th m c hi n th i c a m i ng i dng lm vi c trong h th ng. Th m c hi n th i l m t th m c trong h th ng file m hi n th i "ng i dng ang ".

Qua th m c hi n th i, Linux cho php ng i dng ch m t file trong l nh ng n g n hn nhi u. V d , n u th m c hi n th i l th m c xinit th ch file ni, ng i dng ch c n vi t Xclients ho c ./Xclients trong k hi u "." ch th m c hi n th i. ng d n c xc nh qua th m c hi n th i c g i l ng d n tng i. Khi m t ng i dng ng nh p vo h th ng, Linux lun chuy n ng i dng vo th m c ring, v t i th i i m th m c ring l th m c hi n th i c a ng i dng. Th m c ring c a siu ng i dng l /root, th m c ring c a ng i dng c tn l user1 l /home/user1 ... Linux cho php dng l nh cd chuy n sang th m c khc (l y th m c khc lm th m c hi n th i). Hai d u ch m ".." c dng ch th m c ngay trn th m c hi n th i (cha c a th m c hi n th i). Linux cn cho php ghp m t h th ng file trn m t thi t b nh ( a m m, vng a c ng cha c a vo h th ng file) thnh m t th m c con trong h th ng file c a h th ng b ng l nh mount. Cc h th ng file c ghp thu c vo cc ki u khc nhau. Hai m c ti p theo (3.1.2 v 3.1.3.) gi i thi u nh ng n i dung su hn v h th ng file Linux. 3.1.2. S b ki n trc n i t i c a h th ng file Trn a t , h th ng file c coi l dy tu n t cc kh i lgic m i kh i ch a ho c 512B ho c 1024B ho c b i c a 512B l c nh trong m t h th ng file. Trong h th ng file, cc kh i d li u c a ch ha b ng cch nh ch s lin ti p, m i a ch c ch a trong 4 byte (32 bit). C u trc n i t i c a h th ng file bao g m 4 thnh ph n k ti p nhau: Boot block (dng kh i ng h th ng), Siu kh i (Super block), Danh sch inode v Vng d li u. D i y, chng ta xem xt s l c n i dung cc thnh ph n c u trc n i t i m t h th ng file. Siu kh i Siu kh i ch a nhi u thng tin lin quan n tr ng thi c a h th ng file. Trong siu kh i c cc tr ng sau y: Kch th c c a danh sch inode (khi ni m inode s c gi i thch trong m c sau): nh kch c vng khng gian trn H th ng file qu n l cc inode. Kch th c c a h th ng file. Hai kch th c trn y tnh theo n v dung l ng b nh ngoi, M t danh sch ch s cc kh i r i (th ng tr c trn siu kh i) trong h th ng file.

4 1

Ch s cc kh i r i th ng tr c trn siu kh i c dng p ng nhu c u phn ph i m i. Ch r ng, danh sch ch s cc kh i r i c trn siu kh i ch l m t b ph n c a t p t t c cc kh i r i c trn h th ng file. Ch s c a kh i r i ti p theo trong danh sch cc kh i r i. Ch s kh i r i ti p theo dng h tr vi c tm ki m ti p cc kh i r i: b t u tm t kh i c ch s ny tr i. i u c ngha l m i kh i c ch s khng l n hn ch s ny ho c c trong danh sch cc kh i r i th ng tr c ho c c c p pht cho m t file no . Nhi u thao tc t o file m i, xo file, thay i n i dung file v.v. c p nh t cc thng tin ny. M t danh sch cc inode r i (th ng tr c trn siu kh i) trong h th ng file. Danh sch ny ch a ch s cc inode r i c dng phn ph i ngay c cho m t file m i c kh i t o. Thng th ng, danh sch ny ch ch a m t b ph n cc inode r i trn h th ng file. Ch s inode r i ti p theo trong danh sch cc inode r i. Ch s inode r i ti p theo nh v vi c tm ki m ti p thm inode r i: b t u tm t inode c ch s ny tr i. i u c ngha l m i inode c ch s khng l n hn ch s ny ho c c trong danh sch cc inode r i th ng tr c ho c c tng ng v i m t file no . Hai tham s trn y t o thnh c p xc nh c danh sch cc inode r i trn h th ng file cc thao tc t o file m i, xo file c p nh t thng tin ny. Cc tr ng kha (lock) danh sch cc kh i r i v danh sch inode r i: Trong m t s tr ng h p, ch ng h n khi h th ng ang lm vi c th c s v i a t c p nh t cc danh sch ny, h th ng khng cho php c p nh t t i hai danh sch ni trn. C ch d n v vi c siu kh i c bi n i: nh k th i gian siu kh i b nh trong c c p nh t l i vo siu kh i a t v v v y c n c thng tin v vi c siu kh i b nh trong khc v i n i dung b nh ngoi: n u hai b n khng gi ng nhau th c n ph i bi n i chng c ng nh t. C ch d n r ng h th ng file ch c th c (c m ghi): Trong m t s tr ng h p, h th ng ang c p nh t thng tin t b nh ngoi th ch cho php c i v i h th ng file, S l ng t ng c ng cc kh i r i trong h th ng file, S l ng t ng c ng cc inode r i trong h th ng file, Thng tin v thi t b , Kch th c kh i ( n v phn ph i d li u) c a h th ng file. Hi n t i kch th c ph bi n c a kh i l 1KB. Trong th i gian my ho t ng, theo t ng giai o n, nhn s a siu kh i ln a n u n c bi n i ph h p v i d li u trn h th ng file. M t trong khi ni m c t li xu t hi n trong h th ng file l inode. Cc i t ng lin quan n khi ni m ny s c trnh by trong cc m c ti p theo.

4 2

Inode M i khi m t qu trnh kh i t o m t file m i, nhn h th ng s gn cho n m t inode cha s d ng. hi u r hn v inode, chng ta xem xt s l c m i quan h lin quan gi a file d li u v vi c lu tr trn v t d n ngoi i v i Linux. N i dung c a file c ch a trong vng d li u c a h th ng file v c phn chia cc kh i d li u (ch a n i dung file) v hnh nh phn b n i dung file c trong m t inode tng ng. Lin k t n t p h p cc kh i d li u ny l m t inode, ch thng qua inode m i c th lm vi c v i d li u t i cc kh i d li u: Inode ch a d ng thng tin v t p h p cc kh i d li u n i dung file. C th quan ni m r ng, t h p g m inode v t p cc kh i d li u nh v y l m t file v t l: inode c thng tin v file v t l, trong c a ch c a cc kh i nh ch a n i dung c a file v t l. Thu t ng inode l s k t h p c a hai t index v i node v c s d ng ph d ng trong Linux. Cc inode c phn bi t nhau theo ch s c a inode: chnh l s th t c a inode trong danh sch inode trn h th ng file. Thng th ng, h th ng dng 2 bytes lu tr ch s c a inode. V i cch lu tr ch s nh th , khng c nhi u hn 65535 inode trong m t h th ng file. Nh v y, m t file ch c m t inode song m t file l i c m t ho c m t s tn file. Ng i dng tc ng thng qua tn file v tn file l i tham chi u n inode (tn file v ch s inode l hai tr ng c a m t ph n t c a m t th m c). M t inode c th tng ng v i m t ho c nhi u tn file, m i tng ng nh v y c g i l m t lin k t. Inode c lu tr t i vng danh sch cc inode. Trong qu trnh lm vi c, Linux dng m t vng b nh , c g i l b ng inode (trong m t s tr ng h p, n cn c g i t ng minh l b ng sao in-core inode) v i ch c nng tng ng v i vng danh sch cc inode c trong h th ng file, h tr cho qu trnh truy nh p d li u trong h th ng file. N i dung c a m t in-core inode khng ch ch a cc thng tin trong inode tng ng m cn c b sung cc thng tin m i gip cho qu trnh x l inode. Chng ta xem xt c u trc n i t i c a m t inode th y c s trnh by n i t i c a m t file. Inode bao g m cc tr ng thng tin sau y: Ki u file. Trong Linux phn lo i cc ki u file: file thng th ng (regular), th m c, c t k t , c t kh i v ng d n FIFO (pipes). Linux quy nh tr ng ki u file c gi tr 0 tng ng l inode cha c s d ng. Quy n truy nh p file. Trong Linux, file l m t ti nguyn chung c a h th ng v v y quy n truy nh p file c c bi t quan tm trnh nh ng tr ng h p truy nh p khng h p l . i v i m t inode, c 3 m c quy n truy nh p lin quan n cc i t ng: m c ch c a file ( i t ng ny c k hi u l u: t ch user), m c nhm ng i dng c a ch nhn c a file ( i t ng ny c k hi u l g: t ch group), m c ng i dng khc ( i t ng ny c k hi u l a: t ch all). Quy n truy nh p l c, ghi, th c hi n ho c m t t h p no t nhm g m 3 quy n trn. Ch r ng, quy n th c hi n i v i m t th m c tng ng v i vi c cho php tm m t tn file c trong th m c . S l ng lin k t i v i inode: y chnh l s l ng cc tn file trn cc th m c c lin k t v i inode ny, 4 3

nh danh ch nhn c a inode, nh danh nhm ch nhn: xc nh tn nhm ng i dng m ch file l m t thnh vin c a nhm ny, di c a file tnh theo byte, Th i gian truy nh p file: th i gian file c s a i mu n nh t, th i gian file c truy nh p mu n nh t, th i gian file c kh i t o, B ng a ch ch a cc a ch kh i nh ch a n i dung file. B ng ny c 13 ph n t a ch , trong c 10 ph n t tr c ti p, 1 ph n t gin ti p b c 1, 1 ph n t gin ti p b c 2 v m t ph n t gin ti p b c 3 (chi ti t c trong ph n sau). N i dung c a file thay i khi c thao tc ghi ln n; n i dung c a m t inode thay i khi n i dung c a file thay i ho c thay i ch ho c thay i quy n ho c thay i s lin k t. V d v n i dung m t inode nh sau: type regular perms rwxr-xr-x links 2 owner 41CT group 41CNTT size 5703 bytes accessed Sep 14 1999 7:30 AM modified Sep 10 1999 1:30 PM inode Aug 1 1995 10:15 AM Cc ph n t a ch d li u B n sao in-core inode cn b sung thm tr ng tr ng thi c a in-core inode. Tr ng tr ng thi c a in-core inode c cc thng tin sau: inode b kho, m t qu trnh ang ch i khi inode tho kha, in-core inode khc v i inode do s thay i d li u trong inode, in-core inode khc v i inode do s thay i d li u trong file, s l ng cc tn file n i v i file ang c m , s hi u thi t b lgic c a h th ng file ch a file ni trn ch s inode: dng lin k t v i inode trn a, cc mc n i t i cc in-core inode khc. Trong b nh trong, cc in-core inode c lin k t theo m t hng bm v m t danh sch t do. Trong danh sch hng bm cc in-core inode ha h p theo s hi u thi t b lgic v s hi u inode. Trong qu trnh h th ng lm vi c, n y sinh khi ni m inode tch c c n u nh c m t qu trnh ang lm vi c v i inode (nh m file). M t inode thu c vo danh sch cc inode r i khi khng c file v t l no tng ng v i inode . 4 4

B ng ch a a ch kh i d li u c a File trong UNIX B ng ch a a ch kh i d li u c a file g m 13 ph n t v i 10 ph n t tr c ti p v 3 ph n t gin ti p: M i ph n t c di 4 bytes, ch a m t s hi u c a m t kh i nh trn a. M i ph n t tr c ti p tr t i 1 kh i d li u th c s ch a n i dung file. Ph n t gin ti p b c 1 (single indirect) tr t i 1 kh i nh ngoi. Khc v i ph n t tr c ti p, kh i nh ngoi ny khng dng ch a d li u c a file m l i ch a danh sch ch s cc kh i nh ngoi v chnh cc kh i nh ngoi ny m i th c s ch a n i dung file. Nh v y, n u kh i c di 1KB v m t ch s kh i ngoi c di 4 bytes th a ch gin ti p cho php nh v khng gian trn a lu tr d li u c a file t i 256KB (Khng gian b nh ngoi trong vng d li u ph i dng t i l 257KB). Tng t i v i cc ph n t gin ti p m c cao hn. C ch qu n l a ch file nh trn cho th y c s phn bi t gi a file nh v i file l n. File nh c di b hn v theo cch t ch c nh trn, phng php truy nh p s cho php t c nhanh hn, n gi n hn do ch ph i lm vi c v i cc ph n t tr c ti p. Khi x l, thu t ton c File ti n hnh theo cc cch khc nhau i v i cc ph n t tr c ti p v gin ti p. C ch t ch c lu tr n i dung Fle nh trnh by cho php di file c th ln t i 24+216 + 28+10) kh i. (2 Vng d li u bao g m cc kh i d li u, m i kh i d li u c nh ch s phn bi t. Kh i trn vng d li u c dng ch a n i dung cc file, n i dung cc th m c v n i dung cc kh i nh v a ch c a cc file. Ch r ng, ch s c a kh i d li u c ch a trong 32 bit v thng tin ny xc nh dung l ng l n nh t c a h th ng file. 3.1.3. M t s thu t ton lm vi c v i inode H th ng l i g i h th ng file Khi lm vi c v i file th ng thng qua l i g i h th ng. M t s l i g i h th ng th ng g p nh m file open, ng file close, c n i dung file read, ghi n i dung file write v.v. B ng d i y th ng k cc l i g i h th ng lm vi c v i h th ng file v phn lo i theo ch c nng c a m i l i g i h th ng (m t l i g i c th c nh c t i m t s l n): Th i i m s d ng file open creat dup pipe close S d ng namei open creat chdir chroot chown chmod gn inode thu c Vo-ra C u trc h Qu n tnh file file th ng file l cy chown read mont chdir chmod write umount chown stat cseek

iget getblk

stat creat link mknod unlink link mknod unlink mount umount Thu t ton h th ng file m c th p Namei iput Ialloc ifree alloc Thu t ton nh v buffer brelse Bread breada

free

bmap bwrite

Hnh 3.2. T ng th v l i g i h th ng File

4 5

Chng ta xem xt m t s thu t ton lm vi c v i inode. Thu t ton truy nh p t i inode (iget) Nhi u tnh hu ng i h i thu t ton iget, ch ng h n nh, m t qu trnh m m t file m i ho c t o m t file m i v.v.. Thu t ton iget c p pht m t b n in-core inode i v i m t s hi u inode. Tuy nhin, trong tr ng h p cha c b n sao in-core inode th d c n i dung c a n c n ph i c c n i dung c a inode v c n nh v kh i d li u ch a inode cho. Cng th c lin quan n kh i a t ch a inode c th c vo b nh trong nh sau: Ch s kh i ch a inode = (s hi u inode - 1) / (s l ng inode trong m t kh i nh ) + ch s kh i nh u tin ch a danh sch inode trn a. Sau khi c kh i a ch a inode vo b nh trong, xc nh chnh xc v tr c a inode, chng ta c cng th c sau: Byte v tr u tin = ((s hi u inode - 1) mod (s l ng inode trong m t kh i nh ))* di m t inode V d , n u nh m i inode a chi m 64 bytes, m i kh i a ch a 8 inode a th inode s 8 s b t u t byte th 448 trn kh i a u tin trong vng danh sch cc inode. r ng, khi lm vi c v i m t h th ng file th super block c a n lun c m t trong b nh trong h th ng c nh ng thng tin lm vi c. Ch r ng, trong super block c m t danh sch cc inode r i (trn n) v m t danh sch cc kh i r i. Thu t ton iget nh n m t inode cho n tch c c v i u ty thu c vo m t s tnh hu ng sau y: - N u inode khng t n t i trong vng m m l i khng thu c danh sch cc inode r i trn super block th h th ng ph i thng bo m t l i c g p. L i ny x y ra do yu c u m t inode khng cn vng m lm vi c v i file n a (tng ng v i tr ng h p trong MS-DOS thng bo: too many files opened), - inode c trong vng m cc inode trn h th ng file ( c in-core inode). Trong tr ng h p ny x l theo hai b c: + inode tng ng b kha b i m t qu trnh khc: lc ph i i cho n khi qu trnh tr c y khng kha inode n a. Sau khi c tho kha inode c th tr thnh tch c c ho c r i, + N u inode danh sch cc inode r i th lo i b n kh i danh sch ny b ng cch t inode sang tch c c. - inode khng t n t i trn vng m tuy nhin danh sch cc inode r i khc r ng. Khi danh sch cc inode ny khc r ng, c ngha l c nh ng inode khng c gi tr : lo i b n v t inode m i vo thay th . Thu t ton iput lo i b inode Thu t ton iput c ch c nng i ng u v i thu t ton iget: c n tho b t s xu t hi n c a m t inode, ch ng h n khi chng trnh th c hi n thao tc ng file. Khc v i tr ng h p thu t ton iget, thu t ton iput khng n y sinh tnh hu ng sai st. Trong thu t ton ny, khi m t qu trnh khng lm vi c v i m t file c lin k t v i m t inode n a th m t s tnh hu ng x y ra: - H th ng gi m s l ng file tch c c i 1, - N u s l ng file tch c c l 0 th:

4 6

+ N u l l nh xo file th tr c h th ng th c hi n thao tc gi m s lin k t v i inode i 1 v v v y c th s l ng lin k t tr thnh 0, c ngha l s t n t i c a file v t l khng cn. Khi , chng ta th c hi n vi c xo th c s file ni trn b ng m t s thao tc: gi i phng cc kh i d li u, t ki u file c a inode l 0 v gi i phng inode. + khi s lin k t >0 thi c n c p nh t s thay i c a inode ln a t . Trong tr ng h p s l ng file tch c c v n dng th khng th c hi n thao tc g. Ch l trong thu t ton ny c s d ng thu t ton ifree.

Thu t ton ialloc gn inode cho m t file m i Khi m t file m i c xu t hi n, ch ng h n kh i t o file creat, ph i cung c p m t inode cho file v thu t ton ialloc p ng i h i trn. Ho t ng c a thu t ton ialloc c gi i thch nh sau: - ki m tra danh sch inode r i trn super block, x y ra m t trong hai tr ng h p ho c danh sch r ng ho c khng r ng, - N u danh sch khng r ng th l y m t inode ti p theo cho file, kh i t o cc gi tr ban u c a inode v gi m s inode r i trn super trn super block. - N u danh sch cc inode r i trn super block l r ng: tm ki m trn h th ng file nh ng inode r i t i vo danh sch cc inode r i trn super block. N u danh sch y ho c khng tm th y c n a th gn m t inode cho file. N u danh sch inode r i trn super block l r ng v khng tm th y inode r i trn a th s c thng bo l i. Trn danh sch cc inode r i, nhn lu gi m t inode c g i l inode nh , chnh l inode cu i cng c tm th y sau ny thu n l i cho tm ki m. Thu t ton ifree t i m t inode r i trn a vo danh sch cc inode r i trn super block Thu t ton namei tm ch s m t inode theo tn file Thu t ton namei l m t thu t ton ph d ng, nhi u thu t ton lm vi c v i file ph i s d ng namei. T tn m t ng d n file/th m c, thu t ton namei cho inode tng ng. Thu t ton c p pht d li u trn a Khi nhn mu n c p pht m t kh i d li u, n s c p pht kh i r i ti p theo c ghi nh n trong super block. Khi m t kh i d li u c c p cho m t file th n ch c c p pht l i khi n tr thnh r i. N u khng cn kh i r ng no trn h th ng file m l i c nhu c u cung c p kh i th nhn s thng bo l i. 3.1.4. H tr nhi u h th ng File Cc phin b n u tin c a Linux ch h tr m t h th ng file duy nh t l h th ng file minix. Sau , v i s m r ng nhn, c ng ng Linux thm vo n r t nhi u ki u h th ng file khc nhau v Linux tr thnh m t h i u hnh h tr r t nhi u h th ng file. D i y l m t s h th ng file thng d ng trong cc h i u hnh khc nhau c Linux h tr .

4 7

H th ng file ADFS: ADFS vi t t t c a Acorn Disc Filing System l h th ng file chu n trn h i u hnh RiscOS. V i s h tr ny, Linux c th truy c p vo cc phn vng a nh d ng theo h th ng file ADFS. H th ng file AFFS: AFFS (The Amiga Fast File System) l m t h th ng file ph bi n c a h i u hnh AmigaOS phin b n 1.3 ch y trn cc my Amiga. H th ng file CODA: CODA l m t h th ng file m ng cho php ng i dng c th k t gn cc h th ng file t xa v truy c p chng nh cc h th ng file c c b (local). H th ng file DEVPTS: H th ng file cho Unix98 PTYs. H th ng file EFS: y l m t d ng h th ng file s d ng cho CDROM. H th ng file EXT2: H th ng file EXT2 (The second extended filesystem) l h th ng c dng ch y u trn cc phin b n c a h i u hnh Linux. Chng ta s tr l i ngin c u h th ng file ny trong cc ph n sau. H th ng file HFS: y l h th ng file ch y trn cc my Apple Macintosh. H th ng file HPFS: HPFS l h th ng file c s d ng trong h Linux h tr h th ng file ny m c ch c (read only). i u hnh OS/2.

H th ng file ISOFS: y l h th ng file c s d ng cho cc a CD. H th ng thng d ng nh t cho cc a CD hi n nay l ISO 9660. V i s h tr ny, h th ng Linux c th truy c p d li u trn cc a CD. H th ng file MINIX: MINIX l h th ng file u tin m Linux h tr . H th ng file ny c s d ng trong h i u hnh Minix v m t s h th ng Linux c. H th ng file MSDOS: V i s h tr ny, h th ng Linux c th truy c p c cc phn vng c a h i u hnh MSDOS. Linux cng c th s d ng ki u MSDOS truy c p cc phn vng c a Window 95/98 tuy nhin khi , cc u i m c a h i u hnh Window s khng cn gi tr v d nh tn file ch t i a 13 k t (k c m r ng). H th ng file NFS: NFS (Network File System) l m t h th ng file trn m ng h tr vi c truy c p d li u t xa gi ng nh h th ng file CODA. V i NFS, cc my ch y Linux c th chia s cc phn vng a trn m ng s d ng nh l cc phn vng c c b c a chnh my mnh. H th ng file NTFS: V i s h tr ny, h th ng Linux c th truy c p vo cc phn vng c a h i u hnh Microsoft Window NT. H th ng file PROC: y l m t h th ng file c bi t c Linux h tr . H th ng file PROC khng chi m m t phn vng no c a h th ng v cng khng qu n l cc d li u lu tr trn a. PROC hi n th n i dung c a chnh nhn h th ng. Cc file trong h th ng file PROC lu tr cc thng tin v tr ng thi hi n hnh c a nhn. Thng tin v m i m t ti n trnh ang th c hi n trong h th ng c lu trong m t th m c mang tn ng v i ch s process ID c a ti n trnh . Ng i dng c th s d ng h th ng file PROC l y cc thng tin v nhn cng nh s a i m t s gi tr c a nhn thng qua s a i n i dung c a cc file trong h th ng file ny. Tuy nhin, vi c s a i tr c ti p nh trn tng i nguy hi m, d gy v h th ng. H th ng file QNX4: y l h th ng file c s d ng trong h i u hnh QNX 4. 4 8

H th ng file ROMFS: y l cc h th ng file ch c (read only) c s d ng ch y u cho vi c kh i t o a o (ramdisk) trong qu trnh kh i ng a ci t. H th ng file SMB: SMB (Server Mesage Block) l m t giao th c c a Windows dng chia s file gi a cc h i u hnh Windows 95/98, Windows NT v OS/2 Lan Manager. V i s h tr SMB, h i u hnh Linux c th chia s cng nh truy c p cc file n m trn cc phn vng c a m t my ch y cc h i u hnh k trn. Ni tm l i, SMB cng l m t d ng h tr h th ng file m ng gip h th ng c th chia s v i cc h th ng s d ng chung giao th c SMB. H th ng file UMSDOS: H th ng file UMSDOS (Unix-like MSDOS) l h th ng file c m r ng t h th ng file MSDOS theo nh h ng Unix. H th ng file ny c m t s u i m so v i MSDOS nh l h tr tn file di, h tr vi c phn quy n, h tr cc lin k t (link), h tr cc file c bi t (device, pipe ...) v... H th ng file ny c th c s d ng lm phn vng g c c a h th ng Linux. H th ng file VFAT: VFAT chnh l h th ng file m r ng c a h th ng FAT. H th ng file ny c s d ng trong cc h i u hnh Windows 95/98. Nh v y, ngoi kh nng h tr nhi u lo i thi t b , Linux cn c kh nng h tr nhi u ki u h th ng file. B ng cch h tr nhi u ki u h th ng file, Linux c th truy c p v x l cc file c a nhi u h i u hnh khc nhau. M c d c kh nng truy c p nhi u h th ng file khc nhau, h th ng file c a Linux v n ph i m b o cung c p cho ng i dng m t giao di n nh t qun i v i cc file, b o v cc file trn cc h th ng khc nhau, t i u cc thao tc truy c p vo thi t b ... th c hi n c i u ny, Linux s d ng m t h th ng file c bi t g i l h th ng file o VFS (Virtual File System).

4 9

H th ng file o VFS c thi t k cung c p m t giao di n th ng nh t v cc file c lu tr trn cc thi t b . Hnh 3.3 m t m i quan h gi a VFS v i cc h th ng file th c v

Programatic file system interface Inode cache System call interface Directory cache

Virtual File System

Ext2

Minix

Msdos

Vfat

Buffer cache

Device driver

Physical hardware Hnh 3.3. H th ng file o VFS

cc thi t b lu tr . VFS c trch nhi m cung c p cho chng trnh ng i dng m t giao di n nh t qun v h th ng file thng qua cc l nh g i h th ng (system call). M i khi c m t yu c u truy c p file, VFS s d a vo cc h th ng file th c tm ki m file yu c u trn cc thi t b v t l. V i m i file tm c, n th c hi n thao tc m file v cho tng ng file v i m t c u trc d li u g i l i-node. VFS cung c p r t nhi u l nh g i thao tc v i h th ng file nhng ch y u thu c vo cc lo i sau: Cc thao tc lin quan t i h th ng file. Cc thao tc lin quan t i i-node. Cc thao tc v i file ang m . Cc thao tc v i vng m d li u.

3.1.5. Lin k t t ng trng (l nh ln) Trong Linux c hai ki u lin k t l lin k t t ng trng (lin k t m m) v lin k t c ng. 5 0

"Lin k t c ng" l m t cch g i khc i v i m t file ang t n t i (khng c s phn bi t gi a file g c v file lin k t). Theo cch ni k thu t, chng cng chia s m t inode v inode ny ch a ng t t c cc thng tin v file. Khng th t o m t lin k t c ng t i m t th m c. "Lin k t t ng trng" l m t ki u file c bi t, trong , m t file lin k t th c s tham chi u theo tn n m t file khc. C th hi u ki u file ny nh l m t con tr ch d n t i m t file ho c m t th m c, v c s d ng thay th cho file ho c th m c c tr t i. H u h t cc thao tc (nh m , c, ghi ...) c th c hi n trn cc file lin k t, sau , nhn h th ng s t ng "tham chi u" v th c hi n trn file ch c a lin k t. Tuy nhin, c m t s cc thao tc nh xa file, file lin k t s b xa b ch khng ph i file ch c a n. t o m t lin k t t ng trng, hy s d ng l nh ln v i c php nh sau: ln [ty-ch n] < ch> [tn-n i] L nh ny s t o m t lin k t n th m c/file ch v i tn file lin k t l tn-n i. N u tn-n i khng c, m t lin k t v i tn file lin k t gi ng nh tn file ch s c t o ra trong th m c hi n th i. Cc tu ch n c a l nh ln: -b, --backup[=CONTROL] : t o lin k t quay tr l i cho m i file ch ang t n t i. -f, --force : xa b cc file ch ang t n t i. -d, -F, --directory : t o lin k t c ng n cc th m c (ty ch n ny ch dnh cho ng i dng c quy n qu n tr h th ng). M t s phin b n khng c ty ch n ny. -n, --no-dereference : m t file bnh th ng c xem l ch lin k t t m t th m c. -i, interactive : v n t o lin k t d file ch b xa b . -s, --symbolic : t o cc lin k t t ng trng. --target-directory=<tn-th-m c> : xc nh th m c tn-th-m c l th m c c ch a cc lin k t. -v, --verbose : hi n th tn cc file tr c khi t o lin k t. --help : hi n th trang tr gip v thot. V d , mu n t o lin k t n file /usr/doc/g77/DOC v i tn file lin k t l g77manual.txt, th g l nh nh sau: # ln -s /usr/doc/g77/DOC g77manual.txt Khi ch y chng trnh mc, cc file lin k t c tn b t u b i d u " ", v khi v t sng di chuy n n file lin k t th tn file c lin k t n s hi n th bn d i.

3.2 Quy n truy nh p th m c v file


3.2.1 Quy n truy nh p M i file v th m c trong Linux u c m t ch s h u v m t nhm s h u, cng nh m t t p h p cc quy n truy nh p. Cho php thay i cc quy n truy nh p v quy n s h u file v th m c nh m cung c p truy nh p nhi u hn hay t hn. Thng tin v m t file c d ng sau ( c hi n ra theo l nh hi n danh sch file ls -l):

5 1

drwxr-xr-x

12 root root

4096

Oct 23 2000 LinuxVN.com

T ph p quy n truy nh p

S lin k t Ng i n file ch file (th m c)

Nhm ch file

Kch th c file (byte)

Ngy gi t o file

Tn file

Trong , dy 10 k t u tin m t ki u file v quy n truy nh p i v i t p tin . Theo m c nh, ng i dng t o m t file chnh l ng i ch (s h u) c a file v l ng i c quy n s h u n. Ng i ch c a file c c quy n thay i quy n truy nh p hay quy n s h u i v i file . T t nhin, m t khi chuy n quy n s h u c a mnh cho ng i dng khc th ng i ch c khng c php chuy n quy n s h u v quy n truy nh p c n a. T p h p m t chu i c 10 k t gi i thi u trn y c chia ra lm 4 ph n: ki u file, cc quy n truy nh p n file c a ch s h u, c a nhm s h u v ng i dng khc. C m t s ki u file trong Linux. K t u tin trong t p h p 10 k t m t ki u file v quy n truy nh p s cho bi t file thu c ki u no (ch ci c g i l ch ci bi u di n). B ng d i y s li t k cc ki u file trong Linux: Ch ci bi u di n d b c l p s Ki u file Th m c (directory) File ki u kh i (block-type special file) File ki u k t (character-type special file) Lin k t t ng trng (symbolic link) File ng ng (pipe) Socket File bnh th ng (regular file)

Chn k t ti p theo trong chu i l quy n truy nh p c chia ra lm 3 nhm tng ng v i quy n truy nh p c a ng i s h u, nhm s h u v ng i dng khc. V d , 10 k t u tin trong dng v d ngay tr c y s c phn tch thnh: hi u c chnh xc quy n truy nh p c ngha nh th no i v i h th ng my tnh, d rwx r-x r-x ph i nh r ng Quy n c a Quy n c a Quy n c a Linux Ki u file: th m c ng i ch nhm ch ng i dng khc xem m i th u l file. N u ci t m t ng d ng, n cng s c xem nh m i chng trnh khc, tr m t i u: h th ng nh n bi t r ng m t ng d ng l m t chng trnh kh thi, t c l n c th ch y c. M t b c th g i cho m l m t d ng file vn b n bnh th ng, nhng

5 2

n u thng bo cho h th ng bi t l m t chng trnh kh thi, h th ng s c ch y chng trnh (v t t nhin l l i). C ba lo i quy n truy nh p chnh i v i th m c/file, l: c (read - r), ghi (write w) v th c hi n (execute - x). Quy n c cho php ng i dng c th xem n i dung c a file v i r t nhi u chng trnh khc nhau, nhng h s khng th thay i, s a ch a ho c xa b t k thng tin no trong . Tuy nhin, h c th sao chp file thnh file c a h v s a ch a file b n sao. Quy n ghi l quy n truy nh p ti p theo. Ng i s d ng v i quy n ghi khi truy nh p vo file c th thm thng tin vo file. N u c quy n ghi v quy n c i v i m t file, c th so n th o l i file - quy n c cho php xem n i dung, v quy n ghi cho php thay i n i dung file. N u ch c quy n ghi, s thm c thng tin vo file, nhng l i khng th xem c n i dung c a file. Lo i quy n truy nh p th ba l quy n th c hi n, quy n ny cho php ng i dng c th ch y c file, n u l m t chng trnh kh thi. Quy n th c hi n c l p v i cc quy n truy nh p khc, v th hon ton c th c m t chng trnh v i quy n c v quy n th c hi n, nhng khng c quy n ghi. Cng c tr ng h p m t chng trnh ch c quy n th c hi n, c ngha l ng i dng c th ch y ng d ng, nhng h khng th xem c cch n lm vi c hay sao chp n. B ng d i y gi i thi u cch k hi u c a cc quy n truy nh p: Quy n truy nh p --r-r-x rwrwx ngha Khng cho php m t quy n truy nh p no Ch c quy n c Quy n c v th c hi n (cho chng trnh v shell script) Quy n c v ghi Cho php t t c cc quy n truy nh p (cho chng trnh)

Tuy nhin, i v i th m c th ch c ba lo i k hi u c a cc quy n truy nh p l: ---, rx v rwx, v n i dung c a th m c l danh sch c a cc file v cc th m c con c bn trong th m c . Quy n c m t th m c l c xem n i dung c a th m c v quy n th c hi n i v i m t th m c l quy n tm c file v th m c con c trong th m c. Nh v y, v i v d ang c xem xt, chng ta nh n c y l m t th m c v quy n truy nh p n c gi i thch nh sau: d rwx r-x r-x Ki u file: th m c Quy n c a ng i ch : c, ghi, th c hi n Quy n c a nhm ch : c, th c hi n (khng ghi) Quy n ng i dng khc: c, th c hi n (khng ghi)

Gi i thch: S h n ch tr ng h p v quy n truy nh p th m c c gi i thch theo cc l p lu n nh sau:

5 3

Hy hnh dung, gi s ch c quy n c trn th m c, khi s xem c c nh ng file hay th m c no trong th m c nhng l i khng th xem c th n i dung c a m t file hay th m c c trn th m c v khng tm c n. Ho c gi s c quy n th c hi n - quy n ny s cho php tm c file c trn th m c - nhng l i khng c quy n c i v i m t th m c, v y th lm th no bi t c trong th m c c nh ng file no. 3.2.2. Cc l nh c b n a. Thay i quy n s h u file v i l nh chown thay i quy n s h u i v i m t file, hy s d ng l nh chown v i c php nh sau: chown [ty-chn] [ch][.nhm] <file ...> L nh ny cho php thay ch s h u file. N u ch c tham s v ch , th ng i dng ch s c quy n s h u file v nhm s h u khng thay i. N u theo sau tn ng i ch l d u "." v tn c a m t nhm th nhm s nhm s h u file. N u ch c d u "." v nhm m khng c tn ng i ch th ch c quy n s h u nhm c a file thay i, lc ny, l nh chown c tc d ng gi ng nh l nh chgrp (l nh chgrp c trnh by d i y). Cc ty ch n c a l nh chown: -c, --changes : hi n th dng thng bo ch v i cc file m l nh lm thay i s h u (s thng bo hi n ra c th t hn tr ng h p -v, -verbosr). -f, --silent, --quiet : b qua h u h t cc thng bo l i. -R, --recursive : th c hi n i quy n s h u i v i th m c v file theo quy. -v, --verbose : hi n th dng thng bo v i m i file lin quan m chown tc ng t i (c ho c khng thay i s h u). --help : a ra trang tr gip v thot. V d , th m c LinuxVN.com c thng tin v cc quy n truy nh p nh sau:
drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com

Ng l ch s # Khi

i s h u hi n t i th m c LinuxVN.com l ng i dng thu. ng i dng lan h u th m c trn, hy g l nh: chown lan LinuxVN.com , n u dng l nh ls th thng tin v th m c LinuxVN.com s c d ng:

drwxr-xr-x 12 lan root 4096 Oct 23 2000 LinuxVN.com

v i ng i s h u th m c by gi l ng i dng lan. Khi chuy n quy n s h u file cho m t ng i khc, ng i ch c m t quy n s h u file . b. Thay i quy n s h u nhm v i l nh chgrp Cc file (v ng i dng) cn thu c vo cc nhm, y l phng th c truy nh p file thu n ti n cho nhi u ng i dng nhng khng ph i t t c ng i dng trn h th ng. Khi ng nh p, m c nh s l thnh vin c a m t nhm c thi t l p khi siu ng i dng root t o ti kho n ng i dng. Cho php m t ng i dng thu c nhi u nhm khc nhau, nhng m i l n ng nh p ch l thnh vin c a m t nhm. 5 4

thay i quy n s h u nhm i v i m t ho c nhi u file, hy s d ng l nh chgrp v i c php nh sau: chgrp [ty-ch n] {nhm|--reference=nhmR} <file...> L nh ny cho php thay thu c tnh nhm s h u c a file theo tn nhm c ch ra tr c ti p theo tham s nhm ho c gin ti p qua thu c tnh nhm c a file c tn l nhmR. Cc ty ch n c a l nh l (m t s tng t nh l nh chown): -c, --changes : hi n th dng thng bo ch v i cc file m l nh lm thay i s h u (s thng bo hi n ra c th t hn tr ng h p -v, -verbosr). -f, --silent, --quiet : b qua h u h t cc thng bo l i. -R, --recursive : th c hi n i quy n s h u i v i th m c v file theo quy. -v, --verbose : hi n th dng thng bo v i m i file lin quan m chgrp tc ng t i (c ho c khng thay i s h u). --help : hi n th trang tr gip v thot Tham s --reference=nhmR cho th y cch gin ti p thay nhm ch c a file theo nhm ch c a m t file khc (tn l nhmR) l cch th c c a chu ng hn. Tham s ny l xung kh c v i tham s nhm c a l nh. c. Thay i quy n truy c p file v i l nh chmod C php l nh chmod c ba d ng: chmod [ty-ch n] <mod [,mod]...> <file...> chmod [ty-ch n] <mod-h -8> <file...> chmod [ty-ch n] --reference=nhmR <file...> L nh chmod cho php xc l p quy n truy nh p theo ki u (mode) trn file. D ng u tin l d ng xc l p tng i, d ng th hai l d ng xc l p tuy t i v d ng cu i cng l d ng gin ti p ch d n theo quy n truy nh p c a file nhmR. Cc ty ch n c a l nh chmod c li t k nh d i y v c ngha tng t cc tu ch n tng ng c a cc l nh chown, chgrp: -c, --changes -f, --silent, --quiet -v, --verbose -R, --recursive --help v tham s --reference=RFILE cng ngha gin ti p nh trong l nh chgrp. Gi i thch v hai cch xc l p quy n truy nh p file trong l nh chmod nh sau: xc l p tuy t i (dng h th ng m s vi t theo h c s 8 bi u di n cho cc quy n truy nh p) v xc l p tng i (dng cc ch ci bi u di n quy n truy nh p). Cch xc l p tng i

5 5

Cch xc l p tng i l d nh theo ngha c a n i dung cc mod v ch nh ng thay i th c s m i c bi u di n trong l nh. Ba h p sau y s gi i thch cc ch ci bi u di n mod theo cch xc l p tng i. Quy n truy c p
u=user (ng i s h u) g=group (nhm s h u) o=other (ng i khc) a=all (t t c ng i dng)

Thao tc thay
+ (thm quy n) - (g b quy n) = (xc nh n quy n)

Ki u truy c p
r=read (quy n c)

w=write (quy n ghi) x=execute (quy n th c hi n)

C th k t h p cc m c t h p th nh t v h p th ba v i m t m c t h p th hai t o ra m t mod. V d , n u mu n thm quy n ghi i v i file test cho t t c ng i dng trong nhm s h u, hy ch n g cho nhm s h u, + cho thm quy n truy nh p, v w cho quy n ghi. Lc l nh chmod s c d ng sau: chmod g+w test Cch xc l p tng i trong l nh chmod g n gi ng nh m t menu c nhi u m c ch n khc nhau, cho php k t h p c c s l a ch n theo yu c u. N u quy t nh g b quy n c v th c hi n trn file test cho nh ng ng i khng cng nhm, hy ch n o cho ng i dng khc, g b quy n truy nh p, v r,x cho quy n c v th c hi n. L nh chmod s l: chmod o-rx test Cch xc l p tuy t i i v i ng i dng hi u s b v bi u di n s trong h c s 8 th cch xc l p tuy t i l i c a chu ng hn. Ph n 3.2.1. cho bi t bi u di n quy n truy nh p file thng qua dy g m 9 v tr d i d ng rwxrwxrwx, trong t ng c m 3 v tr theo th t tng ng v i: ch s h u, nhm s h u v ng i dng khc. Nh v y thu c tnh quy n truy nh p c a m t file c th bi u di n thnh 9 bt nh phn trong bt c gi tr 1 th quy n c xc nh, ng c l i th quy n b tho b . Nh v y, ch s h u tng ng v i 3 bt u tin, nhm s h u tng ng v i 3 bt gi a, ng i dng khc tng ng v i 3 bt cu i. M i c m 3 bt nh v y cho m t ch s h 8 (nh n gi tr t 0 n 7) v thu c tnh quy n truy nh p tng ng v i 3 ch s h 8. V d , c p 3 s h 8 l 755 tng ng v i dng 9 bt 111101101 v i 111 cho ch s h u, 101 cho nhm s h u, 101 cho ng i dng khc. V d l nh: chmod 753 memo1 t thu c tnh quy n truy nh p i v i file memo1 l rwxr-xr-x. h 8 p d ng cch tnh nh sau: d xc l p 3 ch s

5 6

Quy n Ch c Ch ghi Ch th c hi n Khng c quy n no

Ch s h 8 4 2 1 0 Ch Ch

Quy n c v ghi c v th c hi n

Ch s h 8 6 5 3 7

Ch ghi v th c hi n c, ghi v th c hi n

d. ng nh p vo m t nhm ng i dng m i v i l nh newgrp Linux cho php m t ng i dng c th l thnh vin c a m t ho c nhi u nhm ng i dng khc nhau, trong c m t nhm c g i l nhm kh i ng. i u ny c m b o khi th c hi n l nh adduser ho c usersdd. Tuy nhin, t i m t th i i m, m t ng i dng thu c vo ch m t nhm. Khi m t ng i dng ng nh p, h th ng ng m nh ng i dng l thnh vin c a nhm kh i ng, v c quy n truy nh p i v i nh ng file thu c quy n s h u c a nhm kh i ng . N u mu n s d ng quy n s h u theo cc nhm khc i v i nh ng file th ng i dng ph i chuy n i thnh thnh vin c a m t nhm nh ng nhm c g n v i ng i dng. L nh newgr cho php ng i dng chuy n sang nhm ng i dng khc g n v i mnh v i c php: newgrp [nhm] trong nhm l m t tn nhm ng i dng t n t i trong h th ng. V d , m t ng i dng l thnh vin c a hai nhm user v installer, v i user l nhm kh i ng. Khi ng nh p, ng i dng c t cch l thnh vin c a nhm user. Khi mong mu n s d ng m t s cc chng trnh thu c quy n s h u c a nhm installer, ng i dng c n g l nh sau: # newgrp installer N u ng i dng ni trn c chuy n vo m t nhm m ng i dng khng l thnh vin, ch ng h n dng l nh: # newgrp hot2 th Linux s a ra m t khuy n co thn thi n nh sau:
newgrp: Sorry

3.3 Thao tc v i th m c
Nh c gi i thi u (m c 3.1.1.), Linux t ch c h th ng file theo cch s d ng cc th m c. M c ny b t u b ng vi c gi i thi u m t s th m c chnh v tc d ng c a chng trong h th ng Linux. Sau m t s l nh thao tc v i th m c c b n nh t c trnh by. 3.3.1 M t s th m c c bi t ng t t c cc th m c con c trong h th ng.

* Th m c g c / y l th m c g c ch a

5 7

* Th m c /root Th m c /root c th c coi l "th m c ring" c a siu ng i dng. Th m c ny c s d ng lu tr cc file t m th i, nhn Linux v nh kh i ng, cc file nh phn quan tr ng (nh ng file c s d ng n tr c khi Linux c th g n k t n phn vng /user), cc file ng nh p quan tr ng, b m in cho vi c in n, hay vng lu t m cho vi c nh n v g i email. N cng c s d ng cho cc vng tr ng t m th i khi th c hi n cc thao tc quan tr ng, v d nh khi xy d ng (build) m t gi RPM t cc file RPM ngu n. * Th m c /bin Trong Linux, chng trnh c coi l kh thi n u n c th th c hi n c. Khi m t chng trnh c bin d ch, n s c d ng l file nh phn. Nh v y, chng trnh ng d ng trong Linux l m t file nh phn kh thi. Chnh v l , nh ng nh pht tri n Linux quy t nh ph i t ch c m t th m c "binaries" lu tr cc chng trnh kh thi c trn h th ng, chnh l th m c /bin. Ban u, th m c /bin (bin l vi t t t c a t binary) l ni lu tr cc file nh phn kh thi. Nhng theo th i gian, ngy cng c nhi u hn cc file kh thi c trong Linux, do , c thm cc th m c nh /sbin, /usr/bin c s d ng lu tr cc file . * Th m c /dev M t ph n khng th thi u trong b t k my tnh no l cc trnh i u khi n thi t b . Khng c chng, s khng th c c b t k thng tin no trn mn hnh c a (cc thng tin c c do trnh i u khi n thi t b hi n th a ra). Cng khng th nh p c thng tin (nh ng thng tin do trnh i u khi n thi t b bn phm c v chuy n t i h th ng), v cng khng th s d ng a m m c a ( c qu n l b i trnh i u khi n a m m). T t c cc trnh i u khi n thi t b u c lu tr trong th m c /dev. * Th m c /etc Qu n tr h th ng trong Linux khng ph i l n gi n, ch ng h n nh vi c qu n l ti kho n ng i dng, v n b o m t, trnh i u khi n thi t b , c u hnh ph n c ng, v.v.. gi m b t ph c t p, th m c /etc c thi t k lu tr t t c cc thng tin hay cc file c u hnh h th ng. * Th m c /lib Linux c m t trung tm lu tr cc th vi n hm v th t c, l th m c /lib. * Th m c /lost+found M t file c khi ph c sau khi c b t k m t v n h th ng u c lu vo th m c ny. ho c g p m t l i v ghi a trn

* Th m c /mnt Th m c /mnt l ni k t n i cc thi t b (v d a c ng, a m m...) vo h th ng file chnh nh l nh mount. Thng th ng cc th m c con c a /mnt chnh l g c c a cc h th ng file c k t n i: /mnt/floppy: a m m, /mnt/hda1: vng u tin c a a c ng th nh t (hda), /mnt/hdb3: vng th ba c a a c ng th 2 (hdb) ...

5 8

* Th m c /tmp Th m c /tmp c r t nhi u chng trnh trong Linux s d ng nh m t ni lu tr cc file t m th i. V d , n u ang so n th o m t file, chng trnh s t o ra m t file l b n sao t m th i (b n nhp) c a file v lu vo trong th m c /tmp. Vi c so n th o th c hi n tr c ti p trn file t m th i ny v sau khi so n th o xong, file t m th i s c ghi ln file g c. Cch th c nh v y b o m s an ton i v i file c n so n th o. * Th m c /usr Thng th ng th th m c /usr l trung tm lu tr t t c cc l nh h ng n ng i dng (user-related commands). Tuy nhin, ngy nay th t kh xc nh trong th m c ny c nh ng th g, b i v h u h t cc file nh phn c n cho Linux u c lu tr y, trong ng ch l th m c con /usr/src bao g m cc th m c con ch a cc chng trnh ngu n c a nhn Linux. * Th m c /home Th m c ny ch a cc th m c c nhn c a ng i dng: m i ng i dng tng ng v i m t th m c con y, tn ng i dng c l y lm tn c a th m c con. * Th m c /var Th m c /var c s d ng lu tr cc file ch a cc thng tin lun lun thay i, bao g m b m in, vng lu t m th i cho vi c nh n v g i th (mail), cc kha qu trnh, v.v.. * Th m c /boot L th m c ch a nhn c a h th ng (Linux-*.*.), System.map (file nh x n cc driver n p cc h th ng file khc), nh (image) c a h th ng file dng cho initrd (ramdisk), trnh i u khi n cho cc thi t b RAID (m t thi t b g m m t m ng cc a c ng tng t c v an ton khi ghi d li u), cc b n sao lu boot record c a cc phn vng a khc. Th m c ny cho php kh i ng v n p l i b t k trnh i u khi n no c yu c u c cc h th ng file khc. * Th m c /proc y l th m c dnh cho nhn (kernel) c a h th ng file c l p do nhn kh i t o. i u hnh v th c t y l m t h

* Th m c /misc v th m c /opt Cho php lu tr m i i t ng vo hai th m c ny. * Th m c /sbin Th m c lu gi cc file h th ng th ng t 3.3.2 Cc l nh c b n v th m c * Xc nh th m c hi n th i v i l nh pwd C php l nh: 5 9 ng ch y.

pwd L nh ny cho bi t hi n ng i dng ang trong th m c no v hi n ra theo d ng m t ng d n tuy t i. V d , g l nh pwd t i d u nh c l nh sau khi ng i dng lan v a ng nh p th mn hnh hi n th nh sau: # pwd
/home/lan

# * Xem thng tin v th m c v i l nh ls S d ng l nh ls v m t s cc ty ch n c a n l c th bi t c m i thng tin v m t th m c. C php l nh: ls [ty-ch n] [file]... L nh ny a ra danh sch cc file lin quan n tham s file trong l nh. Tr ng h p ph bi n tham s file l m t th m c, tuy nhin trong m t s tr ng h p khc, tham s file xc nh nhm (khi s d ng cc m t nhm *, ? v c p [ v ]); n u khng c tham s file, m c nh danh sch cc file c trong th m c hi n th i s c hi n th . Cc ty ch n c a l nh: -a : li t k t t c cc file, bao g m c file n. -l : a ra thng tin y nh t v cc file v th m c. -s : ch ra kch th c c a file, tnh theo kh i (1 kh i = 1204 byte). -F : xc nh ki u file (/ = th m c, * = chng trnh kh thi). -m : li t k cc file c ngn cch nhau b i d u ",". -C : a ra danh sch cc file v th m c theo d ng c t (hai th m c g n nhau c x p vo m t c t). -1 : hi n th m i file ho c th m c trn m t dng. -t : s p x p cc file v th m c trong danh sch theo th t v th i gian c s a i g n y nh t. -x : a ra danh sch cc file v th m c theo d ng c t (hai th m c g n nhau c x p trn hai dng u c a hai c t k nhau). -r : s p x p danh sch hi n th theo th t ng c l i. -R : li t k l n l t cc th m c v n i dung c a cc th m c. V d , l nh # ls -l s hi n th danh sch y nh t v cc file v th m c c trong th m c hi n th i.
total 108 drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com drwxr-xr-x 2 root root 4096 Oct 31 2000 bin drwxr-xr-x 2 root root 4096 Dec 11 16:54 boot drwxr-xr-x 7 root root 36864 Dec 11 16:54 dev drwxr-xr-x 43 root root 4096 Dec 11 16:55 etc

6 0

drwxr-xr-x 5 root root 4096 Dec 11 16:57 home drwxr-xr-x 4 root root 4096 Oct 31 2000 lib drwxr-xr-x 2 root root 16384 Oct 31 2000 lost+found drwxr-xr-x 2 root root 0 Dec 11 16:54 misc drwxr-xr-x 5 root root 4096 Oct 31 2000 mnt drwxr-xr-x 2 root root 4096 Aug 23 12:03 opt dr-xr-xr-x 56 root root 0 Dec 11 11:54 proc drwxr-x--- 12 root root 4096 Dec 11 16:55 root drwxr-xr-x 3 root root 4096 Oct 31 2000 sbin drwxr-xr-x 3 root root 4096 Oct 31 2000 tftpboot drwxrwxrwx 8 root root 4096 Dec 11 16:58 tmp drwxr-xr-x 22 root root 4096 Oct 31 2000 usr drwxr-xr-x 22 root root 4096 Oct 31 2000 var

Dng u tin "total 108" cho bi t t ng s kh i (1024 byte) trn a lu tr cc file trong danh sch (14*4+36+16=108). M i dng ti p theo trnh by thng tin v m i file hay th m c con. Cc thng tin ny c gi i thi u tr c y. Ch ng h n, drwxr-xr-x 22 root root 4096 Oct 31 2000 var

Ki u file v S lin k t Ng i quy n truy n file ch file nh p (th m c)

Nhm ch file

Kch th c file (byte)

Ngy gi t o file

Tn file

ngha c a m i tr ng trn y c gi i thch trong m c 3.2.1. Khi g l nh: # ls [is]* cho danh sch cc file v th m c con c tn b t u b ng ho c ch ci i ho c ch ci s c trong th m c hi n th i:
info-dir shadow sysctl.conf initlog.conf inittab shadowshells syslog.conf services smb.conf

* L nh t o th m c mkdir L nh mkdir t o m t th m c v i c php: mkdir [ty-ch n] <th-m c> L nh ny cho php t o m t th m c m i n u th m c cha th c s t n t i. t o m t th m c, c n c t tn v v tr c a n trn h th ng file (v tr m c nh l th m c hi n th i). N u th m c t n t i, h th ng s thng bo cho bi t. Cc ty ch n:

6 1

-m, --mode=Mod : thi t l p quy n truy nh p Mod nh trong l nh chmod nhng khng cho quy n rwxrwxrwx. -p, --parents : t o cc th m c c n thi t m khng thng bo l i khi n t n t i. --verbose : hi n th cc thng bo cho m i th m c c t o. --help : a ra trang tr gip v thot. V d , n u mu n t o th m c test trong th m c home, hy g l nh sau: # mkdir /home/test * L nh xa b th m c rmdir Nh bi t, l nh mkdir t o ra m t th m c m i, v v i ng u th l nh rmdir c dng xa b m t th m c. C php l nh: rmdir [ty-ch n[ <th-m c> C th xa b b t k th m c no n u c quy n . Lu r ng, th m c ch b xa khi n "r ng", t c l khng t n t i file hay th m c con no trong . Khng c cch g khi ph c l i cc th m c b xa, v th hy suy ngh c n th n tr c khi quy t nh xa m t th m c. Cc ty ch n c a l nh: --ignore-fail-on-non-empty : b qua cc l i n u xa m t th m c khng r ng. -p, --parents : xa b m t th m c, sau l n l t xa b ti p cc th m c c trn ng d n ch a th m c v a xa. V d , dng l nh rmdir -p /a/b/c s tng ng v i ba dng l nh rmdir /a/b/c, rmdir /a/b, rmdir /a (v i i u ki n cc th m c l r ng). --verbose : a ra thng bo khi xa m t th m c. --help : hi n th trang tr gip v thot. V d : # rmdir -p /test/test1/test2
rmdir: /: No such file or directory

# Dng l nh trn s l n l t xa ba th m c test2, test1, test v hi n th thng bo trn mn hnh k t qu c a l nh. * L nh i tn th m c mv C php l nh: mv <tn-c> <tn-m i> L nh ny cho php i tn m t th m c t tn-c thnh tn-m i. V d , l nh # mv LinuxVN.com LinuxVN s i tn th m c LinuxVN.com thnh LinuxVN. N u s d ng l nh mv i tn m t th m c v i m t ci tn c t cho m t file th l nh s g p l i. N u tn m i trng v i tn m t th m c ang t n t i th n i dung c a th m c c i tn s ghi ln n i dung c a th m c trng tn. 6 2

3.4. Cc l nh lm vi c v i file
3.4.1 Cc ki u file c trong Linux M c 3.1.2. trnh by s l c v ki u c a cc file. Nh c gi i thi u, c r t nhi u file khc nhau trong Linux, nhng bao gi cng t n t i m t s ki u file c n thi t cho h i u hnh v ng i dng, d i y gi i thi u l i m t s cc ki u file c b n. File ng i dng (user data file): l cc file t o ra do ho t ng c a ng i dng khi kch ho t cc chng trnh ng d ng tng ng. V d nh cc file thu n vn b n, cc file c s d li u hay cc file b ng tnh. File h th ng (system data file): l cc file lu tr thng tin c a h th ng nh: c u hnh cho kh i ng, ti kho n c a ng i dng, thng tin thi t b ... th ng c c t trong cc t p d ng vn b n ng i dng c th can thi p, s a i theo mnh. File th c hi n (executable file): l cc file ch a m l nh hay ch th cho my tnh th c hi n. File th c hi n lu tr d i d ng m my m ta kh c th tm hi u c ngha c a n, nhng t n t i m t s cng c "hi u" c cc file . Khi dng trnh ng d ng mc (Midnight Commander, chng 8), file th c hi n c b t u b i d u (*) v th ng c mu xanh l c. Th m c hay cn g i l file bao hm (directory): l file bao hm cc file khc v c c u t o hon ton tng t nh file thng th ng khc nn c th g i l file. Trong mc, file bao hm th ng c mu tr ng v b t u b ng d u ng (~) ho c d u chia (/). V d : /, /home, /bin, /usr, /usr/man, /dev ... File thi t b (device file): l file m t thi t b , dng nh l nh danh ch ra thi t b c n thao tc. Theo quy c, file thi t b c lu tr trong th m c /dev. Cc file thi t b hay g p trong th m c ny l tty (teletype - thi t b truy n thng), ttyS (teletype serial - thi t b truy n thng n i ti p), fd0, fd1, ... (floppy disk- thi t b a m m), hda1, hda2, ... hdb1, hdb2, ... (hardisk - thi t b c ng theo chu n IDE; a, b,... nh s a v t l; 1, 2, 3... nh s logic). Trong mc, file thi t b c mu tm v b t u b ng d u c ng (+). File lin k t (linked file): l nh ng file ch a tham chi u n cc file khc trong h th ng t p tin c a Linux. Tham chi u ny cho php ng i dng tm nhanh t i file thay v t i v tr nguyn th y c a n. Hn n a, ng i ta c th g n vo cc thng tin ph tr lm cho file ny c tnh nng tr i hn so v i tnh nng nguyn th y c a n. Ta th y lo i file ny gi ng nh khi ni m shortcut trong MS-Windows98. Khng gi ng m t s h i u hnh khc (nh MS-DOS ch ng h n), Linux qu n l th i gian c a t p tin qua cc thng s th i gian truy nh p (accesed time), th i gian ki n t o (created time) v th i gian s a i (modified time). 3.4.2. Cc l nh t o file Trong Linux c r t nhi u cch t o file, sau y l cc cch hay c dng.

6 3

* T o file v i l nh touch L nh touch c nhi u ch c nng, trong m t ch c nng l gip t o file m i trn h th ng: touch r t h u ch cho vi c t ch c m t t p h p cc file m i. C php l nh: touch <file> Th c ch t l nh ny c tc d ng dng c p nh t th i gian truy nh p v s a ch a l n cu i c a m t file. V l do ny, cc file c t o b ng l nh touch u c s p x p theo th i gian s a i. N u s d ng l nh touch i v i m t file cha t n t i, chng trnh s t o ra file . S d ng b t k trnh so n th o no so n th o file m i. V d , dng l nh touch t o file newfile:
# touch newfile

* T o file b ng cch i h ng u ra c a l nh (>) Cch ny r t h u ch n u mu n lu k t qu c a m t l nh th c hi n. g i k t qu c a m t l nh vo m t file, dng d u ">" theo ngha chuy n h ng l i ra chu n. V d , a k t qu c a l nh ls -l /bin vo file /home/thu/lenhls b ng cch g:
# ls -l /bin > /home/thu/lenhls

Linux t ng t o n u file lenhls cha c, trong tr ng h p ng c l i, n i dung file c s b th ch b i k t qu c a l nh. # ls -l /bin >/home/thu/lenhls N u mu n b sung k t qu vo cu i file thay v thay th n i dung file, hy s d ng d u ">>". V d , l nh # ls -l /bin >> /home/thu/lenhls a cc dng danh sch file trong th m c /bin vo cu i n i dung c a file /home/thu/lenhls. * T o file v i l nh cat L nh cat tuy n gi n nhng r t h u d ng trong Linux. Chng ta c th s d ng l nh ny l y thng tin t u vo (bn phm...) r i k t xu t ra file ho c cc ngu n khc (mn hnh ...), hay xem n i dung c a m t file ... Ph n ny trnh by tc d ng c a l nh cat i v i vi c t o file. C php l nh: cat > <file> Theo ng m nh, l nh ny cho php l y thng tin u vo t bn phm r i xu t ra mn hnh. So n th o n i dung c a m t file b ng l nh cat t c l i h ng u ra c a l nh t mn hnh vo m t file. Ng i dng g n i dung c a file ngay t i d u nh c mn hnh v g CTRL+d k t thc vi c so n th o. Nh c i m c a cch t o file ny l n khng cho php s a l i, v d n u mu n s a m t l i chnh t trn m t dng, ch c cch l xa n v tr c a l i v g l i n i dung v a b xa. V d . t o file newfile trong th m c /home/vd b ng l nh cat. # cat > /home/vd/newfile
This is a example of cat command

6 4

Sau khi so n th o xong, g Enter v CTRL+d tr v d u nh c l nh, n u khng g Enter th ph i g CTRL+d hai l n. C th s d ng lun l nh cat xem n i dung c a file v a so n th o: # cat /home/vd/newfile
This is a example of cat command

# 3.4.3 Cc l nh thao tc trn file * Sao chp file v i l nh cp L nh cp c hai d ng nh sau: cp [ty-ch n] <file-ngu n> ... <file- ch> cp [ty-ch n] --target-directory=<th-m c> <file-ngu n>... L nh ny cho php sao file-ngu n thnh file- ch ho c sao chp t nhi u file-ngu n vo m t th m c ch (tham s <file- ch> hay <th-m c>). D ng th hai l m t cch vi t khc i th t hai tham s v tr. Cc ty ch n: -a, --archive : gi ng nh -dpR (t h p ba tham s -d, -p, -R, nh d i y). -b, --backup[=CONTROL] : t o file lu cho m i file ch n u nh n ang t n t i. -d, --no-dereference : duy tr cc lin k t. -f, --force : ghi file ch ang t n t i m khng nh c nh . -i, --interactive : c thng bo nh c nh tr c khi ghi . -l, --link : ch t o lin k t gi a file- ch t file-ngu n m khng sao chp. -p, --preserve : duy tr cc thu c tnh c a file-ngu n sang file- ch. -r : cho php sao chp m t cch -R : cho php sao chp m t cch quy file thng th ng. quy th m c.

-s, --symbolic-link : t o lin k t t ng trng thay cho vi c sao chp cc file. -S, --suffix=<h u-t > : b qua cc h u t thng th ng (ho c c ch ra). -u, --update : ch sao chp khi file ngu n m i hn file ch ho c khi file ch cha c. -v, --verbose : a ra thng bo v qu trnh sao chp. --help : hi n th trang tr gip v thot. File ch c t o ra c cng kch th c v cc quy n truy nh p nh file ngu n, tuy nhin file ch c th i gian t o l p l th i i m th c hi n l nh nn cc thu c tnh th i gian s khc. V d , l nh # cp /home/ftp/vd /home/test/vd1 N u v tr ch, m t y tn file ch th n i dung file ngu n s c sao chp sang file ch. Trong tr ng h p ch a ra v tr file ch c t trong th m c no th tn c a file ngu n s l tn c a file ch. # cp /home/ftp/vd /home/test/ 6 5

Trong v d ny, tn file ch s l vd ngha l t o m t file m i /home/test/vd. N u s d ng l nh ny sao m t th m c, s c m t thng bo c a ra cho bi t ngu n l m t th m c v v v y khng th dng l nh cp sao chp. # cp . newdir
cp: .: omitting directory

V d v vi c l nh cp cho php sao nhi u file cng m t lc vo m t th m c. # cp vd vd1 newdir # pwd


/newdir

# ls -l total 8
-rw-r--r-- 1 root ftp 15 Nov 14 11:00 vd -rw-r--r-- 1 root ftp 12 Nov 14 11:00 vd1

Lu : i v i nhi u l nh lm vi c v i file, khi g l nh c th s d ng k hi u m t nhm xc nh m t nhm file lm cho tng hi u l c c a cc l nh . V d , l nh: # cp * bak th c hi n vi c sao chp m i file c trong th m c hi n th i sang th m c con c a n c tn l bak. Dng l nh # cp /usr/src/linux-2.2.14/include/linux/*.h bak cho php sao chp m i file v i tn c hai k hi u cu i cng l ".h" sang th m c con bak. Chnh v l do ni trn, d trong nhi u l nh tuy khng ni n vi c s d ng k hi u m t nhm file nhng chng ta c th p d ng chng n u i u khng tri v i suy lu n thng th ng. Do nh ng tnh hu ng nh th l qu phong ph cho nn khng th gi i thi u h t trong ti li u. Chng ta ch m t gi i php l m i khi s d ng m t l nh no , nn th nghi m cch th c hi u qu ny. * i tn file v i l nh mv C php l nh i tn file: mv <tn-c> <tn-m i> L nh ny cho php i tn file t tn c thnh tn m i. V d : # mv vd newfile L nh ny s i tn file vd thnh newfile. Trong tr ng h p file newfile t n t i, n i dung c a file vd s ghi ln n i dung c a file newfile. * Xa file v i l nh rm L nh rm l l nh r t "nguy hi m" v trong Linux khng c l nh khi ph c l i nh ng g xa, v th hy c n tr ng khi s d ng l nh ny. C php l nh: 6 6

rm [ty-ch n] <file> ... L nh rm cho php xa b m t file ho c nhi u file. Cc ty ch n: -d, --directory : lo i b lin k t c a th m c, k c th m c khng r ng. Ch c siu ng i dng m i c php dng ty ch n ny. -f, --force : b qua cc file (xc nh qua tham s file) khng t n t i m khng c n nh c nh . -i, --interactive : nh c nh tr c khi xa b m t file. -r, -R, --recursive : xa b n i dung c a th m c m t cch -v, --verbose : a ra cc thng bo v qu trnh xa file. --help : hi n th trang tr gip v thot. L nh rm cho php xa nhi u file cng m t lc b ng cch ch ra tn c a cc file c n xa trong dng l nh (ho c dng k ki u m t nhm). V d , dng l nh ls xem danh sch cc file trong th m c hi n th i: # ls ld-Linux.so.1 ld-Linux.so.1.9.5 ld-Linux.so.2 ld.so ld.so.1.9.5 libBrokenLocale-2.1.3.so libBrokenLocale.so.1 libNoVersion-2.1.3.so vd2.txt S d ng l nh xa file vd2.txt sau y: # rm vd2.txt telex.o v sau dng l nh ls xem l i danh sch file: # ls ld-Linux.so.1 ld-Linux.so.1.9.5 ld-Linux.so.2 ld.so ld.so.1.9.5 libBrokenLocale-2.1.3.so libBrokenLocale.so.1 libNoVersion-2.1.3.so Dng l nh # rm bak/*.h xa m i file v i tn c hai k hi u cu i cng l ".h" trong th m c con bak. Libnss_dns-2.1.3.so Libnss_dns.so.1 Libnss_dns.so.2 Libnss_files-2.1.3.so Libnss_files.so.1 Libnss_files.so.2 Libnss_hesiod-1.3.so telex.o libnss_dns-2.1.3.so libnss_dns.so.1 libnss_dns.so.2 libnss_files-2.1.3.so libnss_files.so.1 libnss_files.so.2 libnss_hesiod-1.3.so telex.o quy.

6 7

* L nh m t v dng trong file wc Linux c l nh wc dng m s k t , s t , hay s dng trong m t file. C php l nh: wc [ty-ch n] [file]... L nh hi n ra s l ng dng, s l ng t , s l ng k t c trong m i file, v m t dng tnh t ng n u c nhi u hn m t file c ch ra. N u khng c ty ch n no th m c nh a ra c s dng, s t v s k t . Ng m nh khi khng c tn file trong l nh th s c v m trn thi t b vo chu n. Cc tu ch n: -c, --byte, --chars : a ra s k t trong file. -l, --lines : a ra s dng trong file. -L, --max-line-length : a ra chi u di c a dng di nh t trong file. -w, --words : a ra s t trong file. --help : hi n th trang tr gip v thot. V d , sau khi g l nh: # wc /home/lan/mau/mau1 xu t hi n dng thng bo:
11 64 293 /home/lan/mau/mau1

Dng thng bo trn cho bi t file mau1 c 293 k t , s 64 t v c 11 dng. V d sau khi g l nh: # wc ng i dng g ti p cc dng nh sau:
This is a example of wc command without [namefile]

sau ng i dng g c p phm Ctrl-d k t thc th th y dng thng bo hi n ra: 2 9 49 Khi g l nh wc m khng c m t tham s no, m c nh s so n th o tr c ti p n i dung trn thi t b vo chu n. Dng CTRL+d k t thc vi c so n th o, k t qu s hi n th ln mn hnh nh v d trn. # wc /home/lan/vd/vdcalj /home/lan/vd/vdwc
8 24 32 41 209 250 192 1473 1665 /home/lan/vd/vdcalj /home/lan/vd/vdwc total

L nh trn m s k t , s t , s dng trn m i file c ch ra, v dng cu i cng hi n th t ng s dng, s t , s k t m c. B ng cch k t h p l nh wc v i m t s l nh khc, c th c nhi u cch bi t c nh ng thng tin c n thi t. Ch ng h n: k t h p v i l nh ls xc nh s file c trong m t th m c: # ls | wc -l
37

6 8

dng l nh trn cho bi t trong th m c ch c a c 36 file (do dng u tin k t qu thng bo c a l nh ls khng xc nh m t file). k t h p v i l nh cat bi t s ti kho n c nhn c trn my c a ng i dng: # cat /etc/passwd | wc -l
324

* L nh lo i b nh ng dng khng quan tr ng uniq Trong m t s tr ng h p khi xem n i dung m t file, chng ta th y c m t s cc thng tin b trng l p, v d cc dng tr ng ho c cc dng ch a n i dung gi ng nhau. ng th i lm g n v thu nh kch th c c a file, c th s d ng l nh uniq li t k ra n i dung file sau khi lo i b cc dng trng l p. C php l nh: uniq [ty-ch n] [input] [output] L nh uniq s lo i b cc dng trng l p k nhau t input (thi t b vo chu n) v ch gi l i m t dng duy nh t trong s cc dng trng l p r i a ra output (thi t b ra chu n). Cc tu ch n: -c, --count : m v hi n th s l n xu t hi n c a cc dng trong file. -d : hi n th ln mn hnh dng b trng l p. -u : hi n th n i dung file sau khi xa b ton b cc dng b trng l p khng gi l i m t dng no. -i : hi n th n i dung file sau khi xa b cc dng trng l p v ch gi l i duy nh t m t dng c n i dung b trng l p. -D : hi n th t t c cc dng trng l p trn mn hnh. N u s d ng l nh uniq trn m t file khng c cc dng trng l p th l nh khng c tc d ng. V d , ng i dng s d ng l nh cat xem n i dung file vduniq # cat vduniq Gnome c hai phng php thot ra ngoi. Gnome c hai phng php thot ra ngoi. thot b ng cch s d ng menu chnh, hy m menu chnh, ch n m c Logout y menu. Ch n YES/ NO k t thc phin lm vi c v i Gnome. Ch n YES/ NO k t thc phin lm vi c v i Gnome. N u mu n thot b ng cch s d ng nt Logout trn Panel, tr c h t ph i thm nt ny vo Panel. Ch n YES/ NO k t thc phin lm vi c v i Gnome. Trong file vduniq c hai dng b trng l p v k nhau l dng th 1 v 2. Gnome c hai phng php thot ra ngoi. Gnome c hai phng php thot ra ngoi. v dng th 5 v 6 Ch n YES/ NO k t thc phin lm vi c v i Gnome. 6 9

Ch n YES/ NO k t thc phin lm vi c v i Gnome. Dng l nh uniq lo i b dng trng l p: # uniq vduniq Gnome c hai phng php thot ra ngoi. thot b ng cch s d ng menu chnh, hy m menu chnh, ch n m c Logout y menu. Ch n YES/ NO k t thc phin lm vi c v i Gnome. N u mu n thot b ng cch s d ng nt Logout trn Panel, tr c h t ph i thm nt ny vo Panel. Ch n YES/ NO k t thc phin lm vi c v i Gnome. Dng cu i cng trong file vduniq c n i dung trng v i dng th 5, nhng sau l nh uniq, n khng b xa v khng k v i dng c n i dung trng l p. * S p x p n i dung file v i l nh sort sort l l nh c cc thng tin v s p x p chng theo th t trong b ng ch ci ho c theo th t c quy nh theo cc ty ch n c a l nh. C php l nh: sort [ty-ch n] [file] ... Hi n th n i dung sau khi s p x p c a m t ho c nhi u file ra thi t b ra chu n l tc d ng c a l nh sort. Ng m nh s p x p theo th t t i n c a cc dng c trong cc file (t ng ch ci theo b ng ch h th ng (ch ng h n ASCII) v k t v tr u tin trong cc dng). Cc ty ch n: +<s 1> [-<s 2>] : Hai gi tr s 1 v s 2 xc nh "kha" s p x p c a cc dng, th c ch t l y xu con t v tr s 1 t i v tr s 2 c a cc dng so snh l y th t s p x p cc dng. N u s 2 khng c th coi l h t cc dng; n u s 2 nh hn s 1 th b qua l a ch n ny. Ch , n u c s 2 th ph i cch s 1 t nh t m t d u cch. -b : b qua cc d u cch ng tr c trong ph m vi s p x p. -c : ki m tra n u file s p x p th thi khng s p x p n a. -d : xem nh ch c cc k t [a-zA-Z0-9] trong kha s p x p, cc dng c cc k t c bi t (d u cch, ? ...) c a ln u. -f : s p x p khng phn bi t ch hoa ch th ng. -n : s p x p theo kch th c c a file. -r : chuy n i th t s p x p hi n th i. V d , mu n s p x p file vdsort # cat vdsort tr c h t ph i thm nt ny vo Panel. 21434 b n xc nh n l c th c s mu n thot hay khng. menu chnh, ch n m c Logout y menu. B n c th s d ng m c Logout t menu chnh Gnome c hai phng php thot ra ngoi. 7 0

ho c nt Logout trn Panel chnh thot ra ngoi. Khi m t h p tho i Logout s xu t hi n yu c u 57879 L a ch n YES ho c NO k t thc phin lm vi c v Gnome. N khng cung c p ch c nng ho t ng no khc ngoi ch nng ny. N khng cung c p ch c nng ho t ng no khc ngoi ch nng ny. N u mu n thot b ng cch s d ng nt Logout trn Panel, # sort -f vdsort 21434 57879 B n c th s d ng m c Logout t menu chnh b n xc nh n l c th c s mu n thot hay khng. Gnome c hai phng php thot ra ngoi. ho c nt Logout trn Panel chnh thot ra ngoi. Khi m t h p tho i Logout s xu t hi n yu c u L a ch n YES ho c NO k t thc phin lm vi c v Gnome. menu chnh, ch n m c Logout y menu. N u mu n thot b ng cch s d ng nt Logout trn Panel, N khng cung c p ch c nng ho t ng no khc ngoi ch nng ny. N khng cung c p ch c nng ho t ng no khc ngoi ch nng ny. tr c h t ph i thm nt ny vo Panel. C th k t h p l nh sort v i cc l nh khc, v d : # ls -s | sort -n
total 127 1 Archive/ 1 infoWorld/ 13 keylime.pie 46 drop.text.hqx 64 bitnet.mailing-lists.Z

i c c

c c

L nh trn cho th t s p x p c a cc file theo kch th c trong th m c hi n th i. 3.4.4 Cc l nh thao tc theo n i dung file * S d ng l nh file xc C php l nh file: nh ki u file

7 1

file [ty-ch n] [-f file] [-m <file- nh>...] <file>...

L nh file cho php xc nh v in ra ki u thng tin ch a trong file. L nh file s l n l t ki m tra t ki u file h th ng, ki u file magic (v d file m t thi t b ) r i n ki u file vn b n thng th ng. N u file c ki m tra th a mn m t trong ba ki u file trn th ki u file s c in ra theo cc d ng c b n sau: text: d ng file vn b n thng th ng, ch ch a cc m k t ASCII. executable: d ng file nh phn kh thi. data: th ng l d ng file ch a m nh phn v khng th in ra c. M t s tu ch n sau y: -b : cho php ch a ra ki u file m khng a km theo tn file. -f tn-file : cho php hi n th ki u c a cc file c tn trng v i n i dung trn m i dng trong file tn-file. ki m tra trn thi t b vo chu n, s d ng d u "-". -z : xem ki u c a file nn. V d : # file file.c file /dev/hda
file.c: C program text file: ELF 32-bit LSB executable, 1,dynamically linked, not stripped /dev/hda: block special Intel 80386,version

L nh trn cho xem ki u c a hai file file.c, file v th m c /dev/hda. Nh r ng k t qu c a l nh file khng ph i lc no cng chnh xc tuy t

i.

* Xem n i dung file v i l nh cat o n tr c, chng ta c d p lm quen v i l nh cat thng qua tc d ng t o file c a l nh. Ph n ny gi i thi u tc d ng ch y u c a l nh cat: l tc d ng xem n i dung c a m t file. C php l nh: cat [ty-ch n] <tn file> Cc ty ch n: -A, --show-all : gi ng nh ty ch n -vET. -b, --number-nonblank : hi n th thm s th t trn m i dng (b qua dng tr ng). -e : gi ng nh ty ch n -vE. -E, --show-ends : hi n th d u "$" t i cu i m i dng. -n, --number : hi n th s th t c a m i dng (k c dng tr ng). -s : n u trong n i dung file c nhi u dng tr ng th s lo i b b t tr ng. -t : gi ng nh -vT. -T, --show-tabs : hi n th d u TAB d i d ng ^I. -v, --show-nonprinting : hi n th cc k t khng in ra c ngo i tr LFD v TAB. --help : hi n th trang tr gip v thot. V d : 7 2 ch hi n th m t dng

# cat vdcat chng ta th y xu t hi n cc dng sau y:


Gnome c hai phng php thot ra ngoi. c th s d ng m c Logout t menu chnh ho c nt Logout trn Panel chnh thot ra ngoi. thot b ng cch s d ng menu chnh, hy m menu chnh, ch n m c Logout y menu. Khi m t h p tho i Logout s xu t hi n yu c u xc nh n l c th c s mu n thot hay khng. ho c nt Logout trn Panel chnh thot ra ngoi. thot b ng cch s d ng menu chnh, hy m menu chnh, ch n m c Logout y menu.

# cat -bEs vdcat th n i dung file hi n ra nh sau:


1 Gnome c hai phng php thot ra ngoi. $ 2 c th s d ng m c Logout t menu chnh $ 3 ho c nt Logout trn Panel chnh thot ra ngoi.$ 4 thot b ng cch s d ng menu chnh, hy m $ 5 menu chnh, ch n m c Logout y menu. $ $ 6 Khi m t h p tho i Logout s xu t hi n yu c u $ 7 xc nh n l c th c s mu n thot hay khng.$ $ 8 ho c nt Logout trn Panel chnh thot ra ngoi.$ 9 thot b ng cch s d ng menu chnh, hy m $ 10 menu chnh, ch n m c Logout y menu.

* Xem n i dung cc file l n v i l nh more L nh cat cho php xem n i dung c a m t file, nhng n u file qu l n, n i dung file s tri trn mn hnh v ch c th nhn th y ph n cu i c a file. Linux c m t l nh cho php c th xem n i dung c a m t file l n, l l nh more. C php l nh: more [-dlfpcsu] [-s ] [+/xum u] [+dng-s ] [file ...] L nh more hi n th n i dung c a file theo t ng trang mn hnh. Cc l a ch n: -s : xc nh s dng n i dung c a file c hi n th (s ). -d : trn mn hnh s hi n th cc thng bo gip ng i dng cch s d ng i v i l nh more, v nh [ Press space to continue, "q" to quit .], hay hi n th [Press "h" for instructions .] thay th cho ti ng chung c nh bo khi b m sai m t phm.

7 3

-l : more th ng xem ^L l m t k t c bi t, n u khng c ty ch n ny, l nh s d ng t i dng u tin c ch a ^L v hi n th % n i dung xem c (^L khng b m t), nh n phm space (ho c enter) ti p t c. N u c ty ch n -l, n i dung c a file s c hi n th nh bnh th ng nhng m t khun d ng khc, t c l d u ^L s m t v tr c dng c ch a ^L s c thm m t dng tr ng. -p : khng cu n mn hnh, thay vo l xa nh ng g c trn mn hnh v hi n th ti p n i dung file. -c : khng cu n mn hnh, thay vo xa mn hnh v hi n th n i dung file b t u t nh mn hnh. -s : xa b t cc dng tr ng li n nhau trong n i dung file ch gi l i m t dng. -u : b qua d u g ch chn. +/xum u : ty ch n +/xum u ch ra m t chu i s +dng-s : b t u hi n th t dng th dng-s . V d : # more -d vdmore
total 1424 drwxr-xr-x 6 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 3 drwxr-xr-x 3 drwxr-xr-x 6 drwxr-xr-x 3 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 --More--(9%)

c tm ki m tr c khi hi n th m i file.

root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 root root 4096 Oct 31 2000 [ Press space to continue,

AfterStep-1.8.0 AnotherLevel ElectricFence GXedit-1.23 HTML ImageMagick LDP ORBit-0.5.0 SVGATextMode SysVinit-2.78 WindowMaker "q" to quit .]

i v i l nh more, c th s d ng m t s cc phm t t th c hi n m t s cc thao tc n gi n trong khi ang th c hi n l nh. B ng d i y li t k cc phm t t : Phm t t [Space] n [Enter] h d ho c CTRL+D q ho c CTRL+Q s f b ho c CTRL+B Ch c nng Nh n phm space hi n th mn hnh ti p theo Hi n th n dng ti p theo Hi n th dng ti p theo Hi n th danh sch cc phm t t Cu n mn hnh (m c nh l 11 dng) Thot kh i l nh more B qua n dng (m c nh l 1) B qua k mn hnh ti p theo (m c nh l 1) Tr l i k mn hnh tr c (m c nh l 1)

7 4

= :n :p v CTRL+L :f .

Hi n th s dng hi n th i xem k file ti p theo Tr l i k file tr c Ch y chng trnh so n th o vi t i dng hi n th i V l i mn hnh Hi n th tn file hi n th i v s dng L p l i l nh tr c

* Thm s th t c a cc dng trong file v i l nh nl Nh bi t l nh cat v i tham s -n s nh s th t c a cc dng trong file, tuy nhin Linux cn cho php dng l nh nl th c hi n cng vi c nh v y. C php l nh: nl [ty-ch n] <file> L nh ny s a n i dung file ra thi t b ra chu n, v i s th t c a dng c thm vo. N u khng c file (tn file), ho c khi file l d u "-", th c n i dung t thi t b vo chu n. Cc tu ch n: -b, --body-numbering=STYLE : s d ng ki u STYLE cho vi c nh th t cc dng trong n i dung file. C cc ki u STYLE sau: a : nh s t t c cc dng k c dng tr ng; t : ch nh s cc dng khng tr ng; n : khng nh s dng. -d, --section-delimiter=CC : s d ng CC nh s trang logic (CC l hai k t xc nh ph m vi cho vi c phn trang logic). -f, --footer-numbering=STYLE : s d ng ki u STYLE nh s cc dng trong n i dung file (m t cu c th c hai dng ...). -h, --header-numbering=STYLE : s d ng ki u STYLE nh s cc dng trong n i dung file. -i, --page-increment=s : nh s th t c a dng theo c p s c ng c cng sai l s . -l, --join-blank-lines=s :nhm s dng tr ng vo thnh m t dng tr ng. -n, --number-format=khun : chn s dng theo khun (khun: ln - cn tri, khng c s 0 u; rn - cn ph i, khng c s 0 u; rz - cn ph i v c s 0 u) -p, --no-renumber : khng thi t l p l i s dng t i m i trang logic. -s, --number-separator=xu : thm chu i xu vo sau s th t c a dng. -v, --first-page=s : s dng u tin trn m i trang logic. -w, --number-width=s : hi n th s th t c a dng trn c t th s . --help : hi n th trang tr gip v thot. V d : # nl --body-numbering=a --number-format=rz vdnl
000001 1) New configuration mode 000002 000003

7 5

000004 1-1) Directories 000005 000006 Now, everything goes to ~/GNUstep/Library/AfterStep or 000007 /usr/local/share/afterstep ! 000008 000009 You can use your old .steprc config file with afterstep f myoldsteprc, 000010 however, this isn't recommended at all. 000011 000012 New versions of asapps will also put their config. file here in a near 000013 future, like modules currently do. 000014

L nh trong v d trn cho thm s th t c a cc cu trong file vdnl theo d ng: nh s th t t t c cc dng, k c dng tr ng, cc s th t c cn ph i v c s 0 u (lu r ng c dng trong file c hi n ra thnh hai dng trn gi y). * Xem qua n i dung file v i l nh head Cc o n tr c cho bi t cch th c xem n i dung c a m t file nh l nh cat hay more. Trong Linux cng c cc l nh khc cho nhi u cch th c xem n i dung c a m t file. Tr c h t, chng ta hy lm quen v i l nh head. C php l nh head [ty-ch n] [file]... L nh ny m c nh s a ra mn hnh 10 dng u tin c a m i file. N u c nhi u hn m t file, th l n l t tn c a file v 10 dng n i dung u tin s c hi n th . N u khng c tham s file, ho c file l d u "-", th ng m nh s c t thi t b vo chu n. Cc tu ch n: -c, --bytes=c : hi n th c (s nguyn) k t u tin trong n i dung file (c c th nh n gi tr l b cho 512, k cho 1K, m cho 1 Meg) -n, --lines=n : hi n th n (s nguyn) dng thay cho 10 dng ng m nh. -q, --quiet, --silent : khng a ra tn file dng u. -v, --verbose : lun a ra tn file dng u. --help : hi n th trang tr gip v thot. V d : # head -6 vdhead1 vdhead2
==> vdhead1 <== 1) New configuration mode 1-1) Directories Now, everything goes to /GNUstep/Library/AfterStep or ==> vdhead2 <==

7 6

1.7.164 patch 3 $HOME/GNUstep/Library/AfterStep/start/Desktop/Theme/.include changed from shell script call to perl script call

L nh ny cho xem qua 6 dng

u tin trong n i dung hai file vdhead1 v vdhead2.

* Xem qua n i dung file v i l nh tail L nh th hai cho php xem qua n i dung c a file l l nh tail v i c php: tail [ty-ch n] [file]... L nh tail ng m nh a ra mn hnh 10 dng cu i trong n i dung c a cc file. N u c nhi u hn m t file, th l n l t tn c a file v 10 dng cu i s c hi n th . N u khng c tham s file, ho c file l d u "-" th ng m nh s c t thi t b vo chu n. Cc ty ch n: --retry : c g ng m m t file kh truy nh p khi b t u th c hi n l nh tail. -c, --bytes=n : hi n th n (s ) k t sau cng. -f, --follow[={name | descritptor}] : sau khi hi n n i dung file s hi n thng tin v file: -f, -follow, v --follow=descriptor l nh nhau. -n, --lines=n : hi n th n (s ) dng cu i cng c a file thay cho 10 dng ng m nh. --max-unchanged-stats=n : hi n th ti li u v file (ng m nh n l 5). --max-consecutive-size-changes=n : hi n th ti li u v file (ng m nh n l 200). --pid=PID : k t h p v i ty ch n -f, ch m d t sau khi qu trnh c ch s = PID l i. -q, --quiet, --silent : khng a ra tn file dng u trong n i dung c hi n th . -s, --sleep-interval=k : k t h p v i ty ch n -f, d ng k giy gi a cc ho t ng. -v, --verbose : lun hi n th tn c a file. --help : hi n th trang tr gip v thot. V d : # tail -2 vdtail1 vdtail2
==> vdtail1 <== Now, everything goes to ~/GNUstep/Library/AfterStep or /usr/local/share/afterstep ! ==> vdtail2 <== changed from shell script call to perl script call

L nh trn cho xem hai dng cu i c a hai file vdtail1 v vdtail2. * Tm s khc nhau gi a hai file (l nh diff) Vi c tm ra s khc nhau gi a hai file i khi l r t c n thi t. Linux c m t l nh c tc d ng nh v y, l l nh diff v i c php: diff [tu-ch n] <file1> <file2> 7 7

Trong tr ng h p n gi n, l nh diff s so snh n i dung c a hai file. N u file1 l m t th m c cn file2 l m t file bnh th ng, diff s so snh file c tn trng v i file2 trong th m c file1 v i file2. N u c file1 v file2 u l th m c, diff s th c hi n s so snh l n l t cc file trong c hai th m c theo th t t a-z (s so snh ny s khng qui n u tu ch n -r ho c --recursive khng c a ra). T t nhin so snh gi a hai th m c khng th chnh xc nh khi so snh hai file. Cc tu ch n: -a: xem t t c cc file d ng vn b n v so snh theo t ng dng. -b: b qua s thay i v s l ng c a k t tr ng. -B: b qua m i s thay i m ch chn ho c xo cc dng tr ng. --brief: ch thng bo khi c s khc nhau m khng a ra chi ti t n i dung khc nhau. -d: tm ra s khc bi t nh (tu ch n ny c th lm ch m t c lm vi c c a l nh diff). --exclude-from=file: khi so snh th m c, b qua cc file v cc th m c con c tn ph h p v i m u c trong file. -i: so snh khng bi t ch hoa ch th ng. -r: th c hi n so snh qui trn th m c. -s: thng bo khi hai file l gi ng nhau. -y: hi n th hai file c nh nhau d phn bi t s khc nhau. 3.4.5 Cc l nh tm file * Tm theo n i dung file b ng l nh grep L nh grep cng nh l nh ls l hai l nh r t quan tr ng trong Linux. L nh ny c hai tc d ng c b n nh sau: tc d ng th nh t l l c u ra c a m t l nh khc v i c php l <l nh> | grep <m u l c> tc d ng th hai, v cng l tc d ng c b n c gi i thi u trong ph n ny, l tm dng ch a m u nh trong file c ch ra. C php l nh grep: grep [ty-ch n] <m u-l c> [file] L nh grep hi n th t t c cc dng c ch a m u-l c trong file c ch ra (ho c t thi t b vo chu n n u khng c file ho c file c d ng l d u "-") Cc ty ch n: -G, --basic-regexp : xem m u l c nh m t bi u th c thng th ng. i u ny l ng m nh. -E, --extended-regexp : xem m u l c nh m t bi u th c m r ng. -F, --fixed-strings : xem m u nh m t danh sch cc xu c nh, c phn ra b i cc dng m i. Ngoi l nh grep cn c hai l nh l egrep v fgrep. egrep tng t nh l nh grep -E, fgrep tng t v i l nh grep -F . L nh grep cn c cc ty ch n sau: -A NUM, --after-context=NUM : a ra NUM dng n i dung ti p theo sau dng c ch a m u. 7 8

-B NUM, --before-context=NUM : a ra NUM dng n i dung tr c dng c ch a m u. -C [NUM], --context[=NUM] : hi n th NUM dng (m c nh l 2 dng) n i dung. -NUM : gi ng --context=NUM a ra cc dng n i dung tr c v sau dng c ch a m u. Tuy nhin, grep s khng a ra dng no nhi u hn m t l n. -b, --byte-offset : hi n th a ch tng i trong file u vo tr c m i dng c a ra -c, --count : m s dng tng ng ch a m u trong file u vo thay cho vi c hi n th cc dng ch a m u. -d ACTION, --directories=ACTION : n u u vo l m t th m c, s d ng ACTION x l n. M c nh, ACTION l read, t c l s c n i dung th m c nh m t file thng th ng. N u ACTION l skip, th m c s b b qua. N u ACTION l recurse, grep s c n i dung c a t t c cc file bn trong th m c ( quy); ty ch n ny tng ng v i ty ch n -r. -f file, --file=file : l y cc m u t file, m t m u trn m t dng. File tr ng ch a ng cc m u r ng, v cc dng a ra cng l cc dng tr ng. -H, --with-file : a ra tn file trn m i dng ch a m u tng ng. -h, --no-filename : khng hi n th tn file km theo dng ch a m u trong tr ng h p tm nhi u file. -i : hi n th cc dng ch a m u khng phn bi t ch hoa ch th ng. -l : a ra tn cc file trng v i m u l c. -n, --line-number : thm s th t c a dng ch a m u trong file. -r, --recursive : c t t c cc file c trong th m c ( quy). -s, --no-messages : b qua cc thng bo l i file khng c c ho c khng t n t i. -v, --invert-match : hi n th cc dng khng ch a m u. -w, --word-regexp : ch hi n th nh ng dng c ch a m u l c l m t t tr n v n. -x, --line-regexp : ch hi n th nh ng dng m n i dung trng hon ton v i m u l c. V d , ng i dng g l nh cat xem n i dung file text: # cat -n text th hi n ra n i dung file nh sau:
1 $ file file.c file /dev/hda 2 file.c: C program text 3 file:ELF 32-bit LSB executable, Intel 80386, version 1, 4 dynamically linked, not stripped 5 /dev/hda: block special 6 7 $ file -s /dev/hda,1,2,3,4,5,6,7,8,9,10 8 /dev/hda: x86 boot sector 9 /dev/hda1: Linux/i386 ext2 filesystem 10 /dev/hda2: x86 boot sector 11 /dev/hda3: x86 boot sector, extended partition table 12 /dev/hda4: Linux/i386 ext2 filesystem 13 /dev/hda5: Linux/i386 swap file 14 /dev/hda6: Linux/i386 swap file

7 9

15 16 17 18

/dev/hda7: Linux/i386 swap file /dev/hda8: Linux/i386 swap file thutest toithutest

Sau , dng l nh grep l c cc dng c c m filesystem # grep -n filesystem text


9: /dev/hda1: Linux/i386 ext2 filesystem 12: /dev/hda4: Linux/i386 ext2 filesystem

Cng c th s d ng cc k hi u bi u di n thng th ng (regular - expression) trong m ul c a ra c nhi u cch tm ki m file khc nhau. B ng d i y li t k m t s k hi u hay dng: K hi u C \c ^ $ . [xy] [^xy] c* ngha - thay th cho k t c - hi n th c nh l m t k t bnh th ng n u c l m t k t i u khi n - b t u m t dng - k t thc dng - thay cho m t k t n - ch n m t k t trong t p h p cc k t c a ra - ch n m t k t khng thu c t p h p cc k t c a ra - thay cho m t m u c ho c khng ch a k t c

# grep - H thutest text


text: thutest text: toithutest

# grep -H "^thutest" text


text: thutest

Ngoi cc ty ch n khc nhau, l nh grep cn c hai d ng n a trn Linux. Hai d ng l egrep - s d ng v i cc m u l c ph c t p, v fgrep - s d ng tm nhi u m u l c cng m t lc. Th nh tho ng m t bi u th c n gi n khng th xc nh c i t ng c n tm, v d , nh ang c n tm cc dng c m t ho c hai m u l c. Nh ng lc , l nh egrep t ra r t c ch. egrep - expression grep - c r t nhi u cc k hi u bi u di n m nh hn grep. D i y l cc k hi u hay dng:

8 0

K hi u c \c ^ $ . [xy] [^xy] c* c+ c? a|b (a)

ngha - thay th cho k t c - hi n th c nh l m t k t bnh th ng n u c l m t k t i u khi n - b t u m t dng - k t thc dng - thay cho m t k t n - ch n m t k t trong t p h p cc k t c a ra - ch n m t k t khng thu c t p h p cc k t c a ra - thay cho m t m u c ho c khng ch a k t c - thay cho m t m u c ch a m t ho c nhi u hn k t c - thay cho m t m u khng c ho c ch c ch a duy nh t m t k t c - ho c l a ho c l b - a m t bi u th c

V d , gi s by gi mu n tm cc dng c ch a m t ho c nhi u hn k t b trn file passwk v i l nh egrep. # egrep 'b+' /etc/passwd | head cho ra cc dng k t qu sau:
root : x : 0 : 0 : root : /root : /bin/bash bin : x : 1 : 1 : bin : /bin : daemon : x : 2 : 2 : daemon : /sbin : sync : x : 5 : 0 : sync : /sbin : /bin/sync shutdown : x : 6 : 0 : shutdown : /sbin : /sbin/shutdown halt : x : 7 : 0 : halt : /sbin : /sbin/halt gopher : x : 13 : 30 : gopher : /usr/lib/gopher-data : nobody : x : 99 : 99 : Nobody : / : xfs : x : 43 : 43 : X Font Server : /etc/X11/fs : /bin/false named : x : 25 : 25 : Named : /var/named : /bin/false

Khi g l nh: # egrep '([^a-zA-Z] | :wi)' /etc/printcap | head th nh n c thng bo k t qu :


aglw:\ :wi=AG 23 : wk=multiple Apple LaserWrite IINT: aglw1:\ :wi=AG 23 : wk=Apple LaserWrite IINT:

8 1

aglw2:\ :wi=AG 23 : wk=Apple LaserWrite IINT: aglw3:\ :wi=AG 23 : wk=Apple LaserWrite IINT:

L nh trn cho php tm cc dng c b t u b i (^) m t ch ci khng phn bi t ch hoa ch th ng ([a-zA-Z]) ho c ( | ) dng c ch a m u :wi. B t k lc no mu n tm cc dng c ch a nhi u hn m t m u l c, egrep l l nh t t nh t s d ng. C nh ng lc c n ph i tm nhi u m u l c trong m t lc. V d , c m t file ch a r t nhi u m u l c v mu n s d ng m t l nh trong Linux tm cc dng c ch a cc m u . L nh fgrep s lm c i u ny. V d , file thu c n i dung nh sau: # cat thu
/dev/hda4: Linux/i386 ext2 filesystem /dev/hda5: Linux/i386 swap file /dev/hda8: Linux/i386 swap file /dev/hda9: empty /dev/hda10: empty thutest toithutest

v file mauloc c n i dung l: # cat mauloc


empty test

By gi mu n s d ng n i dung file mauloc lm m u l c thu, hy g l nh: # fgrep -i -f mauloc thu


/dev/hda9: empty /dev/hda10: empty thutest toithutest

tm cc cu trong file

* Tm theo cc c tnh c a file v i l nh find Cc o n trn y gi i thi u cch th c tm file theo n i dung v i cc l nh grep, egrep v fgrep. Linux cn cho php ng i dng s d ng m t cch th c khc y nng l c, l s d ng l nh find, l nh tm file theo cc thu c tnh c a file. L nh ny c m t s khc bi t so v i cc l nh khc, l cc ty ch n c a l nh l m t t ch khng ph i m t k t . i u ki n c n i v i l nh ny l ch ra c i m b t u c a vi c tm ki m trong h th ng file v nh ng quy t c c n tun theo c a vi c tm ki m. C php c a l nh find: find [ ng-d n] [bi u-th c] L nh find th c hi n vi c tm ki m file trn cy th m c theo bi u th c c a ra. M c nh ng d n l th m c hi n th i, bi u th c l -print. Bi u th c c th c nh ng d ng sau: 8 2

Cc ton t : ( EXPR ); ! EXPR ho c -not EXPR; EXPR1 -a EXPR2 ho c EXPR1 -and EXPR2; EXPR1 -o EXPR2 ho c EXPR1 -or EXPR2; v EXPR1, EXPR2 Cc ty ch n l nh: t t c cc ty ch n ny lun tr v gi tr true v c t u bi u th c -daystart : o th i gian (-amin, -atime, -cmin, -ctime, -mmin, -mtime). -depth : th c hi n tm ki m t n i dung bn trong th m c tr c (m c nh vi c tm ki m c th c hi n b t u t i g c cy th m c c ch a file c n tm). -follow : (ty ch n ny ch p d ng cho th m c) n u c ty ch n ny th cc lin k t t ng trng c trong m t th m c lin k t s c ch ra. -help, --help : hi n th k t qu c a l nh find v thot. cc test -amin n : tm file c truy nh p n pht tr c. -atime n : tm file c truy nh p n*24 gi tr c. -cmin n : tr ng thi c a file c thay i n pht tr c y. -ctime n : tr ng thi c a file c thay i n*24 gi tr c y. -empty : file r ng v ho c l th m c ho c l file bnh th ng. -fstype ki u : file thu c h th ng file v i ki u. -gid n : ch s nhm c a file l n. -group nhm : file thu c quy n s h u c a nhm. -links n : file c n lin k t. -mmin n : d li u c a file c s a l n cu i vo n pht tr c y. -mtime n : d li u c a file c s a vo n*24 gi tr c y. -name m u : tm ki m file c tn l m u. Trong tn file c th ch a c cc k t i di n nh d u "*", "?"... -type ki u : tm cc file thu c ki u v i ki u nh n cc gi tr : b: c bi t theo kh i c: c bi t theo k t d: th m c p: pipe f: file bnh th ng l: lin k t t ng trng s: socket -uid n: ch s ng i s h u file l n. -user tn-ng i: file c s h u b i ng i dng tn-ng i. Cc hnh ng -exec l nh : ty ch n ny cho php k t h p l nh find v i m t l nh khc c c thng tin nhi u hn v cc th m c c ch a file c n tm. Ty ch n exec ph i s d ng d u {} - n s thay th cho tn file tng ng, v d u '\' t i cu i dng l nh, (ph i c kho ng tr ng gi a {} v '\'). K t thc l nh l d u ';' 8 3

-fprint file : hi n th y tn file vo trong file. N u file khng t n t i th s c t o ra, n u t n t i th s b thay th n i dung. -print : hi n th y tn file trn thi t b ra chu n. -ls : hi n th file hi n th i theo khun d ng: li t k danh sch y km c s th m c, ch s c a m i file, v i kch th c file c tnh theo kh i (block). V d : # find -name 'what*'
./usr/bin/whatis ./usr/bin/whatnow ./usr/doc/AfterStep-1.8.0/TODO/1.0 to 1.5/whatsnew ./usr/doc/gnome-libs-devel-1.0.55/devel-docs/gnome-devinfo/gnome-dev-info/what.html ./usr/doc/gnome-libs-devel-1.0.55/devel-docs/gnome-devinfo/gnome-dev-info/whatis.html

# find . -type f -exec grep -l -i mapping {} \ ;


./OWL/WordMap/msw-to-txt.c ./.elm/aliases.text ./Mail/mark ./News/usenet.alt ./bin/my.new.cmd: Permission denied ./src/fixit.c ./temp/attach.msg

3.5 Nn v sao lu cc file


3.5.1 Sao lu cc file (l nh tar) D li u r t c gi tr , s m t nhi u th i gian v cng s c n u ph i t o l i, th m ch c lc cng khng th no t o l i c. V v y, Linux a ra cc cch th c ng i dng b o v d li u c a mnh. C b n nguyn nhn c b n khi n d li u c th b m t: l i ph n c ng, l i ph n m m, l i do con ng i ho c do thin tai. Sao lu l cch b o v d li u m t cch kinh t nh t. B ng cch sao lu d li u, s khng c v n g x y ra n u d li u trn h th ng b m t. M tv n r t quan tr ng trong vi c sao lu l l a ch n phng ti n sao lu. c n ph i quan tm n gi c , tin c y, t c , ch l i cng nh tnh kh d ng c a cc phng ti n sao lu. C r t nhi u cc cng c c th c s d ng sao lu. Cc cng c truy n th ng l tar, cpio v dump (cng c trong ti li u ny l tar). Ngoi ra cn r t nhi u cc cng c khc c th l a ch n ty theo phng ti n sao lu c trong h th ng. C hai ki u sao lu l sao lu theo ki u ton b (full backup) v sao lu theo ki u tng d n (incremental backup). Sao lu ton b th c hi n vi c sao m i th trn h th ng file, bao g m t t c cc file. Sao lu tng d n ch sao lu nh ng file c thay i ho c c t o ra k t t sao lu cu i cng. 8 4

Vi c sao lu ton b c th c th c hi n d dng v i l nh tar v i c php: tar [ty-ch n] [<file>, ...] [<th-m c>, ...] L nh (chng trnh) tar c thi t k t o l p m t file lu tr duy nh t. V i tar, c th k t h p nhi u file thnh m t file duy nh t c kch th c l n hn, i u ny s gip cho vi c di chuy n file ho c sao lu bng t tr nn d dng hn nhi u. L nh tar c cc l a ch n: -c, --create : t o file lu tr m i. -d, --diff, --compare : tm ra s khc nhau gi a file lu tr v file h th ng c lu tr . --delete : xa t file lu tr (khng s d ng cho bng t ). -r, --append : chn thm file vo cu i file lu tr . -t, --list : li t k n i dung c a m t file lu tr . -u, --update : ch thm vo file lu tr cc file m i hn cc file c. -x, --extract, --get : tch cc file ra kh i file lu tr . -C, --directory tn-th-m c : thay i n th m c c tn l tn-th-m c. --checkpoint : a ra tn th m c khi c file lu tr . -f, --file [HOSTNAME:]file : ty ch n ny xc nh tn file lu tr ho c thi t b lu tr l file (n u khng c ty ch n ny, m c nh ni lu tr l /dev/rmt0). -h, --dereference : khng hi n cc file lin k t m hi n cc file m chng tr t i. -k, --keep-old-files : gi nguyn cc file lu tr ang t n t i m khng ghi file lu tr m i ln chng. -K, --starting-file file : b t u t i file trong file lu tr . -l, --one-file-system : t o file lu tr trn h th ng file c c b . -M, --multi-volume : ty ch n ny c s d ng khi dung l ng c a file c n sao lu l l n v khng ch a h t trong m t n v lu tr v t l. -N, --after-date DATE, --newer DATE : ch lu tr cc file m i hn cc file c lu tr trong ngy DATE. --remove-files : xa file g c sau khi sao lu chng vo trong file lu tr . --totals : a ra t ng s byte c t o b i ty ch n --create. -v, --verbose : hi n th danh sch cc file c x l. V d : # tar --create --file /dev/ftape /usr/src
tar: Removing archive leading / from absolute path names in the

# L nh trn t o m t file sao lu c a th m c /usr/src trong th m c /dev/ftape, (dng thng bo trn cho bi t r ng tar s chuy n c d u / vo trong file sao lu). N u vi c sao lu khng th th c hi n g n vo trong m t bng t , lc hy s d ng ty ch n -M:
# tar -cMf /dev/fd0H1440 /usr/src tar: Removing leading / from absolute archive path names in the

8 5

Prepare volume #2 for /dev/fd0H1440 and hit return: #

Ch r ng ph i nh d ng a m m tr c khi th c hi n vi c sao lu, c th s d ng m t thi t b u cu i khc th c hi n vi c nh d ng a khi tar yu c u m t a m m m i. Sau khi th c hi n vi c sao lu, c th ki m tra k t qu c a cng vi c b ng ty ch n -compare:
# tar --compare --verbose -f /dev/ftape usr/src/ usr/src/Linux usr/src/Linux-1.2.10-includes/ ... #

s d ng ki u sao lu tng d n, hy s d ng ty ch n -N:


# tar --create --newer '8 Sep 1995' --file /dev/ftape /usr/src --verbose tar: Removing leading / from absolute path names in the archive usr/src/ usr/src/Linux-1.2.10-includes/ usr/src/Linux-1.2.10-includes/include/ usr/src/Linux-1.2.10-includes/include/Linux/ usr/src/Linux-1.2.10-includes/include/Linux/modules/ usr/src/Linux-1.2.10-includes/include/asm-generic/ usr/src/Linux-1.2.10-includes/include/asm-i386/ usr/src/Linux-1.2.10-includes/include/asm-mips/ usr/src/Linux-1.2.10-includes/include/asm-alpha/ usr/src/Linux-1.2.10-includes/include/asm-m68k/ usr/src/Linux-1.2.10-includes/include/asm-sparc/ usr/src/patch-1.2.11.gz

# Lu r ng, tar khng th thng bo c khi cc thng tin trong inode c a m t file b thay i, v d nh thay i quy n truy nh p c a file, hay thay i tn file ch ng h n. bi t c nh ng thng tin thay i s c n dng n l nh find v so snh v i tr ng thi hi n th i c a file h th ng v i danh sch cc file c sao lu t tr c. 3.5.2 Nn d li u Vi c sao lu r t c ch nhng ng th i n cng chi m r t nhi u khng gian c n thi t sao lu. gi m khng gian lu tr c n thi t, c th th c hi n vi c nn d li u tr c khi sao lu, sau th c hi n vi c gi i nn (dn) nh n l i n i dung tr c khi nn. Trong Linux c kh nhi u cch nn d li u, ti li u ny gi i thi u hai phng cch ph bi n l gzip v compress.

8 6

* Nn, gi i nn v xem n i dung cc file v i l nh gzip, gunzip v zcat C php cc l nh ny nh sau: gzip [ty-ch n] [ -S suffix ] [ < file> ] gunzip [ty-ch n] [ -S suffix ] [ <file> ] zcat [ty-ch n] [ <file> ] L nh gzip s lm gi m kch th c c a file v khi s d ng l nh ny, file g c s b thay th b i file nn v i ph n m r ng l .gz, cc thng tin khc lin quan n file khng thay i. N u khng c tn file no c ch ra th thng tin t thi t b vo chu n s c nn v g i ra thi t b ra chu n. Trong m t vi tr ng h p, l nh ny s b qua lin k t t ng trng. N u tn file nn qu di so v i tn file g c, gzip s c t b b t. gzip s ch c t ph n tn file v t qu 3 k t (cc ph n c ngn cch v i nhau b i d u ch m). N u tn file g m nhi u ph n nh th ph n di nh t s b c t b . V d , tn file l gzip.msdos.exe, khi c nn s c tn l gzip.msd.exe.gz. File c nn c th c khi ph c tr l i d ng nguyn th v i l nh gzip -d ho c gunzip. V i l nh gzip c th gi i nn m t ho c nhi u file c ph n m r ng l .gz, -gz, .z, -z, _z ho c .Z ... gunzip dng gi i nn cc file nn b ng l nh gzip, zip, compress, compress -H. L nh zcat c s d ng khi mu n xem n i dung m t file nn trn thi t b ra chu n. Cc ty ch n: -c, --stdout --to-stdout : a ra trn thi t b ra chu n; gi nguyn file g c khng c s thay i. N u c nhi u hn m t file u vo, u ra s tu n t l cc file c nn m t cch c l p. -d, --decompress --uncompress : gi i nn. -f, --force : th c hi n nn ho c gi i nn th m ch file c nhi u lin k t ho c file tng ng th c s t n t i, hay d li u nn c c ho c ghi trn thi t b u cu i. -h, --help : hi n th mn hnh tr gip v thot. -l, --list : hi n th nh ng thng tin sau i v i m t file c nn: compressed size: kch th c c a file nn uncompressed size: kch th c c a file c gi i nn ratio: t l nn (0.0% n u khng bi t) uncompressed_name: tn c a file c gi i nn N u k t h p v i ty ch n --verbose, cc thng tin sau s c hi n th : method: phng th c nn crc: CRC 32-bit cho d li u c gi i nn date & time: th i gian cc file c gi i nn N u k t h p v i ty ch n --name, tn file c gi i nn, th i gian gi i nn c lu tr trong file nn N u k t h p v i ty ch n --verbose, t ng kch th c v t l nn c a t t c cc file s c hi n th N u k t h p v i ty ch n --quiet, tiu v t ng s dng c a cc file nn khng c hi n th .

8 7

-n, --no-name : khi nn, ty ch n ny s khng lu tr tn file g c v th i gian nn, (tn file g c s lun c lu n u khi nn tn c a n b c t b ). Khi gi i nn, ty ch n ny s khng khi ph c l i tn file g c cng nh th i gian th c hi n vi c nn. Ty ch n ny c ng m nh. -N, --name : ty ch n ny ng c v i ty ch n trn (-n), n h u ch trn h th ng c s gi i h n v di tn file hay khi th i i m nn b m t sau khi chuy n i file. -q, --quiet : b qua m i c nh bo. -r, --recursive : nn th m c. -S .suf, --suffix .suf : s d ng ph n m r ng .suf thay cho .gz. B t k ph n m r ng no cng c th c a ra, nhng cc ph n m r ng khc .z v .gz s b ngn ch n trnh s l n x n khi cc file c chuy n n h th ng khc. -t, --test : ty ch n ny c s d ng ki m tra tnh ton v n c a file c nn -v, --verbose : hi n th ph n trm thu g n i v i m i file c nn ho c gi i nn -#, --fast, --best : i u ch nh t c c a vi c nn b ng cch s d ng d u #, n u -# l -1 ho c --fast th s d ng phng th c nn nhanh nh t (less compression), n u l -9 ho c --best th s dng phng th c nn ch m nh t (best compression). Ng m nh m c nn l -6 ( y l phng th c nn theo t c nn cao). V d : # ls /home/test
Desktop data dictionary newt-0.50.8 rpm save vd1

# gzip /home/test/vd1 # ls /home/test


Desktop data dictionary newt-0.50.8 rpm save vd1.gz

# zcat /home/test/vd1
PID TTY TIME CMD 973 pts/0 00:00:00 bash 996 pts/0 00:00:00 man 1008 pts/0 00:00:00 sh 1010 pts/0 00:00:00 less 1142 pts/0 00:00:00 cat 1152 pts/0 00:00:00 cat 1181 pts/0 00:00:00 man 1183 pts/0 00:00:00 sh 1185 pts/0 00:00:00 less

# * Nn, gi i nn v xem file v i cc l nh compress, uncompress, zcat C php cc l nh nh sau: compress [ty-ch n] [<file>]

8 8

uncompress [ty-ch n] [<file>] zcat [ty-ch n] [<file>] L nh compress lm gi m kch th c c a file v khi s d ng l nh ny, file g c s b thay th b i file nn v i ph n m r ng l .Z, cc thng tin khc lin quan n file khng thay i. N u khng c tn file no c ch ra, thng tin t thi t b vo chu n s c nn v g i ra thi t b ra chu n. L nh compress ch s d ng cho cc file thng th ng. Trong m t vi tr ng h p, n s b qua lin k t t ng trng. N u m t file c nhi u lin k t c ng, compress b qua vi c nn file tr khi c ty ch n -f. Cc ty ch n: -f : n u ty ch n ny khng c a ra v compress ch y trong ch n n tr c, ng i dng s c nh c khi cc file th c s t n t i v c th b ghi . Cc file c nn c th c khi ph c l i nh vi c s d ng l nh uncompress. -c : ty ch n ny s th c hi n vi c nn ho c gi i nn r i a ra thi t b ra chu n, khng c file no b thay i. L nh zcat tng ng v i uncompress -c. zcat th c hi n vi c gi i nn ho c l cc file c li t k trong dng l nh ho c t thi t b vo chu n a ra d li u c gi i nn trn thi t b ra chu n. -r : n u ty ch n ny c a ra, compress s th c hi n vi c nn cc th m c. -v : hi n th t l gi m kch th c cho m i file c nn.

8 9

CHNG 4. QU N TR QU TRNH
4.1 Qu trnh trong UNIX
4.1.1. S b v qu trnh Qu trnh l i t ng trong h th ng tng ng v i m t phin th c hi n c a m t chng trnh. Qu trnh bao g m ba thnh ph n l text, data, stack. Text l thnh ph n cu l nh th c hi n, data l thnh ph n d li u cn stack l thnh ph n thng tin t m th i ho t ng theo c ch LIFO. Cc cu l nh trong text ch thao tc t i vng data, stack tng ng c a qu trnh, khng truy nh p c t i data v stack c a cc qu trnh khc, ngo i tr cc vng d li u dng chung. Cc qu trnh c h th ng phn bi t b ng s hi u c a qu trnh, vi t t t l PID (Proccess Index). Qu trnh c t o khi kh i ng h i u hnh l qu trnh 0. M i qu trnh khc u c t o ra t m t qu trnh khc thng qua l i g i h th ng fork: qu trnh th c hi n l i g i h th ng fork c g i l qu trnh cha, cn qu trnh c t o ra theo l i g i fork c g i l qu trnh con. Tr qu trnh 0 khng c cha, m i qu trnh c trong h th ng u c m t cha v m t cha c th c nhi u con. K t qu d ch chng trnh ngu n s t o ra file chng trnh ch g m m t s ph n nh sau (lu tr trn v t d n ngoi): Ph n u file m t m t s c tnh c a file chng trnh (tng t File header c a file chng trnh trong MS-DOS), Ph n text c a chng trnh, Cc gi tr m u v vi c phn ph i b nh i v i vng data c a chng trnh, M t s b ng thng tin lin quan n t file. Khi c l i g i fork, thng qua l i g i h th ng exec, nhn s t i n i dung c a file chng trnh vo b nh trong theo cc vng text, data v stack: Vng text c a qu trnh tng ng v i file chng trnh, Vng data c a qu trnh tng ng v i cc gi tr c quy nh trong file chng trnh, Vng stack c nhn t ng t o v i kch th c theo s linh ho t c a nhn. Ph n stach bao g m cc stack frame (khung) lgic: m i satck frame c t vo khi g i m t hm v l y ra khi quay v . M i stack frame ch a tham s c a hm, cc bi n a phng v.v. Tng ng trong stack c m t stack pointer lin quan n chi u su c a stack. Trong m chng trnh c cc dng l nh qu n l hnh tr ng c a stack, v nhn s nh v khng gian i v i stack theo yu c u. 4.1.2. S b c u trc i u khi n c a UNIX Theo phn c p, h th ng th c hi n theo ba m c: m c ng i dng, m c nhn v m c ph n c ng. M c ng i dng (user level): g m c chng trnh ng i dng v chng trnh trong cc th vi n. Cc chng trnh ny ch y (ph n l nh c a chng th c hi n) 9 0

trong tr ng thi ng i dng c a qu trnh. Chng trnh ng i dng thao tc v i nhn ho c tr c ti p ho c gin ti p nh g i th vi n nh cc l i g i h th ng. M c nhn l m c tr ng tm nh t c a h i u hnh Linux-UNIX. Ch y m c nhn l nh ng chng trnh c a h i u hnh thu c h th ng con i u khi n File (h th ng con lm vi c v i File - File Subsystem), h th ng con i u khi n qu trnh (Proccess Control System), cc l i g i h th ng (system calls), cc chng trnh i u khi n thi t b (Device Drivers), Cache b m (Buffer cache) v cc chng trnh i u khi n ph n c ng (Hard Control). Hai thnh ph n c b n nh t l H th ng i u khi n File v H th ng con i u khi n qu trnh.

Hnh v d i y cho s b c u trc i u khi n trong UNIX: Chng trnh ng i dng M c ng i dng M c nhn Th vi n m u

Gao di n theo cc l i g i h th ng

H th ng con i u khi n File Cache b m

H th ng con i u khi n qu trnh (bao g m 3 thnh ph n con bn ph i B truy n thng lin qu trnh B l p l ch Thnh ph n i u ph i b nh

K t Kh i i u khi n thi t b 

I U KHI N PH N C NG

M c nhn ph n M c c ng

PH N C NG

C u trc c a Nhn v cc m c qu trnh

9 1

4.1.3. Cc h th ng con trong nhn H th ng con i u khi n File c nhi m v qu n l h th ng File, cung c p vng nh r i a cho File, i u khi n truy c p File v tm ki m d li u v.v. a s cc thu t ton v cc l i g i h th ng lin quan n File v cc hm chng trnh con m c th p c trnh by trong chng 2. Cc qu trnh tng tc v i H th ng con i u khi n File nh cc l i g i h th ng (cc l i g i h th ng File m c cao). Vi c truy nh p t i File nh hai cch th c: truy nh p tr c ti p v i File ho c thng qua buffer cache. Cc buffer cache lu tr d li u t m th i theo t ng kh i. Nhn vo-ra d li u thng qua cc kh i trung gian v nh thi t b nh th c p: truy nh p d li u theo kh i, Nhn thao tc tr c ti p v i kh i i u khi n thi t b truy nh p tr c ti p d li u trong File khng qua thi t b ph : truy nh p theo k t . H th ng con i u khi n qu trnh ch u trch nhi m ng b ha s tng tc lin qu trnh, qu n l b nh v l p l ch th c hi n i v i cc qu trnh ang t n t i. H th ng con i u khi n File v H th ng con i u khi n qu trnh tng tc v i nhau khi file c t i vo b nh trong v cho th c hi n. M t s l i g i h th ng cho kh i i u khi n qu trnh: fork: T o qu trnh m i. L i g i hm ny c d ng pid=fork() exec: Cho th c hi n qu trnh ang t n t i; exec(pid) exit: Cho k t thc qu trnh ang t n t i, brk: i u khi n kch th c b nh c p pht cho qu trnh, signal: i u khi n cc hi n t ng b t th ng trong qu trnh H th ng con i u khi n qu trnh bao g m 3 thnh ph n sau y: Thnh ph n i u ph i b nh c nhi m v qu n l, i u khi n c p pht b nh . M t s trang b lo i b khi c p pht b nh cho qu trnh. B l p l ch (schelduler) c nhi m v i u ph i CPU cho cc qu trnh. Cc qu trnh c u tin v b l p l ch ch n qu trnh c u tin cao nh t. B truy n thng lin qu trnh th c hi n vi c ng b ha cc qu trnh lin quan nhau. B i u khi n ph n c ng (hardware control) c ch c nng cho php ng t v tng tc thng tin v i my. Cc thi t b nh a, thi t b u cu i c th ng t CPU khi ang th c hi n qu trnh. Cc chng trnh x l ng t l hm ring bi t trong nhn m khng ph i l m t qu trnh. Stack trong qu trnh M i qu trnh th c hi n c mode nhn v mode ng i dng v v y phn chia hai lo i stack nhn v stack ng i dng. Chng ta xem xt v d sau: #include <fenth.h> char buffer[2048]; int version; main (argc, argv); int argc; char *argv[]; | int fdold, fdnew; 9 2

if (argc != 3) | printf(' c n 2 i s i v i chng trnh sao file!'); exit(1) | fdold = open (argv[1], O_RDONLY); /* m file ngu n ch if (fdold == -1) | printf (' Khng th m file &cs\n',argv[1]); exit(1); | fdnew =creat (argv[2],0666); /*m File ich rw cho m i ng i */ if (fdnew ==-1) | printf('Khng th kh i t o file &cs\n',argv[2]; exit(1); | copy(fdold,fdnew); exit(0); | copy (old, new) int old, new; | int count; while (count = read(old,buffer,sizeof(buffer))>0) write(buffer,count); |

c */

Trong chng trnh trn, m l nh (g i l ph n text) c a file c sinh ra t cc hm main v copy. Kh i t o gi tr ban u cho bi n version v dnh vng nh cho bi n m ng buffer. Trong v d trn, cc tham s argc, argv v cc bi n fdold, fdnew trong chng trnh main trong stack khi main c g i (m t l n i v i m i chng trnh), cn cc tham s old v new v bi n count trong hm copy xu t hi n m i khi copy c g i. Stack ng i dng Bi n c c b khng c a ch frame 2 a ch quay l i sau khi write Cc tham s b m c a write buffer m i frame 3 Cc bi n c c count call write () b a ch c a Frame 1 Stack nhn

H ng tng c a stack

Frame 3 call Bi n c c b func2() a ch c a Frame 1 9 3

a ch quay v sau l i g i a ch quay v sau l i g i copy func2 Cc tham s old Tham s c a func2 nhn c a copy new frame 2 Frame 2 Bi n c c b fdold call copy () call Bi n c c b fdnew func2() a ch c a Frame 0 a ch c a Frame 0 a ch quay v sau l i g i a ch quay v sau l i g i main func1 Tham s c a argc Tham s c a func1 nhn main Frame 1 argv Frame 1 call main () call func1() Cc stack cho m t qu trnh Qu trnh trong UNIX c th c hi n theo m t trong hai mode: mode nhn hay mode ng i dng v tng ng v i 2 mode ny, qu trnh s d ng stack ring bi t i v i m i mode. Stack ng i dng ch a cc i s , bi n c c b , v cc d li u khc i v i vi c th c hi n hm trong mode ng i dng. Stach nhn ch a cc i s , bi n c c b , cc tham s , cc a ch lin k t v.v. lin quan n th c hi n cc hm theo mode nhn. 4.1.4. S b v i u khi n qu trnh Nhn s d ng 4 c u trc d li u sau y truy nh p n qu trnh: B ng cc qu trnh, tng ng v i m i qu trnh ang t n t i trong h th ng l m t thnh ph n. M i thnh ph n bao g m m t s tr ng sau y (m i thnh ph n y chnh l m t PCB): - Tr ng thi c a qu trnh, - Ch s h u c a qu trnh, - Tr ng lin quan n tr ng thi ngng c a qu trnh (theo l i g i hm sleep) a ch c a vng s d ng tng ng v i qu trnh, - Cc thng tin tng ng c trnh by trong PCB. Vng s d ng (U-area) ch a cc thng tin ring, c tc d ng khi qu trnh ang th c hi n: - Ch s thnh ph n tng ng v i qu trnh trong b ng cc qu trnh: a ch c a kh i PCB tng ng, - B m th i gian ch y m c nhn v m c ng i dng, - Cc gi tr tr v v m l i (n u c) i v i l i g i h th ng hi n t i, - M t v cc file ang m ng v i qu trnh, - Tham s lu tr dung l ng d li u di chuy n trong vo - ra. - Th m c hi n t i v th m c g c hi n t i: mi tr ng c a qu trnh, - Cc gi i h n kch th c file v qu trnh, - Cc m c cho php th c hi n i v i qu trnh, - M t s thng tin khc Cc b ng nh v a ch b nh i v i m i qu trnh,

9 4

B ng ch a vng b nh chung: phn ho ch b nh , c tnh m i vng theo phn ho ch: ch a text, data ho c vng b nh dng chung v.v. S b v m i lin k t c a cc c u trc d li u trn c m t nh hnh v pha sau. Nhn x l v i cc l i g i h th ng nh sau: - V i l i g i fork: Nhn sao vng a ch c a qu trnh c, cho php cc qu trnh chia x vng b nh , - V i l i g i exec: Nhn c p pht cc vng b nh th c cho cc vng text, data v stack, - V i l i g i exit: Nhn s gi i phng cc vng b nh lin quan n qu trnh. B ng cc vng nh cho m t qu trnh U-area B ng cc vng nh (b ng cc trang o) C c c u tr c d li u i u khi n qu trn h 4.1.

B nh trong (cc trang th c) 5. Tr ng thi v chuy n d ch tr ng thi S bi u di n cc tr ng thi v vi c chuy n tr ng thi trong UNIX c trnh by trong hnh d i y (S hi u tr ng thi qu trnh xem trong hnh v ). Th c hi n m c ng i dng (1)

Hon thi n (9)

Th c hi n m c nhn (2)

S n sng sang m c ng i dng (7)

Ch

i thi u ti nguyn (4)

S n sng th c hi n (3) i b nh th c hi n (5)

Ch

i b nh ngoi (6)

Qu trnh pht sinh (8)

9 5

S chuy n tr ng thi qu trnh Khi qu trnh c pht sinh n tr ng thi (8), ty thu c vo tnh tr ng b nh qu trnh c phn ph i b nh trong (3) hay b nh ngoi (5). Tr ng thi (3) th hi n qu trnh s n sng th c hi n, cc thnh ph n c a n b nh trong ch i CPU th c hi n. Vi c th c hi n ti p theo ty thu c vo tr ng thi tr c c a n. N u l n u pht sinh, n c n i t i th c hi n m c nhn hon thi n cng vi c l i g i fork s t tr ng thi (3) sang tr ng thi (1), trong tr ng h p khc, t tr ng thi (3) n i t i tr ng thi ch d i CPU m c ng i dng (7). Trong tr ng thi th c hi n m c ng i dng (1), qu trnh i t i tr ng thi (2) khi g p l i g i h th ng ho c hi n t ng ng t x y ra. T tr ng thi (1) t i tr ng thi (7) khi h t l ng t th i gian. Tr ng thi (4) l tr ng thi ch i trong b nh cn tr ng thi (6) th hi n vi c ch i trong b nh ngoi. Cung chuy n t tr ng thi (2) vo ngay tr ng thi (2) x y ra khi qu trnh tr ng thi th c hi n m c nhn, nhn h th ng g i cc hm x l ng t tng ng. 4.1.6. S ngng ho t ng v ho t ng tr l i c a qu trnh M t qu trnh trong tr ng thi th c hi n m c nhn c kh nng chuy n sang tr ng thi ngng theo l i g i hm sleep. Tr ng thi ngng x y ra trong m t s tnh hu ng ch im t s ki n: hon thnh vi c vo-ra, qu trnh khc th c hi n l i g i exit v.v. Sau khi s ki n x y ra, qu trnh t tr ng thi ngng chuy n sang tr ng thi s n sng c th c c p pht CPU ch y. 4.1.7. S b v l nh i v i qu trnh Khi m m t trang man, li t k cc file v i l nh ls, ch y trnh so n th o vi hay ch y b t k m t l nh no trong Linux th i u c ngha l ang kh i t o m t ho c nhi u qu trnh. Trong Linux, b t c chng trnh no ang ch y u c coi l m t qu trnh. C th c nhi u qu trnh cng ch y m t lc. V d dng l nh ls -l | sort | more s kh i t o ba qu trnh: ls, sort v more. Qu trnh c th tr i qua nhi u tr ng thi khc nhau v t i m t th i i m m t qu trnh ri vo m t trong cc tr ng thi . B ng d i y gi i thi u cc tr ng thi c b n c a qu trnh trong Linux. K hi u D R S T Z ngha (uninterruptible sleep) tr ng thi ny qu trnh b treo v khng th ch y l i n b ng m t tn hi u. (runnable) tr ng thi s n sng th c hi n, t c l qu trnh c th th c hi n c nhng ch n l t th c hi n v m t qu trnh khc ang c CPU. (sleeping) tr ng thi t m d ng, t c l qu trnh t m d ng khng ho t ng (20 giy ho c t hn) (traced or stopped) tr ng thi d ng, qu trnh c th b treo b i m t qu trnh ngoi

9 6

W < N L

(zombie process) qu trnh k t thc th c hi n, nhng n v n c tham chi u trong h th ng khng c cc trang th ng tr qu trnh c m c u tin cao hn qu trnh c m c u tin th p hn c cc trang kha bn trong b nh

4.2. Cc l nh c b n
4.2.1. L nh fg v l nh bg Linux cho php ng i dng s d ng t h p phm CTRL+z d ng m t qu trnh v kh i ng l i qu trnh b ng cch g l nh fg. L nh fg (foreground) tham chi u n cc chng trnh m mn hnh cng nh bn phm ang lm vi c v i chng. V d , ng i dng ang xem trang man c a l nh sort, nhn xu ng cu i th y c ty ch n -b, mu n th ty ch n ny ng th i v n mu n xem trang man. Thay cho vi c nh q thot v sau ch y l i l nh man, cho php ng i dng g CTRL+z t m d ng l nh man v g l nh th ty ch n -b. Sau khi th xong, hy g fg ti p t c xem trang man c a l nh sort. K t qu c a qu trnh trn hi n th nh sau: # man sort | more
SORT(1) FSF SORT(1) NAME sort - sort lines of text Files SYNOPSIS ../src/sort [OPTION] ... [Files]... DESCRIPTION Write sorted concatenation of all FILE(s) to standard out-put. +POS1 [-POS2] start a key at POS1,end it *before* POS2 obsoles-cent)field numbers and character offsets are num-bered starting with zero(contrast with the -k option) -b ignore leading blanks in sort fields or keys --More-(CTRL+z) [1]+ Stopped man sort | more

# ls -s | sort -b | head -4
1 Archives/ 1 InfoWorld/ 1 Mail/ 1 News/ 1 OWL/

# fg
man sort | more --More--

9 7

Trong ph n tr c, cch th c g phm CTRL+z t m d ng m t qu trnh c gi i thi u. Linux cn ng i dng cch th c ch y m t chng trnh d i ch n n (background) - s d ng l nh bg - trong khi cc chng trnh khc ang ch y, v chuy n m t chng trnh vo trong ch n n - dng k hi u &. N u m t qu trnh ho t ng m khng a ra thng tin no trn mn hnh v khng c n nh n b t k thng tin u vo no, th c th s d ng l nh bg a n vo trong ch n n ( ch ny n s ti p t c ch y cho n khi k t thc). Khi chng trnh c n a thng tin ra mn hnh ho c nh n thng tin t bn phm, h th ng s t ng d ng chng trnh v thng bo cho ng i dng. Cng c th s d ng ch s i u khi n cng vi c (job control) lm vi c v i chng trnh no mu n. Khi ch y m t chng trnh trong ch n n, chng trnh c nh s th t ( c bao b i d u ngo c vung []), theo sau l ch s c a qu trnh. Sau c th s d ng l nh fg + s th t c a chng trnh a chng trnh tr l i ch n i v ti p t c ch y. c m t chng trnh (ho c m t l nh ng) t ng ch y trong ch n n, ch c n thm k hi u '&' vo cu i l nh. Trong m t s h th ng, khi qu trnh n n k t thc th h th ng s g i thng bo t i ng i dng, nhng trn h u h t cc h th ng, khi qu trnh trn n n hon thnh th h th ng s ch cho n khi ng i dng g phm Enter th m i hi n th d u nh c l nh m i km theo thng bo hon thnh qu trnh (th ng th m t qu trnh hon thnh sau kho ng 20 giy). N uc chuy n m t chng trnh vo ch n n m c d n c cc thng tin c n xu t ho c nh p t cc thi t b vo ra chu n th h th ng s a ra thng bo l i d i d ng sau: Stopped (tty input/output) tn chng trnh. V d , l nh sau y th c hi n vi c tm ki m file thu1 trong ch n n: # find -name thu1 &
[5] 918

trong ch ny, s th t c a chng trnh l [5], ch s qu trnh tng ng v i l nh find l 918. V g Enter khi qu trnh cha th c hi n xong nn trn mn hnh ch hi n th s th t c a chng trnh v ch s qu trnh, n u ch kho ng 30 ho c 40 giy sau r i g Enter l n n a, mn hnh hi n th thng bo hon thnh chng trnh nh sau: #
[5] Done find -name thu1

# Gi s chng trnh cha hon thnh v mu n chuy n n ln ch sau: # fg 5


find -name thu1 ./thu1

n i, hy g l nh

chng trnh hon thnh v hi n th thng bo r ng file thu1 n m th m c g c. Thng th ng s a ra m t thng bo l i n u ng i dng c chuy n m t chng trnh vo ch n n khi m chng trnh c n ph i xu t ho c nh p thng tin t thi t b vo ra chu n. V d , l nh: # vi &
[6] 920

9 8

# nh n Enter #
[6] + Stopped (tty output) vi

# L nh trn ch y chng trnh vi trong ch n n, tuy nhin l nh g p ph i l i v y l chng trnh i h i hi n th cc thng tin ra mn hnh (output). Dng thng bo l i Stopped (tty intput) vi cng x y ra khi chng trnh vi c n nh n thng tin. 4.2.2. Hi n th cc qu trnh ang ch y v i l nh ps Linux cung c p cho ng i dng hai cch th c nh n bi t c nh ng chng trnh no ang ch y trong h th ng. Cch d hn, l l nh jobs s cho bi t cc qu trnh no d ng ho c l c ch y trong ch n n. Cch ph c t p hn l s d ng l nh ps. L nh ny cho bi t thng tin y nh t v cc qu trnh ang ch y trn h th ng. V d : # ps
PID 7813 7908 TTY TIME CMD pts/0 00:00:00 bash pts/0 00:00:00 ps

# (PID - ch s c a qu trnh, TTY - tn thi t b u cu i trn qu trnh c th c hi n, TIME - th i gian ch y qu trnh, CMD - l nh kh i t o qu trnh). C php l nh ps: ps [ty-ch n] L nh ps c m t l ng qu phong ph cc ty ch n c chia ra lm nhi u lo i. D i y l m t s cc ty ch n hay dng. Cc ty ch n n gi n: -A, -e : ch n hi n th t t c cc qu trnh. -T : ch n hi n th cc qu trnh trn tr m cu i ang ch y. -a : ch n hi n th t t c cc qu trnh trn m t tr m cu i, bao g m c cc qu trnh c a nh ng ng i dng khc. -r : ch hi n th qu trnh ang c ch y. Ch n theo danh sch -C : ch n hi n th cc qu trnh theo tn l nh. -G : hi n th cc qu trnh theo ch s nhm ng i dng. -U : hi n th cc qu trnh theo tn ho c ch s c a ng i dng th c s (ng i dng kh i ng qu trnh). -p : hi n th cc qu trnh theo ch s c a qu trnh. -s : hi n th cc qu trnh thu c v m t phin lm vi c. -t : hi n th cc qu trnh thu c m t tr m cu i. -u : hi n th cc qu trnh theo tn v ch s c a ng i dng hi u qu .

9 9

Thi t t khun d ng c a ra c a cc qu trnh -f : hi n th thng tin v qu trnh v i cc tr ng sau UID - ch s ng i dng, PID - ch s qu trnh, PPID - ch s qu trnh kh i t o ra qu trnh, C - , STIME - th i gian kh i t o qu trnh, TTY - tn thi t b u cu i trn qu trnh c ch y, TIME - th i gian th c hi n qu trnh, CMD - l nh kh i t o qu trnh -l : hi n th y cc thng tin v qu trnh v i cc tr ng F, S, UID, PID, PPID, C, PRI, NI, ADDR, SZ, WCHAN, TTY, TIME, CMD -o xu-ch n : hi n th cc thng tin v qu trnh theo d ng do ng i dng t ch n thng qua xu-ch n cc k hi u i u khi n hi n th c cc d ng nh sau: %C, %cpu % CPU c s d ng cho qu trnh %mem % b nh c s d ng ch y qu trnh %G tn nhm ng i dng %P ch s c a qu trnh cha kh i ng ra qu trnh con %U nh danh ng i dng %c l nh t o ra qu trnh %p ch s c a qu trnh %x th i gian ch y qu trnh %y thi t b u cu i trn qu trnh c th c hi n V d , mu n xem cc thng tin nh tn ng i dng, tn nhm, ch s qu trnh, ch s qu trnh kh i t o ra qu trnh, tn thi t b u cu i, th i gian ch y qu trnh, l nh kh i t o qu trnh, hy g l nh: # ps -o '%U %G %p %P %y %x %c'
USER GROUP PID PPID TTY TIME COMMAND root root 1929 1927 pts/1 00:00:00 bash root root 2279 1929 pts/1 00:00:00 ps

4.2.3. H y qu trnh v i l nh kill Trong m t s tr ng h p, s d ng l nh kill h y b m t qu trnh. i u quan tr ng nh t khi s d ng l nh kill l ph i xc nh c ch s c a qu trnh m chng ta mu n h y. C php l nh: kill [ty-ch n] <ch -s -c a-ti n-trnh> kill -l [tn hi u] L nh kill s g i m t tn hi u n qu trnh c ch ra. N u khng ch ra m t tn hi u no th ng m nh l tn hi u TERM s c g i. -s : xc nh tn hi u c g i. Tn hi u c th l s ho c tn c a tn hi u. D i y l m t s tn hi u hay dng: S Tn ngha 1 SIGHUP (hang up) y l tn hi u c g i n t t c cc qu trnh ang ch y tr c khi logout kh i h th ng 2 SIGINT (interrupt) y l tn hi u c g i khi nh n 1 0

CTRL+c SIGKILL (kill) tn hi u ny s d ng qu trnh ngay l p t c SIGTERM tn hi u ny yu c u d ng qu trnh ngay l p t c, nhng cho php chng trnh xa cc file t m. -p : l nh kill s ch a ra ch s c a qu trnh m khng g i m t tn hi u no. -l : hi n th danh sch cc tn hi u m l nh kill c th g i n cc qu trnh (cc tn hi u ny c trong file /usr/include/Linux/signal.h) V d , # ps 9 15
PID TTY TIME CMD 2240 2276 2277 2280 2281 2285 2289 2291 2292 2293 2298 pts/2 pts/2 pts/2 pts/2 pts/2 pts/2 pts/2 pts/2 pts/2 pts/2 pts/2 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 00:00:00 bash man more sh sh less man sh gunzip less ps

# kill 2277
PID TTY TIME CMD 2240 pts/2 00:00:00 2276 pts/2 00:00:00 2280 pts/2 00:00:00 2281 pts/2 00:00:00 2285 pts/2 00:00:00 2289 pts/2 00:00:00 2291 pts/2 00:00:00 2292 pts/2 00:00:00 2293 pts/2 00:00:00 2298 pts/2 00:00:00

bash man sh sh less man sh gunzip less ps

4.2.4. Cho my ng ng ho t ng m t th i gian v i l nh sleep N u mu n cho my ngh m t th i gian m khng mu n t t v ng i kh i ng l i th c n dng l nh sleep. C php: sleep [ty-ch n] NUMBER[SUFFIX] NUMBER: s giy(s) ng ng ho t ng. SUFFIX : c th l giy(s) ho c pht(m) ho c gi ho c ngy(d) 1 0

Cc ty ch n: --help : hi n th tr gip v thot --version : hi n th thng tin v phin b n v thot 4.2.5. Xem cy qu trnh v i l nh pstree bi t l nh xem cc qu trnh ang ch y trn h th ng, tuy nhin trong Linux cn c m t l nh cho php c th nhn th y m c phn c p c a cc qu trnh, l l nh pstree. C php l nh: pstree [ty-ch n] [pid | ng i-dng] L nh pstree s hi n th cc qu trnh ang ch y d i d ng cy qu trnh. G c c a cy qu trnh th ng l init. N u a ra tn c a m t ng i dng th cy c a cc qu trnh do ng i dng s h u s c a ra. pstree th ng g p cc nhnh qu trnh trng nhau vo trong d u ngo c vung, v d : init -+-getty |-getty |-getty |-getty thnh init ---4*[getty] -a : ch ra tham s dng l nh. N u dng l nh c a m t qu trnh c tro i ra bn ngoi, n c a vo trong d u ngo c n. -c : khng th thu g n cc cy con ng nh t. M c nh, cc cy con s c thu g n khi c th -h : hi n th qu trnh hi n th i v "t tin" c a n v i mu sng tr ng -H : gi ng nh ty ch n -h, nhng qu trnh con c a qu trnh hi n th i khng c mu sng tr ng -l : hi n th dng di. -n : s p x p cc qu trnh cng m t t tin theo ch s qu trnh thay cho s p x p theo tn V d , # pstree
init-+-apmd |-atd |-automount |-crond |-enlightenment |-gdm-+-X | `-gdm---gnome-session |-gen_util_applet |-gmc |-gnome-name-serv |-gnome-smproxy |-gnomepager_appl |-gpm |-identd---identd---3*[identd]

1 0

|-inetd |-kflushd |-klogd |-kpiod |-kswapd |-kupdate |-lockd---rpciod |-login---bash---mc-+-bash-+-cat | | |-passwd | | `-pstree | `-cons.saver |-lpd |-mdrecoveryd |-5*[mingetty] |-panel |-portmap |-rpc.statd |-sendmail |-syslogd `-xfs

4.2.6. L nh thi t t l i u tin c a qu trnh nice v l nh renice Ngoi cc l nh xem v h y b qu trnh, trong Linux cn c hai l nh lin quan n u tin c a qu trnh, l l nh nice v l nh renice. ch y m t chng trnh v i u tin nh tr c, hy s d ng l nh nice. C php l nh: nice [ty-ch n] [l nh [tham-s ]... ] L nh nice s ch y m t chng trnh (l nh) theo u tin s p x p. N u khng c l nh, m c u tin hi n t i s hi n th . u tin c s p x p t -20 (m c u tin cao nh t) n 19 (m c u tin th p nh t). -ADJUST : tng u tin theo ADJUST u tin --help : hi n th trang tr gip v thot thay i u tin c a m t qu trnh ang ch y, hy s d ng l nh renice. C php l nh: renice < -u-tin> [ty-ch n] L nh renice s thay i m c u tin c a m t ho c nhi u qu trnh ang ch y. -g : thay i quy n u tin theo nhm ng i dng -p : thay i quy n u tin theo ch s c a qu trnh -u : thay i quy n u tin theo tn ng i dng V d : # renice +1 987 -u daemon root -p 32

1 0

l nh trn s thay i m c u tin c a qu trnh c ch s l 987 v 32, v t t c cc qu trnh do ng i dng daemon v root s h u.

1 0

CHNG 5. QU N L TI KHO N NG I DNG


Chng ny cung c p m t s cng c h u ch trong Linux ng i dng trn h th ng. qu n l cc ti kho n

5.1 Ti kho n ng i dng


Nh bi t, trong h i u hnh a ng i dng, c n phn bi t ng i dng khc nhau do quy n s h u cc ti nguyn trong h th ng, ch ng h n nh, m i ng i dng c quy n h n v i file, qu trnh c a ring h . i u ny v n r t quan tr ng th m ch c khi my tnh ch c m t ng i s d ng t i m t th i i m. M i truy c p h th ng Linux u thng qua ti kho n ng i dng. V th , m i ng i s d ng c g n v i tn duy nh t ( c ng k) v tn c s d ng ng nh p. Tuy nhin m t ng i dng th c s c th c nhi u tn ng nh p khc nhau. Ti kho n ng i dng c th hi u l t t c cc file, cc ti nguyn, v cc thng tin thu c v ng i dng . Khi ci t h i u hnh Linux, ng nh p root s c t ng t o ra. ng nh p ny c xem l thu c v siu ng i dng (ng i dng c p cao, ng i qu n tr ), v khi ng nh p v i t cch ng i dng root, c th lm b t c i u g mu n trn h th ng. T t nh t ch nn ng nh p root khi th c s c n thi t, v hy ng nh p vo h th ng v i t cch l m t ng i dng bnh th ng. N i dung chng ny gi i thi u cc l nh t o m t ng i dng m i, thay i thu c tnh c a m t ng i dng cng nh xa b m t ng i dng. Lu , ch c th th c hi n c cc l nh trn n u c quy n c a m t siu ng i dng.

5.2 Cc l nh c b n qu n l ng i dng
Ng i dng c qu n l thng qua tn ng i dng (th c ra l ch s ng i dng). Nhn h th ng qu n l ng i dng theo ch s , v vi c qu n l theo ch s s d dng v nhanh thng qua m t c s d li u lu tr cc thng tin v ng i dng. Vi c thm m t ng i dng m i ch c th th c hi n c n u ng nh p v i t cch l siu ng i dng. t o m t ng i dng m i, c n ph i thm thng tin v ng i dng vo trong c s d li u ng i dng, v t o m t th m c c nhn cho ring ng i dng . i u ny r t c n thi t thi t l p cc bi n mi tr ng ph h p cho ng i dng. L nh chnh thm ng i dng trong h th ng Linux l useradd (ho c adduser). 5.2.1 File /etc/passwd Danh sch ng i dng cng nh cc thng tin tng /etc/passwd. V d d i y l n i dung c a file /etc/passwd: ng c lu tr trong file

mail:x:8:12:mail:/var/spool/mail: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: bien:x:500:0:Nguyen Thanh Bien:/home/bien:/bin/bash sangnm:x:17:100:Nguyen Minh Sang:/home/sangnm:/bin/bash lan:x:501:0:Lan GNU:/home/lan:/bin/bash

M i dng trong file tng ng v i b y tr ng thng tin c a m t ng i dng, v cc tr ng ny c ngn cch nhau b i d u ':'. ngha c a cc tr ng thng tin l n l t nh sau: 1 0

Tn ng i dng (username) M t kh u ng i dng (passwd - c m ha) Ch s ng i dng (user id) Cc ch s nhm ng i dng (group id) Tn y ho c cc thng tin khc v ti kho n ng i dng (comment) Th m c ng i dng ng nh p Shell ng nh p (chng trnh ch y lc ng nh p) B t k ng i dng no trn h th ng u c th c c n i dung file /etc/passwd, v c th ng nh p v i t cch ng i dng khc n u h bi t c m t kh u, y chnh l l do v sao m t kh u ng nh p c a ng i dng khng hi n th trong n i dung file. 5.2.2 Thm ng i dng v i l nh useradd Siu ng i dng s d ng l nh useradd t o m t ng i dng m i ho c c p nh t ng m nh cc thng tin v ng i dng. C php l nh: useradd [ty-ch n] <tn-ng i-dng> useradd -D [ty-ch n] N u khng c ty ch n -D, l nh useradd s t o m t ti kho n ng i dng m i s d ng cc gi tr c ch ra trn dng l nh v cc gi tr m c nh c a h th ng. Ti kho n ng i dng m i s c nh p vo trong cc file h th ng, th m c c nhn s c t o, hay cc file kh i t o c sao chp, i u ny ty thu c vo cc ty ch n c a ra. Cc ty ch n nh sau: -c, comment : so n th o tr ng thng tin v ng i dng. -d, home_dir : t o th m c ng nh p cho ng i dng. -e, expire_date : thi t t th i gian (YYYY-MM-DD) ti kho n ng i dng s b h y b . -f, inactive_days : ty ch n ny xc nh s ngy tr c khi m t kh u c a ng i dng h t hi u l c khi ti kho n b h y b . N u =0 th h y b ti kho n ng i dng ngay sau khi m t kh u h t hi u l c, =-1 th ng c l i (m c nh l -1). -g, initial_group : ty ch n ny xc nh tn ho c s kh i t o ng nh p nhm ng i dng. Tn nhm ph i t n t i, v s c a nhm ph i tham chi u n m t nhm t n t i. S nhm ng m nh l 1. -G, group : danh sch cc nhm ph m ng i dng cng l thnh vin thu c cc nhm . M i nhm s c ngn cch v i nhm khc b i d u ',', m c nh ng i dng s thu c vo nhm kh i t o. -m : v i ty ch n ny, th m c c nhn c a ng i dng s c t o n u n cha t n t i. -M : khng t o th m c ng i dng. -n : ng m nh khi thm ng i dng, m t nhm cng tn v i ng i dng s c t o. Ty ch n ny s lo i b s ng m nh trn.// -p, passwd : t o m t kh u ng nh p cho ng i dng.// -s, shell : thi t l p shell ng nh p cho ng i dng. -u, uid : thi t t ch s ng i dng, gi tr ny ph i l duy nh t. Thay i cc gi tr ng m nh 1 0

Khi ty ch n -D c s d ng, l nh useradd s b qua cc gi tr ng m nh v c p nh t cc gi tr m i. -b, default_home : thm tn ng i dng vo cu i th m c c nhn t o tn th m c c nhn m i. -e, default_expire_date : thay i th i h n h t gi tr c a ti kho n ng i dng. -f, default_inactive : xc nh th i i m h t hi u l c c a m t kh u ng nh p khi ti kho n ng i dng b xa b . -g, default_group : thay i ch s nhm ng i dng. -s, default_shell : thay i shell ng nh p. Ngoi l nh useradd, c th t o ng i dng m i b ng cch sau: So n th o file /etc/passwd b ng vipw. L nh vipw m trnh so n th o trn h th ng v hi u ch nh b n sao t m c a file /etc/passwd. Vi c s d ng file t m v kha file s c tc d ng nh m t c ch kha ngn vi c hai ng i dng cng so n th o file m t lc. Lc s thm dng thng tin m i v ng i dng c n t o. Hy c n th n trong vi c so n th o trnh nh m l n. Ring tr ng m t kh u nn tr ng v t o m t kh u sau. Khi file ny c lu, vipw s ki m tra s ng nh t trn file b thay i. N u t t c m i th d ng nh thch h p th c ngha l file /etc/passwd c c p nh t. V d : thm ng i dng c tn l new, ch s ng i dng 503, ch s nhm l 100, th m c c nhn l /home/new v shell ng nh p l shell bash: # vipw
mail:x:8:12:mail:/var/spool/mail: games:x:12:100:games:/usr/games: gopher:x:13:30:gopher:/usr/lib/gopher-data: bien:x:500:0:Nguyen Thanh Bien:/home/bien:/bin/bash sang:x:17:100:Nguyen Minh Sang:/home/sangnm:/bin/bash lan:x:501:0:Lan GNU:/home/lan:/bin/bash new::503:100:them mot nguoi moi:/home/new:/bin/bash

T o th m c c nhn c a ng i dng m i v i l nh mkdir # mkdir /home/new Sao chp cc file t th m c /etc/skel/ ( y l th m c lu tr cc file c n thi t cho ng i dng) vo file c nhn v a t o Thay i quy n s h u v cc quy n truy nh p file /home/new v i cc l nh chown v chmod # chown new /home/new # chmod go=u,go-w /home/new Thi t l p m t kh u c a ng i dng v i l nh passwd # passwd new passwd: Sau khi thi t l p m t kh u cho ng i dng b c cu i cng, ti kho n ng i dng s lm vi c. Nn thi t l p m t kh u ng i dng b c cu i cng, n u khng h c th v tnh ng nh p trong khi ang sao chp cc file. 1 0

5.2.3 Thay i thu c tnh ng i dng Trong Linux c r t nhi u l nh cho php thay i m t s cc thu c tnh c a ti kho n ng i dng nh: chfn: thay i thng tin c nhn c a ng i dng. chsh: thay i shell ng nh p. passwd: thay i m t kh u. M t s cc thu c tnh khc s ph i thay i b ng tay. V d , thay i tn ng i dng, c n so n th o l i tr c ti p trn file /etc/passwd (v i l nh vipw). Nhng c m t l nh t ng qut cho php c th thay i b t k thng tin no v ti kho n ng i dng, l l nh usermod. C php l nh: usermod [ty-ch n] <tn- ng-nh p> L nh usermod s a i cc file ti kho n h th ng theo cc thu c tnh c xc nh trn dng l nh. Cc ty ch n c a l nh: -c, comment : thay i thng tin c nhn c a ti kho n ng i dng. -d, home_dir : thay i th m c c nhn c a ti kho n ng i dng. -e, expire_date : thay i th i i m h t h n c a ti kho n ng i dng (YYYY-MM-DD). -f, inactive_days : thi t t s ngy h t hi u l c c a m t kh u tr c khi ti kho n ng i dng h t h n s d ng. -g, initial_group : ty ch n ny thay i tn ho c s kh i t o ng nh p nhm ng i dng. Tn nhm ph i t n t i, v s c a nhm ph i tham chi u n m t nhm t n t i. S nhm ng m nh l 1. -G, group : thay i danh sch cc nhm ph m ng i dng cng l thnh vin thu c cc nhm . M i nhm s c ngn cch v i nhm khc b i d u ',' m c nh ng i dng s thu c vo nhm kh i t o. -l, login_name : thay i tn ng nh p c a ng i dng. Trong m t s tr ng h p, tn th m c ring c a ng i dng c th s thay i tham chi u n tn ng nh p m i. -p, passwd : thay i m t kh u ng nh p c a ti kho n ng i dng. -s, shell : thay i shell ng nh p. -u, uid : thay i ch s ng i dng. L nh usermod khng cho php thay i tn c a ng i dng ang ng nh p. Ph i m b o r ng ng i dng khng th c hi n b t k qu trnh no trong khi l nh usermod ang th c hi n thay i cc thu c tnh c a ng i dng . V d mu n thay i tn ng i dng new thnh tn m i l newuser, hy g l nh sau: # usermod -l new newuser 5.2.4 Xa b m t ng i dng (l nh userdel) xa b m t ng i dng, tr c h t ph i xa b m i th c lin quan n ng i dng . L nh hay c dng xa b m t ti kho n ng i dng l l nh userdel v i c php: userdel [-r] <tn-ng i-dng> 1 0

L nh ny s thay i n i dung c a cc file ti kho n h th ng b ng cch xa b cc thng tin v ng i dng c a ra trn dng l nh. Ng i dng ny ph i th c s t n t i. Tu ch n -r c ngha: -r : cc file t n t i trong th m c ring c a ng i dng cng nh cc file n m trong cc th m c khc c lin quan n ng i dng b xa b cng lc v i th m c ng i dng. L nh userdel s khng cho php xa b ng i dng khi h ang ng nh p vo h th ng. Ph i h y b m i qu trnh c lin quan n ng i dng tr c khi xo b ng i dng . Ngoi ra cng c th xa b ti kho n c a m t ng i dng b ng cch hi u ch nh l i file /etc/passwd.

5.3 Cc l nh c b n lin quan

n nhm ng i dng

M i ng i dng trong h th ng Linux u thu c vo m t nhm ng i dng c th . T t c nh ng ng i dng trong cng m t nhm c th cng truy nh p m t trnh ti n ch, ho c u c n truy c p m t thi t b no nh my in ch ng h n. M t ng i dng cng lc c th l thnh vin c a nhi u nhm khc nhau, tuy nhin t i m t th i i m, ng i dng ch thu c vo m t nhm c th . Nhm c th thi t l p cc quy n truy nh p cc thnh vin c a nhm c th truy c p thi t b , file, h th ng file ho c ton b my tnh m nh ng ng i dng khc khng thu c nhm khng th truy c p c. 5.3.1 Nhm ng i dng v file /etc/group Thng tin v nhm ng i dng c lu trong file /etc/group, file ny c cch b tr tng t nh file /etc/passwd. V d n i dung c a file /etc/group c th nh sau:
root:x:0:root bin:x:1:root,bin,daemon daemon:x:2:root,bin,daemon sys:x:3:root,bin,adm adm:x:4:root,adm,daemon disk:x:6:root lp:x:7:daemon,lp mail:x:12:mail huyen:x:500: langnu:x:501:

M i dng trong file c b n tr ng c phn cch b i d u ':'. ngha c a cc tr ng theo th t xu t hi n nh sau: Tn nhm ng i dng (groupname) M t kh u nhm ng i dng (passwd - c m ha), n u tr ng ny r ng, t c l nhm khng yu c u m t kh u Ch s nhm ng i dng (group id) Danh sch cc ng i dng thu c nhm (users)

1 0

5.3.2 Thm nhm ng i dng Cho php hi u ch nh thng tin trong file /etc/group b ng b t k trnh so n th o vn b n no c trn h th ng c a thm nhm ng i dng, nhng cch nhanh nh t l s d ng l nh groupadd. C php l nh : groupadd [ty-ch n] <tn-nhm> Cc tu ch n l: -g, gid : ty ch n ny xc nh ch s nhm ng i dng, ch s ny ph i l duy nh t. Ch s m i ph i c gi tr l n hn 500 v l n hn cc ch s nhm c trn h th ng. Gi tr t 0 n 499 ch dng cho cc nhm h th ng. -r : ty ch n ny c dng khi mu n thm m t ti kho n h th ng. -f : ty ch n ny s b qua vi c nh c nh , n u nhm ng i dng t n t i, n s b ghi . V d : Thm nhm ng i dng b ng cch so n th o file /etc/group:
installer:x:102:hieu, huy, sang tiengviet:x:103:minh, long, dung

Hai dng trn s b sung hai nhm ng i dng m i cng danh sch cc thnh vin trong nhm: nhm installer v i ch s nhm l 102 v cc thnh vin l cc ng i dng c tn hieu, huy, sang. Tng t l nhm tiengviet v i ch s nhm l 103 v danh sch cc thnh vin l minh, long, dung. y l hai nhm (102, 103) ng i dng h th ng. Thm nhm ng i dng m i v i l nh groupadd: # groupadd -r installer L nh trn s cho php t o m t nhm ng i dng m i c tn l installer, tuy nhin cc thnh vin trong nhm s ph i b sung b ng cch so n th o file /etc/group. 5.3.3 S a i cc thu c tnh c a m t nhm ng i dng (l nh groupmod) Trong m t s tr ng h p c n ph i thay i m t s thng tin v nhm ng i dng b ng l nh groupmod v i c php nh sau: groupmod [ty-ch n] <tn-nhm> Thng tin v cc nhm xc nh qua tham s tn-nhm c i u ch nh. Cc ty ch n c a l nh: -g, gid : thay i gi tr ch s c a nhm ng i dng. -n, group_name : thay i tn nhm ng i dng. 5.3.4 Xa m t nhm ng i dng (l nh groupdel) N u khng mu n m t nhm no t n t i n a th ch vi c xa tn nhm trong file /etc/group. Nhng ph i lu r ng, ch xa c m t nhm khi khng c ng i dng no thu c nhm n a. Ngoi ra c th s d ng l nh groupdel xa m t nhm ng i dng. C php l nh: groupdel <tn-nhm>

1 1

L nh ny s s a i cc file ti kho n h th ng, xa t t c cc th c th lin quan nhm. Tn nhm ph i th c s t n t i.

5.4 Cc l nh c b n khc c lin quan

n ng i dng

Ngoi cc l nh nh thm ng i dng, xa ng i dng ..., cn c m t s l nh khc c th gip ch r t nhi u n u ang lm vi c trn m t h th ng a ng i dng. 5.4.1 ng nh p v i t cch m t ng i dng khc khi dng l nh su i lc mu n th c hi n l nh nh m t ng i dng khc v s d ng cc file hay thi t b thu c quy n s h u c a ng i dng . L nh su cho php thay i tn ng i dng m t cch hi u qu v c p cho cc quy n truy nh p c a ng i dng . C php l nh: su <ng i-dng> N u ng nh p v i t cch ng i dng bnh th ng v mu n tr thnh siu ng i dng (root) dng l nh sau: # su root Khi h th ng s yu c u nh p m t kh u c a siu ng i dng. N u cung c p ng m t m, th s l ng i dng root cho t i khi dng l nh exit ho c CTRL+d ng xu t ra kh i ti kho n ny v tr v ng nh p ban u. Tng t , n u ng nh p v i t cch root v mu n tr thnh ng i dng bnh th ng c tn l newer th hy g l nh sau: # su newer s khng b h i v m t kh u khi thay i t siu ng i dng sang m t ng i dng khc. Tuy nhin n u ng nh p v i t cch ng i dng bnh th ng v mu n chuy n i sang m t ng nh p ng i dng khc th ph i cung c p m t kh u c a ng i dng . 5.4.2 Xc nh ng i dng ang ng nh p (l nh who) * L nh who l m t l nh n gi n, cho bi t c hi n t i c nh ng ai ang ng nh p trn h th ng v i c php nh sau: who [ty-ch n] Cc tu ch n l: -H, --heading : hi n th tiu c a cc c t trong n i dung l nh. -m : hi n th tn my v tn ng i dng v i thi t b vo chu n. -q, --count : hi n th tn cc ng i dng ng nh p v s ng i dng ng nh p. V d : # who
root tty1 Nov 15 03:54 lan pts/0 Nov 15 06:07

# L nh who hi n th ba c t thng tin cho t ng ng i dng trn h th ng. C t u l tn c a ng i dng, c t th hai l tn thi t b u cu i m ng i dng ang s d ng, c t th ba hi n th ngy gi ng i dng ng nh p. Ngoi who, c th s d ng thm l nh users xc nh c nh ng ng i ng nh p trn h th ng. 1 1

V d : # users
lan root

# * Trong tr ng h p ng i dng khng nh n i tn ng nh p trong m t phin lm vi c ( i u ny nghe c v nh hi v l nhng l tnh hu ng i lc g p ph i), hy s d ng l nh whoami v who am i. C php l nh: whoami ho c who am i V d : # whoami
lan

# # who am i
may9!lan pts/0 Nov 15 06:07

# L nh who am i s hi n k t qu y hn v i tn my ng nh p, tn ng i dng ang ng nh p, tn thi t b v ngy gi ng nh p. * C m t cch khc xc nh thng tin ng i dng v i l nh id C php l nh: id [ty-ch n] [ng i-dng] L nh ny s a ra thng tin v ng i dng c xc nh trn dng l nh ho c thng tin v ng i dng hi n th i. Cc tu ch n l: -g, --group : ch hi n th ch s nhm ng i dng. -u, --user : ch hi n th ch s c a ng i dng. --help : hi n th trang tr gip v thot. V d : # id
uid=506(lan) gid=503(lan) groups=503(lan)

# # id -g
503

# # id -u
506

# # id root 1 1

uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),

3(sys),4(adm),6(disk),10(wheel) # 5.4.3 Xc nh cc qu trnh ang c ti n hnh (l nh w) L nh w cho php xc nh c thng tin v cc qu trnh ang c th c hi n trn h th ng v nh ng ng i dng ti n hnh qu trnh . C php l nh: w [ng i-dng] L nh w a ra thng tin v ng i dng hi n th i trn h th ng v qu trnh h ang th c hi n. N u ch ra ng i dng trong l nh th ch hi n ra cc qu trnh lin quan n ng i dng . V d : # w
root tty2 - 2:14pm 13:03 9.30s 9.10s /usr/bin/mc -P lan pts/1 192.168.2.213 3:20pm 0.00s 0.69s 0.10s w root pts/2 :0 3:33pm 9:32 0.41s 0.29s /usr/bin/mc P

1 1

CHNG 6. TRUY N THNG V M NG UNIX-LINUX


6.1. L nh truy n thng
6.1.1. L nh write L nh write c dng trao i gi a nh ng ng i hi n ang cng lm vi c trong h th ng. Thng th ng, m t ng i dng mu n lin h v i ng i dng khc, c n s d ng l nh who: $who hi n thng tin nh sau: user1 tty17 Oct 15 10:20 user2 tty43 Oct 15 8:25 user4 tty52 Oct 15 12:20 trong c tn ng i dng, s hi u terminal, ngy gi vo h th ng. Sau s d ng l nh write chuy n thng bo cho nhau. $write <tn ng i dng> [<tn tr m cu i>] c n g i thng bo n ng i dng user1 c tn user2 s g: $write user2 tty43 N u ng i dng user2 hi n khng lm vi c th trn mn hnh ng i dng user1 s hi n ra: "user2 is not logged in" v hi n l i d u m i shell. N u ng i dng user2 ang lm vi c, my ng i dng user2 s pht ra ti ng chung v trn mn hnh hi n ra: Message from user1 on tty17 at <gi , pht> Cng lc , t i my c a user1 mn hnh tr ng hi n nh ng thng tin g i t i ng i dng user2. Ng i g i g thng bo c a mnh theo quy t c: - K t thc m t dng b ng c m -o, - K t thc dng cu i cng (h t thng bo) b ng c m -oo. k t thc k t n i v i ng i dng user2, ng i dng user1 g ctrl-d. t ch i m i vi c nh n thng bo t ng i khc, s d ng l nh khng nh n thng bo: $mesg n (n - no) M t ng i khc g i thng bo n ng i ny s nh n c vi c truy nh p khng cho php permission denied. ti p t c cho php ng i khc g i thng bo n, s d ng l nh: $mesg y (y - yes) 6.1.2. L nh mail L nh mail cho php g i th i n t gi a cc ng i dng, song ho t ng theo ch off-line (gin ti p). Khi dng l nh write truy n thng cho nhau th i h i hai ng i g i v nh n ng th i ang lm vi c v cng ch p nh n cu c trao i . Cch th c s d ng mail l khc h n: m t trong hai ng i g i ho c nh n c th khng ng nh p vo h th ng. m bo cch th c truy n thng gin ti p (cn g i l off-line) nh v y, h th ng t o ra cho m i ng i dng m t h p th ring. Khi m t ng i dng l nh mail g i th n m t ng i khc th th c t ng cho vo h p th c a ng i nh n v ng i nh n sau cng dng l nh mail xem trong h p th c th m i hay khng. Khng nh ng th mail cn cho php s d ng trn m ng internet ( a ch mail th ng d i d ng tnlogin@my.m ng.lnh-v c.qu c-gia).

1 1

L nh mail ch yu c u ng i g i (ho c ng i nh n) login trong h th ng. Vi c nh n v g i th c ti n hnh t m t ng i dng. Th g i i cho ng i dng khc, c lu t i h p th c a h th ng. - T i th i i m login h th ng, ng i dng c th th y c c th m i khi trn mn hnh xu t hi n dng thng bo "you have mail". L nh mail trong UNIX g m 2 ch c nng: g i th v qu n l th. Tng ng, c hai ch lm vi c v i l nh mail: mode l nh (command mode) qu n tr th v mode so n (compose mode) cho php t o th. a/ Mode so n Mode so n lm vi c tr c ti p v i m t th v g i ngay cho ng i khc. Mode so n th c ch t l s d ng l nh mail c tham s : $mail tn_ng i_nh n> V d , $mail user2 L nh ny cho php so n v g i th cho ng i nh n c tn c ch . Sau khi g l nh, mn hnh b xa v con tr so n th o nh p nhy gc trn, tri ng i dng g n i dung th. k t thc so n th, hy g ctrl-d, mn hnh c a mail bi n m t v d u m i c a shell l i xu t hi n. Ch : D ng sau y c dng g i th so n trong n i dung m t file no (ch d u "<" ch d n thi t b vo chu n l n i dung file thay v cho bn phm): $mail tn_ng i_nh n < tn_file_n i_dung_th V d , $ mail user2 < thu1 N i dung th t File thu1 c g i cho ng i nh n user2, d u m i c a shell l i hi n ra. Cch lm trn y hay c s d ng trong g i / nh n th i n t ho c lin k t truy n thng v cho php ti t ki m c th i gian k t n i vo h th ng, c bi t chi ph ph i tr khi k t n i l ng k . b/ Mode l nh Nh ni s d ng mode l nh c a mail qu n l h p th. Vo mail theo mode l nh khi dng l nh mail khng tham s : $mail Sau khi g l nh, mn hnh mail mode l nh c hi n ra v i d u m i c a mode l nh. (ph bi n l d u ch m h i "?") T i y ng i dng s d ng cc l nh c a mail qu n l h th ng th c a mnh. C n tr gip g d u ch m h i (mn hnh c hai d u ??): ? mn hnh hi n ra d ng sau: <s > Hi n th s <s > (d u cch) Hi n th ngay pha tr c + Hi n th ngay ti p theo l cmd th c hi n l nh cmd dq xa th hi n th i v ra kh i mail m user g i th hi n th i cho ng i dng s tn-file ghi th hi n th i vo file c tn r [tn-file] tr l i th hi n th i (c th t file) d <s > xa th s u khi ph c th hi n th i u <s > khi ph c th s m <user> ... chuy n ti p th t i cc ng i dng khc q ra kh i mail 1 1

Th c hi n cc l nh theo ch d n trn y

qu n tr c h p th c a c nhn.

6.1.3. L nh talk Trong Linux cho php s d ng l nh talk thay th cho l nh write.

6.2 C u hnh Card giao ti p m ng


cc my c th giao ti p c v i nhau trong m ng theo giao th c TCP/IP, thi t b dng lm phng ti n giao ti p l Card giao ti p m ng (network card). qu n l thi t b ny Linux cung c p l nh ifconfig. L nh ny dng xem cc thng tin v c u hnh m ng hi n th i c a my cng nh gn cc a ch cho cc card giao ti p m ng (interface). Ngoi ra ta cng c th dng l nh ny kch ho t ho c t t m t card m ng. /sbin/ifconfig <giao di n> [ < a ch > ] [ arp | -arp][ broadcast < a ch >][netmask <m t n m ng> ]

trong :
<giao di n> tn c a thi t b giao ti p m ng, ch ng h n eth0 cho card m ng th hai. < a ch > a ch m ng s gn cho giao di n ny. up tu ch n ny s kch ho t giao di n c ch ra. down tu ch n ny s t t giao di n c ch ra. arp | -arp cho php hay c m giao th c ARP trn giao di n ny. broadcast < a ch > xc nh a ch qu ng b cho giao di n ny. netmask <m t n m ng> xc nh m t n m ng cho giao di n ny. u tin, eth1 cho card m ng

xem c u hnh c a my hi n t i ta dng l nh # ifconfig V v d v k t qu thu c l: eth0 Link encap:Ethernet HWaddr 00:02:55:07:63:07 inet addr:203.113.130.201 Bcast:203.113.130.223 Mask:255.255.255.224 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3912830 errors:84463 dropped:0 overruns:0 frame:0 TX packets:2402090 errors:0 dropped:0 overruns:0 carrier:0 collisions:84463 txqueuelen:100 RX bytes:2767096664 (2638.9 Mb) TX bytes:1265930467 (1207.2 Mb) Interrupt:29

1 1

eth1 Link encap:Ethernet HWaddr 00:05:1C:98:05:B1 inet addr:10.10.0.10 Bcast:10.10.255.255 Mask:255.255.0.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:15389731 errors:0 dropped:0 overruns:0 frame:0 TX packets:7768909 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:2578998337 (2459.5 Mb) TX bytes:1471928637 (1403.7 Mb) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:45868 errors:0 dropped:0 overruns:0 frame:0 TX packets:45868 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:5338927 (5.0 Mb) TX bytes:5338927 (5.0 Mb) Trong tr ng h p ny ta th y my hi n t i c 2 card m ng v c gn cc tng ng nh trn. a ch

Mu n ch xem cc thng tin v m t card m ng no thi ta dng l nh: # ifconfig eth0 Mu n kch ho t m t card m ng ta dng l nh # ifconfig eth0 up Mu n t t m t card m ng ta dng l nh # ifconfig eth0 down Mu n t l i a ch cho m t card m ng ta dng l nh: # ifconfig eth0 203.162.9.154 netmask 255.255.255.248 Ngoi ra n u my tnh c ci giao di n GNOME cng cc package qu n l m ng c a GNOME th ta c th s d ng l nh c giao di n ho gip cho vi c c u hnh cc tham s card m ng d dng hn. c cng c ny ta ph i ci t package redhat-config-networkxxx.rpm trong xxx l s hi u phin b n c a chng trnh. Trong giao di n ho GNOME ta nh l nh redhat-config-network, m t h p tho i s hi n ln cho php ta thay i cc tham s cho t ng card m ng c ci trn my.

6.3. Cc d ch v m ng
6.3.1 H thng tin m ng NIS Khi s d ng h th ng m ng ni chung, m c ch c a chng ta l lm cho mi tr ng m ng tr nn trong su t i v i ng i dng. M t trong nh ng i m quan tr ng l lm cho cc d li u quan tr ng nh l thng tin v ng i dng, v cc tr m trong m ng l ng nh t trn t t c cc tr m lm vi c. NIS (Network Information System) l m t ng d ng cung c p cc ti n ch truy nh p c s d li u phn ph i thng tin, ch ng h n nh d li u trong /etc/passwd v /etc/group cho t t c cc my tr m trn m ng. i u ny lm cho m ng tr nn m t h th ng duy nh t. NIS c xy d ng trn vi c s d ng d ch v RPC (Remote Procedure Call). N bao g m m t th vi n my ch , th vi n my tr m v cc cng c qu n tr . Ban u NIS c g i l nh ng trang vng (Yellow Pages YP). Cng v i s pht 1 1

tri n c a NIS m c s xu t hi n khc nhau trong cc phin b n. NIS truy n th ng c xy d ng trn th vi n libc 4/5. NIS+ l s m r ng c a NIS song v n h tr b o m t thng tin. NYS l m t phin b n chu n h tr c NIS v NIS+. Ho t ng c a NIS NIS lu tr c s d li u v thng tin qu n tr m ng trong cc file maps. Cc file ny c t trn m t NIS server trung tm, t cc NIS client c th truy nh p n cc thng tin thng qua d ch v RPC. Cc file maps th ng l cc file theo nh d ng DMB, m t d ng c s d li u n gi n. Cc file maps c t o ra t cc file vn b n nh /etc/hosts hay /etc/passwd. M i file vn b n ny c th c nhi u file maps khc nhau ty thu c vo kha c a n. V d n u kha l tn my tr m th ta c file hosts.byname, n u kha l a ch IP th ta c file hosts.byname. File ch /etc/hosts /etc/networks /etc/passwd /etc/groups /etc/services /etc/rpc /etc/protocol /usr/lib/aliases File maps tng ng hosts.addr Hosts.byname network.byname network.byaddr passwd.byname passwd.byid Groups.byname group.byid service.byname service.bynumber rpc.bynumber rpc.byname protocol.byname protocol.bynumber mail.aliases

M i m t file maps c m t tn ng n hn nh i v i ng i dng g i l cc nickname. hi n th danh sch cc nickname ta dng l nh ypcat: #ypcat -x Use "ethers" for map "ethers.byname" Use "aliases" for map "mail.aliases" Use "services" for map "services.byname" Use "protocols" for map "protocols.bynumber" Use "hosts" for map "hosts.byname" Use "networks" for map "networks.byaddr" .... Cc chng trnh my ch c a NIS th ng c tn l ypserv. Trong cc m ng c nh ta ch c n m t my lm my ch NIS. M t mi n (domain) NIS l m t t p h p cc my tr m c qu n l b i m t my ch NIS. hi n th v t tn cho m t mi n ta s d ng l nh #domainname nis-domain Tn mi n NIS s cho bi t my ch c a mi n no cc ng d ng s truy c p nh n thng tin c n thi t. bi t c my ch no trong m ng l NIS server, cc chng trnh ng d ng ph i h i ypbind, m t chng trnh ch y ng m c nhi m v pht hi n cc NIS server trn m ng. N s pht cc gi tin qu ng b tm cc my ch NIS trn m ng ho c s d ng cc thng tin trong cc file c u hnh ng i qu n tr cung c p.

1 1

Ci

t v c u hnh cho my ch NIS V i NIS ta c khi ni m my ch NIS chnh v my ch NIS ph , m t mi n ch c th c m t my ch NIS chnh. Khi trong m ng c nhi u my tr m lm vi c, m t my ch NIS c th b qu t i, ho c khi c s c th ton b h th ng m ng s khng th ho t ng c. Cc my ch NIS ph s gip gi i quy t v n ny. Vi c ci t cc my ch NIS ph ch khc my ch NIS chnh ch t o ra cc file map. Chng khng c t o ra b ng makedbm m c l y v t my ch chnh. By gi ta tm hi u cch ci t my ch NIS chnh. Tr c tin ta ph i ci t ph n m m ypserv ln my tnh. Chng trnh s n m trong package ypserv-xxx.rpm. Ta c th ci t b ng l nh: #rpm -ivh ypserv-xxx.rpm #mkdir /var/yp/nis-domain t o cc file c s d li u ta s d ng chng trnh makedbm. Do ph i m b o chng trnh c ci trn my, vi c t o l p s c ti n hnh thng qua m t makefile. Trong file ny s ch a cc l nh c n thi t t o ra file maps. Sau khi ci t ph n m m ta dng l nh make: #domainname nis-domain #cd /var/yp #make Cc file map khng t ng c p nh t m i khi ta s a thng tin qu n tr . Do v y m i khi c s thay i, ta c n th c hi n l i l nh make c p nh t s s a i. t cc my tr m NIS Tr c tin ta c n ci t ph n m m ypbind ln my tr m b ng l nh: #rpm -ivh ypbind-xxx.rpm B c ti p theo l ch ra tn c a my ch v tn mi n NIS m tr m ny s s d ng b ng cch thay i thng tin trong file /etc/yp.conf nh sau: Ci

#/etc/yp.conf domainname nis-domain server lnserver


Dng u tin cho bi t my tr m ny thu c vo mi n NIS c tn l nis-domain. N u khng c dng l nh ny th ta c th ch ra b ng cch nh l nh domainname t i d u nh c dng l nh. Dng th 2 ch ra tn my ch NIS. a ch IP c a tn my ch ny ph i xu t hi n trong file /etc/hosts. Ho c ta c th s d ng a ch IP ngay trn dng ny. Khi ta s d ng my tnh th ng xuyn ph i thay i mi n NIS, ta c th ch ra nhi u mi n NIS v cc my ch tng ng v i n b ng l nh server. File c u hnh d i y cho php th c hi n i u :

#yp.conf
server ln-server1 domainname1 server ln-server2 domainname2 Khi mu n s d ng m t mi n khc th ta ch c n nh l i l nh domainname mi n ta tng ng. xc nh

1 1

Sau khi t o ra cc file c u hnh c b n, ta nn ki m tra xem chng trnh ypbind ho t ng hay cha. Tr c h t, kh i ng ypbind, sau dng ti n ch ypcat l y thng tin qu n l b i NIS server. xem thng tin v a ch IP c a cc tr m ta dng l nh: #ypbind #ypcat hosts.byname 192.168.50.1 may1 192.168.50.1 may2 .... N u ta khng nh n c k t qu nh trn ho c ta nh n c m t thng bo l i cant bind to servers domain, c ngha l h th ng NIS ho t ng cha t t, ta c th ki m tra xem tn mi n v tn my ch trong file yp.conf chnh xc cha v sau ping my ch . N u my ch ho t ng ta ki m tra xem s ho t ng c a ypserv b ng l nh rpcinfo: #rpcinfo u serverhost ypserv program 10004 version 2 ready and waiting N u ta nh n c thng bo nh trn l ypserv ang ho t ng t t. L a ch n cc file map Khi s d ng NIS ta c n xc nh nh ng file c u hnh no c a cc my tr m s c thay th b i NIS. Thng th ng NIS c s d ng tra c u cc thng tin v my tr m v ti kho n ng i dng. M c d ta s d ng NIS nh l m t h qu n tr t p trung, h th ng ny v n cho php cc my tr m lm vi c c quy n t do l a ch n s d ng cc file c u hnh c c b ho c s d ng t NIS server. Th t c ch ra trong file /etc/nsswitch.conf. V d sau cho bi t th t s d ng d ch v c a cc hm gethostbyname(), gethostbyaddr() v getservbyname(). Cc d ch v c li t k tr c s c s d ng, n u khng thnh cng th s d ng d ch v sau .

#nsswitch.conf
hosts: nis dns files services files nis D i y l danh sch cc d ch v c th s d ng trong file /etc/nsswitch.conf. Cc file, chng trnh c th c s d ng s ph thu c vo t ng lo i d ch v : nisplus hay nis+: s d ng NIS+ server cho mi n NIS hi n th i. Tn c a server c ch ra trong file /etc/nis.conf. nis: s d ng NIS server cho domain hi n th i. Tn c a server c ch ra trong file /etc/yp.conf. V i thnh ph n hosts, cc file map l hosts.byname v hosts.byaddr s c s d ng. dns: s d ng DNS server, d ch v ny c s d ng cho mnh thnh ph n hosts. Tn c a my ch c t trong file /etc/resolv.conf. files: s d ng cc file c u hnh c c b , v d : /etc/passwd cho thnh ph n passwd. dbm: tm thng tin trong cc file c s d li u /var/dbm. Tn c a cc file l tn c a cc file map tng ng c a d ch v NIS. Cc thnh ph n c h tr hi n th i c a NYS l: hosts, networks, passwd, group, shadow, services, protocols, rpc, v m t s file khc. N u c t kha [NOTFOUND=return] trong cc thnh ph n c a file nsswitch.conf, NIS s thot ra ngay m khng s d ng ti p cc d ch v sau trong tr ng h p n khng tm th y thng tin d ch v tr c . Ch khi no d ch v tr c b l i, NIS m i dng ti p d ch v

1 2

sau. Trong v d d i NIS ch s d ng cc file c c b khi kh i b h ng.

ng ho c DNS, NIS server

#/ect/nsswitch.conf
hosts: nis dns [NOTFOUND=return] files network: nis [NOTFOUND=return] files services: file nis protocol: files nis rpc: files nis S d ng cc file map passwd v group M t trong nh ng ng d ng chnh c a NIS l ng b thng tin v cc ti kho n c a ng i s d ng trn t t c cc my tr m trong mi n NIS. Khi thng tin v ng i dng trn tr m c li t k m t ph n nh trong /etc/passwd, ph n cn l i c lu trong file map passwd.byname. Vi c ch n nis trong file /etc/nsswitch.conf cha NIS c th ho t ng. Khi s d ng ti kho n c a ng i dng c cung c p b i NIS, tr c tin ph i m b o s hi u c a ng i dng trong file passwd ph i trng v i s hi u c a ng i dng trn NIS. N u s hi u ng i dng, s hi u nhm c a ng i dng khc v i thng tin trong mi n NIS, ta c n s a l i cho trng nhau. Tr c tin ta thay i s hi u ng i dng (uid) v s hi u nhm (gid) trong file /etc/passwd v /etc/group trn tr m c c b sang cc gi tr m i c a NIS. Sau i quy n s h u c a t t c cc file b ng cch thay i s hi u uid v gid c sang uid v gid m i. Gi s ng i dng anhnv c s hi u uid l 501, thu c nhm sinhvien c gid l 423, ta s a i quy n s h u nh sau: #find / -uid 501 print > /tmp/uid/uid.501 #find / -gid 501 print > /tmp/uid/gid.501 #cat /tmp/uid.501 | xargs chown anhnv #cat /tmp/gid.501 | xargs chgrp sinhvien Sau khi th c hi n cc cng vi c trn s hi u uid v gid c a m t ng i dng trn my tr m s ng nh t v i NIS. B c ti p theo l s a i file /etc/nsswitch.conf nh sau:

#/etc/nsswitch.conf
passwd: nis files group: nis files File trn quy nh l nh login v cc l nh thu c h ny s truy v n NIS server khi m t ng i dng mu n truy nh p, n u khng tm th y n s tm ti p n cc file c c b . Thng th ng ta lo i b h u h t ng i dng kh i cc file c c b , ch gi l i root ho c cc ti kho n chung nh mail, news, cho m t s tc v c n chuy n i s hi u uid sang tn v ng c l i. V d trong chng trnh qu n l cng vi c cron s d ng l nh su t m tr thnh news. N u news khng c trong /etc/passwd, chng trnh trn s khng th c hi n c. Khi ng i dng mu n thay i m t kh u, h khng th dng l nh passwd nh khi cha c NIS. L nh passwd ch c tc d ng s a i cc file c u hnh c c b . NIS cung c p m t cng c l yppasswd, n khng nh ng cho php s a i m t kh u ng i dng trn NIS m cn thay i cc thu c tnh khc nh shell Chng trnh ny c th c hi n khi kh i ng h th ng b ng cch ch y thm d ch v rpc.yppasswd. V thi quen ng i dng c th

1 2

g l nh passwd khi mu n thay lin k t n yppasswd. #cd /bin

i m t kh u. Gi i php

y l thay

i passwd b ng m t

#mv passwd passwd.old #ln yppasswd passwd

6.4 H th ng file trn m ng


Linux c d ch v chia s file trn m ng my tnh. Khi ta mu n c kh nng cc my Linux c th chia s ti nguyn l cc file v i nhau, d ch v NFS s cung c p kh nng ny. D ch v ny cho php chia s file cho cc ng i dng trn m ng LAN, cc file ny c kh nng xu t hi n i v i cc ng i dng nh l cc file trn my c a mnh. 6.4.1 Ci t NFS ci t d ch v ny ta c n chu n b m t package l nfs-utils-xxx.rpm trong xxx l s hi u phin b n. ng nh p v i quy n root v s d ng l nh: # rpm ivh nfs-utils-xxx.rpm N u khng c l i thng bo l i th vi c ci t thnh cng. NFS s d ng th t c RPC (Remote Procedure Calls) g i v nh n yu c u gi a cc my ch v my tr m trn m ng, do v y d ch v nh x c ng portmap (d ch v qu n l cc yu c u RPC) ph i c kh i ng tr c. Trn my ch NFS d nh s chia s cc file d li u ph i kh i ng hai d ch v nfs v portmap b ng l nh: # service nfs start # service portmap start NFS ho t ng th ta c n ph i kh i ng cc d ch v sau: Portmapper: ti n trnh ny khng lm vi c tr c ti p v i NFS m tham gia qu n l cc yu c u RPC t my tr m g i n. Mountd: ti n trnh ny s nh x cc file trn my ch t i cc th m c trn my tr m yu c u. N s hu b nh x ny n u c l nh umount t my tr m. Nfs: l ti n trnh chnh th c hi n cc nhi m v c a giao th c NFS. N c nhi m v cung c p cho cc my tr m cc th m c ho c file c yu c u. Ta c th ki m tra cc thng tin v cc d ch v NFS b ng l nh: #rpcinfo -p Ta s thu c k t qu : program vers proto port 100000 2 tcp 111 portmapper 100000 2 udp 111 portmapper 100005 3 udp 1024 mountd 100005 3 tcp 1024 mountd 100003 2 udp 2049 nfs 100003 3 udp 2049 nfs

...

1 2

6.4.2 Kh i ng v d ng NFS Vi c kh i ng d ch v NFS cng kh n gi n v c gi i thi u trn b ng cch kh i ng portmap v nfs. # service nfs start ho c #/etc/init.d/nfs start Vi c d ng (t t) d ch v ny cng kh n gi n, ta dng l nh sau: #service nfs stop ho c #/etc/init.d/nfs stop Ta c th t cho d ch v ny c t ng kh i ng khi ta kh i ng my tnh b ng cch dng l nh: #setup

Hnh

t cc ng d ng t kh i

ng khi Linux kh i

ng

Sau ch n System services, ti p ta s nh n c m t danh sch cc d ch v hi n ang c trong h th ng. Mu n cho d ch v no c t ng kh i ng ta ch c n ch n d ch v , y ta ch n d ch v c tn nfs. Ch n OK v cu i cng ch n Quit. 6.4.3 C u hnh NFS server v Client C u hnh nfs ta ch c n s a file /etc/exports, y l file ch a danh sch cc th m c c chia s cho cc my khc. N cng ng th i ch a danh sch cc my tr m c quy n c truy c p v quy n truy c p c a cc my tr m ny. M t ch v nh d ng c a file ny nh sau: cc dng tr ng s c b qua, cc dng b t u b ng d u # c coi l cc dng

1 2

ch thch v s c b qua. Cc dng di qu ta c th ng t trn nhi u dng b ng cch s d ng d u ng t dng (\). C u trc c a m i dng khai bo trong file ny nh sau: Tn th m c Danh sch a ch cc my tr m, quy n truy nh p c a cc my tr m

Danh sch a ch cc my tr m, quy n truy nh p c a cc my tr m


192.168.0.127(ro)

/software/project /software/setup

192.168.0.172(rw) 192.168.0.0/28(ro)

Trong , cc tham s c ngha nh sau: tn th m c l ng d n n th m c ta mu n chia s cho cc my khc. Danh sch a ch cc my tr m, c th l a ch IP ho c tn my ( c li t k trong file /etc/hosts). Trong tr ng h p mu n li t k danh sch cc my c a ch g n k nhau trong m t kho ng no ta c th c cch vi t rt g n nh sau: ch ng h n ta mu n li t k cc a ch c a my tr m trong kho ng t 192.168.0.0 n cc my tr m c a ch 192.168.0.15 ta ch c n vi t 192.168.0.0/28. Quy n truy nh p c vi t d i d ng (rw) ch quy n c v ghi, cn (ro) th cc my tr m ch c quy n c trn th m c , (noaccess) c m cc my tr m truy nh p vo cc th m c con c a th m c chia s . Ch , gi a a ch c a my v quy n truy nh p khng c d u cch. 6.4.4 S d ng mount

c d li u trn cc th m c c chia s ny ta c th dng cch sau: ta s dng l nh mount, nhng trong tr ng h p ny ta ph i c n quy n qu n tr (root). C php c a l nh s nh sau:
#mount <tn_my_ch :/tn_th_m c_chia_s > </tn_th_m c_c n_nh_x >

Lu , tr c khi ra l nh ny ta ph i t o ra th m c c n nh x (trong tr ng h p n cha t n t i). V d , nh x th m c /software/project trn m t my ch 192.168.0.33 vo th m c /mnt/project trn my hi n t i ta dng l nh sau:
#mount 192.168.0.33:/software/project /mnt/project

By gi th m c /mnt/project trn my hi n t i s bnh ng nh cc th m c khc trn my. Ta c th sao chp, c cc file trn th m c ny.
6.4.5 Unmount

Sau khi th c hi n xong cc thao tc c n thi t, ta c th h y b nh x ny b ng l nh umount nh sau:


#umount /mnt/project

Sau l nh ny th ta khng cn c kh nng thao tc v i th m c trn my ch c n a, n u mu n ta l i ph i nh x l i.


1 2

Ngoi ra mu n xem tr ng thi ho t


#/etc/init.d/nfs status

ng c a d ch v nfs ta c th dng l nh:

N s hi n th thng tin v tr ng thi hi n t i c a d ch v ny ang ch y hay d ng l i.


rpc.mountd (pid 936) is running... nfsd (pid 948 947 946 945 944 943 942 941) is running... rpc.rquotad (pid 931) is running... 6.4.6 Mount t ng qua t p c u hnh By gi n u ta mu n h th ng s t ng nh x th m c ny khi my kh i ng cho nh ng ng i dng khng c quy n qu n tr c th dng c th ta c th s d ng cch s a i n i dung c a file /etc/fstab. Cng tng t nh l nh mount trn, trong file /etc/fstab cng c cc tr ng gi ng nh ni trn. M i m t dng trong file ny s c c u trc nh sau: <tn_my_ch :/ ng_d n_ n_th_m c_chia_s > </ ng_d n_ n_th_m c_c c_b > nfs tham s nfs ch cho h i u hnh bi t ki u file l nfs. V d ta c th thm dng 192.168.0.33:/software/project /mnt/project nfs vo cu i file /etc/fstab.

1 2

CHNG 7. L P TRNH SHELL V L P TRNH C TRN LINUX


7.1. Cch th c pipes v cc y u t c b n l p trnh trn shell
7.1.1. Cch th c pipes Trong Linux c m t s lo i shell, shell ng m nh l bash. Shell cho php ng i dng ch y t ng l nh shell (th c hi n tr c ti p) ho c dy l nh shell (file script) v c bi t hn l theo d ng thng qua ng d n (pipe). Trong m t dng l nh c a shell c th th c hi n m t danh sch cc l nh tu n t nhau d ng: <l nh> [; <l nh>]... Nh v y danh sch l nh l dy cc l nh lin ti p nhau, ci sau cch ci tr c b i d u ch m ph y ";" V d , $ cal 10 1999; cal 11 1999 ; cal 12 1999 Shell cho ng i dng cch th c c bi t th c hi n cc l nh tu n t nhau, ci ra c a l nh tr c l ci vo c a l nh sau v khng ph i thng qua ni lu tr trung gian. S d ng ng d n l cch th c c bi t trong UNIX v Linux, c th hi n l m t cch th c c a shell truy n thng lin qu trnh. ng d n c t ch c theo ki u c u trc d li u dng x p hng "vo tr c ra tr c" FIFO "First In First Out". Trong c u trc dng x p hng, m t u c a dng nh n ph n t vo v cn u kia l i xu t ph n t ra. Trong ng c nh c a shell, v i hai qu trnh A v B c k t n i m t ng d n c th hi n nh sau: Qu trnh A Qu trnh B

Nh v y u ra c a A thng th ng ho c l thi t b ra chu n (mn hnh) ho c l m t File (l m t tham s c a l nh) c thay b ng " u nh p c a ng d n". Tng t , u vo c a B thng th ng ho c l thi t b vo chu n (bn phm) ho c l m t File (l m t tham s c a l nh) c thay b ng " u xu t c a ng d n". Dng byte l n l t "ch y" t qu trnh A sang qu trnh B. M t cch th c s d ng ng ng trong shell nh sau: <l nh ph c h p> l ho c <l nh> ho c (<l nh>[;<l nh>]...) V y ng ng c d ng <l nh ph c h p> | <l nh ph c h p> L nh ph c h p pha sau c th khng c i s . Trong tr ng h p , thng tin k t qu t l nh pha tr c tr thnh thng tin input c a l nh ngay pha sau m khng ch u tc ng theo cch thng th ng c a l nh tr c n a. V d , $ cal 1999 | more N i dung l ch nm 1999 (l nh cal ng vai tr qu trnh A) khng c in ngay ra mn hnh nh thng th ng theo tc ng c a l nh cal n a m c lu ln m t "file" t m th i ki u " ng d n" c a h th ng v sau tr thnh i s c a l nh more (l nh more ng vai tr qu trnh B). Trong chng trnh, c th dng ng d n lm file vo chu n cho cc l nh c ti p theo. V d , ls -L | \ 1 2

th k hi u "\" ch ra r ng ng d n c dng nh file vo chu n. 7.1.2. Cc y u t c b n l p trnh trong shell Shell c cng c cho php c th l p trnh trn shell lm tng thm thn thi n khi giao ti p v i ng i dng. Cc i t ng tham gia cng c nh th c th c li t k: - Cc bi n (trong ch t i cc bi n chu n), - Cc hm vo - ra - Cc php ton s h c, - Bi u th c i u ki n, - C u trc r nhnh, - C u trc l p. a. M t s n i dung trong chng trnh shell - Chng trnh l dy cc dng l nh shell song c t trong m t file vn b n ( c so n th o theo so n th o vn b n), - Cc dng l nh b t u b ng d u # chnh l dng ch thch, b b qua khi shell th c hi n chng trnh, - Thng th ng cc b d ch l nh shell l sh (/bin/sh) ho c ksh (/bin/ksh) th c hi n m t chng trnh shell ta c cc cch sau y: $sh <<tn chng trnh> ho c $sh <tn chng trnh> ho c nh i mod c a chng trnh: $chmod u+x <tn chng trnh> v ch y chng trnh $<tn chng trnh> - Ph n l n cc y u t ngn ng trong l p trnh shell l tng ng v i l p trnh C. Trong ti li u ny s d ng chng m t cch t nhin. b. Cc bi n trong file script Trong shell c th k t i 3 lo i bi n: Bi n mi tr ng (bi n shell c bi t, bi n t kha, bi n shell xc nh tr c ho c bi n shell chu n) c li t k nh sau (cc bi n ny th ng g m cc ch ci hoa): - HOME : ng d n th m c ring c a ng i dng, - MAIL: ng d n th m c ch a h p th ng i dng, - PATH: th m c dng tm cc file th hi n n i dung l nh, - PS1: d u m i ban u c a shell (ng m nh l $), - PS2: d u m i th 2 c a shell (ng m nh l >), - PWD: Th m c hi n t i ng i dng ang lm, - SHELL: ng d n c a shell (/bin/sh ho c /bin/ksh) - TERM: S hi u gn cho tr m cu i, - USER: Tn ng i dng vo h th ng, Trong .profile th m c ring c a m i ng i dng th ng c cc cu l nh d ng: <bi n mi tr ng> = <gi tr > Bi n ng i dng: Cc bi n ny do ng i dng t tn v c cc cnh th c nh n gi tr cc bi n ng i dng t bn phm (l nh read). Bi n c t tn g m m t xu k t , quy t c t tn nh sau: k t u tin ph i l m t ch c i ho c d u g ch chn (_), sau tn l m t hay nhi u k t khc. t o ra m t bi n ta ch c n gn bi n m t gi tr no . Php gn l m t d u b ng (=). V d : myname=TriThanh 1 2

Ch : khng c c d u cch (space) ng tr c hay ng sau d u b ng. Tn bi n l phn bi t ch hoa ch th ng. truy xu t n m t bi n ta dng c php sau; $tn_bi n. Ch ng h n ta mu n in ra gi tr c a bi n myname trn ta ch c n ra l nh: echo $myname. $myname. $myname. M t s v d v cch t tn bi n: $ no=10 # y l m t cch khai bo h p l Nhng cch khai bo d i y l khng h p l
$ no =10 #c d u cch sau tn bi n $ no= 10 # c d u cch sau d u = $ no = 10 # c d u cch c ng tr c l n

ng sau d u =

Ta c th khai bo m t bi n nhng n c gi tr NULL nh trong nh ng cch sau: $ vech= $ vech="" N u ta ra l nh in gi tr c a bi n ny th ta s thu c m t gi tr NULL ra mn hnh (m t dng tr ng). Bi n t ng (hay bi n-ch c, tham s v tr) l cc bi n do shell c s n; tn cc bi n ny cho tr c. C 10 bi n t ng: $0, $1, $2, ..., $9 Tham bi n $0 ch a tn c a l nh, cc tham bi n th c b t u b ng $1 (n u tham s c v tr l n hn 9, ta ph i s d ng c php ${} v d , ${10} thu c cc gi tr c a chng). Shell bash c ba tham bi n v tr c bi t, $#, $@, v $#. $# l s l ng tham bi n v tr (khng tnh $0). $* l m t danh sch t t c cc tham bi n v tr lo i tr $0, c nh d ng nh l m t xu n v i m i tham bi n c phn cch b i k t $IFS. $@ tr v t t c cc tham bi n v tr c a ra d i d ng N xu c bao trong d u ngo c kp. S khc nhau gi a $* v $@ l g v t i sao l i c s phn bi t? S khc nhau cho php ta x l cc i s dng l nh b ng hai cch. Cch th nh t, $*, do n l m t xu n, nn c th c bi u di n linh ho t hn khng c n yu c u nhi u m shell. $@ cho php ta x l m i i s ring bi t b i v gi tr c a chng l N i s c l p. Dng ra (hay dng vo) tng ng v i cc tham s v tr l cc "t " c trong cc dng . V d , $chay vao chuong trinh roi N u chay l m t l nh th dng vo ny th: $0 c gi tr chay $1 c gi tr vao $2 c gi tr chuong $3 c gi tr trinh $4 c gi tr roi M t v d khc v bi n v tr gip ta phn bi t c s khc nhau gi a bi n $* v $@: #!/bin/bash #testparm.sh function cntparm {

1 2

echo e inside cntparm $# parms: $* } cntparm $* cntparm $@ echo e outside cntparm $* parms\n echo e outside cntparm $@ parms\n Khi ch y chng trnh ny ta s thu c k t qu : $./testparm.sh Kurt Roland Wall inside cntparm 1 parms: Kurt Roland Wall inside cntparm 3 parms: Kurt Roland Wall outside cntparm: Kurt Roland Wall outside cntparm: Kurt Roland Wall Trong dng th nh t v th 2 ta th y k t qu c s khc nhau, dng th nh t bi n $* tr v tham bi n v tr d i d ng m t xu n, v th cntparm bo co m t tham bi n n. Dng th hai g i cntparm, tr v i s dng l nh c a l 3 xu c l p, v th cntparm bo co ba tham bi n. c. Cc k t c bi t trong bash K t < > ( ) | \ & { } ~ ` ; # $ * ? M t nh h ng u vo nh h ng u ra B t u subshell K t thc subshell K hi u d n Dng hi n k t c bi t Thi hnh l nh ch y ch ng m B t u kh i l nh K t thc kh i l nh Th m c home c a ng i dng hi n t i Thay th l nh Chia c t l nh L i ch gi i Trch d n m nh Trch d n y u Bi u th c bi n K t i di n cho chu i K t i di n cho m t k t Cc k t c bi t c a bash D u chia c t l nh, ; , cho php th c hi n nh ng l nh bash ph c t p nh trn m t dng. Nhng quan tr ng hn, n l k t thc l nh theo l thuy t POSIX. K t ch gi i, # , khi n bash b qua m i k t t cho n h t dng. i m khc nhau gi a cc k t trch d n m nh v trch d n y u, v , tng ng l: trch d n m nh b t bash hi u t t c cc k t theo ngha en; trch d n y u ch b o h cho m t vi k t c bi t c a bash .

1 2

7.2. M t s l nh l p trnh trn shell


7.2.1. S d ng cc ton t bash Cc ton t string Cc ton t string, cng c g i l cc ton t thay th trong ti li u v bash, ki m tra gi tr c a bi n l cha gn gi tr ho c kh ng xc nh. B ng d i l danh sch cc ton t ny cng v i miu t c th cho ch c nng c a t ng ton t . Ton t ${var:- word} ${var:= word} ${var:+ word} ${var:?message} ${var: offset[:length]} Ch c nng N u bi n t n t i v xc nh th tr v gi tr c a n, n u khng th tr v word N u bi n t n t i v xc nh th tr v gi tr c a n, n u khng th gn bi n thnh word, sau tr v gi tr c a n N u bi n t n t i v xc nh th tr v word, cn khng th tr v null N u bi n t n t i v xc nh th tr v gi tr c a n, cn khng th hi n th bash: $var:$message v thot ra kh i l nh hay t p l nh hi n th i. Tr v m t xu con c a var b t u t i offset c a di length. N u length b b qua, ton b xu t offset s c tr v . Cc ton t string c a bash

minh ho , hy xem xt m t bi n shell c tn l status c kh i t o v i gi tr defined. S d ng 4 ton t string u tin cho k t qu status nh sau: $echo ${status:-undefined} defined $echo ${status:=undefined} defined $echo ${status:+undefined} undefined $echo ${status:?Dohhh\! undefined} defined By gi s d ng l nh unset xo bi n status, v th c hi n v n cc l nh , c output nh sau: $unset status $echo ${status:-undefined} undefined $echo ${status:=undefined} undefined $echo ${status:+undefined} undefined $unset status $echo ${status:?Dohhh\! undefined} bash:status Dohhh! Undefined 1 3

C n thi t unset status l n th hai v l nh th ba, echo ${status:+undefined}, kh i t o l i status thnh undefined. Cc ton t substring c trong danh sch b ng trn c bi t c ch. Hy xt bi n foo c gi tr Bilbo_the_Hobbit. Bi u th c ${foo:7} tr v he_Hobbit, trong khi ${foo:7:5} l i tr v he_Ho. Cc ton t Pattern-Matching Cc ton t pattern-matching c ch nh t trong cng vi c v i cc b n ghi di bi n hay cc xu c nh d ng t do c nh gi i b i cc k t c nh. Bi n mi tr ng $PATH l m t v d . M c d n c th kh di, cc th m c ring bi t c phn nh b i d u hai ch m. B ng d i l danh sch cc ton t Pattern-Matching c a bash v ch c nng c a chng. Ton t ${var#pattern} Ch c nng Xo b ph n kh p (match) ng n nh t c a pattern tr c var v tr v ph n cn l i ${var##pattern} Xo b ph n kh p (match) di nh t c a pattern tr c var v tr v ph n cn l i ${var%pattern} Xo b ph n kh p ng n nh t c a pattern cu i var v tr v ph n cn l i ${var%%pattern} Xo b ph n kh p di nh t c a pattern cu i var v tr v ph n cn l i ${var/pattern/string} Thay ph n kh p di nh t c a pattern trong var b ng string. Ch thay ph n kh p u tin. Ton t ny ch c trong bash 2.0 hay l n hn. ${var//pattern/string} Thay ph n kh p di nh t c a pattern trong var b ng string. Thay t t c cc ph n kh p. Ton t ny c trong bash 2.0 ho c l n hn. Cc ton t bash Pattern-Matching Thng th ng quy t c chu n c a cc ton t bash pattern-matching l thao tc v i file v tn ng d n. V d , gi s ta c m t tn bi n shell l mylife c gi tr l /usr/src/linux/Documentation/ide.txt (ti li u v trnh i u khi n a IDE c a nhn). S d ng m u /* v */ ta c th tch c tn th m c v tn file. #!/bin/bash ############################################ myfile=/usr/src/linux/Documentation/ide.txt echo ${myfile##*/}= ${myfile##*/} echo basename $myfile = $(basename $myfile) echo ${myfile%/*}= ${myfile%/*} echo dirname $myfile = $(dirname $myfile) L nh th 2 xo xu matching */ di nh t trong tn file v tr v tn file. L nh th 4 lm kh p t t c m i th sau /, b t u t cu i bi n, b tn file v tr v ng d n c a file. K t qu c a t p l nh ny l: $ ./pattern.sh

1 3

${myfile##*/} = ide.txt basename $myfile = ide.txt ${myfile%/*} = /usr/src/linux/Documentation dirname $myfile = /usr/src/linux/Documentation minh ho v cc ton t pattern-matching v thay th , l nh thay th m i d u hai ch m trong bi n mi tr ng $PATH b ng m t dng m i, k t qu hi n th ng d n r t d c (v d ny s sai n u ta khng c bash phin b n 2.0 ho c m i hn): $ echo e ${PATH//:/\\n} /usr/local/bin /bin /usr/bin /usr/X11R6/bin /home/kwall/bin /home/wall/wp/wpbin Cc ton t so snh chu i ki m tra str1 = str2 str1 != str2 -n str -z str Cc ton t so snh s h c ki m tra -eq -ge -gt -le -lt -ne i u ki n th c str1 b ng str2 str1 khc str2 str c di l n hn 0 (khc null) str c di b ng 0 (null) Ton t snh chu i c a bash i u ki n th c b ng l n hn ho c b ng l n hn nh hn ho c b ng nh hn khc Cc cch test s nguyn c a bash

7.2.2. i u khi n lu ng Cc c u trc i u khi n lu ng c a bash, n bao g m: if Thi hnh m t ho c nhi u cu l nh n u c i u ki n l true ho c false. for Thi hnh m t ho c nhi u cu l nh trong m t s c nh l n. while Thi hnh m t ho c nhi u cu l nh trong khi m t i u ki n no l true ho c false. until Thi hnh m t ho c nhi u cu l nh cho n khi m t i u ki n no tr thnh true ho c false. case Thi hnh m t ho c nhi u cu l nh ph thu c vo gi tr c a bi n. select Thi hnh m t ho c nhi u cu l nh d a trn m t kho ng tu ch n c a ng i dng. 1 3

7.2.2.1 C u trc r nhnh c i u ki n if


Bash cung c p s th c hi n c i u ki n l nh no s d ng cu l nh if, cu l nh if c a bash y ch c nng nh c a C. C php c a n c khi qut nh sau: if condition then statements [elif condition statements] [else statements] fi u tin, ta c n ph i ch c ch n r ng mnh hi u if ki m tra tr ng thi thot c a cu l nh last trong condition. N u n l 0 (true), sau statements s c thi hnh, nhng n u n khc 0, th m nh else s c thi hnh v i u khi n nh y t i dng u tin c a m fi. Cc m nh elif (tu ch n) (c th nhi u tu ) s ch thi hnh khi i u ki n if l false. Tng t , m nh else (tu ch n) s ch thi hnh khi t t c else khng th a mn. Nhn chung, cc chng trnh Linux tr v 0 n u thnh cng hay hon ton bnh th ng, v khc 0 n u ng c l i, v th khng c h n ch no c . Ch : Khng ph i t t c chng trnh u tun theo cng m t chu n cho gi tr tr v , v th c n ki m tra ti li u v cc chng trnh ta ki m tra m thot v i i u ki n if. V d chng trnh diff, tr v 0 n u khng c g khc nhau, 1 n u c s khc bi t v 2 n u c v n no . N u m t cu i u ki n ho t ng khng nh mong i th hy ki m tra ti li u v m thot . Khng quan tm n cch m chng trnh xc nh m thot c a chng, bash l y 0 c ngha l true ho c bnh th ng cn khc 0 l false. N u ta c n c th ki m tra m t m thot c a l nh, s d ng ton t $? ngay sau khi ch y l nh. $? tr v m thot c a l nh ch y ngay lc . Ph c t p hn, bash cho php ta ph i h p cc m thot trong ph n i u ki n s d ng cc ton t && v || c g i l ton t logic AND v OR. C php y cho ton t AND nh sau: command1 && command2 Cu l nh command2 ch c ch y khi v ch khi command1 tr v tr ng thi l s 0 (true). C php cho ton t OR th nh sau: command1 || command2 Cu l nh command2 ch c ch y khi v ch khi command1 tr l i m t gi tr khc 0 (false). Ta c th k t h p l i c 2 lo i ton t l i c m t bi u th c nh sau: command1 && comamnd2 || command3 N u cu l nh command1 ch y thnh cng th shell s ch y l nh command2 v n u command1 khng ch y thnh cng th command3 c ch y.

1 3

V d : $ rm myf && echo "File is removed successfully" || echo "File is not removed" N u file myf c xa thnh cng (gi tr tr v c a l nh l 0) th l nh "echo File is removed successfully" s c th c hi n, n u khng th l nh "echo File is not removed" c ch y. Gi s tr c khi ta vo trong m t kh i m, ta ph i thay i m t th m c v copy m t file. C m t cch th c hi n i u ny l s d ng cc ton t if l ng nhau, nh l o n m sau: if cd /home/kwall/data then if cp datafile datafile.bak then # more code here fi fi Tuy nhin, bash cho php ta vi t o n m ny sc tch hn nhi u nh sau: if cd /home/kwall/data && cp datafile datafile.bak then # more code here fi C hai o n m u th c hi n cng m t ch c nng, nhng o n th hai ng n hn nhi u, g n nh v n gi n. M c d if ch ki m tra cc m thot, ta c th s d ng c u trc [] l nh test ki m tra cc i u ki n ph c t p hn. [condition] tr v gi tr bi u th condition l true hay false. test cng c tc d ng tng t . M t v d khc v cch s d ng c u trc if:
#!/bin/sh # Script to test if..elif...else # if [ $1 -gt 0 ]; then echo "$1 is positive" elif [ $1 -lt 0 ] then echo "$1 is negative" elif [ $1 -eq 0 ] then echo "$1 is zero" else echo "Opps! $1 is not number, give number" fi

S l ng cc php ton i u ki n c a bi n hi n t i kho ng 35, kh nhi u v hon ch nh. Ta c th ki m tra cc thu c tnh file, so snh cc xu v cc bi u th c s h c. Ch : Cc kho ng tr ng tr c d u m ngo c v sau d u ng ngo c trong [condition] l c n ph i c. y l i u ki n c n thi t trong c php shell c a bash. B ng d i l danh sch cc ton t test file ph bi n nh t (danh sch hon ch nh c th tm th y trong nh ng trang manual y v bash). 1 3

Ton t -d file -e file -f file -r file -s file -w file -x file -O file -G file file1 -nt file2 file1 -ot file2

i u ki n true file t n t i v l m t th m c file t n t i file t n t i v l m t file bnh th ng(khng l m t th m c hay m t file c bi t) file cho php c file t n t i v khc r ng file cho php ghi file kh thi ho c n u file l m t th m c th cho php tm ki m trn file file c a ng i dng hi n t i file thu c m t trong cc nhm ng i dng hi n t i l thnh vin file1 m i hn file2 file1 c hn file2 Cc ton t test file c a bash

V d chng trnh shell cho cc ton t test file trn cc th m c trong bi n $PATH. M cho chng trnh descpath.sh nh sau: #!/bin/bash ################################ IFS=: for dir in $PATH; do echo $dir if [ -w $dir ]; then echo -e "\tYou have write permission in $dir" else echo e \tYou dont have write permission in $dir fi if [ -0 $dir ]; then echo -e "\tYou own $dir" else echo e \tYou dont own $dir fi if [ -G $dir ]; then echo -e "\tYou are a member of $dir's group" else echo -e "\tYou aren't a member of $dir's group" fi done Chng trnh descpath.sh

1 3

Vng l p for (gi i thi u trong ph n d i) s duy t ton b cc ng d n th m c trong bi n PATH sau ki m tra cc thu c tnh c a th m c . K t qu nh sau (k t qu c th khc nhau trn cc my khc nhau do gi tr c a bi n PATH khc nhau): /usr/local/bin You dont have write permission in /usr/local/bin You dont own /usr/local/bin You arent a member of /usr/local/bins group /bin You dont have write permission in /bin You dont own /bin You arent a member of /bins group /usr/bin You dont have write permission in /usr/bin You dont own /usr/bin You arent a member of /usr/bins group /usr/X11R6/bin You dont have write permission in /usr/X11R6/bin You dont own /usr/X11R6/bin You arent a member of /usr/X11R6/bins group /home/kwall/bin You have write permission in /home/kwall/bin You own /home/kwall/bin You are a member of /home/kwall/bins group /home/kwall/wp/wpbin You have write permission in /home/kwall/wp/wpbin You own /home/kwall/wp/wpbin You are a member of /home/kwall/wp/wpbins group Cc bi u th c trong ph n i u ki n cng c th k t h p v i nhau t o thnh cc bi u th c ph c t p hn b ng cc php ton logic. D i y l m t b ng cc bi u th c logic trong shell. Ton t ! expression expression1 -a expression2 expression1 -o expression2 ngha Logical NOT Logical AND Logical OR

7.2.2.2 Cc vng l p quy t nh: for


Nh th y chng trnh trn, for cho php ta ch y m t o n m m t s l n nh t nh. Tuy nhin c u trc for c a bash ch cho php ta l p i l p l i trong danh sch cc gi tr nh t nh b i v n khng t ng tng hay gi m con m vng l p nh l C, Pascal, hay Basic. Tuy nhin vng l p for l cng c l p th ng xuyn c s d ng b i v n i u khi n g n gng trn cc danh sch, nh l cc tham s dng l nh v cc danh sch cc file trong th m c. C php y c a for l: for value in list

1 3

do statements using $value done list l m t danh sch cc gi tr , v d nh l tn file. Gi tr l m t thnh vin danh sch n v statements l cc l nh s d ng value. M t c php khc c a l nh for c d ng nh sau:
for (( expr1; expr2; expr3 )) do ..... ... repeat all statements between do and done until expr2 is TRUE done

Linux khng c ti n ch i tn hay copy cc nhm c a file. Trong MS-DOS n u ta c 17 file c ph n m r ng a*.doc, ta c th s d ng l nh COPY copy *.doc thnh file *.txt. L nh DOS nh sau: C:\ cp doc\*.doc doc\*.txt s d ng vng l p for c a bash b p nh ng thi u st ny. o n m d i y c th c chuy n thnh chng trnh shell th c hi n ng nh nh ng g ta mu n: for docfile in doc/*.doc do cp $docfile ${docfile%.doc}.txt done S d ng m t trong cc ton t pattern-matching c a bash, o n m ny lm vi c copy cc file c ph n m r ng l *.doc b ng cch thay th .doc cu i c a tn file b ng .txt. M t v d khc v vng for n gi n nh sau: #!/bin/bash
for i in 1 2 3 4 5 do echo "Welcome $i times" done

Ta cng c m t c u trc v for nh sau, chng trnh ny cng c cng ch c nng nh chng trnh trn nhng ta ch n s khc bi t v c php c a l nh for. #!/bin/bash
for (( i = 0 ; i <= 5; i++ do echo "Welcome $i times" done ))

$ chmod +x for2 $ ./for2 Welcome 0 times Welcome 1 times Welcome 2 times Welcome 3 times 1 3

Welcome 4 times Welcome 5 times Ti p theo l m t v d v vng for l ng nhau: #!/bin/bash


for (( i = 1; i <= 5; i++ )) do ### Outer for loop ###

for (( j = 1 ; j <= 5; j++ )) ### Inner for loop ### do echo -n "$i " done

V d khc v cch s d ng c u trc if v for nh sau: #!/bin/sh #Script to test for loop # # if [ $# -eq 0 ] then echo "Error - Number missing form command line argument" echo "Syntax : $0 number" echo "Use to print multiplication table for given number" exit 1 fi n=$1 for i in 1 2 3 4 5 6 7 8 9 10 do echo "$n * $i = `expr $i \* $n`" done Khi ta ch y chng trnh v i tham s : $ chmod 755 mtable $ ./mtable 7 Ta thu c k t qu nh sau: 7*1=7 7 * 2 = 14 ... .. 7 * 10 = 70

7.2.2.3 Cc vng l p khng xc nh: while v until

1 3

Vng l p for gi i h n s l n m m t o n m c thi hnh, cc c u trc while v until c a bash cho php m t o n m c thi hnh lin t c cho n khi m t i u ki n no x y ra. Ch v i ch l o n m ny c n vi t sao cho i u ki n cu i ph i x y ra n u khng s t o ra m t vng l p v t n. C php c a n nh sau: while condition do statements done C php ny c ngha l khi no condition cn true, th th c hi n statements cho n khi condition tr thnh false (cho n khi m t chng trnh hay m t l nh tr v khc 0): until condition do statements done C php until c ngha l tri ng c v i while: cho n khi condition tr thnh true th thi hnh statements (c ngha l cho n khi m t l nh hay chng trnh tr v m thot khc 0) C u trc while c a bash kh c ph c thi u st khng th t ng tng, gi m con m cua vng l p for. V d , ta mu n copy 150 b n c a m t file, th vng l p while l m t l a ch n gi i quy t bi ton ny. D i y l chng trnh: #!/bin/sh # declare -i idx idx=1 while [ $idx != 150] do cp somefile somefile.$idx idx=$idx+1 done Chng trnh ny gi i thi u cch s d ng tnh ton s nguyn c a bash. Cu l nh declare kh i t o m t bi n, idx, nh ngha l m t s nguyn. M i l n l p idx tng ln, n s c ki m tra thot kh i vng l p. Vng l p until tuy cng c kh nng gi ng while nhng khng c dng nhi u v r t kh vi t v ch y ch m. M t v d n a v cch s d ng vng l p while c minh h a trong chng trnh in b n nhn c a m t s :
#!/bin/sh #Script to test while statement # # if [ $# -eq 0 ] then echo "Error - Number missing form command line argument" echo "Syntax : $0 number" echo " Use to print multiplication table for given number" exit 1 fi n=$1 i=1 while [ $i -le 10 ]

1 3

do echo "$n * $i = `expr $i \* $n`" i=`expr $i + 1` done

7.2.2.4 Cc c u trc l a ch n: case v select


C u trc i u khi n lu ng ti p theo l case, ho t ng cng tng t nh l nh switch c a C. N cho php ta th c hi n cc kh i l nh ph thu c vo gi tr c a bi n. C php y c a case nh sau: case expr in pattern1 ) statements ;; pattern2 ) statements ;; [*) statements ;;] esac expr c em i so snh v i t ng pattern, n u n b ng nhau th cc l nh tng ng s c thi hnh. D u ;; l tng ng v i l nh break c a C, t o ra i u khi n nh y t i dng u tin c a m esac. Khng nh t kho switch c a C, l nh case c a bash cho php ta ki m tra gi tr c a expr d a vo pattern, n c th ch a cc k t i di n. Cch lm vi c c a c u trc case nh sau: n s kh p (match) bi u th c expr v i cc m u pattern1, pattern2,n u c m t m u no kh p th kh i l nh tng ng v i m u s c th c thi, sau n thot ra kh i l nh case. N u t t c cc m u u khng kh p v ta c s d ng m u * (trong nhnh *)), ta th y y l m u c th kh p v i b t k gi tr no (k t i di n l *), nn cc l nh trong nhnh ny s c th c hi n. C u trc i u khi n select (khng c trong cc phin b n bash nh hn 1.14) ch ring c trong Korn v cc shell bash. Thm vo , n khng c s tng t nh trong cc ngn ng l p trnh quy c. select cho php ta d dng trong vi c xy d ng cc menu n gi n v p ng cc ch n l a c a ng i dng. C php c a n nh sau: select value [in list] do statements that manipulate $value done D i y l m t v d v cch s d ng l nh select: #!/bin/bash # menu.sh Createing simple menus with select ####################################### IFS=: PS3=choice? # clear the screen clear

1 4

select dir in $PATH do if [ $dir ]; then cnt=$(ls Al $dir | wc -l) echo $cnt files in $dir else echo Dohhh! No such choice! fi echo e \nPress ENTER to continue, CTRL C to quit read clear done Chng trnh t o cc menu b ng select L nh u tin t k t IFS l : (k t phn cch), v th select c th phn tch hon ch nh bi n mi tr ng $PATH. Sau n thay i l i nh c default khi select b ng bi n PS3. Sau khi xo s ch mn hnh, n b c vo m t vng l p, a ra m t danh sch cc th m c n m trong $PATH v nh c ng i dng ch n l a nh l minh ho trong hnh d i.

N u ng i dng ch n h p l , l nh ls c th c hi n k t qu c g i cho l nh m t wc m s file trong th m c v hi n th k t qu c bao nhiu file trong th m c . Do ls c th s d ng m khng c n i s , script u tin c n ch c ch n l $dir khc null (n u n l null, ls s ho t ng trn th m c hi n hnh n u ng i dng ch n 1 menu khng h p l ). N u ng i dng ch n khng h p l , m t thng bo l i s c hi n th . Cu l nh read ( c gi i thi u sau) cho php ng i dng nh vo l a ch n c a mnh v nh n Enter l p l i vng l p hay nh n Ctrl + C thot. Ch : Nh gi i thi u, cc vng l p script khng k t thuc n u ta khng nh n Ctrl+C. Tuy nhin ta c th s d ng l nh break thot ra. 1 4

7.2.2.5 Cc hm shell
Cc hm ch c nng c a bash l m t cch m r ng cc ti n ch s n c trong shell, n c cc i m l i sau: Thi hnh nhanh hn do cc hm shell lun th ng tr c trong b nh . Cho php vi c l p trnh tr nn d dng hn v ta c th t ch c chng trnh thnh cc module. Ta c th nh ngha cc hm shell s d ng theo hai cch: function fname { commands } ho c l fname() { commands } C hai d ng u c ch p nh n v khng c g khc gi a chng. g i m t hm nh ngha n gi n l g i tn hm cng v i cc i s m n c n. N u so snh v i C hay Pascal, hm c a bash khng c ch t ch , n khng ki m tra l i v khng c phng th c tr v i s b ng gi tr . Tuy nhin gi ng nh C v Pascal, cc bi n a phng c th khai bo c c b i v i hm, do trnh c s xung t v i bi n ton c c. th c hi n i u ny ta dng t kho local nh trong o n m sau: function foo { local myvar local yourvar=1 } Trong v d v cc bi n v tr trn ta cng th y c cch s d ng hm trong bash. Cc hm shell gip m c a ta d hi u v d b o d ng. S d ng cc hm v cc ch thch ta s r t nhi u cng s c khi ta ph i tr l i nng c p o n m m ta vi t t th i gian r t lu tr c . 7.2.3 Cc ton t nh h ng vo ra Ta c bi t v cc ton t nh h ng vo ra, > v <. Ton t nh h ng ra cho php ta g i k t qu ra c a m t l nh vo m t file. V d nh l nh sau: $ cat $HOME/.bash_profile > out N s t o m t file tn l out trong th m c hi n t i ch a cc n i dung c a file bash_profile, b ng cch nh h ng u ra c a cat t i file . Tng t , ta c th cung c p u vo l m t lnh t m t file ho c l l nh s d ng ton t u vo, <. Tac th vi t l i l nh cat s d ng ton t nh h ng u vo nh sau: $ cat < $HOME/.bash_profile > out

1 4

K t qu c a l nh ny v n nh th nhng n cho ta hi u thm v cch s d ng nh h ng u vo u ra. Ton t nh h ng u ra, >, s ghi ln b t c file no ang t n t i. i khi i u ny l khng mong mu n, v th bash cung c p ton t n i thm d li u, >>, cho php n i thm d li u vo cui file. Hay xem l nh thm b danh cdlpu vo cu i c a file .bashrc c a ti: $echo alias cdlpu=cd $HOME/kwall/projects/lpu >> $HOME/.bashrc M t cch s d ng nh h ng u vo l u vo chu n (bn phm). C php c a l nh ny nh sau: Command << label Input Label C php ny ni ln r ng command c cc input cho n khi n g p label. D i y l v d v cch s d ng c u trc ny: #!/bin/bash #################################### USER=anonymous PASS=kwall@xmission.com ftp -i -n << END open ftp.caldera.com user $USER $PASS cd /pub ls close END 7.2.4. Hi n dng vn b n L nh echo hi n ra dng vn b n c ghi ngay trong dng l nh c c php: echo [ty ch n] [xu k t ] v i cc ty ch n nh sau: -n : hi n xu k t v d u nh c trn cng m t dng. -e : b t kh nng thng d ch c cc k t -E : t t kh nng thng d ch c cc k t i u khi n. i u khi n.

--help : hi n h tr v thot. M t s b n Linux khng h tr tham s ny. V d , dng l nh echo v i tham s -e # echo -e th dng l nh echo \n s th y hi n ra chnh dng vn b n l nh: th dng l nh echo # y k t i u khi n \n l k t xu ng dng.

1 4

7.2.5. L nh read c d li u cho bi n ng i dng L nh read c d ng read <tn bi n> V d chng trnh shell c tn thu1.arg c n i dung nh sau: #!/bin/sh # Chuong trinh hoi ten nguoi va hien lai echo "Ten anh la gi?" read name echo "Xin chao, $name , anh go $# doi so" echo "$*" Sau , ta th c hi n $chmod u+x thu1.arg v $thu1.arg Hoi ten nguoi va hien lai s th y xu t hi n Ten anh la gi? Tran Van An Xin chao, Tran Van An, anh go 6 doi so Hoi ten nguoi va hien lai 7.2.6. L nh set gn k t qu ra t l nh shell ra cc bi n t ng, ta dng l nh set D ng l nh set set `<l nh>` Sau l nh ny, k t qu th c hi n l nh khng hi ra l mn hnh m gn k t qu tng ng cho cc bi n t ng. M t cch t ng cc t trong k t qu th c hi n l nh s gn tng ng cho cc bi n t ng (t $1 tr i). Xem xt m t v d sau y (chng trnh thu2.arg) c n i dung: #!/bin/sh # Hien thoi diem chay chuong trinh nay set `date` echo "Thoi gian: $4 $5" echo "Thu: $1" echo "Ngay $3 thang $2 nam $6" Sau khi i mode c a File chng trnh ny v ch y, chng ta nh n c: Thoi gian: 7:20:15 EST Thu: Tue Ngay 20 thang Oct nam 1998 Nh v y, $# = 6 $* = Tue Oct 20 7:20:15 EST 1998 $1 = Tue $2=Oct $3 = 20 $4 = 7:20:15 $5 = EST $6 = 1998 7.2.7. Tnh ton trn cc bi n Cc tnh ton trong shell c th c hi n v i cc i s nguyn. Cc php ton g m c: c ng (+), tr (-), nhn (*), chia (/), mod (%). Bi u th c th c hi n theo cc php ton nu. Tnh ton trn shell c d ng: `expr <bi u th c>` 1 4

V d , chng trnh v i tn cong.shl sau y: #!/bin/sh # Tinh va in hai so tong = `expr $1 + $2` echo "Tong = $tong" Sau , khi i mod v ch y $cong.shl 5 6 s hi n ra: Tong = 11 7.2.8. Chng trnh v d /* Program 5 */ #!/bin/sh # Chuong trinh liet ke cac thu muc con cua 1 thu muc # Minh hoa cach su dung if then fi, while do done # va cac CT test, expr if test $# -ne 1 then echo Cu phap: $0 \<Ten thu muc\> exit 1 fi cd $1 if test $? -ne 0 then exit 1 fi ls -lL |\ # Liet ke ca cac thong tin cua symbolic link # Su dung sub-shell de tu giai phong bien { sum=0 # Lenh read x y de bo di dong 'total 1234..' cua lenh ls -lL read x y ; while read mode link user group size month day hour name do if [ -d $name ] then echo $name $size \($mode\) 1 4 # Chuyen vao thu muc can list # Neu thu muc khong ton tai thi ra khoi CT

fi done }

7.3. L p trnh C trn UNIX


7.3.1. Trnh bin d ch gcc H i u hnh UNIX lun km theo b d ch ngn ng l p trnh C v i tn g i l cc (C compiler). Trong Linux, b d ch c tn l gcc (GNU C Compiler) v i ngn ng l p trnh khng khc nhi u v i C chu n. N i dung chi ti t v cc ngn ng l p trnh trn Linux thu c ph m vi c a cc ti li u khc. gcc cho ng i l p trnh ki m tra trnh bin d ch. Qu trnh bin d ch bao g m b n giai o n: Ti n x l Bin d ch T ph p Lin k t Ta c th d ng qu trnh sau m t trong nh ng giai o n ki m tra k t qu bin d ch t i giai o n y. gcc cng c th ch p nh n ngn ng khc c a C, nh ANSI C hay C truy n th ng. Nh ni trn, gcc thch h p bin d ch C++ hay Objective-C. Ta c th ki m sot l ng cng nh ki u thng tin c n debug, t t nhin l c th nhng trong qu trnh nh phn ha k t qu v gi ng nh h u h t cc trnh bin d ch, gcc cng th c hi n t i u ha m. Tr c khi b t u i su vo nghin c u gcc, ta xem m t v d sau: #include<stdio.h> int main (void) { fprintf( stdout, Hello, Linux programming world!\n); return 0; } M t chng trnh i n hnh dng minh ho vi c s d ng gcc

bin d ch v ch y chng trnh ny hy g: $ gcc hello.c o hello $ ./hello Hello, Linux programming world! Dng l nh u tin ch cho gcc ph i bin d ch v lin k t file ngu n hello.c, t o ra t p tin th c thi, b ng cch ch nh s d ng i s -o hello. Dng l nh th hai th c hi n chng trnh, v k t qu cho ra trn dng th 3. C nhi u ch m ta khng nhn th y c, gcc tr c khi ch y hello.c thng qua b ti n x l c a cpp, m r ng b t k m t macro no v chn thm vo n i dung c a nh ng file #include. Ti p n, n bin d ch m ngu n ti n x l sang m obj . Cu i cng, trnh lin k t, t o ra m nh phn cho chng trnh hello.
1 4

Ta c th t o l i t ng b c ny b ng tay, chia thnh t ng b c qua ti n trnh bin d ch. ch cho gcc bi t ph i d ng vi c bin d ch sau khi ti n x l, ta s d ng tu ch n E c a gcc: $ gcc E hello.c o hello.cpp Xem xt hello.cpp v ta c th th y n i dung c a stdio.h c chn vo file, cng v i nh ng m thng bo ti n x l khc. B c ti p theo l bin d ch hello.cpp sang m obj. S d ng tu ch n c c a gcc hon thnh: $ gcc x cpp-output -c hello.cpp o hello.o Trong tr ng h p ny, ta khng c n ch nh tn c a file output b i v trnh bin d ch t o m t tn file obj b ng cch thay th .c b i .o. Tu ch n x ch cho gcc bi t b t u bin d ch b c c ch bo trong tr ng h p ny v i m ngu n ti n x l. Lm th no gcc bi t chia lo i c bi t c a file? N d a vo ui m r ng c a file trn xc nh r ph i x l file nh th no cho dng. H u h t nh ng ui m r ng thng th ng v ch thch c a chng c li t k trong b ng d i.
Ph n m r ng .c .c, .cpp .i .ii Ki u

.S, .s .o .a, .so

M ngu n ngn ng C M ngu n ngn ng C++ M ngu n C ti n x l M ngu n C++ ti n x l M ngu n Hp ng M i t ng bin d ch (obj) M th vi n bin d ch Cc ph n m r ng c a tn file i v i gcc

Lin k t file i t ng, v cu i cng t o ra m nh phn: $ gcc hello.o o hello Trong tr ng h p , ta ch mu n t o ra cc file obj, v nh v y th b c lin k t l khng c n thi t. H u h t cc chng trnh C ch a nhi u file ngu n th m i file ngu n u ph i c bin d ch sang m obj tr c khi t i b c lin k t cu i cng. Gi s c m t v d , ta ang lm vi c trn killerapp.c l chng trnh s d ng ph n m c a helper.c, nh v y bin d ch killerapp.c ta ph i dng dng l nh sau: $ gcc killerapp.c helper.c o killerapp gcc qua l n l t cc b c ti n x l - bin d ch lin k t, lc ny t o ra cc file obj cho m i file ngu n tr c khi t o ra m nh phn cho killerapp. M t s tu ch n dng l nh c a gcc:
-o FILE Ch nh tn file output; khng c n thi t khi bin d ch sang m obj. N u FILE khng c ch r th tn m c nh s l a.out.

-c

Bin d ch khng lin k t.

1 4

-DF00=BAR -IDIRNAME -LDIRNAME

-static -lF00 -g -ggdb -O -ON -ANSI -pedantic -pedantic-erors -traditional -w -Wall -werror -MM -v
7.3.2. Cng c GNU make

nh ngha macro ti n x l t tn F00 v i m t gi tr c a BAR trn dng l nh. Tr c khi cha quy t nh c DIRNAME hy tm ki m nh ng file include trong danh sch cc th m c( tm trong danh sch cc ng d n th m c) Tr c khi cha quy t nh c DIRNAME hy tm ki m nh ng file th vi n trong danh sch cc th m c. V i m c nh gcc lin k t d a trn nh ng th vi n dng chung Lin k t d a trn nh ng th vi n tnh Lin k t d a trn libF00 Bao g m chu n g r i thng tin m nh phn Bao g m t t c thng tin m nh phn m ch c chng trnh g r i GNU- gdb m i c th hi u c T i u ho m bin d ch Ch nh m t m c t i u ho m N, 0<=N<=3. H tr chu n ANSI/ISO c a C, lo i b nh ng m r ng c a GNU m xung t v i chu n( tu ch n ny khng b o m m theo ANSI). Cho ra t t c nh ng c nh bo quy nh b i chu n Thng bo ra t t c cc l i quy nh b i chu n ANSI/ISO c a C. H tr cho c php ngn ng C c a Kernighan v Ritchie (gi ng nh c php nh ngha hm ki u c). Ch n t t c thng i p c nh bo. Thng bo ra t t c nh ng c nh bo h u ch thng th ng m gcc c th cung c p. Chuy n i t t c nh ng c nh bo sang l i m s lm ngng ti n trnh bin d ch. Cho ra m t danh sch s ph thu c tng thch c t o. Hi n ra t t c cc l nh s d ng trong m i b c c a ti n trnh bin d ch.

Trong tr ng h p ta vi t m t chng trnh r t l n c c u thnh b i t nhi u file, vi c bin d ch s r t ph c t p v ph i vi t cc dng l nh gcc r t l di. kh c ph c tnh tr ng ny, cng c GNU make c a ra. GNU make c gi i quy t b ng cch ch a t t c cc dng l nh ph c t p trong m t file g i l makefile. N cng lm t i u ha qu trnh d ch b ng cch pht hi n ra nh ng file no c thay i th n m i d ch l i, cn file no khng b thay i th n s khng lm g c , v v y th i gian d ch s c rt ng n.

1 4

M t makefile l m t c s d li u vn b n ch a cch lu t, cc lu t ny s bo cho chng trnh make bi t ph i lm g v lm nh th no. M t lu t bao g m cc thnh ph n nh sau: ch (target) ci m make ph i lm M t danh sch cc thnh ph n ph thu c (dependencies) c n t o ra ch M t danh sch cc cu l nh th c thi trn cc thnh ph n ph thu c Khi c g i, GNU make s tm cc file c tn l GNUmakefile, makefile hay Makefile. Cc lu t s c c php nh sau: target: dependency1, dependency2, . command command Target th ng l m t file nh file kh thi hay file object ta mu n t o ra. Dependency l m t danh sch cc file c n thi t nh l u vo t o ra target. Command l cc b c c n thi t (ch ng h n nh g i chng trnh d ch) t o ra target. D i y l m t v d v m t makefile v t o ra m t chng trnh kh thi c tn l editor (s hi u dng ch a vo ti n theo di, cn n i dung c a makefile khng ch a s hi u dng). Chng trnh ny c t o ra b i m t s cc file ngu n: editor.c,
editor.h, keyboard.h, screen.h, screen.c, keyboard.c. 1. editor : editor.o screen.o keyboard.o 2. gcc -o editor.o screen.o keyboard.o 3. editor.o : editor.c editor.h keyboard.h screen.h 4. gcc -c editor.c 5. screen.o : screen.c screen.h 6. gcc -c screen.c 7. keyboard.o : keyboard.c keyboard.h 8. gcc -c keyboard.c 9. clean: 10. rm *.o

bin d ch chng trnh ny ta ch c n ra l nh make trong th m c ch a file ny. Trong makefile ny ch a t t c 5 lu t, lu t u tin c ch l editor c g i l ch ng m nh. y chnh l file m make s ph i t o ra, editor c 3 dependencies editor.o, screen.o, keyboard.o. T t c cc file ny ph i t n t i th m i t o ra c ch trn. Dng th 2 l l nh m make s g i th c hi n t o ra ch trn. Cc dng ti p theo l cc ch v cc l nh tng ng t o ra cc file i t ng (object).
7.3.3. Lm vi c v i file

Trong Linux, lm vi c v i file ta s d ng m t file (file descriptor). M t trong nh ng thu n l i trong Linux v cc h th ng UNIX khc l giao di n file lm nh nhau i v i nhi u lo i thi t b . a t , cc thi t b vo/ra, c ng song song, gi
1 4

my tr m (pseudoterminal), c ng my in, b ng m ch m thanh, v chu t c qu n l nh cc thi t b c bi t gi ng nh cc t p thng th ng l p trnh ng d ng. Cc socket TCP/IP v mi n, khi k t n i c thi t l p, s d ng m t file nh th chng l cc file chu n. Cc ng (pipe) cng tng t cc file chu n. M t m t file n gi n ch l m t s nguyn c s d ng nh ch m c (index) vo m t b ng cc file m lin k t v i t ng ti n trnh. Cc gi tr 0, 1 v 2 lin quan n cc dng (streams) vo ra chu n: stdin, stderr v stdout; ba dng th ng k t n i v i my c a ng i s d ng v c th c chuy n ti p (redirect). M t s l i g i h th ng s d ng m t file. H u h t cc l i g i tr v gi tr -1 khi c l i x y ra v bi n errno ghi m l i. M l i c ghi trong trang chnh tu theo t ng l i g i h th ng. Hm perror() c s d ng hi n th n i dung thng bo l i d a trn m l i.
Hm open()

L i g i open() s d ng m m t file. Khun m u c a hm v gi i thch tham s v c c a n c cho d i y: #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> int open(const char *pathname, int flags); int open(const char *pathname, int flags, mode_t mode); i s pathname l m t xu ch ra ng d n n file s c m . Thng s th ba xc nh ch c a file Unix (cc bit c php) c s d ng khi t o m t file v nn c s d ng khi t o m t file . Tham s flags nh n m t trong cc gi tr O_RDONLY, O_WRONLY ho c O_RDWR
C
O_RDONLY O_WRONLY O_RDWR O_CREAT O_EXCL O_NOCTTY O_TRUNC O_APPEND O_NONBLOCK O_NODELAY O_SYNC

Ch gi i
M file c M file ghi M file c v ghi T o file n u cha t n t i file Th t b i n u file c Khng i u khi n tty n u tty m v ti n trnh khng i u khi n tty C t file n u n t n t i N i thm v con tr t cu i file N u m t qu trnh khng th hon thnh m khng c tr , tr v tr ng thi tr c Tng t O_NONBLOCK Thao tc s khng tr v cho n khi d li u c ghi vo a ho c thi t b khc

Cc gi tr c c a hm open()

1 5

open() tr v m t m t file n u khng c l i x y ra. Khi c l i , n tr v gi tr -1 v t gi tr cho bi n errno. Hm create() cng tng t nh open() v i cc c O_CREATE | O_WRONLY | O_TRUNC Hm close() Chng ta nn ng m t file khi thao tc xong v i n. Ch c m t m t file m l i g i open() tr v . D ng c a l i g i close() l: #include <unistd.h> int close(int fd);

is

l s

T t c cc kho (lock) do ti n trnh x l trn file c gi i phng, cho d chng c t m t file khc. N u qu trnh ng file lm cho b m lin k t b ng 0 th file s b xo. N u y l m t file cu i cng lin k t n m t file c m th b n ghi b ng file m c gi i phng. N u khng ph i l m t file bnh th ng th cc hi u ng khng mong mu n c th x y ra. Hm read() L i g i h th ng read() s d ng c d li u t file tng ng v i m t m t file. #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); is u tin l m t file m c tr v t l i g i open() tr c . i s th hai l m t con tr t i b m sao chp d li u v i s th ba l s byte s c c. read() tr v s byte c c ho c -1 n u c l i x y ra. Hm write() L i g i h th ng write() s d ng ghi d li u vo file tng ng v i m t m t file. #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); is u tin l s m t file c tr v t l i g i open() tr c . i s th hai l con tr t i b m ( sao chp d li u, c dung l ng l n ch a d li u) v i s th ba xc nh s byte s c ghi. write() tr v s byte c ho c -1 n u c l i x y ra Hm ftruncate() L i g i h th ng ftruncate() c t file tham chi u b i m t file fd v i nh b i tham s length #include <unistd.h> int ftruncate(int fd, size_t length); Tr v gi tr 0 n u thnh cng v -1 n u c l i x y ra. Hm lseek() Hm lseek() t i v tr offset t v tr c v ghi hi n t i trong file c tham chi u b i m t file files di c xc

1 5

#include <sys/types.h> #include <unistd.h> off_t lseek(int fildes, off_t offset, int whence); Ph thu c vo gi tr c a whence, gi tr c a offset l v tr b t u (SEEK_SET), v tr hi n t i (SEEK_CUR), ho c cu i file (SEEK_END). Gi tr tr v l k t qu c a offset: b t u file, ho c m t gi tr c a off_t , gi tr -1 n u c l i. Hm fstat() Hm fstat () a ra thng tin v file thng qua vi c m t cc file, ni k t qu c a struct stat c ch ra con tr ch n buf().K t qu tr v gi tr 0 n u thnh cng v nh n gi tr -1 n u sai ( ki m tra l i). #include <sys/stat.h> #include <unistd.h> int fstat(int filedes, struct stat *buf); Sau y l nh ngha c a struct stat:

struct stat { dev_t int_t mode_t nlink_t uid_t gid_t dev_t off_t unsigned long unsigned long time_t time_t time_t }; Hm fchown()

st_dev; / * thi t b */ st_ino ; /* inode */ st_mode; /* ch b o v */ st_nlink; /* s l ng cc lin k t c ng */ st_uid; /* s hi u c a ng i ch */ st_gid; /* s hi u nhm c a ng i ch */ st_rdev; /* ki u thi t b */ st_size;/* kch th c bytes */ st_blksize; /* kch th c kh i*/ st_blocks; /* S l ng cc kh i s d ng*/ st_atime; /* th i gian truy c p cu i cng*/ st_mtime; /* th i gian c p nh t cu i cng */ st_ctime; /* th i gian thay i cu i cng */

L i g i h th ng fchown() cho php tathay v i vi c m file.

i ng i ch v nhm ng i ch k t h p

#include <sys/types.h> #include <unistd.h> int fchown(int fd, uid_t owner, gid_t group); Tham s u tin l m t file, tham s th hai l s nh danh c a ng i ch , v tham s th ba l s nh danh c a nhm ng i ch . Ng i dng ho c nhm ng i dng s c

1 5

php s d ng khi gi tr -1 thay i. Gi tr tr v l 0 n u thnh cng v 1 n u g p l i (ki m tra bi n errno). Thng th ng ng i dng c th thay i nhm cc file thu c v h . Ch root m i c quy n thay i ng i ch s h u c a nhi u nhm. Hm fchdir( ) L i g i hm fchdir( ) thay i th m c b ng cch m file c m t b i bi n fd. Gi tr tr v l 0 n u thnh cng v 1 n u c l i (ki m tra bi n errno). #include <unistd.h> int fchdir(int fd); M t v d v cch s d ng cc hm thao tc v i file: /* filedes_io.c */ #include <sys/types.h> #include <sys/stat.h> #include <sys/file.h> #include <fcntl.h> #include <unistd.h> #include < assert.h> #include <errno.h> #include <string.h> #include <stdio.h> /*for print */ char sample1[] = This is sample data 1\n; char sample2[] = This is sample data 2\n; char data[16]; main ( ) { int fd; int rc; struct stat

statbuf;

printf( Creating file\n); fd = open(junk.out, 0_WRONLY | 0_CREAT| 0_TRUNG, 0666); assert(fd>=0); rc = write(fd, sample1, strlen(sample 1) ); assert(fd>=0); rc = write(fd, sample1, strlen(sample1)); assert(rc == strlen(sample1)); close(fd);

1 5

printf( Appending to file\n); fd = open(junk.out, 0_WRONLY| 0_APPEND); assert(fd>=0); printf( locking file\n); rc = flock(fd, LOCK_EX); assert(rc == 0); printf(sleeping for 10 seconds\n); sleep(10); printf(writing data\n); rc = write(fd, sample2, strlen(sample2)); assert(rc == strlen(sample2)); printf(unlocking file\n); rc = flock(fd, LOCK_UN); assert(rc == 0); close(fd); printf(Reading file \n); fd = open(junk.out, 0_RDONLY); assert (fd >=0); while (1) { rc = read (fd, data, sizeof (data) ); if( rc > 0 ) { data[rc] =0; /* k t thc xu */ printf ( Data read (rc = %d): <%s>\n, rc, data); } else if (rc == 0) { printf ( End of file read \ n); break; } else { perror ( read error ); break; } } close (fd); printf ( Fiddling with inode\n); fd = open ( junk.out, 0_RDONLY); 1 5

assert (fd >= 0); printf ( changing file mode\n); rc = fchmod ( fd, 0600); assert (rc == 0); if ( getuid ( ) == 0 ) { printf ( changing file owner \n ); rc = fchown (fd, 99, 99); assert (rc == 0); } else { printf ( not changing file owner\n); } fstat (fd, &statbuf); printf ( file mode = 0% ( octal ) \ n, statbuf.st_mode); printf(Owner uid = %d \ n, statbuf.st_uid); printf( Owner gid = %d \n, statbuf.st_uid); close(fd); } 7.3.4. Th vi n lin k t Ph n ny s gi i thi u cch t o ra v s d ng th vi n (cc module chng trnh c vi t v c ti s d ng nhi u l n). Th vi n g c c a C/C++ trn Linux chnh l glibc, th vi n ny cung c p cho ng i dng r t nhi u l i g i h th ng. Cc th vi n trn

Linux th ng c t ch c d i d ng tnh (static library), th vi n chia s (shared library) v ng (dynamic library - gi ng nh DLL trn MS Windows). Th vi n tnh c lin k t c nh vo trong chng trnh trong qu trnh lin k t. Th vi n dng chung c n p vo b nh trong khi chng trnh b t u th c hi n v cho php cc ng d ng cng chia s lo i th vi n ny. Th vi n lin k t ng c n p vo b nh ch khi no chng trnh g i t i.
7.3.4.1 Th vi n lin k t tnh

Th vi n tnh v cc th vi n dng chung (shared library) l cc file ch a cc file c g i l cc module c bin d ch v c th s d ng l i c. Chng c lu tr d i m t nh d ng c bi t cng v i m t b ng (ho c m t b n ) ph c v cho qu trnh lin k t v bin d ch. Cc th vi n lin k t tnh c ph n m r ng l .a. s d ng cc module trong th vi n ta c n thm ph n #include file tiu (header) vo trong chng trnh ngu n v khi lin k t (sau qu trnh bin d ch) th lin k t v i th vi n . D i y l m t v d v cch t o v s d ng m t th vin lin k t tnh. C 2 ph n trong v d ny, ph n th nh t l m ngu n cho th vi n v ph n th 2 cho chng trnh s d ng th vi n.

1 5

/* * liberr.h */ #ifndef _LIBERR_H #define _LIBERR_H #include <stdarg.h> /* in ra m t thng bo l i t i vi cg i stderr v return hm g i */ void err_quit(const char *fmt, ); /* in ra m t thng i p l i cho logfile v tr v hm g i */ void log_ret(char *logfile, const char *fmt, ); /* in ra m t thng i p l i cho logfile v thot */ void log_quit( char *logfile, const char *fmt , ); /* in ra m t thng bo l i v tr l i hm g i */ void err_prn(const char *fmt, va_list ap, char *logfile); #endif //_LIBERR_H

M ngu n cho file liberr.h


#include <errno.h> #include <stdarg.h> #include <stdlib.h> #include <stdio.h> #include "liberr.h" #define MAXLINELEN 500 void err_ret(const char *fmt, ...) { va_list ap; va_start(ap, fmt); err_prn(fmt, ap, NULL); va_end(ap); return; } void err_quit(const char *fmt, ...) { va_list ap; va_start(ap, fmt); err_prn(fmt, ap, NULL); va_end(ap); exit(1); } void log_ret(char *logfile, const char *fmt, ...) { va_list ap; va_start(ap, fmt); err_prn(fmt,ap, logfile); va_end(ap); return; } 1 5

void log_quit(char *logfile, const char *fmt,... ) { va_list ap; va_start(ap, fmt); err_prn(fmt, ap,logfile); va_end(ap); exit(1); } extern void err_prn( const char *fmt, va_list ap, char *logfile) { int save_err; char buf[MAXLINELEN]; FILE *plf; save_err = errno; vsprintf(buf,fmt, ap); sprintf( buf+strlen(buf), ": %s", strerror(save_err)); strcat(buf, "\n"); fflush(stdout); if(logfile !=NULL){ if((plf=fopen(logfile, "a") ) != NULL){ fputs(buf, plf); fclose(plf); }else fputs("failed to open log file \n", stderr); }else fputs(buf, stderr); fflush(NULL); return; } M ngu n file liberr.c t o m t th vi n tnh, b c u tin l d ch o n m c a form $gcc H c liberr.c o liberr.o ti p theo: $ar rcs liberr.a liberr.o /* * errtest.c */ #include <stdio.h> #include <stdlib.h> #include "liberr.h" #define ERR_QUIT_SKIP 1 #define LOG_QUIT_SKIP 1 int main(void) { 1 5 i t ng:

FILE *pf; fputs("Testing err_ret()...\n", stdout); if((pf = fopen("foo", "r")) == NULL) err_ret("%s %s", "err_ret()", "failed to open foo"); fputs("Testing log_ret()...\n", stdout); if((pf = fopen("foo", "r")) == NULL); log_ret("errtest.log", "%s %s", "log_ret()", "failed to open foo"); #ifndef ERR_QUIT_SKIP fputs("Testing err_quit()...\n", stdout); if((pf = fopen("foo", "r")) == NULL) err_ret("%s %s", "err_quit()", "failed to open foo"); #endif /* ERR_QUIT_SKIP */ #ifndef LOG_QUIT_SKIP fputs("Testing log_quit()...\n", stdout); if((pf = fopen("foo", "r")) == NULL) log_ret("errtest.log", "%s %s", "log_quit()", "failed to open foo"); #endif /* LOG_QUIT_SKIP */ return EXIT_SUCCESS; } M ngu n file testerr.c Bin d ch chng trnh ki m tra, ta s d ng dng l nh: $ gcc -g errtest.c -o errtest -L. -lerr Tham s -L. ch ra ng d n t i th m c ch a file th vi n l th m c hi n th i, tham s lerr ch r th vi n thch h p m chng ta mu n lin k t. Sau khi d ch ta c th ki m tra b ng cch ch y chng trnh. 7.3.4.2 Th vi n dng chung Th vi n dng chung c nhi u thu n l i hn th vi n tnh.Th nh t, th vi n dng chung t n t ti nguyn h th ng, chng s d ng t khng gian a v m ngu n th vi n dng chung khng bin d ch sang m nh phn nhng c lin k t v c dng t ng m i l n dng. Chng s d ng t b nh h th ng v nhn chia s b nh cho th vi n dng chung ny v t t c cc chng trnh u s d ng chung mi n b nh ny. Th 2, th vi n dng chung nhanh hn vi chng ch c n n p vo m t b nh . L do cu i cng l m ngu n trong th vi n dng chung d b o tr. Khi cc l i c s a hay thm vo cc c tnh, ng i dng c n s d ng th vi n nng c p. i v i th vi n tnh, m i chng trnh khi s d ng th vi n ph i bin d ch l i. Trnh lin k t (linker)/module t i (loader) ld.so lin k t tn bi u t ng t i th vi n dng chung m i l n ch y. Th vi n dng chung c tn c bi t (g i l soname), bao g m tn th vi n v phin b n chnh. V d : tn y c a th vi n C trong h th ng l libc.so.5.4.46, tn th vi n l libc.so, tn phin b n chnh l 5, tn phin b n ph l 4, 46 l m c v (patch 1 5

level). Nh v y, soname th vi n C l libc.5. Th vi n libc6 c soname l libc.so.6, s thay i phin b n chnh l s thay i ng k th vi n. Phin b n ph v patch level thay i khi l i c s a nhng soname khng thay i v b n m i c s thay khc bi t ng k so v i b n c. Cc chng trnh ng d ng lin k t d a vo soname. Ti n ch idconfig t o m t bi u t ng lin k t t th vi n chu n libc.so.5.4.46 t i soname libc.5 v lu tr thng tin ny trong /etc/ld.so.cache. Trong lc ch y, ld.so c ph n lu tr , tm soname thch h p v n p th vi n hi n tai vo b nh , k t n i hm ng d ng g i t i i t ng thch h p trong th vi n. Cc phin b n th vi n khc nhau n u: Cc giao di n hm u ra thay i. Cc giao di n hm m i c thm. Ch c nng ho t ng thay i so v i c t ban u C u trc d li u u ra thay i C u trc d li u u ra c thm duy tr tnh tng thch c a th vi n, c n m b o cc yu c u: Khng thm vo nh ng tn hm c ho c thay i ho t ng c a n Ch thm vo cu i c u trc d li u c ho c lm cho chng c tnh tu ch n hay c kh i t o trong th vi n Khng m r ng c u trc d li u s d ng trong cc m ng Xy d ng th vi n dng chung hi khc so v i th vi n tnh, qu trnh xy d ng th vi n dng chung c minh ho d i y: Khi bin d ch file i t ng, s d ng ty ch n -fpic c a gcc n s t o ra m c l p v tr (position independence code) t c th lin k t hay s d ng b t c ch no Khng lo i b file i t ng v khng s d ng cc ty ch n fomit frame -pointer c a gcc, v n u khng s nh h ng n qu trnh g r i (debug) S d ng tu ch n -shared and soname c a gcc S d ng tu ch n Wl c a gcc truy n tham s t i trnh lin k t ld. Th c hi n qu trnh lin k t d a vo th vi n C, s d ng tu ch n l c a gcc Tr l i th vi n x li l i , t o th vi n dng chung tr c h t xy d ng file i t ng: $ gcc -fPiC -g -c liberr.c -o liberr.o Ti p theo lin k t th vi n: $ gcc -g -shared -Wl,-soname,liberr.so -o liberr.so.1.0.0 liberr.o -lc V khng th ci t th vi n ny nh th vi n h th ng trong /usr hay /usr/lib chng ta c n t o 2 kin k t, m t cho soname: V cho trnh lin k t khi k t n i d a vo liberr, s d ng lerr: $ ln -s liberr.so.1.0.0 liberr.so By gi , d d ng th vi n dng chung m i chng ta quay l i chng trnh ki m tra, chng ta c n h ng trnh lin k t t i th vi n no s d ng v tm n u, v v y chng ta s s d ng tu ch n l v L: $ gcc -g errtest.c -o errtest -L. -lerr Cu i cng ch y chong trnh, chng ta c n ch cho ld.so ni tm th vi n dng chung : $ LD_LIBRARY_PATH=$(pwd) ./errtest 7.3.4.3 S d ng i t ng dng chung theo cch ng 1 5

M t cch s d ng th vi n dng chung l n p chng t ng m i khi ch y khng gi ng nh nhng th vi n lin k t v n p m t cch t ng. Ta c th s d ng giao di n dl (dynamic loading) v n t o s linh ho t cho l p trnh vin hay ng i dng. Gi s ta ang t o m t ng d ng s l ho . Trong ng d ng, ta bi u di n d li u m t d ng khng theo chu n nhng l i thu n ti n cho ta x l, v ta c n c nhu c u chuy n d li u ra cc nh d ng thng d ng c (s l ng cc nh d ng ny c th c hng trm lo i) ho c c d li u t cc nh d ng m i ny vo x l. gi i quy t v n ny ta c th s d ng gi i php l th vi n. Nhng khi c thm m t nh d ng m i th ta l i ph i bin d ch l i chng trnh. y l i l m t i u khng thch h p l m. Kh nng s d ng th vi n ng s gip ta gi i quy t v n v a g p ph i. Giao di n dl cho php t o ra giao di n (cc hm) c v vi t chung khng ph thu c vo nh d ng c a file nh. thm ho c s a cc nh d ng c a file nh ta ch c n vi t thm m t module m nh n ch c nng v bo cho chng trnh ng d ng bi t l c thm m t module m i b ng cch ch c n thay i m t file c u hnh trong m t th m c xc nh no . Giao di n dl (cng n thu n c xy d ng nh m t th vi n - th vi n libdl) ch a cc hm t i (load), tm ki m v gi i phng (unload) cc i t ng chia s . s d ng cc hm ny ta thm file <dlfcn.h> vo ph n #include vo trong m ngu n, v khi d ch th lin k t n v i th vi n libdl b ng cch s d ng tham s v tn ldl trong dng l nh d ch. dl cung c p 4 hm x l cc cng vi c c n thi t t i, s d ng v gi i phng i t ng dng chung.

Truy c p

i t ng chia s

truy c p m t i t ng chia s , dng hm dlopen() c c t nh sau: void *dlopen(const char *filename, int flag); dlopen() truy c p i t ng chia s b ng filename v b ng c . Filename c th l ng d n y , tn file rt g n hay NULL. N u l NULL dlopen() m chng trnh ang ch y, l chng trnh c a b n, n u filename l ng d n dlopen() m file , n u l tn rt g n dlopen() s tm trong v tr sau tm file: $LD_ELF_LiBRARY_PATH, $LD_LIBRARY_PATH, /etc/ld.so.cache, /usr/lib, v /lib. C c th l RTLD_LAZY, c ngha l cc k hi u (symbol) hay tn hm t i t ng truy c p s c tm m i khi chng c g i, ho c c c th l RTLD_NOW, c ngha t t c k hi u t i t ng truy c p s c tm tr c khi hm dlopen() tr v . dlopen() tr i u khi n t i i t ng truy nhp n u n tm th y t filename hay tr v gi tr NULL n u khng tm th y. S d ng i t ng chia s Tr c khi c th s d ng m ngu n trong th vi n ta ph i bi t ang tm ci g v tm u. Hm dlsym() s gip i u : void *dlsym(void *handle, char *symbol); dlsym() tm k hi u hay tn hm trong truy c p v tr l i con tr ki u void t i i t ng hay NULL n u khng thnh cng. Ki m tra l i Hm dlerror() s gip ta ki m tra l i khi s d ng i t ng truy c p ng: const char *dlerror(void); N u m t trong cc hm l i, dlerror() tr v thng bo chi ti t l i v gn gi tr NULL cho ph n b l i.

Gi i phng

i t ng chia s
1 6

b o v ti nguyn h th ng c bi t b nh , khi ta s d ng xong module trong m t i t ng chia s , th gi i phng chng. Hm dlclose() s ng i t ng chia s : int dlclose(void *handle);

S d ng giao di n dl
minh ho cch s d ng dl,chng ta quay l i th vi n x l l i, s d ng m t chng trnh khc nh sau: /* * dltest.c * Dynamically load liberr.so and call err_ret() */ #include <stdio.h> #include <stdlib.h> #include <dlfcn.h> int main(void) { void *handle; void (*errfcn)(); const char *errmsg; FILE *pf; handle = dlopen("liberr.so", RTLD_NOW); if(handle == NULL) { fprintf(stderr, "Failed to load liberr.so: %s\n", dlerror()); exit(EXIT_FAILURE); } dlerror(); errfcn = dlsym(handle, "err_ret"); if((errmsg = dlerror()) != NULL) { fprintf(stderr, "Didn't find err_ret(): %s\n", errmsg); exit(EXIT_FAILURE); } if((pf = fopen("foobar", "r")) == NULL) errfcn("couldn't open foobar"); dlclose(handle); return EXIT_SUCCESS; } M ngu n chng trnh dltest.c Bin d ch v d trn b ng l nh: $ gcc -g -Wall dltest.c -o dltest -ldl Nh tac th th y, chng ta khng lin k t d a vo liberr hay liberr.h trong m ngu n. T t c truy c p t i liberr.so thng qua dl. Ch y chng trnh b ng cch sau: $ LD_LIBRARY_PATH=$(pwd) ./dltest N u thnh cng th ta nh n c k t qu nh sau: couldnt open foobar: No such file or directory

1 6

7.3.5 Cc cng c cho th vi n Cng c nm L nh nm li t k ton b cc tn hm (symbol) c m ho trong file i t ng (object) v nh phn (binary). L nh nm s d ng c php sau: nm [options] file Lnh nm li t k nh ng tn hm ch a trong file. B ng d i li t k cc tu ch n c a l nh nm: Tu ch n -C| -demangle -s|-print-armap -u| -undefined-only - l | -line-numbers Miu t Chuy n tn k t vo tn m c ng i dng cho d c. Khi s d ng cc file lu tr (ph n m r ng l .a), in ra cc ch s c a module ch a hm . Ch a ra cc hm khng c nh ngha trong file ny, t c l cc hm c nh ngha m t file khc. S d ng thng tin g r i in ra s dng ni hm c nh ngha.

Cc tu ch n c a l nh nm Cng c ar L nh ar s d ng c php sau: ar {dmpqrtx} [thnh vin] file L nh ar t o, ch nh s a v trch cc file lu tr . N th ng c s d ng t o cc th vi n tnh- nh ng file m ch a m t ho c nhi u file i t ng ch a cc chng trnh con th ng c s d ng (subrountine) nh d ng ti n bin d ch (precompiled format), l nh ar cng t o v duy tr m t b ng m tham chi u qua tn k t t i cc thnh vin m trong chng c nh ngha. Chi ti t c a l nh ny c trnh by trong chng tr c. Cng c idd L nh nm li t k cc hm c nh ngha trong m t file i t ng, nhng tr khi ta bi t nh ng g th vi n nh ngha nh ng hm no. L nh idd h u ch hn nhi u. idd li t k cc th vi n c chia s m m t chng trnh yu c u m ch y. C php c a n l: idd [options] file L nh idd in ra tn c a th vi n chia s m file ny s d ng. V d : chng trnh th client mutt c n 5 th vi n chia s , nh c minh ho sau y: $ idd /usr/bin/mutt libnsl.so.1 => /lib/libns1.so.1 (0x40019000) libslang.so.1 => /usr/lib/libslang.so.1 (0x4002e000) libm.so.6 => /lib/libm/so.6 (0x40072000) libc.so.6 => /lib/libc.so.6 (0x4008f000) /lib/id-linux.so.2 => /lib/id-Linux.so.2 (0x4000000) Tm hi u l nh idconfig L nh idconfig s d ng c php sau: ldconfig [tu ch n] [libs]

1 6

L nh ldconfig xc nh r cc lin k t ng (lin k t khi ch y) c yu c u b i th vi n c chia s n m trong cc th m c /usr/lib v /lib. D i y l cc ty ch n c a l nh ny: Cc tu ch n -p -v Cc miu t n thu n ch in ra n i dung c a /etc/ld.so.cache, m t danh sch hi n th i cc th vi n c chia s m ld.so bi t. C p nh t /etc/ld.so.cache , li t k s phin b n c a m i th vi n, qut cc th m c v b t k lin k t m c t o ra ho c c p nh t. Cc tu ch n c a hm idconfig

Bi n mi tr ng v file c u hnh. Chng trnh t i (loader) v trnh lin k t (linker) ld.so s d ng 2 bi n mi tr ng. Bi n th nh t l $LD_LIBRARY, ch a danh sch cc th m c ch a cc file th vi n c phn cch b i d u hai ch m tm ra cc th vi n c n thi t khi ch y. N gi ng nh bi n mi tr ng $PATH. Bi n mi tr ng th hai l $LD_PRELOAD, m t danh sch cc th vi n c ng i dng thm vo c phn cch nhau b i kho ng tr ng (space). ld.so cng cho php s d ng 2 file c u hnh m c cng m c ch v i bi n mi tr ng c c p trn. File /etc/ld.so.conf ch a m t danh sch cc th m c m chng trnh t i v trnh lin k t (loader/linker) nn tm ki m cc th vi n chia s bn c nh /usr/lib v /lib. /etc/ld.so.preload ch a danh sch cc file th vi n c phn cch b ng m t kho ng tr ng cc th vi n ny l th vi n ng i dng t o ra.

1 6

TI LI U THAM KH O

1 6

CH THCH M T S

THU T NG

V n ch n thu t ng ti ng Vi t cho cc thu t ng g c ti ng Anh lun l v n c n c th o lu n vi c ch n l a nh v y l thch h p. D cho trong ti li u ny, nhi u thu t ng ti ng Vi t c s d ng m t cch ph bi n nhng ti li u cng li t k vo b ng ch thch d i y v i m c ch gip b n c thu n ti n trong tra c u v lin h . Trong b ng ch thch, m i thu t ng ti ng Vi t dng trong ti li u s c km theo thu t ng ti ng Anh g c v sau c th l m t l i ch thch ng n. B ng ch thch l m t c g ng nh nh m h tr s d ng ti li u ny hi u qu hn v ph m vi s d ng c a n gi i h n trong ti li u. Ti ng Vi t File Ti ng Anh File Gi i thch ng n T p h p d li u c t ch c theo m t m c ch s d ng: o n vn b n, m t chng trnh ngu n, m t t p h p d li u ... Cn c g i l t p hay g i theo cch gi nguyn g c ti ng Anh l File. Tn g i c a file (file th ng, th m c, file c bi t ...) c dng xc nh file. Ni ch a m t danh sch cc file trong h th ng File, c Linux coi nh m t d ng file c bi t. H th ng ton b cc file c trong h i u hnh Linux (v UNIX ni chung). Linux cho php ng i s d ng dng l nh trnh by m t "thao tc" yu c u h th ng th c hi n. L nh c s n trong Linux (trong shell ho c c t t i nh ng th m c theo quy nh c a Linux). Dng l nh bao g m m t ho c m t s l nh trong m t l n yu c u c a ng i dng. K t thc dng l nh l d u xu ng dng. Th t c b t u m t phin lm vi c c a m t ng i s d ng. Login l l nh cho php ng nh p. Th t c logout k t thc phin lm vi c. Ng i s d ng Linux cho cng vi c c a mnh. Linux quy nh c m t siu ng c quy n h n t i cao trong h th l nh qu n tr h th ng. V i m (thm, b t ng i dng ...) th ch c php s d ng. i dng th c hi n ng bao g m cc t s l nh Linux siu ng i dng

Tn file Th m c H th ng file L nh Ti n ch (cn g i l l nh th ng tr c) Dng l nh ng nh p Ng i dng Siu ng i dng (ng i dng t i cao/ng i qu n tr ) Con tr H i u hnh

Filename Directory File system Command Utility

Command line Login User Superuser

cursor Operating System (OS)

i m nh d u trn mn hnh nh d u v tr hi n th i hi n thng tin. Trong trnh so n th o vn b n, n l v tr so n th o hi n th i trong vn b n B chng trnh bao g m cc file trn a (bng) t c ch c nng qu n l ti nguyn my tnh v ng vai tr l "my tnh o" i v i ng i dng. 1 6

H i u hnh a chng trnh H i u hnh a ng i dng Nhn Qu trnh Chng trnh gi i thch l nh

Multiprogramming OS

H i u hnh ho t ng theo cch th c trong b nh ng th i c nhi u chng trnh c "bnh ng" trong phn ph i ti nguyn (CPU, b nh ).

Multi-users OS M i ng i dng s d ng m t tr m cu i c k t n i my tnh tr c ti p th c hi n cng vi c trn my tnh (c a chng trnh). B ph n c t li nh t c a Linux, th ng tr c Kernel th c hi n cc ch c nng c b n c a h i u hnh (cn c g i l li) M t l n th c hi n c a m t chng trnh (Cn c Process g i l ti n trnh). M t s h i u hnh g i l bi ton (task). M t chng trnh thu c h i u hnh c ch c nng Command ti p nh n, phn tch dng l nh ng i dng l nh Comment c th c hi n. Trong Linux l shell, trong MSProgram DOS l COMMAND.COM. (CCP) Login Th t c m m t ng i dng c n ph i th c hi n khi b t u phin lm vi c v i Linux. Th t c ny yu c u ng i dng a vo tn k hi u v m t kh u c ng k trong h th ng. Th t c m m t ng i dng c n ph i th c hi n khi k t thc phin lm vi c v i Linux. Trn my tnh c nhn, sau khi ng xu t s ko theo m t ng nh p m i. Cn g i l d u nh c dng l nh wildcards K hi u c dng xc nh m t nhm file (v d *, ?, [] v [] v i -). Cn c g i l k hi u thay th . Qu trnh t o ra h s d ng i u hnh Linux ln my tnh

ng nh p

ng xu t

Logout

D u nh c shell K hi u m t nhm Ci t Linux

Installation Linux

1 6

PH

L C A. QU TRNH CI

T REDHAT-LINUX

Linux s d ng ph n c ng c a my PC hi u qu hn MS-DOS, Window hay WinNT, v do kh nng ch u cc l i do c u hnh sai ph n c ng s km hn. Chng ta c n lm m t s vi c tr c khi b t u ci t gi m thi u cc kh nng khng th ci t ti p khi g p ph i v n ny. Tr c tin, hy c g ng tm cng nhi u cng t t cc ti li u v ph n c ng my PC m mnh nh ci, nh mainboard, card ho , mn hnh, modem... v chng ni c th tm th y v tra c u d dng. Ti p theo, tm hi u thng tin v ph n c ng my tnh c a v t p h p chng l i. Chng ta c th lm i u ny khi s d ng ch c nng in c u hnh my c a m t s ti n ch nh MSD trong DOS, ho c System Information trong Windows. Nh ng thng tin chnh xc v bn phm, chu t, mn hnh... s gip r t nhi u trong qu trnh c u hnh X sau ny. Sau , ki m tra ph n c ng my tnh c a tm ra cc v n n u c, b i chng c th lm qu trnh ci t Linux b treo. Sau y l m t s v n th ng g p. M t h th ng DOS hay Windows c th qu n l a IDE v CDROM c khi jumper master/slave khng c t ng. Trong khi Linux khng gi i quy t c v n ny. V v y n u c nghi ng hy xem l i cc jumper ny c t ng cha. M t s thi t b ngo i vi c n c nh ng ti n ch t c u hnh cho chng khi my kh i ng. Cc thi t b nh card m ng, CD-ROM, card m thanh ho c bng t c th g p ph i v n ny. N u tr ng h p ny x y ra, c th s d ng l nh t c u hnh l i t i d u nh c kh i ng. M t s h i u hnh khc cho php chu t d ng bus chia s m t IRQ v i cc thi t b khc, trong khi Linux khng h tr i u ny. N u th lm i u , h th ng c th b treo. Nn lin h v i ng i dng Linux c kinh nghi m c gi i p nh ng v ng m c. C n ti n hnh cng vi c chu n b th i gian cho vi c ci t. Qu trnh ci t c th ko di m t ti ng ho c hn v i nh ng h th ng ch ci Linux, ho c ln t i ba ti ng v i h th ng c n ch y nhi u h i u hnh khc nhau (th ng v i nh ng h th ng ny kh nng b treo my ho c c l i khi ci t s cao hn). Ph l c ny gi i thi u cch ci t hai phin b n RedHat l 6.2 v 7.1 nh m cung c p tnh a d ng khi ci t, t o i u ki n cho ng i s d ng.

AA. Ci

t phin b n RedHat 6.2

AA.1. T o a m m kh i ng B c ny ch c n thi t khi khng th kh i ng t CD-ROM. N u mua Red Hat Linux tr c ti p t Red Hat Linux s nh n km a kh i ng. Cn n u mua b n copy t cng ty th 3, ta ph i t t o a kh i ng v cch t o l nh sau: Trong Windows, a a m m vo . B m phm ph i chu t vo desktop t o folder m i, t tn Bootdisk r i m folder ny. a a CD Red Hat vo CD. M My Computer, nh n vo CD, m folder c tn Dosutils, nh n vo file Rawrite, b m phm ph i chu t v ko n vo Bootdisk. Ch n Copy here t menu xu t hi n. ng c a s Dosutils. M folder Images trong CD-ROM. Chp file Boot.img vo folder Bootdisk, gi ng nh lm v i Rawrite.

1 6

Ch n Start.Run g vo Command trong h p h i tho i, nh n OK. M t c a s xu t hi n v i d u nh c DOS C:\Windows\Desktop. G vo cd bootdisk, nh n Enter. Khi hon t t vi c t o a m m kh i ng: g rawrite t i d u nh c DOS. Nh p boot.img l tn file mu n copy, nh n Enter. G a:\ (tn a m m), v nh n Enter khi c h i ch. AA.2. Phn vng l i a DOS/Windows hi n th i Trong h u h t cc h th ng c s d ng, c ng th ng c phn vng cho MSDOS, OS/2,... C n thay i kch th c, s p x p l i cc phn vng ny t o ch tr ng cho vi c ci t Linux. Cch t t nh t lm vi c ny l dng m t ph n m m chuyn d ng, ch ng h n nh ph n m m PQMagic c a Power Quest. Dng ph n m m ny, c th di chuy n / thay i kch th c / thm / xo / format cc phn vng trong c ng m t cch d dng v i giao di n ho . Cn vi c dng FDisk c a MS-DOS th c c k v t v , mu n di chuy n / thay i kch th c c a m t phn vng no , u tin ph i backup t t c cc d li u trong phn vng, xo phn vng (vi c ny s lm m t cc thng tin v d li u trong phn vng), ti p theo l t o m t phn vng m i v i kch th c mong mu n, cu i cng l restore l i ton b d li u backup vo phn vng m i t o ny! T t nh t dng m t ph n m m mi n ph c c m nh nh PQMagic. AA.3. Cc b c ci t (b n RedHat 6.2 v kh i ng t CD-ROM) a a CDROM Redhat 6.2 vo CD, sau trong BIOS SETUP ta t ch kh i ng t CD. Khi kh i ng l i my, qu trnh s c boot t CDROM. Sau y l chi ti t qu trnh m t a kh i ng ci t ti n hnh. L a ch n ch ci t H th ng a ra cc ch cho chng ta l a ch n : G Enter ch n ch ci t h a. G text + Enter ch n ch Text. G expert + Enter ch n ch Expert. Ch n ch ny c ngha ta t ch n c u hnh ph n c ng cn hai ch trn s t ng detect. G linux ks + Enter ch n ch ci t t m ng ho c t a m m. L a ch n ngn ng hi n th . H th ng a ra r t nhi u ngn ng cho php l a ch n, v d nh Czech, English, French, German.... Th ng ch n English. L a ch n c u hnh bn phm Linux i h i l a ch n c u hnh bn phm t cc m hnh sau: Model : Brazilian ABNT 2 Dell Generic. Microsoft. ................. 1 6

Ta s l a ch n bn phm tng thch theo cc d ng trn, n u khng r bn phm thu c lo i no th nn ch n ki u Generic. Layout: Ngn ng s d ng g (kho ng 24 ngn ng ) Variant: C 2 ch l. Eliminate Dead Keys (khi chng ta s d ng cc k t c bi t). None (ki u m c nh). Test: chng ta s g cc phm ki m tra th . Ch n c u hnh chu t H th ng a ra 10 lo i chu t l a ch n lo i tng thch v i chu t c a mnh, n u khng bi t r chu t thu c lo i no th nn ch n ki u Generic. V ph i ch n ng ki u chu t l PS/2 hay Serial n u khng th s khng s d ng c chu t. H th ng a ra l i gi i thi u v b n Red Hat ang ci L a ch n ki u ci t. Install (ci m i) g m c cc ch GNome Workstation. KDE Workstation. Server Custom Upgrade (Nng c p) Tu ch n ci t WorkStation N u l a ch n ki u ci m i l GNome Workstation ho c KDE Workstation th h th ng s ci t X Window System v chng trnh qu n l Desktop theo d ng GNome ho c KDE. N u cha th o l m v Linux th hy s d ng tu ch n ny, n s b qua nhi u b c. L a ch n Custom l ch ph h p v i ng i quen v i Linux. C hai l a ch n WorkStation ny s chu n b cc vi c sau: N u a c ng c a cha h c phn vng tr c , Linux s xo h t t t c cc phn vng trn cc a c ng v ci t cc phn vng sau: + M t phn vng swap kch th c 64MB + M t phn vng root ( c mount l / ) ch a ng m i file c ci t. Ch l chng ta s ph i c n t i thi u 600MB c ng ti n hnh ci t theo ki u WorkStattion. s t N u h th ng c ci s n Windows (Windows 3.1/95/98), ki u ci t WorkStation ng c u hnh h th ng kh i ng ch song song s d ng LILO. Tu ch n ci t Server : t.

N u l a ch n ki u ci t m i l Server th h th ng s ci t theo ki u my ch Linux v cng nh ki u WorkStation, tu ch n ny s trnh ph i c u hnh nhi u thnh ph n ph n c ng. V khi ci t theo ki u ny, nn c n th n v h th ng s xo t t c cc partition trn 1 6

t t c cc a. V v y, ch ch n ki u ci t Server n u ch c ch n trong c ng khng c m t d li u g c . Sau y l cc b c m ki u ny ti n hnh phn vng a: + T o m t phn vng Swap kch th c 64MB. + T o m t phn vng kch th c 256MB v i mount point l /. + T o m t phn vng kch th c t i thi u 512MB c mount l /usr. + T o m t phn vng t i thi u 215MB c mount l /home. + T o m t phn vng kch th c 256MB c mount l /var. Nh v y chng ta ph i c n t i thi u 1.6BG Tu ch n ci t Custom c ng ti n hnh ci t theo ki u Server.

i v i ki u Custom h th ng s cho php t ch n cc thnh ph n v c u hnh ph n c ng ci t m t cch y nh t, tuy nhin cng r i r m v ph c t p nh t. T b c 7 tr i, ch gi i thi u v tu ch n ci t ny. Sau y s gi i thi u t ng qut m t s b c m qu trnh ny thi t t: T o cc phn vng: c n ph i ch r Redhat s c ci t vo phn vng no. Format cc phn vng: Nh ng phn vng m i c thm vo s ph i c format l i theo nh d ng Linux filesystem. Tuy nhin cng c th l a ch n phn vng no c n ph i format. L a ch n v ci c ng. t cc gi ph n m m i km: Th c hi n sau khi phn vng a

Thi t t c u hnh LILO: c th l a ch n ci t LILO vo Master Boot Record ho c Sector u tin c a phn vng Root ho c khng l a ch n ci LILO. Xc nh cc Partition u tin c n xc nh cc i m kch ho t (mount point) cho m t ho c nhi u partition.

Trong b ng partition c cc thng tin sau: Mount Point: Xc nh partition no s c kch ho t khi Linux c ci t v ch y. N u partition t n t i v c nhn l not set th ta xc nh mount point b ng cch kch chu t vo nt Edit ho c double - click trn partition. V h th ng khuyn chng ta nn t o cc partition theo cch sau: M t swap partition (t nh t 16MB) - dng h tr b nh o. N u my chng ta c 16Mb Ram ho c t hn th b t bu c chng ta ph i t o swap partition. Th m ch n u c nhi u b nh hn, chng ta cng nn t o swap partition. Kch th c t i thi u c a swap partition = max |b nh Ram v 16Mb|. M t boot partition (t i a 16Mb) - ch a nhn c a H H cng v i cc file trong qu trnh kh i ng. M t root partition (t 500Mb - 1Gb) l ni ch a th m c g c v t t c cc file (tr cc file trong boot partition). V i 500Mb cho php ci theo ki u Workstation v v i 1Gb cho php ci m i th .

1 7

Device: Hi n tn cc device partition (V d : hda2 i di n cho partition th 2 trn c ng primary). Request: Cho bi t khng gian m partition hi n c. N u mu n thay i kch th c th chng ta ph i xo partition v t o l i b ng cch dng nt Add. Actual: Cho bi t khng gian m partition ang s d ng. Type: Cho bi t ki u c a partition. V chng ta c th add, edit, v delete cc partition b ng cch kch chu t vo cc nt . Ch c nng c a t ng nt l: Add: Dng t o m t partition m i, g m c cc thng tin sau: Mount Point: g m c cc ki u /: /boot : /usr : /home : /var : /opt : /tmp : /usr/local : Size (Megs): ch n kch th c c a partition. Grow to fill disk: n u ch n th partition ny s s d ng ton b vng a tr ng cn l i. Partition type: g m c cc ki u Linux Swap: ch n ki u ny n u chng ta mu n t o partition swap. Linux Native : ch n ki u ny n u chng ta mu n t o partition root. Linux RAID : DOS 16-bit < 32 : DOS 16-bit > 32 : Edit: Dng Delete: Dng thay i mount point c a partition. i. xo partition.

Reset: Khi ph c l i nh ng thay

Make RAID Device: S d ng Make Raid device ch khi c kinh nghi m v RAID. Drive Summaries: hi n th thng tin v c u hnh a. Ch n Partition Format G m c cc thng tin:

1 7

Partition mu n Format. L a ch n Check for bad blocks while formating Ch n Check for bad blocks while formating tm ra nh ng bad bocks trn a sau s nh d u l i nh m khng ghi d li u ln chng n a. Ch n c u hnh LILO (Linux Loader) ch n c u hnh LILO, ph i khng t d u ki m Do not install LILO. N u Linux Native c tn l /dev/hda5 th mn hnh s hi n ra cho php ci t chng trnh n p Linux vo Master Boot Record (MBR) ho c First Sector of boot partition (sector u tin c a phn vng kh i ng). Ni chung l nn ch n Master Boot Record c th kh i ng t nhi u . N u c cc a SCSI ho c a c ng c a h tr LBA th c n ph i nh d u ki m vo m c Use Linear Mode. Kernel Parameters: Cc tham s s dng b t c khi no nhn c kh i ng. B ng d i s cho bi t thng tin v cc phn vng: tn phn vng, lo i phn vng, c ph i l phn vng kh i ng khng ?. c n ch n phn vng kh i ng l phn vng c tn Linux (th ng l phn vng m Redhat s t m c nh v chng ta khng ph i thay i g). N u c phn vng tn l dos, chnh l phn vng tr c khi ci t th sau ny m i khi kh i ng my tnh, chng ta c th ch n phn vng ny kh i ng m t cch bnh th ng b ng cch g tn phn vng t i d u nh c LILO Boot trong qu trnh kh i ng. Cho php thay i tn c a phn vng tng ng trong ph n Boot Label. Tu ch n Create boot disk: ch c n ch n m c ny n u khng ci LILO ho c ci LILO nhng khng ci vo MBR. Ch l n u khng ci LILO th b t bu c ph i ch n m c ny kh i ng t a m m. Ch n mi gi N u ci trong ch h a, mn hnh m c thay i b n theo cc ki u sau: World (b n th gi i) North American (B c M ) South American (Nam M ) Pacific Rim (Chu c) Europe (Chu u) Africa (Chu Phi) Asia (Chu ) i v i Vi t Nam ta th ch n Asia/Saigon (trong a CD ci ch n l Asia/Hanoi). t LinuxVN th m c nh s hi n ra m t b n th gi i. C th

C th ch n mi gi theo ki u UTC Offset (Universal Time Coordinated), t c l ki u GMT +/l ch. N u h th ng gi s t i s d ng UTC th ch n System clock uses UTC. 1 7

Thi t t c u hnh Account (ng i s d ng) Nh bi t Linux k th a t Unix, do n cng h tr ch a ng i dng nh Unix. B n ci t Redhat cho php t lun c u hnh ng i dng ngay trong qu trnh ci t. u tin chng ta c n t m t kh u cho ng i dng Root trong ph n Root Password v xc nh n l i m t kh u ny trong m c Confirm. Ch l m c nh t t c cc m t kh u u ph i t i thi u 6 k t . Sau ta c th thm ngay m t s ng i dng u tin: Tn t trong Account Name, g password trong m c Password v xc nh n m t kh u trong m c Password (confirm) ngay bn c nh, tn y c a ng i dng trong m c Full Name. Sau g phm Add th thm ng i dng m i vo danh sch cc ng i dng. Phm Edit cho php hi n th ng i dng hi n hnh trong b ng danh sch ng i dng, phm Delete xo ng i dng hi n th i. Thi t t c u hnh quy n h n (Authentication Configuration) Th c hi n cc m c sau: Enable MD5 Password: cch m ho ny cho php m t kh u di t i 256 k t . Shadow Password: y l cch b o m t t i a cho m t kh u, file ch a m t kh u /etc/passwd s c thay b ng etc/shadow v file ny ch c php hi n th b i ng i dng Root. Ch n c 2 m c ny s tng tnh b o m t c a h th ng. Enable NIS: ch n m c ny n u my tnh k t n i vo m ng NIS (Network Information System) cho php m t nhm my tnh trong vng Network Information Service v i cng m t password. NIS domain: tn c a domain ho c nhm my tnh ch a h th ng. NIS server: cho php my tnh dng m t NIS server rng, hn l m t thng i p r ng ri trong m ng LAN. L a ch n cc gi ph n m m ci t (Pakage Selection) C r t nhi u m c ch n s ni chi ti t ph n sau nh: Printer Support, h th ng X Window, GNome, KDE, DOS / Window Connectivity,.... L a ch n Everything s ci y t t c m i th , do c n ph i l a ch n cc gi ph n m m ph h p n u Linux Native / khng . Cc packages c th c ch n ci t bao g m: Printer Support: N u c ci Linux s c g ng nh n my in ho c cho php ng i dng thi t l p cc thng s v my in c a h th ng. X Window System: Mi tr ng h a nguyn thu trong Linux, c g i t t l X. X khng ph i l m t giao di n h a ng i dng th c s m ch l m t h c a s cng v i cc cng c m t giao di n h a ng i dng c th c xy d ng t . GNOME: L m t giao di n h a ng i dng p hn, ti n l i v thn thi n hn X, GNOME cng cung c p m t giao di n l p trnh m c cao hn t o ra cc ng d ng v i giao di n ki u GNOME.

1 7

KDE: KDE l m t giao di n h a ng i dng c pht tri n d a trn th vi n giao di n h a C++ Qt. Th vi n giao di n ny h tr UNIX, Windows v c Mac. Do c pht tri n tr c GNOME nn KDE c nhi u i m t t hn. Mail/ WWW/ News tools: B cng c dng c cc b n tin. g i, nh n th tn i n t , duy t Web v

Dos/ Windows Connectivity: B gi l p DOS v Windows cho php ng i dng ch y cc ng d ng DOS v Windows ngay trong Linux. Graphic Manupulation: Cc ti n ch v x l cc file hnh nh. h a nh Gview, Imgedit... cho php trnh di n text ho c X Window.

Games: M t s chng trnh tr chi gi i tr trong ch Multimedia Support: Cc chng trnh h tr mp3... i u khi n joystick, thu m ...

a phng ti n, nh nghe midi, wave, s d ng

Dialup WorkStation: Cho php ng i dng s d ng modem v quay s cc d ch v qua ng i n tho i nh g i nh n mail, web...

News Server: Cung c p d ch v my ch news, cho php my tnh tr thnh m t server b n tin. NFS Server: My ch h th ng file m ng NFS (Network File System). SMB Server: My ch h th ng file m ng Samba. IPX/ Netware Connectivity: Gip h th ng ch y Linux giao ti p v i cc my tnh khc qua m ng Netware s d ng giao th c IPX. Anonymous FTP Server: Ci t package ny gip my tnh tr thnh m t my ch FTP (File Transfer Protocol), c th cung c p d ch v truy n file cho cc my khc trong m ng. Web Server: Ci t package ny gip my tnh tr thnh m t my ch Web, c th cung c p d ch v web cho cc my khc trong m ng. DNS Name Server: Ci t package ny gip my tnh tr thnh m t my ch DNS, c th cung c p d ch v t tn vng cho cc my khc trong m ng. Postgres (SQL) Server: Ci t package ny gip my tnh tr thnh m t my ch SQL, c th cung c p d ch v truy v n d li u cho cc my khc trong m ng. Network Management Workstation: Gip my tnh tr m lm vi c i u hnh tr thnh m t my ch SQL, c th cung c p d ch v truy v n d li u cho cc my khc trong m ng. TeX Document Formatting: H so n th o v Emacs: H so n th o vn b n n gi n. Development: Cc b bin d ch, g r i, cng c pht tri n ph n m m ... d i cc ngn ng nh Perl, C, C++. M ngu n c a cc chng trnh trong Linux. Kernel Development: M ngu n nhn Linux v b cng c pht tri n dnh cho pht tri n nhn Linux. nh d ng vn b n d i d ng Tex.

1 7

Extra Documentation: M i ti li u v Linux c trong a CD, d i nh ng ngn ng nh Anh, Php, Italia, Ty Ban Nha... Utilities: Cc ti n ch cho Linux. Thi t t c u hnh X (X Configuration) Ph n ny s t c u hnh card mn hnh th hi n khi chng ta s d ng cc h th ng X Window. V d sau y l m t s thng s hi n th khi chng ta ci t: Video Card: ATI Mach64 Video Ram: 4096KB X server: Mach64 Monitor: 14 COLOR qut ngang: 30 - 54 Khz qut d c: 50 - 120 Hz y l ph n kh quan tr ng, n u card mn hnh c a khng ph i l d ng chu n th s ph i ci b ng tay, m t cng vi c kh m t m i. Test this Configuration: n vo y ki m tra tnh nng ho c ho t ng t t khng, n u mn hnh c a qua kh i cu c ki m tra ny th c th coi l thnh cng t i 90% qu trnh ci t Redhat. Customize X Configuration: N u ch n m c ny th ghi g Next, Redhat s cho m t b ng cho thi t l p b ng tay cc ch h a 8 bits, 16 bits, 32 bits; cc ch phn gi i 640x480, 800x600, 1024x786, ... Ch l khi ch n phn gi i no th lun lun g phm Test this Configuration m b o mn hnh c a lun hi n th ng. B t u qu trnh copy t a CD vo c ng B c cu i cng ny s th c hi n cc b c format Linux Native / (n u ch n ph n tr c), format Linux Swap, v sau l gi i nn t t c cc gi ph n m m m l a ch n trong b c th 13 vo c ng. Qu trnh ny m t kho ng 10 pht n 20 pht tu theo s l ng cc gi ch n. K t thc qu trnh ny, g Exit, kh i b t u kh i ng t c ng. AA.4. Cc h n ch v ph n c ng ng l i my, nh tho a CD Redhat ra kh i

i v i Linux

Cc b vi x l m Linux h tr Linux ch y u ch y trn cc my PC th h 386, 486, 586 s d ng cc ph n c ng h vi x l 80386. Vi c ci t trn cc ph n c ng khc th v n ang trong giai o n thi t k . C th ch y th Linux b ng m t my v i ph n c ng t i thi u l: b vi x l Intel 386, 486, 586, 4MB RAM v m t m m. D nhin l cng nhi u RAM th cng t t. Linux h tr VESA Local Bus v PCI.

1 7

Linux cng h tr ph n l n cho cc IBM).

c ng chu n ESDI v MCA (bus

c quy n c a

Linux cng c th ch y trn cc laptop h 386. C m t cch ci t Linux trn 8086 c bi t n d i tn g i ELKS (Embeddable Linux Kernel Subset). y l m t nhn Linux 16 bit c ch y u s d ng trong cc h th ng nhng. Th c ra phin b n Linux hi n nay khng th ch y c y trn 8086 hay 286 b i v nh ng b vi x l ny khng h tr cho vi c chuy n i tc v cng nh qu n l b nh . Linux h tr a qu trnh cho cc ki n trc Intel MP. D i y l danh sch cc b VXL m Linux h tr : Dng 68000 c a Amigas v Ataris hi n ang c tri n khai nghin c u. Cc phin b n GNU/Linux cng c th ci t cho cc n n Alpha, Sparc, PowerPC, ARM. M t d n v Linux trn PPC cng c ti n hnh. Apple h tr MkLinux trn cc Power Macs d a trn OSF c a Mach vi nhn. Linux cho my 64 bit DEC Alpha/AXP. ang nghin c u v Linux cho MIPS, b t u i v i R4 trn cc my Deskstation Type. Hi n c 2 b n Linux cho dng my dng h vi x l ARM. M t l c a vi x l ARM3 trn cc my Acorn A5000 v n cn bao g m c cc thi t b I/O cho 82710. Cn l i l cho h vi x l ARM610 c a my Acorn RISC PC. Linux cho SPARC ang c ti n hnh. C b n Hardhat cho cc my SGI/Indy. Cc yu c u v khng gian c ng i vi c ci t t i thi u l 10 MB, ch y u l khc. th ch khng c nhi u cc tnh nng

Ta c th ci t thm X v i kho ng 80 MB. N u ci t c b GNU/Linux s c n kho ng 500MB-1GB bao g m c m ngu n v nhi u th khc n a. Cc yu c u v b nh T i thi u l 4MB. Ta c th s d ng swapping ch y thm cc ci t khc. Linux ni chung l ch y tng i tho i mi v i 4MB Ram nhng cc ng d ng X Windows s ch y ch m b i v chng c n ph i th c vi c swap vo ra trn a. M t vi ng d ng hi n t i l i ch ch y bnh th ng v i 128MB b nh v t l ch ng h n nh Netscape. S tng thch v i cc h i u hnh khc: DOS, OS/2, 386BSD, Win95 Linux s d ng s p x p phn d ng gi ng nh MS-DOS do n c th chia s a v i cc h i u hnh khc. Tuy v y, i u ny cng c ngha l cc h i u hnh khc cng c th khng h n l hon ton tng thch. Cc trnh Fdisk v Format c a DOS th nh tho ng l i c th vi t ln d li u trong phn vng c a Linux b i v chng c th s d ng cc thng tin phn vng sai l nh t boot sector c a phn vng ch khng ph i l t b ng phn vng. trnh hi n t ng ny, m t t ng l a v 0 a ch b t u c a m t phn vng 1 7

v a m i t o l p trong Linux tr c khi s d ng cc l nh format c a MS-DOS. S d ng l nh sau: $ dd if=/dev/zero of=/dev/hdXY bs=512 count=1 V i hdXY l phn vng lin quan, ch ng h n /dev/hda1 l phn vng IDE u tin. u tin trn a

Linux c th c v ghi cc file trn cc phn vng FAT c a DOS v OS/2 v cc a m m b ng cch s d ng h th ng file DOS c tch h p vo nhn ho c cc cng c mtool. Nhn cng cung c p h tr cho h th ng file VFAT c a Windows 9x v Windows NT. Hi n t i cc a phn vng theo NTFS cng ang c nghin c u h tr cng v i vi c h tr nn a nh l m t tnh nng chu n. Linux cng c th truy c p c t i h th ng file HPFS c a OS/2 nhng ch ch read-only. Ng i ta c th th c hi n i u ny nh m t l a ch n khi bin d ch nhn. Linux cng h tr cho vi c thao tc trn cc nh d ng AFFS (Amiga Fast File System) t b n 1.3 tr v sau b ng cch nh m t l a ch n lc bin d ch hay nh m t m un ring. Tuy v y, i u ny cng ch d ng m c ch c. Cc truy c p a m m th cha c h tr b i v s khc bi t gi a cc i u khi n a c a PC v Amiga. i v i cc my ch y cc h i u hnh c a Unix nh BSD, System V... th cc nhn hi n t i cng m i ch c th c h th ng file UFS trn System V, Xenix, BSD, m t s s n ph m th a k khc nh SunOS, FreeBSD, NetBSD, NeXTStep. H tr UFS cng c coi nh m t l a ch n lc bin d ch nhn hay nh m t m un. Linux cho php c/vi t trn cc a SMB c a cc nhm Windows v WinNT. C m t chng trnh tn l Samba cho php truy c p v h th ng file m ng WfW (mi n l dng giao th c TCP/IP) . i v i cc my Macintosh th c m t t p h p cc chng trnh c th c, ghi trn HFS (Macintosh Hierarchical File System). c p ng i dng

Cu h i t ra l c th ch y m t chng trnh Windows trong Linux hay khng ? Chng trnh tn WINE ang c pht tri n m ph ng mi tr ng Windows trong Linux. Hi n t i khi mu n dng hai h i u hnh cng lc v i Linux th ta c chng trnh LILO boot. LILO boot b t bu c ta ph i l a ch n h i u hnh vo lc kh i ng. Ngoi ra, cn c m t chng trnh tn LOADLIN l m t chng trnh DOS cho php n p Linux (cng nh b t k h i u hnh khc) khi n cho Linux cng t n t i v i DOS. LOADLIN c bi t h u d ng khi ta mu n ci Linux trn cc a th 3, 4 c a h th ng (ho c khi ta thm m t SCSI vo m t h th ng c ch a IDE). Trong tr ng h p ny th LILO boot s khng c kh nng tm ki m v n p nhn. Do ta s ph i t o m t th m c ch ng h n C: LINUX, t LOADLIN vo trong cng v i m t b n copy c a nhn v r i s d ng n. Ch : C n t o t nh t m t phn vng Linux d i gi i h n 1024 cylinder logic.

1 7

PH

L C B. TRNH SO N TH O VIM

UNIX c hai b so n th o l ed v vi trong vi c a chu ng hn do vi c pht tri n t b so n th o dng l nh ed. Trong ch vn b n, Linux cho php ng i dng s d ng trnh so n th o vim m vim chnh l b so n th o tng thch v i vi. vim c ph n l n ng i dng s d ng so n th o cc file vn b n ASCII, c bi t l t o ra cc vn b n chng trnh ngu n. vim c su ch c b n: Ch th ng (Normal mode): trong ch th ng ng i dng c php nh p t t c cc l nh so n th o thng th ng. N u khng thi t l p tu ch n insertmode, ng m nh vo ngay ch th ng khi kh i ng vim. Ch th ng cn c g i l ch l nh. Ch o (Visual mode): ch ny cng g n gi ng nh ch th ng, ch khc ch l l nh di chuy n c tc d ng nh d u vn b n. M t khc, cc l nh khc (khng l l nh di chuy n) th c s tc d ng trong ph m vi nh ng o n vn b n c nh d u. Ch ch n l a (Select mode): ch ny tng t nh ch l a ch n c a MS-Windows. Ng i dng c th nh p m t k t thu c lo i in n c xo m t s l a ch n v ch y ch chn. Ch chn (Insert mode): Trong ch ny, c th so n th o vn b n bnh th ng nh cc b so n th o quen bi t khc. Vn b n s c chn vo trong b m. Ch dng l nh (Command-line mode hay cmdline mode): Trong ch ny, m t dng l nh c nh p t i y c a s so n th o. c th l cc l nh Ex (:), cc l nh tm ki m (/ hay ?), v cc l nh l c (!). Ch Ex (Ex mode): gi ng nh ch dng l nh, nhng sau khi nh p m t l nh, v n trong ch Ex. Tuy nhin cn r t nhi u h n ch i v i cc l nh ch ny. Ngoi ra cn c nm ch ph sau: Ch ch th c hi n (Operator-pending mode): ch ny gi ng ch th ng, nhng sau khi g i m t l nh, vim s ch cho n khi o n vn b n ch u tc ng c a l nh c a ra. Ch thay th (Replace mode): ch thay th l m t tr ng h p c bi t c a ch chn. Ng i dng c th nh p m i k t nh trong ch chn, ch khc ch : m i k t nh p s thay th cho m t k t t n t i (c th g i l ch - overwrite). Ch chn-l nh (Insert Normal mode): g CTRL-O trong ch chn chuy n sang ch chn-l nh. Ch ny cng gi ng nh ch th ng, nhng sau khi th c hi n m t l nh, vim s tr l i ch chn. Ch chn- o (Insert Visual mode): ch ny c sinh ra khi trong ch chn th c hi n m t s l a ch n o. vim s tr v ch chn sau khi s l a ch n o k t thc.

1 7

Ch chn-l a ch n (Insert Select mode): ch ny c kh i t o khi ch y ch l a ch n trong ch chn. Khi ch l a ch n k t thc, vim s tr v ch chn. Vi c chuy n i gi a cc ch trong vim c th c hi n nh cc l nh (phm l nh ho c xu l nh) c a vim v c t p h p trong b ng d i y. Trong b ng ny, c t u tin l ch ngu n, hng u tin l ch ch, giao gi a hng v c t ch a cc phm l nh chuy n ch (k hi u *1, *2, *3, *4, *5, *6 l cch vi t t t danh sch l nh c gi i thch sau): Ch Ch hi n th i Th ng o v, V, ^V *2 *5 <Esc> <Esc> *3 :vi ^O, ^G ----L a ch n *4 ^G ----c n chuy n t i Chn *1 c, C *6 <Insert> :start -Thay th R --<Insert> --Dng l nh :, /, ?, ! : : ---Ex Q ------

Th ng o L a ch n Chn Thay th Dng l nh Ex

Gi i thch cc l nh vi t t t: *1 chuy n sang ch chn t ch th ng, s d ng m t trong cc phm: i, I, a, A, o, O, c, C, s, S. *2 chuy n sang ch th ng t ch o: ngoi <Esc>, v, V, CTRL-V c th g m t phm l nh thng th ng (ngo i tr phm l nh di chuy n con tr ). *3 chuy n sang ch th ng t ch dng l nh: Th c hi n l nh <Enter> G CTRL-C ho c <Esc> *4 chuy n sang ch l a ch n t ch th ng: S d ng chu t l a ch n vn b n S d ng cc phm khng in c di chuy n d u nh c tr trong khi n gi phm SHIFT *5 chuy n sang ch th ng t ch l a ch n: s d ng cc phm khng in c di chuy n d u nh c tr m khng nh n phm SHIFT. *6 chuy n sang ch chn t ch l a ch n: nh p m t k t c th in c. D i y trnh by n i dung m t s cc l nh c b n trong vim.

1 7

B.1 Kh i

ng vim
so n th o m t file vn b n, l g m t trong ba b t u so n th o hay hi u ch nh m t file b t u so n th o m t ho c nhi u file so n th o m t file t thi t b vo chu n

B.1.1 M chng trnh so n th o vim Cch n gi n nh t b t u dng vim l nh sau: vim [tu-ch n] vim [tu-ch n] <danh sch cc file> vim [tu ch n] -

N u tham s danh sch cc file khng c th vim s thao tc v i m t file m i (vng m so n th o r ng). Ng c l i, file u tin trong danh sch tr thnh file hi n hnh v c c vo trong vng so n th o. Con tr s xu t hi n u dng u tin c a vng ny. h ng n file k ti p, ta nh l nh ":next" ch l nh. so n th o m t file c tn b t u b ng "-" th ph i i n vo tn file d u "--". V d : # vim vdvim`
~ ~ ~ ~ ~ ~ ~ "vdvim"[New File] 0,0-1 All

L nh trn m m t c a s cho ng i dng so n th o m t file m i c tn l "vdvim" M t s cc tu ch n c b n: + [n] + <l nh> +/<m u> <file> -o[n] --help t d u nh c tr t i dng th n (ng m nh l dng cu i) th c hi n l nh sau khi n p file t d u nh c tr t i dng u tin c ch a m u trong file m n c a s (ng m nh c m t c a s cho m t file: n=1) hi n th danh sch cc tham s v thot

B.1.2. Tnh nng m nhi u c a s Trong vim, c th chia c a s so n th o hi n th i thnh nhi u ph n hay m nhi u c a s cng lc so n th o cc file khc nhau. V d l nh sau s m hai file vd1 v vd2 trn hai c a s so n th o: # vim -o2 vd1 vd2
~ ~ ~

1 8

vd1 0,0-1 All ~ ~ ~ vd2 0,0-1 All "vd2" [New File]

Sau y l m t s cc l nh hay dng: CTRL-W :split <file> :sf <file> CTRL-W CTRL-^ CTRL-W n CTRL-W q CTRL-W o CTRL-W j CTRL-W k CTRL-W t CTRL-W b CTRL-W p CTRL-W x CTRL-W = CTRL-W CTRL-W + CTRL-W chia c a s hi n t i thnh hai ph n chia c a s v so n th o <file> trn m t ph n chia c a c a s chia c a s , tm file trn ng d n v so n th o n chia c a s v edit alternate file t o m t c a s tr ng m i (gi ng :new) d ng vi c so n th o v ng c a s (gi ng :q) phng to c a s hi n hnh trn ton mn hnh di chuy n tr so n th o xu ng c a s d i di chuy n tr so n th o ln c a s trn di chuy n tr so n th o ln nh c a s di chuy n tr so n th o xu ng y c a s di chuy n tr so n th o n c a s c kch ho t lc tr c di chuy n tr so n th o n c a s ti p theo t o t t c cc c a s c chi u cao nh nhau gi m chi u cao c a c a s hi n th i tng chi u cao c a c a s hi n th i thi t t chi u cao c a c a s hi n th i

B.1.3. Ghi v thot trong vim B ng d i y gi i thi u cc l nh ghi n i dung file ln h th ng file v thot kh i vim sau khi so n th o xong n i dung c a file (tham s n, m n u c mang ngha "t dng n t i dng m"). :[n,m] w [!] :[n,m] w <file> :[n,m] w! <file> :[n,m] w[!] >> [<file>] :[n,m] w !<l nh> :[n,m] up [th i gian] [!] :q [!] :wq [!] [<file>] :x [!] <file> ghi file hi n th i. ghi n i dung ra <file>, tr khi file th c s t n t i ghi n i dung ra <file>, n u file t n t i th ghi ln n i dung c chn thm vo <file>, n u khng c file, m c nh l file hi n th i th c hi n <l nh> trn cc dng t dng th n n dng th m nh thi t b vo chu n ghi file hi n th i n u n c s a i thot kh i vim ghi n i dung <file> (m c nh l file hi n th i) v thot kh i vim gi ng :wq nhng ch ghi khi th c s c s thay i trong n i dung file (gi ng ZZ)

1 8

:st [!]

d ng vim v kh i t o m t shell (gi ng CTRL-Z)

B.2. Di chuy n tr so n th o trong Vim


B.2.1. Di chuy n trong vn b n Di chuy n tr so n th o trong vn b n l m t tnh nng r t quan tr ng trong m t trnh so n th o vn b n vim. D i y l m t s cc l nh th c hi n vi c trn (c t u tin c n ch m t s l s l ng): N N n n l h k j 0 ^ $ <Enter> + _ G G H M gg gk gj di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy tin) di chuy di chuy n tr n tr n tr n tr nv n n n n n n n n n n n so n th o v bn ph i n k t so n th o v bn tri n k t so n th o ln n dng so n th o xu ng n dng u dng nt u tin c a dng hi n t i n cu i dng n u dng ti p theo n u dng tr c dng hi n t i n dng n u dng sau dng hi n t i n dng n u dng sau dng hi n t i n-1 dng n dng cu i cng trong file n dng th n trong file (gi ng :n) n dng u tin trn mn hnh n dng gi a mn hnh n u dng th n (m c nh l dng u

n n n n n n n

n ln n dng mn hnh n xu ng n dng mn hnh

B.2.2. Di chuy n theo cc i t ng vn b n vim cung c p cc l nh d i y cho php di chuy n tr so n th o nhanh theo cc i t ng vn b n v i u t o nhi u thu n ti n khi bin t p, ch ng h n, trong cc tr ng h p ng i dng c n xo b hay thay i m t t , m t cu ... N N N N N N N N N N n n W E B ge > < | | ]] [[ ][ [] di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy di chuy n n t ti p theo n n cu i c a t th n n ng c l i n t n ng c l i n t v t d u nh c tr t i ch ci cu i t n n n cu ti p theo n ng c l i n cu n n n o n ti p theo n ng c l i n o n n n n ph n ti p theo v t d u nh c tr t i u ph n n ng c l i n ph n v t d u nh c tr t i u ph n n n n ph n ti p theo v t d u nh c tr t i cu i ph n n ng c l i n ph n v t d u nh c tr t i cu i ph n 1 8

B.2.3. Cu n mn hnh Mn hnh s t ng cu n khi di tr so n th o n y ho c ln nhin cc l nh sau y gip ng i dng cu n mn hnh theo mu n: N N N N N N <CTRL-f> <CTRL-b> <CTRL-d> <CTRL-u> <CTRL-e> <CTRL-y> z<Enter> z. z-

nh mn hnh. Tuy

cu n ln n mn hnh (m c nh l 1 mn hnh) cu n xu ng n mn hnh (m c nh l 1 mn hnh) cu n xu ng n dng (m c nh l 1/2 mn hnh) cu n ln n dng (m c nh l 1/2 mn hnh) cu n xu ng n dng (m c nh l 1 dng) cu n ln n dng (m c nh l 1 dng) v l i c a s so n th o, dng hi n t i s l dng trn cng c a c a s (gi ng zt) v l i c a s so n th o, dng hi n t i s l dng gi a c a c a s (gi ng zz) v l i c a s so n th o, dng hi n t i s l dng y c a c a s (gi ng zb)

B.3. Cc thao tc trong vn b n


vim c r t nhi u cc l nh h tr thao tc so n th o hay hi u ch nh m t file. Ph n d i y gi i thi u chi ti t v cc cch thm vn b n, hi u ch nh vn b n hay xo m t vn b n. Khi so n th o vn b n, nhi u dng c th c nh p b ng cch s d ng phm Enter. N u c m t l i c n ph i s a, c th s d ng cc phm mi tn di chuy n tr so n th o trong vn b n v s d ng cc phm Backspace ho c Delete hi u ch nh. B.3.1. Cc l nh chn vn b n trong vim A A i I gI o O :r file :r! l nh chn vn b n vo v tr d u nh c tr hi n th i (n l n) chn vn b n vo cu i m t dng (n l n) chn vn b n vo bn tri d u nh c tr (n l n) chn vn b n vo bn tri k t u tin khc tr ng trn dng hi n t i (n l n) chn vn b n vo c t u tin (n l n) chn n dng tr ng vo d i dng hi n t i chn n dng tr ng vo trn dng hi n t i chn vo v tr con tr n i dung c a file chn vo v tr con tr k t qu c a l nh l nh

N n n n n n

B.3.2. Cc l nh xo vn b n trong vim Bn c nh cc l nh t o hay chn vn b n, vim cng c m t s l nh cho php ng i dng c th xo vn b n. D i y l b ng li t k m t s l nh c b n: N N N x X dd D ho c d$ xo n k t bn ph i d u nh c tr xo n k t bn tri d u nh c tr xo n dng k t dng hi n th i xo t v tr hi n th i n h t dng 1 8

N,m N N N N

dw dG d1G dn$ d cc C cn$ s S

xo n t k t v tr hi n th i xo t v tr hi n th i n cu i file xo ng c t v tr hi n th i n u file xo t dng hi n th i n h t dng th n xo t dng th n n dng th m xo n dng, k c dng hi n th i r i kh i t o ch chn (Insert) xo n dng k t v tr hi n th i r i kh i t o ch chn (Insert) xo t dng hi n th i n h t dng th n r i kh i t o ch chn (Insert) xo n k t v ch y ch chn (Insert) xo n dng v ch y ch chn (Insert)

B.3.3. Cc l nh khi ph c vn b n trong vim Cc l nh sau cho php khi ph c l i vn b n sau m t thao tc hi u ch nh no : N u U : e! CTRL-R khi ph c l i vn b n nh tr c khi th c hi n n l n thay i khi ph c l i hon ton dng vn b n hi n th i nh tr c khi th c hi n b t k s hi u ch nh no trn dng hi u ch nh l i. Lu tr tr ng thi c a l n ghi tr c lm l i (redo) n l n khi ph c (undo) tr c !

6.3.4. Cc l nh thay th vn b n trong vim vim cn c cc l nh cho php thay i vn b n m khng c n ph i xo vn b n r i sau nh m i. n r <k t > R n n n n n n ~ gUU guu CTRL-A CTRL-X > [> ...] thay th n k t bn ph i d u tr b i <k t > ghi vn b n b i m t vn b n m i (hay chuy n sang ch thay th - Replace trong Vim) chuy n n ch hoa thnh ch th ng v ng c l i chuy n cc k t trn n dng, k t dng hi n t i, t ch th ng thnh ch hoa chuy n cc k t trn n dng, k t dng hi n t i, t ch hoa thnh ch th ng c ng thm n n v vo s hi n c b t i n n v t s hi n c chuy n dng th n sang bn ph i x kho ng tr ng (gi ng nh phm TAB trong Win), n u khng c n m c nh l dng hi n t i, x l s d u ' > ' (v d : >>> th x b ng 3) chuy n dng th n sang bn tri x kho ng tr ng (gi ng nh phm SHIFT+TAB trong Win), n u khng c n m c nh l dng hi n t i, x l s d u ' < ' 1 8

< [< ...]

n n

J gJ :[n,m] ce [width] :[n,m] ri [width] :[n,m] le [width] :[n,m]s/<m u1>/<m u2>/[g][c]

:[n,m]s[g][c] &

k t h p n dng, k t dng hi n t i, thnh m t dng gi ng nh J nhng khng chn cc kho ng tr ng cn gi a t dng th n n dng th m v i r ng l width, n u khng c width, m c nh r ng l 80 cn ph i t dng th n n dng th m v i r ng l width, n u khng c width, m c nh r ng l 80 cn tri t dng th n n dng th m v i r ng l width, n u khng c width, m c nh r ng l 80 tm t dng th n n dng th m v thay th m u1 b i m u2. V i [g], thay th cho m i m u tm c. V i [c], yu c u xc nh n i v i m i m u tm c l p l i l nh tm v thay th tr c (:s) v i ph m Vim m i t dng n n dng m km theo l cc tu ch n l p l i vi c tm ki m v thay th trn dng hi n th i m khng c cc tu ch n

B.3.5. Sao chp v di chuy n vn b n trong vim Ph n ny gi i thi u v i cc cc l nh c b n c t v dn vn b n trong vim. sao chp vn b n ph i th c hi n ba b c sau: Sao chp vn b n vo m t b nh m (Yanking) Di chuy n d u nh c tr n v tr c n sao chp (Moving) Dn vn b n (Pasting) Sau y l cc l nh c th c a t ng b c: * Sao chp vn b n vo b nh n n yw Y : [n] co [m] * Dn vn b n: n n n n P P Gp gP : [n] put m dn o n vn b n c sao chp vo bn ph i v tr hi n th i (n l n) dn n o n vn b n c sao chp vo bn tri v tr hi n th i (n l n) gi ng nh p, nhng a d u nh c tr v sau o n vn b n m i dn gi ng nh P, nhng a d u nh c tr v sau o n vn b n m i dn dn m dng vn b n vo sau dng th n (n u khng c n ng m nh 1 8 m

sao chp n k t sao chp n dng vn b n, k t dng hi n t i, vo b nh yy) sao chp dng th n vo d i dng th m

m (gi ng

: [n] put! m

l dng hi n t i) dn m dng vn b n vo tr c dng th n (n u khng c n ng m nh l dng hi n t i)

Ngoi cc l nh trn, khi s d ng vim trong xterm, ng i dng c th s d ng chu t th c hi n cc thao tc cho vi c sao chp vn b n. Vi c ny ch th c hi n c khi ang trong ch so n th o c a vim. Nh n phm tri chu t v ko t i m b t u n i m k t thc c a o n vn b n c n sao chp. o n vn b n s c t ng sao vo b nh m. Sau di tr so n th o n v tr c n dn v nhy nt chu t gi a, vn b n s c dn vo v tr mu n. di chuy n vn b n trong vim, cng ph i th c hi n qua ba b c sau: C t o n vn b n v dn vo b m Di chuy n d u nh c tr t i v tr m i c a o n vn b n Dn o n vn b n vo v tr m i Di chuy n vn b n ch khc sao chp b c u tin l b c c t o n vn b n. hy s d ng cc l nh xo trong vim c t o n vn b n. V d , khi dng l nh dd, dng b xo s c lu vo trong b m, khi c th s d ng cc l nh dn dn vn b n vo v tr m i. Ngoi ra cn c th s d ng m t s l nh sau: : [n] m [x] '' '" di chuy n dng th n vo d i dng th x d ch chuy n d ch chuy n n v tr lc tr c n v tr lc tr c th c hi n vi c hi u ch nh file

B.3.6. Tm ki m v thay th vn b n trong vim vim c m t s cc l nh tm ki m nh sau: / <xu> ? <xu> N N tm xu t dng hi tm xu t dng hi tm ti p xu c tm ti p xu c n t i n dng cu i trong file n t i ng c ln dng u trong file a ra trong l nh / ho c ? (t trn xu ng d i) a ra trong l nh / ho c ? (t d i ln trn)

Xu c tm ki m trong l nh / hay ? c th l m t bi u th c. M t bi u th c thng th ng l m t t p cc k t . T p k t ny c xy d ng b ng cch k t h p gi a cc k t thng th ng v cc k t c bi t. Cc k t c bi t trong bi u th c th ng l: . thay th cho m t k t n ngo i tr k t xu ng dng \ hi n th cc k t c bi t * thay th cho 0 ho c nhi u k t \+ thay th cho 1 ho c nhi u k t \= thay th cho 0 ho c m t k t ^ thay th cho k t u dng $ thay th cho k t cu i dng \< thay th cho ch b t u c a t \> thay th cho ch cu i c a t 1 8

[] [^] [-] \p \s \e \t

thay th thay th thay th thay th thay th thay th thay th

cho m t k t n m trong c p d u [] cho k t khng thu c trong c p d u [] v cho m t t p c th t cc k t cho m t k t c th in c cho m t k t tr ng cho phm Esc cho phm Tab

ng sau d u ^

vim s d ng ch l nh Ex th c hi n cc vi c tm ki m v thay th . T t c cc l nh trong ch ny c b t u b ng d u ':'. c th k t h p l nh tm ki m v thay thay th a ra c cc l nh ph c t p theo d ng t ng qut sau: :< i m b t u>,< i m k t thc> s/<m u c n thay th >/<m u c thay th >/[g][c] V d , l nh sau y:
:1,$s/the/The/g

tm trong file ang so n th o cc t the v thay chng b i cc t The. B.3.7. nh d u trong vim m |a-zA-Z| '|a-z| '|A-Z| :marks nh d u vn b n t i v tr hi n th i v i d u l cc ch ci |a-zA-Z| d ch chuy n con tr t i v tr c nh d u b i cc ch ci |a-z| trong ph m Vim file hi n th i d ch chuy n con tr t i v tr c nh d u b i cc ch ci |A-Z| trong m t file b t k hi n th cc nh d u hi n th i chn

B.3.8. Cc phm s d ng trong ch

Chuy n i ch chuy n vo ch chn ho c ch thay th thot kh i ch chn, tr l i ch thng th ng gi ng nh <Esc>, nhng ??? th c hi n <l nh> v tr v ch chn Di chuy n Cc phm mi tn di chuy n tr so n th o sang tri/ph i/ln/xu ng m t k t SHIFT-left/right di chuy n tr so n th o sang tri/ph i m t t <Home> di chuy n tr so n th o v u dng <End> di chuy n tr so n th o v cu i dng Cc phm c bi t <Enter>, CTRL-M, CTRL-J b t u m t dng m i CTRL-E chn k t vo bn ph i d u nh c tr CTRL-Y chn m t k t vo bn tri d u nh c tr CTRL-A chn vo tr c o n vn b n c chn CTRLchn vo tr c o n vn b n c chn v d ng ch chn CTRL-R <thanh ghi> chn n i dung c a m t thanh ghi <Insert> <Esc> CTRL-C CTRL-O <l nh>

1 8

CTRL-N CTRL-P CTRL-X ... <Backspace>, CTRL-H <Del> CTRL-W CTRL-U CTRL-T CTRL-D B.3.9. M t s l nh trong ch v

chn t ti p theo vo tr c d u nh c tr chn t tr c vo tr c d u nh c tr hon thnh t tr c d u nh c tr theo nhi u cch khc nhau xo m t k t tr c d u nh c tr xo m t k t sau d u nh c tr xo t tr c d u nh c tr xo t t c cc k t trn dng hi n t i chn m t kho ng tr ng tr c dng hi n th i xo m t kho ng tr ng tr c dng hi n th i o

n n n n

khi nh n phm ny, c th s d ng cc phm di chuy n nh d u o n vn b n ho c b nh d u (vn b n c nh d u c mu tr ng) V khi nh n phm ny, m t dng vn b n s c nh d u v c th s d ng cc phm di chuy n nh d u o n vn b n ho c b nh d u CTRL-V nh n phm ny s nh d u m t kh i vn b n v c th s d ng cc phm di chuy n nh d u o n vn b n ho c b nh d u o di chuy n v tr d u nh c tr trn kh i c nh d u ho c b nh d u gv nh d u l i o n vn b n c nh d u lc tr c aw ch n nh d u n t as ch n nh d u n cu ap ch n nh d u n o n ab ch n nh d u n kh i

B.3.10. Cc l nh l p n n n . q |a-z| @|a-z| @@ :@|a-z| :@@ :[n,m]g/m u/[l nh] l p l i n l n thay i cu i ghi cc k t c nh p vo trong thanh ghi |a-z| th c hi n n i dung c trong thanh ghi |a-z| n l n l p l i n l n s th c hi n c a l nh @|a-z| tr c th c hi n n i dung c a thanh ghi |a-z| nh m t l nh Ex l p l i s th c hi n c a l nh :@|a-z| tr c th c hi n l nh (m c nh l :p) trn cc dng c ch a m u n m trong kho ng t dng th n n dng th m :[n,m]g!/<m u>/[l nh] th c hi n l nh (m c nh l :p) trn cc dng khng ch a m u n m trong kho ng t dng th n n dng th m :sl [n] t m d ng trong n giy gs ti p t c d ng trong n giy

B.4. Cc l nh khc
B.4.1. Cch th c hi n cc l nh bn trong Vim :sh :! <l nh> kh i t o m t shell th c hi n m t l nh shell trong Vim 1 8

:!! K q

l p l i l nh ':! <l nh>' lc tr c m trang man c a l nh trng v i n i dung t t i d u nh c tr thot kh i l nh ang th c hi n tr l i Vim

B.4.2. Cc l nh lin quan n file Ngoi cc l nh c b n nh sao chp hay c t dn, trong vim cn c m t s l nh cho php c th c c nh ng thng tin c n thi t v file. CTRL-G n g CTRL-G CTRL-G :f <tn m i> :ls :cd :w <tn file> :e[n, /m u] <file> :e[n, /m u]! <file> :e :e! :fin [!] <file> :e #n :pw :conf <l nh trong vim > hi n th tn file hi n th i km theo tr ng thi file v v tr d u nh c tr (tr ng thi c th l: ch c, c s a, l i khi c, file m i) (gi ng :f) hi n th thng tin nh CTRL -G v c thm ng d n y c a file (n u n>1, tn buffer hi n th i s c a ra) a ra v tr d u nh c tr theo d ng: c t/t ng s c t, dng/t ng s dng v k t /t ng s k t i tn file hi n th i thnh tn m i li t k t t c cc file hi n th i ang c s d ng trong Vim (gi ng :buffer v :files) a thm ng d n vo tn file t o m t b n sao c a file hi n th i v i tn m i l tn file (gi ng nh save as trong Win) Xc nh file c n so n th o so n th o file, t dng th n ho c t dng c ch a m u, tr khi c s thay i th c s trong file lun so n th o file, t dng th n ho c t dng c ch a m u, b qua m i s thay i trong file n p l i file hi n th i, tr khi c s thay i th c s trong file lun n p l i file hi n th i, b qua m i s thay i th c s trong file tm file trn ng d n v so n th o so n th o file th n (gi ng n CTRL-^) Cc l nh khc a ra tn th m c hi n th i th c hi n l nh trong vim v a ra h p tho i yu c u xc nh n khi c thao tc i h i s xc nh n

1 8

PH

L C C. MIDNIGHT COMMANDER

C.1. Gi i thi u v Midnight Commander (MC)


Ng i s d ng h i u hnh MS-DOS u bi t tnh nng ti n ch Norton Commander (NC) r t m nh trong qu n l, i u khi n cc thao tc v file, th m c, a cng nh l mi tr ng tr c quan trong ch vn b n (text). D trong h i u hnh Windows sau ny c s h tr c a ti n ch Explorer nhng khng v th m vai tr c a NC gi m i: Nhi u ng i dng v n thch dng NC trong cc thao tc v i file v th m c. Linux cng c m t ti n ch mang tn Midnight Commander (vi t t t l MC) c ch c nng v giao di n g n gi ng v i NC c a MS-DOS v s d ng MC trong Linux tng t nh s d ng NC trong MS-DOS.

C.2. Kh i

ng MC

L nh kh i ng MC: # mc [Ty-ch n] C m t s tu ch n khi dng ti n ch ny theo m t s d ng thng d ng sau: -a -b -c -d -P -v file -V Khng s d ng cc k t ho v cc ng th ng khung. Kh i ng trong ch mn hnh en tr ng. Kh i ng trong ch mn hnh mu. Khng h tr chu t V i tham s ny, Midnight Commander s t ng chuy n th m c hi n hnh t i th m c ang lm vi c. Nh v y, sau khi k t thc, th m c hi n hnh s l th m c cu i cng thao tc. S d ng ch c nng View c a MC xem n i dung c a file c ch ra. Cho bi t phin b n chng trnh ang s d ng.

N u ch ra ng d n (path), ng d n u tin l th m c c hi n th trong panel ch n (selected panel), ng d n th hai c hi n th panel cn l i.

C.3. Giao di n c a MC
Giao di n c a MC c chia ra lm b n ph n. Ph n l n mn hnh l khng gian hi n th c a hai panel. Panel l m t khung c a s hi n th cc file th m c cng cc thu c tnh c a n ho c m t s n i dung khc. Theo m c nh, dng th hai t d i ln s l dng l nh cn dng d i cng hi n th cc phm ch c nng. Dng u tin trn nh mn hnh l th c n ngang (menu bar) c a MC. Thanh th c n ny c th khng xu t hi n nhng n u kch ho t b ng c hai chu t t i dng u tin ho c nh n phm <F9> th n s hi n ra v c kch ho t. Midnight Commander cho php hi n th cng m t lc c hai panel. M t trong hai panel l panel hi n hnh (panel ch n). Thanh sng ch n n m trn panel hi n hnh. H u h t cc thao tc u di n ra trn Panel ny. M t s cc thao tc khc v file nh Rename hay Copy s m c nh s d ng th m c Panel cn l i lm th m c ch. Tuy nhin ta v n c th s a c th m c ny tr c khi thao tc v cc thao tc ny u tin bao gi cng yu c u nh p ng d n. Trn panel s hi n th h u h t cc file v th m c con c a th m c hi n hnh. Midnight Commander c c ch hi n th cc ki u file khc nhau b ng cc k hi u v mu 1 9

s c khc nhau, v d nh cc file bi u t ng lin k t s c k hi u @ u, cc file thi t b s c mu tm, cc file ng ng c mu en, cc th m c c k hi u / u, cc th m c lin k t c k hi u ~... Cho php thi hnh m t l nh h th ng t MC b ng cch g chng ln mn hnh. T t c nh ng g c g vo u c hi n th dng l nh pha d i tr m t s k t i u khi n v khi nh n Enter, Midnight Commander s thi hnh l nh g vo.

C.4. Dng chu t trong MC


Midnight Commander s h tr chu t trong tr ng h p khng g i v i tham s -d. Khi kch chu t vo m t file trn Panel, file s c ch n, c ngha l thanh sng ch n s n m t i v tr file v panel ch a file s tr thnh panel hi n hnh. Cn n u kch chu t ph i vo m t file, file s c nh d u ho c xo d u tu thu c vo tr ng thi kch tr c . N u kch i chu t t i m t file, file s c thi hnh n u l file thi hnh c (executable program) ho c n u c m t chng trnh c trng cho ring ph n m r ng th chng trnh c trng ny s c th c hi n. Ng i dng cng c th th c hi n cc l nh c a cc phm ch c nng b ng cch nhy chu t ln phm ch c nng . N u kch chu t t i dng u tin trn khung panel, ton b panel s b ko ln. Tng t kch chu t t i dng cu i cng trn khung panel, ton b panel s b ko xu ng. C th b qua cc thao tc chu t c a MC v s d ng cc thao tc chu t chu n b ng cch gi phm <Shift>

C.5. Cc thao tc bn phm


M t s thao tc c a Midnight Commander cho php s d ng nhanh b ng cch g cc phm t t (hot key). tng thch v i m t s h th ng khc, trong cc b ng d i y v Midnight Commander, vi t t t phm CTRL l C, phm ALT l M (Meta), phm SHIFT l S. Cc k hi u t h p phm c d ng nh sau: C-<chr> C-<chr1><char2> M-<chr> S-<chr> C ngha l gi phm CTRL trong khi g phm <char>. V d C -f c ngha l gi CTRL v nh n <f>. C ngha l gi phm CTRL trong khi g phm <char1> sau nh t t c ra v g phm <char2>. C ngha l gi phm ALT trong khi g phm <char>. N u khng c hi u l c th c th th c hi n b ng cch g phm <Esc> nh ra r i g phm <char>. C ngha l gi phm SHIFT trong khi g phm <char>.

Sau y l ch c nng m t s phm thng d ng. Cc phm th c hi n l nh: Enter N u c dng l nh, l nh s c thi hnh. Cn n u khng th s tu vo v tr c a thanh sng trn panel hi n hnh l file hay th m c m ho c vi c chuy n i th m c ho c thi hnh file hay thi hnh m t chng trnh tng ng s di n ra. C p nh t l i cc thng tin trn Panel. 1 9

C-l

Cc phm thao tc trn dng l nh: M-Enter hay CEnter M-Tab C-x t, C-x C-t C-x p, C-x C-p M-p, M-n C-a C-e C-b, Left C-f, Right M-f M-b C-h, Space C-d, Delete C-@ C-k M-C-h, MBackspace chp tn file v tr thanh sng ch n xu ng dng l nh

hon thnh tn file, l nh, bi n, tn ng i dng ho c tn my gip sao cc file c nh d u (m c nh l file hi n th i) trn panel ch n (C-x t) ho c trn panel kia (C-x C-t) xu ng dng l nh a tn ng d n hi n th i trn panel ch n (C-x p) ho c trn panel kia (C-x C-p) xu ng dng l nh s d ng hi n l i trn dng l nh cc l nh c g i tr c . M-p s hi n l i dng l nh c thi hnh g n nh t, M-n hi n l i l nh c g i tr c l nh a d u nh c tr v u dng a d u nh c tr v cu i dng a d u nh c tr di chuy n sang tri m t k t a d u nh c tr di chuy n sang ph i m t k t a d u nh c tr n t ti p theo a d u nh c tr ng c l i m t t xo k t tr c xo k t t i v tr d u nh c tr nh d u c t xo cc k t t v tr d u nh c tr n cu i dng xo ng c l i m t t

Cc phm thao tc trn panel: Up,Down, PgUp, PgDown, Home, End b, C-b, C-h, Backspace, Delete Space u, d g, G Tab, C-i Insert, C-t M-g, M-h, M-j s d ng cc phm ny di chuy n trong m t panel

di chuy n ng c l i m t trang mn hnh di chuy n ti p m t trang mn hnh di chuy n ln/ xu ng 1/2 trang mn hnh di chuy n n i m u ho c cu i c a m t mn hnh hon i panel hi n hnh. Thanh sng ch n s chuy n t panel c sang panel hi n hnh ch n nh d u m t file ho c th m c l n l t ch n file u tin, file gi a v file cu i trn panel hi n th

1 9

C-s, M-s

M-t C-\ +

tm ki m file trong th m c. Khi kch ho t ch ny, nh ng k t g vo s c thm vo xu tm ki m thay v hi n th trn dng l nh. N u tu ch n Show mini-status trong option c t th xu tm ki m s c hi n th dng tr ng thi. Khi g cc k t , thanh sng ch n s di chuy n n file u tin c nh ng k t u gi ng nh ng k t g vo. S d ng phm Backspace ho c Del hi u ch nh sai st. N u nh n C-s l n n a, vi c tm ki m s c ti p t c chuy n i ki u hi n th thng tin v file ho c th m c thay i th m c hi n th i s d ng d u c ng l a ch n nh d u m t nhm file. C th s d ng cc k t i di n nh *, ?... bi u di n cc file s ch n s d ng d u tr xo nh d u m t nhm file. C th s d ng cc k t d i di n nh *, ? bi u di n cc file s xo s d ng d u * nh d u ho c xo nh d u t t c cc file trong panel m t panel s hi n th n i dung th m c hi n th i ho c th m c cha c a th m c hi n th i c a panel kia di chuy n n th m c lc tr c c s d ng di chuy n n th m c ti p theo c s d ng

* M-o M-y M-u

C.6. Th c n thanh ngang (menu bar)


Th c n thanh ngang trong Midnight Commander c hi n th dng u tin trn mn hnh. M i khi nh n <F9> ho c kch chu t t i dng d u tin trn mn hnh th c n ngang s c kch ho t. Th c n ngang c a MC c nm m c Left, File, Command, Option v Right. Th c n Left v Right gip ta thi t l p cng nh thay i ki u hi n th c a hai panel left v right. Cc th c n m c con c a chng g m: th c n ny c dng khi mu n thi t l p ki u hi n th c a cc file. C b n ki u hi n th : * Full - hi n th thng tin v tn , kch th c, v th i gian s i c a file; * Brief - ch hi n th tn c a file; * Long - hi n th thng tin y v file (tng t l nh ls -l); * User - hi n th cc thng tin do t ch n v file; xem nhanh n i dung c a m t file xem cc thng tin v m t th m c ho c file hi n th d i d ng cy th m c th c hi n s p x p n i dung hi n th theo tn, theo tn m r ng, th i gian s a ch a, th i gian truy nh p, th i gian thay i, kch th c, inode th c hi n vi c l c file theo tn th c hi n lin k t n m t my tnh th c hi n vi c l y cc file trn cc my t xa 1 9

Listing Mode ...

Quick view Info Tree Sort order... Filter ... Network link ... FTP link ...

C-x q C-x i

Rescan

C-r

qut l i

Th c n File ch a m t danh sch cc l nh m c th thi hnh trn cc file c nh d u ho c file t i v tr thanh ch n. Cc th c n m c con: User menu View View file ... Filtered view Edit Copy cHmod Link Symlink edit sYimlink chOwn Advanced chown Rename/Move Mkdir Delete Quick cd select Group Unselect group reverse selecTion Exit F6 F7 F8 M-c M-+ MM-* F10 F2 F3 M-! F4 F5 C-x c C-x l C-x s C-x C-s C-x o th c n dnh cho ng i dng xem n i dung c a file hi n th i m v xem n i dung c a m t file b t k th c hi n m t l nh l c v i tham s l tn file v hi n th n i dung c a file so n th o file hi n th i v i trnh so n th o m c nh trn h th ng th c hi n copy thay i quy n truy nh p i v i m t th m c hay m t file t o m t lin k t c ng n file hi n th i t o m t lin k t t ng trng n file hi n th i hi u ch nh l i m t lin k t t ng trng thay i quy n s h u i v i th m c hay file thay i quy n s h u cng nh quy n truy nh p c a file hay th m c th c hi n vi c i tn hay di chuy n i v i m t file t o m t th m c xo m t ho c nhi u file chuy n nhanh n m t th m c th c hi n vi c ch n m t nhm cc file ng c v i l nh trn ch n cc file trong th m c hi n th i thot kh i MC

Th c n Command cng ch a m t danh sch cc l nh. Directory tree Find file Swap panels Switch panels on/of Compare directories Command history Directory hotlist External panelize M-? C-u C-o C-x d C-\ C-x ! hi n th th m c d i d ng cy th m c tm m t file th c hi n tro i n i dung gi a hai panel hi n th a ra l nh shell c th c hi n l n cu i (ch s d ng trn xterm, trn console SCO v Linux) th c hi n so snh th m c hi n t i trn panel ch n v i cc th m c khc a ra danh sch cc l nh th c hi n thay i th m c hi n th i th c hi n m t l nh trong MC v hi n th k t qu trn panel ch n (v d : n u mu n trn panel ch n hi n th t t c cc file lin k t trong th m c hi n th i, hy ch n m c th c n ny v nh p l nh find . -type l -print

1 9

Show directory size Command history Directory hotlist Background Extension file edit

C-\ C-x j

s th y k t qu th t tuy t v i) hi n th kch th c c a th m c hi n th danh sch cc l nh th c hi n chuy n nhanh n m t th m c th c hi n m t s l nh lin quan n cc qu trnh n n cho php hi u ch nh file ~/.mc/ext xc nh chng trnh s th c hi n khi xem, so n th o hay lm b t c i u g trn cc file c tn m r ng n ho t

Th c n Options cho php thi t l p, hu b m t s tu ch n c lin quan ng c a chng trnh MC. Configuration ... Lay-out ... Confirmation ... Display bits ... Learn keys ... Virtual FS ... Save setup

thi t l p cc tu ch n c u hnh cho MC xc l p cch hi n th c a MC trn mn hnh thi t l p cc h p tho i xc nh n khi th c hi n m t thao tc no thi t l p cch hi n th c a cc k t xc nh cc phm khng c kch ho t thi t l p h th ng file o ghi m i s thi t l p c thay i

C.7. Cc phm ch c nng


Cc phm ch c nng c a Midnight Commander c hi n th t i dng cu i cng c a mn hnh. C th th c hi n cc ch c nng b ng cch kch chu t ln nhn c a cc ch c nng tng ng ho c nh n trn bn phm ch c nng . F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 hi n th trang tr gip a ra th c n ng i dng xem n i dung m t file so n th o n i dung m t file th c hi n sao chp file th c hi n di chuy n ho c i tn file t o th m c m i xo th m c ho c file a tr so n th o ln thanh th c n n m ngang thot kh i MC

C.8. B so n th o c a Midnight Commander


Midnight Commander cung c p m t b so n th o kh ti n d ng trong vi c so n th o cc vn b n ASCII. B so n th o ny c giao di n v thao tc kh gi ng v i ti n ch Edit c a DOS hay NcEdit c a Norton Commander. hi u ch nh m t s file vn b n, hy di chuy n thanh sng ch n n v tr file r i nh n F4, n i dung c a file s hi n ra trong vng so n th o. Sau khi hi u ch nh xong, nh n F2 ghi l i. B so n th o ny c m t th c n ngang cung c p cc ch c nng y nh m t b so n th o thng th ng. N u t ng l ng i dng DOS v m i dng Linux th nn dng b so n th o ny hi u ch nh v so n th o vn b n thay v b so n th o Vim. Sau y l b ng li t k cc phm ch c nng cng nh cc m c th c n trong b so n th o ny: 1 9

* Thanh th c n Th c n File: cc thao tc lin quan Open/load New Save Save as ... Insert file ... Copy to file ... About .. Quit n file m ho c n p m t file t o m t file m i ghi n i dung file c so n th o t o m t file khc tn nhng c n i dung trng v i n i dung file hi n th i chn n i dung m t file vo file hi n th i sao o n vn b n c nh d u n m t file khc thng tin v b so n th o thot kh i b so n th o

C-o C-n F2 F12 F15 C-f F10

Th c n Edit: cc thao tc lin quan Toggle Mark Mark Columns Toggle Ins/overw Copy Move Delete Undo Beginning End

n vi c so n th o n i dung file F3 S-F3 Ins F5 F6 F8 C-u C-PgUp C-PgDn th c hi n nh d u m t o n vn b n nh d u theo c t chuy n i gi a hai ch chn/ th c hi n sao chp file th c hi n di chuy n file xo file tr v tr ng thi tr c khi th c hi n m t s thay di chuy n n u mn hnh di chuy n n cu i mn hnh

Th c n Sear/Repl: cc thao tc lin quan n vi c tm ki m v thay th Search .. Search again Replace ... F7 F17 F4 th c hi n tm ki m m t xu vn b n tm ki m ti p tm v thay th xu vn b n

Th c n Command: Cc l nh c th c th c hi n trong khi so n th o Goto line ... Insert Literal ... Refresh screen Insert Date/time Format paragraph Sort M-l C-q C-l M-p M-t di chuy n tr so n th o n m t dng chn vo tr c d u nh c tr m t k t lm ti l i mn hnh chn ngy gi hi n t i vo v tr d u n hc tr nh d ng l i o n vn b n th c hi n s p x p

1 9

Th c n Options: Cc tu ch n c th thi t l p cho b so n th o General ... Save mode ... * Cc phm ch c nng F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 hi n th trang tr gip ghi n i dung file th c hi n vi c nh d u o n vn b n tm v thay th xu vn b n th c hi n vi c sao chp di chuy n file tm ki m xu vn b n xo o n vn b n c nh d u hi n th thanh th c n ngang thot kh i b so n th o thi t l p cc tu ch n cho b so n th o ghi l i m i s thi t l p c thay i

1 9

PH
D.1 Ci t Samba

L C D. SAMBA

N u cc d ch v chia s file gi a cc my Windows v i nhau v gi a cc my Linux v i nhau c gi i quy t th cn l i l v n chia s file gi a cc my Linux v Windows l i l m t nhu c u quan tr ng. Samba hi n tr thnh cy c u n i gi a Linux v Windows. Samba cho php cc my tnh ch y Linux c th ho t ng v giao ti p trn cng m t giao th c m ng v i my Windows. Samba server th c hi n cc d ch v sau: Chia s m t hay nhi u h th ng file. Chia s cc my in c ci t c hai pha server v client c a n. H tr cc client duy t Network Neighborhood trong cc my windows. Ki m tra xc nh n cc client ng nh p vo vng c a Windows. Cung c p ho c h tr vi c phn gi i a ch c a server b ng WINS (Windows Internet Name Server). d hnh dung hn, ta l y v d m ng n gi n c dng Samba. Gi s ta c m t c u hnh m ng c b n sau: m t my ch Linux c s d ng Samba v i tn c t l Toltec, v hai client trn MS Windows, v i tn l Maya v Aztec, c n i v i nhau trong m t m ng Lan v tham gia vo nhm lm vi c c tn METRAN. Ta cn gi s my ch Toltec cn c m t my in phun tn l lp c n i t i ch , ng th i vi c chia s a c ng cho php cc my nhn th y nhau. M t m ng trn b ng hnh v D.1 c bi u di n d i y:

Hnh D.1 M t m ng c nhi u h

i u hnh

Cc vai tr c a Samba
Vai Tr

i v i m ng Windows NT (phin b n Samba 2.0.4b.)


C th th c hi n c C C C (Samba 2.1 hay mu n hn) Khng C C Khng C C Khng 1 9

File Server Printer Server Primary Domain Controller Backup Domain Controller Window 95/98 Authentication Local Master Browser Local Backup Browser Domain Master Browser Primary WINS Server Secondary WINS Server

D.2 Cc thnh ph n c a Samba


Samba th c ch t ch a m t s chng trnh ph c v cho nh ng m c ch khc nhau nhng c lin quan v i nhau. H t nhn c a Samba l hai deamon c nh ng nhi m v sau: smbd Daemon: smbd ch u trch nhi m i u khi n cc ti nguyn c chia s gi a my ch Samba v cc my tr m c a n. N cung c p cc d ch v v file, in, v trnh duy t cho cc my tr m SMB thng qua m t hay nhi u m ng. smdb x l t t c cc trao i gi a my ch Samba v cc client m ng c a n. Ngoi ra, deamon ny cn ch u trch nhi m ki m tra xc nh n ng i dng, kho ti nguyn, v chia s d li u thng qua giao th c SMB. nmbd Deamon: nmbd l m t my ch d ch v tn n gi n b t ch c cc ch c nng my ch d ch v tn, ch y v i cc giao th c WINS v NetBIOS. Daemon ny l ng nghe cc yu c u c a my ch d ch v tn v cung c p cc thng tin thch h p khi c g i t i. N cn cung c p danh sch duy t Network Neighborhood v tham gia vo l a ch n cc i t ng m ng trong . B ci t Samba cn c m t t p h p nh cc cng c dng l nh Linux: smbclient: M t client Linux theo kiu ftp c th dng ti n ch ny k t n i v i ti nguyn c Samba chia s . Smbtar: Chng trnh lu tr cc ti nguyn c chia s , tng t nh l nh tar c a Linux. nmblookup: Chng trnh cung c p NetBIOS thng qua vi c tm tn b ng TCP/IP. smbpasswd: Chng trnh cho php ng i qu n tr thay i m t kh u m ha c a Samba. testparm: Chng trnh n gi n lm cho file c u hnh Samba c hi u l c. testprns: Chng trnh ki m tra li u cc my in khc nhau c c deamon smbd nh n ra hay khng. N u mu n xem t ng deamon th c hi n nh ng g, Samba c chng trnh v i tn smbstatus s a t t c cc thng tin ln mn hnh nh sau:

Samba version 2.2.7-security-rollup-fix Service uid gid pid machine ---------------------------------------------IPC$ root root 21608 httt-09 (10.10.16.5) Fri Nov 28 09:42:52 2003 No locked files
Vi c ci t samba cng kh n gi n, ta c n chu n b cc package sau: samba-client-xxx.rpm samba-xxx.rpm samba-common-xxx.rpm Trong xxx l s hi u phin b n c a samba. ng nh p v i quy n root v sau ra l nh: #rpm ivh samba-client-xxx.rpm samba-xxx.rpm sambacommon-xxx.rpm N u ta khng nh n l i thng bo l i no c th qu trnh ci t hon t t.

1 9

D.3 File c u hnh Samba Nh ng tn c bao trong cc ngo c vung dng k hi u cho cc ph n c a file c u hnh smb.conf, m t cc chia s hay d ch v m Samba cung c p. V d , cc ph n test v homes l cc chia s ring r i v i a c ng; chng ch a cc tu ch n c nh x t i cc th m c c th trn server Samba. Ph n chia s printers ch a cc tu ch n nh x t i cc my in khc nhau c a servers. T t c cc ph n c xc nh trong file smb.conf, tr ph n [global, s c coi nh cc chia s a c ng ho c my in cho nh ng dng k t n i v i server Samba.
Cc dng vo cn l i l cc tu ch n ring c quy nh c th cho s chia s c c p t i. Cc tu ch n c tc d ng cho t i khi b t u m t ph n m i c k hi u trong c p ngo c vung, ho c cho t i i m cu i c a file smb.conf c thi t l p b ng cch gn gi tr cho chng. M i m t tu ch n c u hnh u c c php n gi n: option = value Cu i cng, ta c th dng kho ng tr ng d ngn cch chu i cc gi tr trong danh sch, ho c c th dng cc d u ph y, Hai cch trn l tng ng nhau nhng ta ch nn dng m t cch ho c d u ph y ho c kho ng tr ng. Ch vi t hoa khng c ngha g i v i file c u hnh Samba, ngo i tr trong cc v tr m h i u hnh c ch t i khng cho php vi t, b i v h i u hnh Linux phn bi t ch vi t th ng v vi t hoa. Trong tr ng h p dng vo qu di khng th gi g n trong khng gian m c a s dng l nh cho php, ta c th vi t ti p dng trong file c u hnh Samba b ng cch dng k hi u d u g ch ng c \, v d :

comment = Su chia se dau tien la ban sao chinh cua s\ an pham phan mem Teamworks moi
C th thay i file smb.conf v b t k tu ch n no c a n vo th i i m b t k trong khi cc daemon Samba ang ch y. Theo m c nh, Samba ki m tra file c u hnh c a mnh c 60 giy m t l n ti p nh n c thay i m i. N u khng mu n ch i lu nh v y, b n c th b t cc daemon n p l i b ng cch g i tn hi u SIGHUP t i chng, ho c ch n gi n l kh i ng l i. V d , n u ti n trnh smbd c PID l 893, ta c th b t n c l i file c u hnh b ng l nh sau y: # kill SIGHUP 893 Khng ph i t t c cc thay i u c c my client ch p nh n ngay. V d , cc ti nhuyn chia s hi n th i ang c s d ng s khng c ng k cho n khi cc my client c t cc n i k t r i k t n i l i t i cc ti nguyn . Thm n a, cng s khng c ng k ngay l p t c. i u gip cho cc my client tch c c khng b ng t n i k t m t cch b t ng ho c g p ph i cc v n khng c ch i v truy c p ti nguyn khi phin lm vi c v n ang c m . Cc bi n: Samba c m t t p h p y c bi n xc nh cc c trng c a server Samba v c a c my client n i v i n. M i m t bi n c b t u b ng d u ph n trm %, ti p theo l m t k t n vi t hoa ho c vi t th ng v ch c th c dng bn v ph i c a dng li nh tu ch n c u hnh theo c php potion = variable nh trong cu li l nh v d sau:

[pub] path = /home/ftp/pub/%a


2 0

K hi u bi n %a c ngha i di n cho ki n trc c a my tnh client, nh WinNT ch cc my tnh ch y trn Windows NT, Win95 cho my Windows 95 ho c 98, hay nh WfWg cho Windows for Worrgroups (Windows 3.11). Theo cch vi t trn, Samba s gn ng d n chung ch t i ti nguyn c chia s trong ph n [pub] cho cc my client ch y trn Windows NT, gn ng d n khc cho cc my Windows 9x, v m t ng d n n a cho cc my v i Windows for Worrkgroups. Ni cch khc, cc ng d n m theo m i my client nh n th y ti nhuyn chia s s khc nhau, tu thu c vo ki n trc c a client. Bi n %a %I %m %M %g %G %u %U %p %P %S %d %h %L %N %v %R %T nh ngha Cc bi n c a my client Ki n trc c a cc my client(v d , Samba, wfwg, winNT, win95, ho c UNKNOWN). a ch IP c a client(v d , 192.168.220.100). Tn NetBIOS c a client. Tn DNS c a client. Cc bi n v ng i dng Nhm chnh c a %u Nhm chnh c a %U Th m c home hi n th i c a %u. Tn ng i dng c yu c u trn my client Cc bi n v ti nguyn c chia s ng d n cho automounter t i th m c g c c a ti nguyn c chia s , n u th m c khc v i %P Th m c g c hi n th i c a ti nguyn c chia s . Tn hi n th i c a ti nguyn c chia s . Cc bi n c a server nh danh ti n trnh (PID) server hi n th i. Tn host DNS c a server Samba. Tn host NetBIOS c a server Samba Th m c home c a server Samba, l y t file nh x (map) c a automount. Phin b n Samba. Cc bi n khc M c c a giao th c SMB c tho thu n thi t l p. Ngy gi hi n t i. Danh sch cc bi n c a Samba

D.4 Cc ph n

c bi t c a file c u hnh Samba

Ph n [global]: Ph n [global] xu t hi n h u nh trong m i file c u hnh Samba, th m ch khi trong khng c dng l nh b t bu c no. M i tu ch n c thi t l p trong ph n ny u c p d ng i v i t t c cc ti nguyn chia s khc, v n i dung c a ph n ny s c sao chp vo cc ph n khc. Nhng cc ph n khc, n u cng c cc tu ch n gi ng nh trong ph n [global], th trong cc ph n , cc tu ch n s c xc nh v i cc gi tr m i c ghi ln cc ln cc gi tr c c a [global]. Ta c th c u hnh server

2 0

Samba, u tin ta ph i ch n ba tu ch n c u hnh c b n xu t hi n trong ph n global c a file c u hnh smb.conf:

[global] Server configuration parameters netbios name = HYDRA server string = Samba %v on (%L) workgroup = SIMPLE
Tu ch n netbios name: cho php t tn NetBIOS cho server. V d : netbios name = DHQGHN Gi tr m c nh cho tu ch n ny l tn my c a server (ph n bn tri cng c a tn DNS y ). V d , tn NetBIOS m c nh c a my hut.edu.vn s l HUT. Thng th ng, ng i ta t tn NetBIOS khc v i tn DNS hi n th i. Vi c thay i tn NetBIOS c a server khng c khuy n khch n u khng c l do chnh ng, n u nh tn khng ph i l duy nh t v m ng LAN c chia ra thnh hai hay nhi u vng DNS. V d , khi m ng hut.edu.vn b chia thnh hai vng v i cc server l hut.lythuyet.edu.vn v hut.thuchanh.edu.vn th tn NetBIOS c l HUT by gi c th thnh cc tn HUTLYTHUYET v HUTTHUCHANH. Ty ch n server string: Thng s c a server string xc nh n i dung dng ch thch s xu t hi n c nh tn c a server Samba trong c c a s Network Neighborhood (khi ch Details) l n c a s qu n l in c a Microsoft Windows. B n c th dng cc bi n chu n cung c p thng tin cho dng m t , v d trn ta s d ng hai bi n l %v v %L. Ty ch n workgroup: Thng s c a tu ch n workgroup thi t l p nhm lm bi c hi n th i, ni m server Samba t thng bo cho cc thnh bin c a m ng v mnh. Cc clients mu n truy c p c ti nguyn c chia s trn server Samba ph i cng thu c v m t nhm lm vi c NetBIOS. Nn nh r ng cc nhm lm vi c ph i c cc tn nhm NetBIOS th c th , tun theo quy t c t tn NetBIOS. C u hnh chia s a c ng Trong v d ph n tr c ta nh c n r ng do cha c ti nguyn c chia s nn c a s chi ti t c a server hydra ang cn tr ng. By gi ta ti p t c lm vi c c i file c u hnh Samba v t o ra m t a c ng c chia s cn r ng c tn l [data]. y l cc ng tc c n thm vo t c k t qu v a nu:

SampleDataDrive] comment=Data Drive path = /export/samba/data writable = yes guest ok = yes


Ti nguyn c chia s SampleDataDrive th ng l a c ng c Samba chia s v nh x t i th m c /export/samba/data trn server Samba. Ta cho thm m t dng vo c ch thch m t ti nguyn c chia s l Data Drive, cng nh gn cho b n thn ti nguyn m t ci tn SampleDataDrive. Ti nguyn c chia s c thi t l p c quy n ghi cho cc ng i dng. Gi tr m c nh c a tu ch n ny l ch c. Trong phng n khng c n n c b o m t ch t ch nh y, ta t gi tr yes cho tu ch n guest ok, cho b t k ai cng c th k t n i c

2 0

t i ti nguyn v a c chia s . Trn my UNIX c ci t Samba ta t o th m c /export/samba/data v i quy n root b ng cc l nh sau: # mkdir /export/samba/data #chmod 777 /export/samba/data By gi , n u ta l i k t n i v i server hydra (b ng cch kch phm chu t vo bi u t ng c a server trong c a s Network Neighborhood c a Windows), m t th m c c chia s v i tn data xu t hi n. Tu ch n Path (directory) Thng s String ( ng d n n th m c) Nh phn (yes/no) String (xu k t ) Ch c nng t th m c UNIX dng cho chia s a c ng ho c cho vi c x p hng ch b i my in c chia s . N u t l yes, s khng d n ki m tra xc nh n ng i dng truy c p ti nguyn c chia s ny. t ch thch s xu t hi n cng ti nguyn c chia s . t tn cho a, theo d ng c a DOS. N u l yes, cho php truy c p ch c t i ti nguyn c chia s . N u l no, cho php truy c p ch c t i ti nguyn c chia s .
a c ng

M c

nh

Ph m vi Share

/tmp

Guest ok (public)

no

Share

Comment

Khng c Tn c a ti nguyn c chia s yes

Share

volume

String Nh phn (yes/no) nh phn (yes/no)

Share

Read only Writeable (write ok)

Share

no

Share

Cc tu ch n c b n chia s

Cc tu ch n v m ng c a Samba Tu ch n hosts allow (allow hosts) Hosts deny (deny hosts) Bind interfaces only Thng s String (danh sch tn my) String (danh sch tn my) Nh phn (yes/no) Ch c nng Xc nh cc my c th k t n i v i Samba. Xc nh cc my khng th k t n i v i Samba. N u t l yes, Samba s ch lin k t t i cc giao di n xc nh b i tu ch n M c nh Ph m vi Share

Khng c

Khng c no

Share Global

2 0

socket address

String ( a ch IP)

interfaces. t a ch IP nghe, dng cho tr ng h p c nhi u giao th c o trn servers.

Khng c

Global

Cc tu ch n c u hnh m ng Ty ch n hosts allow: Tu ch n ny xc nh cc my c quy n truy c p cc ti nguyn c chia s trn servers Samba, c vi t nh danh sch cc my hay a ch IP c a chng, cch nhau b ng d u ph y ho c kho ng tr ng. Ta c th t c m t cht t m c b o m t, ch n gi n b ng cch t a ch m ng con LAN c a mnh vo ch gi tr c a tu ch n ny. V d : hosts allow = 192.168.200. localhost Ch r ng ta t localhost (ho c a ch 127.0.0.1) v tr sau a ch c a m ng con. M t trong s cc l i th ng th y khi dng tu ch n hosts allow l c m lun servers Samba lin h v i chnh n. Chng trnh smbpasswd s c n c k t n i v i servers Samba nh l m t client thay i m t kh u m ha c a ng i dng. Thm n a, vi c duy t t i ch cng i h i c c ng nh p t i ch . Sau y l cc quy t c c a Samba quy nh cho vi c dng cc tu ch n hosts allow v hosts deny: - N u khng c tu ch n allow ho c deny no c xc nh trong file c u hnh smb.conf Samba s cho php cc k t n i t b t k my no m h th ng Unix ch p nh n - N u c cc tu ch n allow hoc deny c xc trong ph n global c a file c u hnh smb.conf, chng s c p d ng cho t t c cc ti nguyn c chia s , th m ch khi m t ti nguyn no c tu ch n ghi ln c xc nh. - N u ch c tu ch n allow c xc nh cho m t ti nguyn c chia s , ch c cc my c li t k m i c quy n truy c p ti nguyn . Cc my khc u b c m. - N u ch c tu ch n deny c xc nh cho m t ti nguyn c chia s , m i my khng c trong danh sch u c quy n s d ng ti nguyn . - N u c hai tu ch n allow v deny c xc nh, m t my xu t hi n trong danh sch c php th khng c m t trong danh sch b c m. N u khng my s b c m truy c p vo ti nguyn c chia s . Ch : C n th n trnh tr ng h p ta cho php m t my no , nhng sau y l i c m c m ng con m my y tham gia. hosts deny: Tu ch n hosts deny xc nh cc my khng c quy n truy nh p ti nguyn c chia s , c vi t nh danh sch cc tn my ho c a ch IP c a chng, cch nhau b ng d u ph y hay kho ng tr ng v i c php gi ng nh i v i tu ch n hosts allow trn. V d , h n ch truy c p t i servers t m t my, tr t vng example.com, ta c th vi t: hosts deny = ALL EXCEPT.example.com 2 0

Gi ng nh hosts allow, khng c gi tr m c nh cho tu ch n hosts deny. N u mu n cho php hay c m truy c p t i ti nguyn c chia s c th ta ph i qua c hai tu ch n hosts allow v hosts deny trong ph n global hay n u c d ng th ph i ghi gi tr m i trong ph n c u hnh cho ti nguyn c chia s . interfaces: Tu ch n interfaces li t k cc a ch m ng m ta mu n servers Samba nh n bi t v p ng. Tu ch n ny r t ti n l i n u ta mu n my tnh tham gia ng th i nhi u m ng con. N u khng c dng Samba tm giao di n m ng chnh c a servers (th ng l card Ethernet u tin) khi kh i ng v t c u hnh ho t ng ch trong m ng con c giao di n m ng . Ta ph i dng tu ch n ny b t bu c Samba ph i th c hi n m ng con khc n a trong m ng c a ta. Gi tr c a tu ch n l m t hay nhi u b g m cc i a ch IP/ m t n m ng, gi ng nh trong v d sau:

interfaces = 192.168.220.100/255.255.255.0 192.168.210.30/255.255.0


C th dng nh d ng m t n bt CIDR nh sau:

interfaces = 192.168.220.100/24 192.168.210.30/24


S c a m t n bt ch s u tin c b t trong m t n m ng, v d s 24 ngha l 24 bt u tin (trong s t t c 32 bit) s c kch ho t, hay ng ngha v i gi tr m t n m ng 255.255.255.0. Tng t nh v y, s 16 tng ng v i m t n 255.255.0.0, v 8v i 255.0.0.0. Tuy nhin, tu ch n ny c th ho t ng khng ng n u ta dng DHCP (phn ph i a ch IP ng). Bind interfaces only: Tu ch n ny c th c dng b t bu c cc ti n trnh smbd v nmbd ph c v cc yu c u SMB ch cho cc a ch c xc nh b i tu ch n interfaces m thi. Ti n trnh nmbd bnh th ng lin k t giao di n (0.0.0.0.) trn cc c ng 137 v 138 t i t t c cc a ch , cho php chng nh n cc thng bo phn ph i cng c ng t kh p m i ni. Tuy nhin, n u ta ghi ln gi tr b ng:

bind interfaces only = yes


Th ch cc gi i t cc a ch ngu n xc thng qua tu ch n interfaces m i c ch p nh n. V i smbd, tu ch n ny cng b t Samba khng ph c v cc yu c u v file c a cc m ng con ngoi danh sch c a tu ch n interfaces. N u mu n cho php c cc n i k t m ng t m th i, nh d ng SLIP ho c ppp, ta khng c d ng tu ch n ny. Ni chung, tu ch n ny t c dng, v th ng ch c nhng ng i qu n tr y kinh nghi m m i t i n. N u t gi tr cho bind intefaces only l yes, ta ph i thm a ch c a my t i ch (127.0.0.1) vo danh sch c a interfaces, n u khng smbpasswd s khng th ho t ng c. socket address: Tu ch n socket address quy nh a ch no trong s c xc nh b i interfaces s ghe t c l ch cc k t n i. Samba theo m c nh ch p nh n t t c cc n i k t v i t t c cc a ch . Khi c dng trong file smb.conf, tu ch n ny h n ch s a ch m Samba s dng ch cc n i k t. Vi d :

Interfaces = 192.168.220.100/24 192.168.210.30/24 Socket address = 192.168.210.30


Bnh th ng, tu ch n ny khng c khuyn dng. N u nh c dng cc m t kh u m ho, ta ph i thm vo m t dng c n i dung encrypt passwords=yes vo file c u hnh trn. Sau khi so n th o n i dung nh trn c a file smb.conf v t n vo ng v tr c n thi t, ta kh i ng l i server Samba v dng cc my client Windows ki m tra k t qu . 2 0

T t nhin cc my client Windows cng ph i thu c v nhm SIMPLE trong v d ta v n dng t u chng l cc my phoenix v chimaera. M i tu ch n xu t hi n tr c ph n c nh d u b ng ngo c vung [] u tin, t c l bn ngoi ph n [lobal] cng c coi l nh ng tu ch n chung. Ph n [mes] N u m t client no c g ng k t n i t i ti nguyn c chia s khng c nu trong file c u hnh smb.conf, Samba s tm ti nguyn c chia s homes trong file c u hnh. N u ph n ny t n t i, tn c a ti nguyn c chia s khng xc nh kia s c coi nh tn ng i dng c a Linux v c yu c u tm trong c s d li u m t kh u c a server Samba. N u nh c tn ng i dng , Samba coi my c ni t i trn l m t ng i dng Linux ang c k t n i t i th m c home c a mnh trong server. V d , gi s m t my client k t n i v i server Samba hydra l n u tin, v c truy c p t i ti nguyn c chia s c tn l [dung]. Trong file smb.conf, khng c ti nguyn c chia s no tn l dung c xc nh, nhng l i c ph n [homes], v th Samba tm file c s d li u m t kh u v tm xem c ti kho n ng i dng dung trong h th ng hay khng, Sau Samba ki m tra m y kh u c client cung c p v so snh v i m t kh u c a ng i dng Linux dung - ho c trong file c s d li u m t kh u n u dng m t kh u m ho. N u cc m t kh u trng nhau, Samba nh n bi t ch c l ng i dng dung c quy n v ang mu n k t n i t i th m c home c a mnh trong my Linux. Sau Samba s t t o ti nguyn c chia s c g i l dung cho ng i dng dung. Ng i ta cng p d ng phng php c th c hi n v i ph n [homes] t o ti kho n ng i dng m i, km theo m t kh u. Ph n [printers]: Ph n c bi t th ba g i l [printers] tng t nh ph n [homes]. N u m t client c k t n i t i ti nguyn c chia s khng c m t trong file c u hnh smb.conf file, v n u tn c a n khng th tm c trong file m t kh u, Samba s ki m tra xem n c ph i s chia s my in cho client . Samba th c hi n i u thng qua vi c c file d li u my in (th ng l /etc/printcap hay /etc/terminfo) xem c tn c a ti nguyn c chia s hay khng. N u c, Samba t o ra ti nguyn c chia s v i tn lin quan t i vi c chia s my in. c th in c trong Samba ta ph i thm cc tu ch n printer driver, printer driver file, v printer driver location vo file c u hnh smb.conf c a Samba. Tu ch n chung printer driver file ch n file printers.def ph i c t vo ph n [global]. Cc tu ch n cn l i c t vo ph n ti nguyn my in c chia s m ta mu n c u hnh m t cch t ng cc trnh i u khi n my in. Gi tri cho printer driver ph i trng v i xu c hi n ra trong Printer Winzard trn h th ng Windows. Gi tr c a printer driver location l ng d n c a ti nguyn PRINTER$ m ta thi t l p, ch khng ph i l ng d n UNIX trn server. Do , ta c th dng cc dng m sau y trong file c u hnh Samba:

[global] printer driver file = /usr/local/samba/print/printers.def [hpdeskjet] path = /var/spool/samba/printers printable = yes printer driver = HP DeskJet 560C Printer printer driver location = \\%L\PRINTER$
Gi ng nh i v i ph n [home], ta khng c n ph i b o tr ti nguyn c chia s cho m i m t may in c a h th ng trong file c u hnh smb.conf. Th c v y, Samba lun d a vo 2 0

vi c ng k my in c a Linux n u ta c n n, v cung c p cc my in ng k cho cc client. Tuy nhin, c m t h n ch nh : n u ti kho n ng i dng v my in u c tn l hai, Samba bao gi cng tm ti kho n ng i dng tr c tin, b t k l client th c ra l c n k t n i v i my in. Cc chi ti t v vi c thi t l p ti nguyn c chia s printers c trnh by trong ph n lin quan t i vi c in v phn gi i tn. Cc tu ch n c u hnh: Cc tu ch n trong file c u hnh Samba c chia s lm hai lo i: global (ton c c) v share (chia s ). M i m t lo i quy nh m t tu ch n s c xu t hi n u trong file c u hnh. Global (ton c c): Cc tu ch n global ph i c m t ch trong ph n [global] m thi. y l cc tu ch n th ng ch ps d ng xc nh ho t ng c a chnh server Samba. Share: Cc tu ch n share c th xu t hi n trong cc ti nguyn c chia s c th , ho c c trong ph n [global]. N u c m t trong ph n [global], chng s xc nh cc gi tr m c nh cho t t c cc ti nguyn c chia s , ch ng no cha b cc tu ch n cng tn t i cc ph n ti nguyn c chia s c th ghi nh ng gi tr m i.

D.5 Qu n l ng i dng trong Samba


Samba c kh nng qu n l ng i dng c kh nng truy c p vo my ch Samba. N c kh nng qu n l ng i dng kh c l p v i h th ng ng i dng h th ng. Thng th ng cc thng tin v ng i dng s c lu trong file smbpasswd, file ny n m trong th m c /etc/samba. thm m t ng i dng cho samba qu n l, ng i dng ph i l m t ng i dng trong h th ng. Sau , thao tc v i nh ng ng i dng c a samba, ta c cng c smbpasswd. smbpasswd [-a][-x][-d][-e][-h][-s] [ tn ng i dng ]

Trong ,
a : tu ch n ny cho php ta thm m t ng i dng m i vo trong danh sch ng i dng c a samba. - x : tu ch n ny cho php xo b m t ng i dng trong danh sch ng i dng c a samba. - d : tu ch n ny cho php ta kho (disable) m t ng i dng trong danh sch ng i dng c a samba. - e : tu ch n ny cho php ta m kho (enable) m t ng i dng trong danh sch ng i dng c a samba m ng i dng b kho b ng tham s -d. - <tn ng i dng>: tn c a ng i dng ta mu n x l. Ch ng h n, mu n thm m t ng i dng vo trong danh sch ng i dng c a samba, ta dng l nh (s d ng l nh ny v i quy n root): #smbpasswd a thanhnt Trong ng i dng thanhnt ph i l m t ng i dng h th ng. Sau khi nh l nh ny, my s h i ta nh vo m t kh u cho ng i dng m i ny, v samba cho php ng i dng do n qu n l c th c m t kh u khc v i m t kh u h th ng c a ng i dng . -

New SMB password: Retype new SMB password: Password changed for user thanhnt.
2 0

Lu l m t kh u s c h i hai l n m b o tnh chnh xc v m t kh u s khng c hi n th ra mn hnh. N u thnh cng th ta s nh n c thng bo nh trn. Ta cng c th dng l nh ny thay i m t kh u c a m t ng i dng b ng l nh (th c hi n b ng quy n root): #smbpasswd thanhnt Khi n s thng bo cho ta nh p m t kh u hai l n gi ng nh trn. Cn trong tr ng h p l m t ng i dng bnh th ng th mu n thay i m t kh u samba cho chnh ng i dng ta ch c n nh: #smbpasswd

Old SMB password: New SMB password: Retype new SMB password: Mismatch - password unchanged. Unable to get new password.
Trong tr ng h p trn, my s yu c u ta nh p m t kh u c tr c khi nh p m t kh u m i, n u c sai st (m t kh u c khng ng ho c m t kh u m i khng kh p nhau) th ta s nh n c thng bo l i. N u mu n xo ng i dng ra kh i danh sch ng i dng th s d ng l nh (v i quy n root): #smbpasswd x thanhnt Cn n u mu n m t ng i dng trong danh sch v n t n t i nhng khng c hi u l c, th ta c th kho ng i dng b ng l nh: #smbpasswd d thanhnt Khi ng i dng thanhnt tuy v n cn n m trong danh sch nhng khng c samba coi l ng i dng h p l n a. Khi mu n khi ph c ng i dng ny c cc quy n nh ban u th ta c th khi ph c b ng l nh: #smbpasswd e thanhnt

D.6 Cch s d ng Samba t cc my tr m


D.6.1 Cch s d ng t cc my tr m l Linux Samba c cung c p m t cng c nh m s d ng cc th m c chia s theo giao th c SMB trong m ng LAN, chnh l smbclient. V i cng c ny ta c th thao tc v i ti nguyn c chia s trn m ng, ch ng h n nh k t n i vo m t th m c chia s trn m t my no thao tc, sao chp file t th m c . smbclient cng gi ng nh m t chng trnh client ftp. smbclient <tn d ch v > [-U <tn ng i dng> ] [ -W <tn mi n ho c group> ] L [<tn netbios>] Trong : - <tn d ch v > : l tn c a d ch v mu n s d ng, c d ng //Maychu/dichvu. Maychu l tn netbios c a my ch cung c p d ch v , cn dichvu l tn c a d ch v mu n s d ng. Ch ng h n nh //dulieu/setups, th tn my ch c n truy nh p l dulieu, cn 2 0

setups l tn th m c mu n tham chi u n. Ta cng c th s d ng a ch IP thay cho tn netbios d i d ng //192.168.0.12/setups. - U <tn ng i dng> : l tn ng i dng mu n s d ng ti nguyn . - W <tn mi n ho c group> : l tn mi n ho c group m my ch thu c vo. - L <tn netbios> : l tn netbios c a my ch ta mu n xem cc d ch v m my ch ang cung c p. V d , xem thng tin v cc th m c chia s c a m t my ng th i cng v i cc thng tin v cc my trong mi n, cc my mi n khc ta dng l nh: # smbclient -L 10.10.16.5 -U thanhnt -W httt Th my s h i ta m t kh u ng v i ng i dng trn, sau khi nh ng m t kh u ta s thu c k t qu :

added interface ip=10.10.16.23 bcast=10.10.255.255 nmask=255.255.0.0 Password: Domain= CHTTTMPI OS= Unix Server= Samba 2.2.3a Sharename Type Comment --------- ---- ------netlogon Disk Network Logon Service public Disk Public Stuff Source Disk Source and documents for vietseek IPC$ IPC IPC Service (Samba Server) ADMIN$ Disk IPC Service (Samba Server) thanhnt Disk Home Directories Server Comment --------- ------HTTT-23 Samba Server Workgroup Master --------------BCNK.FOTECH VINHTQ BMVT NGUYENHONG CHTTTMPI HTTT-23 ECC HUNGTN FOTECH ANHNV FOTECH-CTSV MAIPT
s d ng m t d ch v (m t th m c chia s ch ng h n) ta c th dng l nh nh sau: # smbclient //10.10.16.5/setup -U thanhnt -W httt Trong tr ng h p ny ta s c my h i m t kh u, n u thnh cng th n s cho ta m t phin lm vi c v i d ch v , c th ta s c m t phin lm vi c v i th m c, ta c th sao chp file trn th m c ny vo my hi n t i v ng c l i.

added interface ip=10.10.16.23 bcast=10.10.255.255 nmask=255.255.0.0 Password: Domain=[CHTTTMPI] OS=[Unix] Server=[Samba 2.2.3a]
2 0

smb: \> smb: \> ls . .. ee120-ta fa01

D D D D

0 0 0 0

Tue Tue Wed Fri

Sep Sep Aug Sep

11 11 29 21

12:03:53 12:03:53 09:37:14 09:47:34

2001 2001 2001 2001

60472 blocks of size 2097152. 52606 blocks available smb: \> cd fa01\ee120-kmm smb: \> put hello.p [send files from local to remote] smb: \> get interruptq.doc [receive files to local from remote] smb: \> quit Khi d u nh c hi n ra, xem cc l nh thao tc, ta c th nh l nh help. Sau khi

k t thc phin lm vi c, ta dng l nh quit thot. K t g n m t th m c chia s vo m t th m c trong h th ng file hi n t i: Trong tr ng h p ta khng mu n dng cc l nh smbclient cho t ng phin lm vi c khi m ta s c nhi u thao tc v i th m c c chia s , gi i php t t nh t l k t g n th m c chia s vo thnh m t th m c trn my c c b . Khi th m c c k t g n s tr thnh m t th m c bnh ng nh cc th m c trn my c c b . M i vi c thao tc s tr nn thu n ti n hn r t nhi u. lm i u ta dng l nh (v i quy n root):
#smbmount //10.10.16.5/setup /mnt/smb o username=thanhnt ho c #mount t smbfs //10.10.16.5/setup /mnt/smb o username=thanhnt

Khi my s h i m t kh u, khi thnh cng th ta s nh x c th m c chia s setup trn my 10.10.16.5 thnh m t th m c /mnt/smb trn my c a mnh. Khi no xong ta c th b k t g n b ng l nh:
#smbmount /mnt/smb ho c #umount /mnt/smb D.6.2 Cch s d ng t cc my tr m l Windows

Ta ch n menu start, ta ch n run, sau nh vo tn my m ta mu n s d ng m t d ch v no nh trn hnh D.2.

2 1

Hnh D.2 S d ng d ch v samba t my tr m Windows

Sau my s h i ta tn ng i dng v m t kh u dng truy c p. Sau khi nh p cc thng tin, n u thnh cng th ta s c m t c a s hi n th danh sch cc d ch v c a my ch samba cung c p nh hnh D.3.

Hnh D.3 Danh sch cc d ch v trn m t samba server

Cho php nh x m t th m c trn m t samba server thnh m t a trm my tr m Windows b ng cch trn c a s hi n danh sch cc ti nguyn trn ta nhy ph i chu t vo th m c ta mu n nh x , sau ch n Map network drive nh trn hnh D.4.

2 1

Hnh D.4 T o m t nh x Sau my s h i tn

a trn my tr m Windows a m ta mu n t cho m i ny nh hnh D.5:

2 1

Hnh D.5

t tn

a cho m t nh x

2 1

You might also like