You are on page 1of 214

www.nhipsongcongnghe.

net

I HC QUC GIA H NI TRNG I HC CNG NGH


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

H QUANG THY NGUYN TR THNH

Gio trnh:

H IU HNH UNIX - LINUX


Dnh cho sinh vin ngnh Cng ngh thng tin, in t - Vin thng, Ton tin ng dng

H NI - 2004

MC LC
LI GII THIU ..................................................................................................... 9 CHNG 1. GII THIU CHUNG V LINUX...................................................... 10 1.1. Gii thiu v UNIX v Linux...................................................................................... 10 1.1.1. Xut x, qu trnh tin ha v mt s c trng ca h iu hnh UNIX ......... 10 1.1.2. Gii thiu s b v Linux................................................................................... 13 1.2. S b v cc thnh phn ca Linux ........................................................................... 17 1.2.1. S b v nhn ..................................................................................................... 18 1.2.2. S b v shell ..................................................................................................... 18 1.3. Gii thiu v s dng lnh trong Linux..................................................................... 20 1.3.1. Cc quy c khi vit lnh................................................................................... 22 1.3.3. Lm n gin thao tc g lnh ........................................................................... 25 1.3.4. Tip ni dng lnh.............................................................................................. 29 1.4. Trang Man ................................................................................................................... 29 CHNG 2. THAO TC VI H THNG ........................................................... 32 2.1. Qu trnh khi ng Linux......................................................................................... 32 2.2. Th tc ng nhp v cc lnh thot khi h thng ................................................ 33 2.2.1. ng nhp........................................................................................................... 33 2.2.2. Ra khi h thng................................................................................................. 36 2.2.3. Khi ng li h thng ....................................................................................... 38 2.2.4. Khi ng vo ch ho ............................................................................. 38 2.3. Lnh thay i mt khu .............................................................................................. 42 2.4. Lnh xem, thit t ngy, gi hin ti v xem lch trn h thng ........................... 45 2.4.1 Lnh xem, thit t ngy, gi .............................................................................. 45 2.4.2. Lnh xem lch .................................................................................................... 47 2.5. Xem thng tin h thng .............................................................................................. 48 2.6. Thay i ni dung du nhc shell .............................................................................. 49 2.7. Lnh gi ngn ng tnh ton s hc .......................................................................... 50 CHNG 3. H THNG FILE ............................................................................. 53 3.1 Tng quan v h thng file........................................................................................... 53 3.1.1. Mt s khi nim ................................................................................................ 53 3.1.2. S b kin trc ni ti ca h thng file............................................................. 57 3.1.3. Mt s thut ton lm vic vi inode ................................................................. 63 3.1.4. H tr nhiu h thng File.................................................................................. 66 3.1.5. Lin kt tng trng (lnh ln) ............................................................................ 71

3.2 Quyn truy nhp th mc v file ................................................................................ 72 3.2.1 Quyn truy nhp .................................................................................................. 72 3.2.2. Cc lnh c bn .................................................................................................. 75 3.3 Thao tc vi th mc.................................................................................................... 80 3.3.1 Mt s th mc c bit ...................................................................................... 80 3.3.2 Cc lnh c bn v th mc ................................................................................ 83 3.4. Cc lnh lm vic vi file ............................................................................................ 87 3.4.1 Cc kiu file c trong Linux ................................................................................ 87 3.4.2. Cc lnh to file.................................................................................................. 88 3.4.3 Cc lnh thao tc trn file .................................................................................... 90 3.4.4 Cc lnh thao tc theo ni dung file .................................................................... 98 3.4.5 Cc lnh tm file ................................................................................................ 106 3.5 Nn v sao lu cc file ................................................................................................ 115 3.5.1 Sao lu cc file (lnh tar) .................................................................................. 115 3.5.2 Nn d liu ....................................................................................................... 118 CHNG 4. QUN 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 cu trc iu khin ca UNIX................................................................ 123 4.1.3. Cc h thng con trong nhn ............................................................................ 125 4.1.4. S b v iu khin qu trnh ........................................................................... 129 4.1.5. Trng thi v chuyn dch trng thi ................................................................ 130 4.1.6. S ngng hot ng v hot ng tr li ca qu trnh.................................... 132 4.1.7. S b v lnh i vi qu trnh ........................................................................ 132 4.2. Cc lnh c bn.......................................................................................................... 133 4.2.1. Lnh fg v lnh bg ............................................................................................ 133 4.2.2. Hin th cc qu trnh ang chy vi lnh ps ................................................... 135 4.2.3. Hy qu trnh vi lnh kill ............................................................................... 137 4.2.4. Cho my ngng hot ng mt thi gian vi lnh sleep.................................. 139 4.2.5. Xem cy qu trnh vi lnh pstree.................................................................... 139 4.2.6. Lnh thit t li u tin ca qu trnh nice v lnh renice......................... 141 CHNG 5. QUN L TI KHON NGI DNG ......................................... 142 5.1 Ti khon ngi dng ................................................................................................ 142 5.2 Cc lnh c bn qun l ngi dng ........................................................................ 142 5.2.1 File /etc/passwd ................................................................................................ 143 5.2.2 Thm ngi dng vi lnh useradd................................................................... 143 5.2.3 Thay i thuc tnh ngi dng ........................................................................ 146 5.2.4 Xa b mt ngi dng (lnh userdel).............................................................. 147 3

5.3 Cc lnh c bn lin quan n nhm ngi dng ................................................... 148 5.3.1 Nhm ngi dng v file /etc/group ................................................................. 148 5.3.2 Thm nhm ngi dng .................................................................................... 149 5.3.3 Sa i cc thuc tnh ca mt nhm ngi dng (lnh groupmod) ................ 149 5.3.4 Xa mt nhm ngi dng (lnh groupdel) ...................................................... 150 5.4 Cc lnh c bn khc c lin quan n ngi dng ................................................ 150 5.4.1 ng nhp vi t cch mt ngi dng khc khi dng lnh su ....................... 150 5.4.2 Xc nh ngi dng ang ng nhp (lnh who) ............................................ 151 5.4.3 Xc nh cc qu trnh ang c tin hnh (lnh w)....................................... 153 CHNG 6. TRUYN THNG V MNG UNIX-LINUX................................... 154 6.1. Lnh truyn thng ..................................................................................................... 154 6.1.1. Lnh write......................................................................................................... 154 6.1.2. Lnh mail.......................................................................................................... 155 6.1.3. Lnh talk ........................................................................................................... 156 6.2 Cu hnh Card giao tip mng .................................................................................. 156 6.3. Cc dch v mng ...................................................................................................... 159 6.3.1 H thng tin mng NIS...................................................................................... 159 6.4 H thng file trn mng ............................................................................................. 164 6.4.1 Ci t NFS ....................................................................................................... 165 6.4.2 Khi ng v dng NFS.................................................................................... 166 6.4.3 Cu hnh NFS server v Client .......................................................................... 167 6.4.4 S dng mount................................................................................................... 167 6.4.5 Unmount ............................................................................................................ 168 6.4.6 Mount t ng qua tp cu hnh........................................................................ 168 CHNG 7. LP TRNH SHELL V LP TRNH C TRN LINUX ................... 170 7.1. Cch thc pipes v cc yu t c bn lp trnh trn shell ..................................... 170 7.1.1. Cch thc pipes ................................................................................................ 170 7.1.2. Cc yu t c bn lp trnh trong shell ........................................................ 171 7.2. Mt s lnh lp trnh trn shell ................................................................................ 175 7.2.1. S dng cc ton t bash .................................................................................. 175 7.2.2. iu khin lung .............................................................................................. 179 7.2.3 Cc ton t nh hng vo ra........................................................................... 193 7.2.4. Hin dng vn bn............................................................................................ 194 7.2.5. Lnh read c d liu cho bin ngi dng ..................................................... 194 7.2.6. Lnh set ............................................................................................................ 195 7.2.7. Tnh ton trn cc bin ..................................................................................... 196 7.2.8. Chng trnh v d............................................................................................ 196

7.3. Lp trnh C trn UNIX ............................................................................................. 197 7.3.1. Trnh bin dch gcc ........................................................................................... 197 7.3.2. Cng c GNU make ......................................................................................... 201 7.3.3. Lm vic vi file............................................................................................... 203 7.3.4. Th vin lin kt............................................................................................... 211 7.3.5 Cc cng c cho th vin ................................................................................. 220 TI LIU THAM KHO ...................................................................................... 223 CH THCH MT S THUT NG ................................................................... 224 PH LC A. QU TRNH CI T REDHAT-LINUX ........................................ 227 AA. Ci t phin bn RedHat 6.2 ................................................................................. 228 AA.1. To a mm khi ng ................................................................................... 228 AA.2. Phn vng li a DOS/Windows hin thi.................................................. 228 AA.3. Cc bc ci t (bn RedHat 6.2 v khi ng t CD-ROM)....................... 229 AA.4. Cc hn ch v phn cng i vi Linux ........................................................ 239 PH LC B. TRNH SON THO VIM .............................................................. 242 B.1 Khi ng vim ............................................................................................................ 244 B.1.1 M chng trnh son tho vim........................................................................ 244 B.1.2. Tnh nng m nhiu ca s .............................................................................. 245 B.1.3. Ghi v thot trong vim ..................................................................................... 246 B.2. Di chuyn tr son tho trong Vim ......................................................................... 247 B.2.1. Di chuyn trong vn bn .................................................................................. 247 B.2.2. Di chuyn theo cc i tng vn bn............................................................. 248 B.2.3. Cun mn hnh................................................................................................. 248 B.3. Cc thao tc trong vn bn ...................................................................................... 249 B.3.1. Cc lnh chn vn bn trong vim..................................................................... 249 B.3.2. Cc lnh xo vn bn trong vim ...................................................................... 250 B.3.3. Cc lnh khi phc vn bn trong vim ............................................................ 250 6.3.4. Cc lnh thay th vn bn trong vim ................................................................ 250 B.3.5. Sao chp v di chuyn vn bn trong vim ....................................................... 252 B.3.6. Tm kim v thay th vn bn trong vim ......................................................... 253 B.3.7. nh du trong vim ......................................................................................... 254 B.3.8. Cc phm s dng trong ch chn............................................................... 255 B.3.9. Mt s lnh trong ch o............................................................................. 256 B.3.10. Cc lnh lp ................................................................................................... 256 B.4. Cc lnh khc ............................................................................................................ 257 B.4.1. Cch thc hin cc lnh bn trong Vim........................................................... 257 B.4.2. Cc lnh lin quan n file............................................................................... 257

PH LC C. MIDNIGHT COMMANDER ............................................................ 259 C.1. Gii thiu v Midnight Commander (MC) ............................................................ 259 C.2. Khi ng MC .......................................................................................................... 259 C.3. Giao din ca MC ..................................................................................................... 259 C.4. Dng chut trong MC .............................................................................................. 260 C.5. Cc thao tc bn phm.............................................................................................. 261 C.6. Thc n thanh ngang (menu bar)......................................................................... 263 C.7. Cc phm chc nng ................................................................................................. 266 C.8. B son tho ca Midnight Commander................................................................ 267 PH LC D. SAMBA.......................................................................................... 270 D.1 Ci t Samba ............................................................................................................ 270 D.2 Cc thnh phn ca Samba ...................................................................................... 271 D.3 File cu hnh Samba .................................................................................................. 272 D.4 Cc phn c bit ca file cu hnh Samba............................................................. 275 D.5 Qun l ngi dng trong Samba............................................................................ 282 D.6 Cch s dng Samba t cc my trm.................................................................... 284 D.6.1 Cch s dng t cc my trm l Linux ........................................................... 284 D.6.2 Cch s dng t cc my trm l Windows ..................................................... 287

LI GII THIU
Trong hn mi nm tr li y h iu hnh Linux

CHNG 1. GII THIU CHUNG V LINUX


1.1. Gii thiu v UNIX v Linux
1.1.1. Xut x, qu trnh tin ha v mt s c trng ca h iu hnh UNIX Nm 1965, Vin cng ngh Massachusetts (MIT: Massachusetts Institute of Technology) v Phng th nghim Bell ca hng AT&T thc hin d n xy dng mt h iu hnh c tn gi l Multics (MULTiplexed Information and Computing Service) vi mc tiu: to lp c mt h iu hnh ph trn vng lnh th rng (hot ng trn tp cc my tnh c kt ni), a ngi dng, c nng lc cao v tnh ton v lu tr. D n ni trn thnh cng mc ht sc khim tn v ngi ta bit n mt s khim khuyt kh khc phc ca Multics. Nm1969, Ken Thompson, mt chuyn vin ti phng th nghim Bell, ngi tham gia d n Multics, cng Dennics Richie vit li h iu hnh a-bi ton trn my PDP-7 vi tn l UNICS (UNiplexed Information and Computing Service) t mt cu gi a ca mt ng nghip. Trong h iu hnh UNICS, mt s khi tho u tin v H thng file c Ken Thompson v Dennis Ritchie thc hin. n nm 1970 h iu hnh c vit trn assembler cho my PDP-11/20 v mang tn l UNIX. Nm 1973, Riche v Thompson vit li nhn ca h iu hnh UNIX trn ngn ng C, v h iu hnh tr nn d dng ci t ti cc loi my tnh khc nhau; tnh cht nh th c gi l tnh kh chuyn (portable) ca UNIX. Trc , khong nm 1971, h iu hnh c th hin trn ngn ng B (m da trn ngn ng B, Ritche pht trin thnh ngn ng C). Hng AT&T ph bin chng trnh ngun UNIX ti cc trng i hc, cc cng ty thng mi v chnh ph vi gi khng ng k. Nm 1982, h thng UNIX-3 l bn UNIX thng mi u tin ca AT&T. Nm 1983, AT&T gii thiu H thng UNIX-4 phin bn th nht trong c trnh son tho vi, th vin qun l mn hnh c pht trin t i hc Tng hp California, Berkley. Giai on 1985-1987, UNIX-5 phin bn 2 v 3 tng ng c a ra vo cc nm 1985 v 1987. Trong giai on ny, c khong 100000 bn UNIX c ph bin trn th gii, ci t t my vi tnh n cc h thng ln. u thp k 1990. UNIX-5 phin bn 4 c a ra nh l mt chun ca UNIX. y l s kt hp ca cc bn sau: AT&T UNIX-5 phin bn 3, Berkley Software Distribution (BSD), XENIX ca MicroSoft SUN OS C th tm thy cc ni dung lin quan ti mt s phin bn mi ca UNIX ti a ch website http://problem.rice.edu/. Cc nhm nh cung cp khc nhau v UNIX ang hot ng trong thi gian hin nay c k n nh sau: Unix International (vit tt l UI). UI l mt t chc gm cc nh cung cp thc hin vic chuyn nhng h thng UNIX-5 v cung cp bn AT&T theo cc

nhu cu v thng bo pht hnh mi, chng hn nh iu chnh bn quyn. Giao din ha ngi dng l Open Look. Open Software Foundation (OSF). OSF c h tr bi IBM, DEC, HP ... theo hng pht trin mt phin bn ca Unix nhm tranh ua vi h thng UNIX-5 phin bn 4. Phin bn ny c tn l OSF/1 vi giao din ha ngi dng c gi l MOTIF. Free SoftWare Foundation (FSF): mt cng ng do Richard Stallman khi xng nm 1984 ch trng pht hnh cc phn mm s dng t do, trn c s mt h iu hnh thuc loi UNIX. Bng sau y lit k mt s ci t UNIX kh ph bin (thng thy c ch X cui tn gi ca H iu hnh): Tn h AIX A/UX Dynix HP-UX Irix Linux NextStep OSF/1 SCO UNIX Solaris SunOS Ultrix Unicos UnixWare XENIX Nh cung cp 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 Nn pht trin 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

Di y lit k mt s c trng ca h iu hnh UNIX: H iu hnh c vit trn ngn ng bc cao; bi vy, rt d c, d hiu, d thay i ci t trn loi my mi (tnh d mang chuyn, nh ni), C giao din ngi dng n gin nng lc cung cp cc dch v m ngi dng mong mun (so snh vi cc h iu hnh c t trc th giao din ca UNIX l mt tin b vt bc), Tha mn nguyn tc xy dng cc chng trnh phc tp t nhng chng trnh n gin hn: trc ht c cc mun c bn nht ca nhn sau pht trin c ton b h iu hnh, S dng duy nht mt h thng File c cu trc cho php d dng bo qun v s dng hiu qu,

S dng ph bin mt dng n gin trnh by ni ti ca File nh mt dng cc byte cho php d dng khi vit cc chng trnh ng dng truy nhp, thao tc vi cc d liu trong File, C kt ni n gin vi thit b ngoi vi: cc file thit b c t sn trong H thng File to ra mt kt ni n gin gia chng trnh ngi dng vi cc thit b ngoi vi, L h iu hnh a ngi dng, a qu trnh, trong mi ngi dng c th thc hin cc qu trnh ca mnh mt cch c lp. Mi thao tc vo - ra ca h iu hnh c thc hin trn h thng File: mi thit b vo ra tng ng vi mt file. Chng trnh ngi dng lm vic vi file m khng cn quan tm c th tn file c t cho thit b no trong h thng. Che khut cu trc my i vi ngi dng, m bo tnh c lp tng i ca chng trnh i vi d liu v phn cng, to iu kin thun li hn cho ngi lp trnh khi vit cc chng trnh chy UNIX vi cc iu kin phn cng hon ton khc bit nhau. 1.1.2. Gii thiu s b v Linux Linus Tovalds (mt sinh vin Phn lan) a ra nhn (phin bn u tin) cho h iu hnh Linux vo thng 8 nm 1991 trn c s ci tin mt phin bn UNIX c tn Minix do Gio s Andrew S. Tanenbaum xy dng v ph bin. Nhn Linux tuy nh song l t ng gi. Kt hp vi cc thnh phn trong h thng GNU, h iu hnh Linux c hnh thnh. V cng t thi im , theo t tng GNU, hng nghn, hng vn chuyn gia trn ton th gii (nhng ngi ny hnh thnh nn cng ng Linux) tham gia vo qu trnh pht trin Linux v v vy Linux ngy cng p ng nhu cu ca ngi dng. Di y l mt s mc thi gian quan trng trong qu trnh hnh thnh v pht trin h iu hnh Linux. Sau ba nm nhn Linux ra i, n ngy 14-3-1994, h iu hnh Linux phin bn 1.0 c ph bin. Thnh cng ln nht ca Linux 1.0 l n h tr giao thc mng TCP/IP chun UNIX, snh vi giao thc socket BSD- tng thch cho lp trnh mng. Trnh iu khin thit b c b sung chy IP trn mt mng Ethernet hoc trn tuyn n hoc qua modem. H thng file trong Linux 1.0 vt xa h thng file ca Minix thng thng, ngoi ra h tr iu khin SCSI truy nhp a tc cao. iu khin b nh o c m rng h tr iu khin trang cho cc file swap v nh x b nh ca file c quyn (ch c mt nh x b nh ch c c thi hnh trong Linux 1.0). Vo thng 3-1995, nhn 1.2 c ph bin. iu ng k ca Linux 1.2 so vi Linux 1.0 ch n h tr mt phm vi rng v phong ph phn cng, bao gm c kin trc tuyn phn cng PCI mi. Nhn Linux 1.2 l nhn kt thc dng nhn Linux ch h tr PC. Mt iu cn lu v cc nh ch s cc dng nhn (h iu hnh) Linux. H thng ch s c chia thnh mt s mc, chng hn hai mc nh 2.4 hoc ba mc nh 2.2.5. Trong cch nh ch s nh vy, quy c rng vi cc ch s t mc th hai tr i, nu l s chn th dng nhn kh n nh v tng i hon thin, cn nu l s l th dng nhn vn ang c pht trin tip. 1 0

Thng 6-1996, nhn Linux 2.0 c ph bin. C hai c trng ni bt ca Linux 2.0 l h tr kin trc phc hp, bao gm c cng Alpha 64-bit y , v h tr kin trc a b x l. Phn phi nhn Linux 2.0 cng thi hnh c trn b x l Motorola 68000 v kin trc SPARC ca SUN. Cc thi hnh ca Linux da trn vi nhn GNU Mach cng chy trn PC v PowerMac. Ti nm 2000, nhn Linux 2.4 c ph bin. Mt trong c im c quan tm ca nhn ny l n h tr m k t Unicode 32 bt, rt thun li cho vic xy dng cc gii php ton din v trit i vi vn ngn ng t nhin trn phm vi ton th gii. Vn phn phi v giy php Linux V l thuyt, mi ngi c th khi to mt h thng Linux bng cch tip nhn bn mi nht cc thnh phn cn thit t cc site ftp v bin dch chng. Trong thi k u tin, ngi dng Linux phi tin hnh ton b cc thao tc ny v v vy cng vic l kh vt v. Tuy nhin, do c s tham gia ng o ca cc c nhn v nhm pht trin Linux, tin hnh thc hin nhiu gii php nhm lm cho cng vic khi to h thng vt v. Mt trong nhng gii php in hnh nht l cung cp tp cc gi chng trnh tin dch, chun ha. Nhng tp hp nh vy hay nhng bn phn phi l ln hn nhiu so vi h thng Linux c s. Chng thng bao gm cc tin ch b sung cho khi to h thng, cc th vin qun l, cng nh nhiu gi c tin dch, sn sng khi to ca nhiu b cng c UNIX dng chung, chng hn nh phc v tin, trnh duyt web, cng c x l, son tho vn bn v thm ch cc tr chi. Cch thc phn phi ban u rt n gin song ngy cng c nng cp v hon thin bng phng tin qun l gi tin tin. Cc bn phn phi ngy nay bao gm cc c s d liu tin ha gi, cho php cc gi d dng c khi to, nng cp v loi b. Nh phn phi u tin thc hin theo phng chm ny l Slakware, v chnh h l nhng chuyn bin mnh m trong cng ng Linux i vi cng vic qun l gi khi to Linux. Tin ch qun l gi RPM (RedHat Package Manager) ca cng ty RedHat l mt trong nhng phng tin in hnh. Nhn Linux l phn mm t do c phn phi theo Giy php s hu cng cng phn mm GNU GPL. Cc thnh phn tch hp H iu hnh Linux Linux s dng rt nhiu thnh phn t D n phn mm t do GNU, t h iu hnh BSD ca i hc Berkeley v t h thng X-Window ca MIT. Th vin h thng chnh ca Linux c bt ngun t D n GNU, sau c rt nhiu ngi trong cng ng Linux pht trin tip, nhng pht trin tip theo nh vy ch yu lin quan ti vic gii quyt cc vn nh thiu vng a ch (li trang), thiu hiu qu v g ri. Mt s thnh phn khc ca D n GNU, chng hn nh trnh bin dch GNU C (gcc), vn l cht lng cao nn c s dng nguyn xy trong Linux. Cc tool qun l mng c bt ngun t m 4.3BSD song sau c cng ng Linux pht trin, chng hn nh th vin ton hc ng x l du chm ng Intel v cc trnh iu khin thit b phn cng m thanh PC. Cc tool qun l mng ny sau li c b sung vo h thng BSD.

1 1

H thng Linux c duy tr gn nh bi mt mng li khng cht ch cc nh pht trin phn mm cng tc vi nhau qua Internet, mng li ny gm cc nhm nh v c nhn chu trch nhim duy tr tnh ton vn ca tng thnh phn. Mt lng nh cc site phn cp ftp Internat cng cng ng vai tr nh kho theo chun de facto cha cc thnh phn ny. Ti liu Chun phn cp h thng file (File System Hierarchy Standard) c cng ng Linux duy tr nhm gi tnh tng thch xuyn qua s khc bit rt ln gia cc thnh phn h thng. Mt s c im chnh ca Linux Di y trnh by mt s c im chnh ca ca h iu hnh Linux hin ti: Linux tng thch vi nhiu h iu hnh nh DOS, MicroSoft Windows ...: Cho php ci t Linux cng vi cc h iu hnh khc trn cng mt cng. Linux c th truy nhp n cc file ca cc h iu hnh cng mt a. Linux cho php chy m phng cc chng trnh thuc cc h iu hnh khc. Do gi c chun ca UNIX nn s chuyn i gia Linux v cc h UNIX khc l d dng. Linux l mt h iu hnh UNIX tiu biu vi cc c trng l a ngi dng, a chng trnh v a x l. Linux c giao din ho (GUI) tha hng t h thng X-Window. Linux h tr nhiu giao thc mng, bt ngun v pht trin t dng BSD. Thm vo , Linux cn h tr tnh ton thi gian thc. Linux kh mnh v chy rt nhanh ngay c khi nhiu qu trnh hoc nhiu ca s. Linux c ci t trn nhiu chng loi my tnh khc nhau nh PC, Mini v vic ci t kh thun li. Tuy nhin, hin nay cha xut hin Linux trn my tnh ln (mainframe). Linux ngy cng c h tr bi cc phn mm ng dng b sung nh son tho, qun l mng, qun tr c s d liu, bng tnh ... Linux h tr tt cho tnh ton song song v my tnh cm (PC-cluster) l mt hng nghin cu trin khai ng dng nhiu trin vng hin nay. L mt h iu hnh vi m ngun m, c pht trin qua cng ng ngun m (bao gm c Free Software Foundation) nn Linux pht trin nhanh. Linux l mt trong mt s t cc h iu hnh c quan tm nhiu nht trn th gii hin nay. Linux l mt h iu hnh h tr a ngn ng mt cch ton din nht. Do Linux cho php h tr cc b m chun t 16 bit tr ln (trong c cc b m ISO10646, Unicode) cho nn vic bn a ha trn Linux l trit nht trong cc h iu hnh. Tuy nhin cng tn ti mt s kh khn lm cho Linux cha thc s tr thnh mt h iu hnh ph dng, di y l mt s kh khn in hnh: Tuy c cng c h tr ci t, tuy nhin, vic ci t Linux cn tng i phc tp v kh khn. Kh nng tng thch ca Linux vi mt s loi thit b phn cng cn thp do cha c cc trnh iu khin cho nhiu thit b,

1 2

Phn mm ng dng chy trn nn Linux tuy phong ph song so vi mt s h iu hnh khc, c bit l khi so snh vi MS Windows, th vn cn c khong cch. Vi s h tr ca nhiu cng ty tin hc hng u th gii (IBM, SUN, HP ...) v s tham gia pht trin ca hng vn chuyn gia trn ton th gii thuc cng ng Linux, cc kh khn ca Linux chc chn s nhanh chng c khc phc. Chnh v l hnh thnh mt s nh cung cp Linux trn th gii. Bng di y l tn ca mt s nh cung cp Linux c ting nht v a ch website ca h. ng ch nht l Red Hat Linux (ti M) v Red Flag Linux (ti Trung Quc). Red Hat c coi l lu i v tin cy, cn Red Flag l mt cng ty Linux ca Trung quc, c quan h vi cng ng Linux Vit nam v chng ta c th hc hi mt cch trc tip kinh nghim cho qu trnh a Linux vo Vit 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 phn ca Linux


H thng Linux, c thi hnh nh mt h iu hnh UNIX truyn thng, gm shell v ba thnh phn ( dng m chng trnh) sau y: - Nhn h iu hnh chu trch nhim duy tr cc i tng tru tng quan trng ca h iu hnh, bao gm b nh o v qu trnh. Cc m un chng trnh trong nhn c c quyn trong h thng, bao gm c quyn thng trc b nh trong. - Th vin h thng xc nh mt tp chun cc hm cc ng dng tng tc vi nhn, v thi hnh nhiu chc nng ca h thng nhng khng cn c cc c quyn ca m un thuc nhn. Mt h thng con in hnh c thi hnh da trn th vin h thng l h thng file Linux. - Tin ch h thng l cc chng trnh thi hnh cc nhim v qun l ring r, chuyn bit. Mt s tin ch h thng c gi ra ch mt ln khi ng v cu hnh phng tin h thng, mt s tin ch khc, theo thut ng UNIX c gi l trnh chy ngm (daemon), c th chy mt cch thng xuyn (thng theo chu k), iu khin cc bi ton nh hng ng cc kt ni mng mi n, tip nhn yu cu logon, hoc cp nht cc file log. Tin ch (hay lnh) c sn trong h iu hnh (di y tin ch c coi l lnh thng trc). Ni dung chnh yu ca ti liu ny gii thiu chi tit v mt s lnh thng dng nht ca Linux. H thng file s c gii thiu trong chng 3. Trong cc chng sau c cp ti nhiu ni dung lin quan n nhn v shell, song di y l mt s nt s b v chng.

1 3

1.2.1. S b v nhn Nhn (cn c gi l h li) ca Linux, l mt b cc mdun chng trnh c vai tr iu khin cc thnh phn ca my tnh, phn phi cc ti nguyn cho ngi dng (cc qu trnh ngi dng). Nhn chnh l cu ni gia chng trnh ng dng vi phn cng. Ngi dng s dng bn phm g ni dung yu cu ca mnh v yu cu c nhn gi ti shell: Shell phn tch lnh v gi cc chng trnh tng ng vi lnh thc hin. Mt trong nhng chc nng quan trng nht ca nhn l gii quyt bi ton lp lch, tc l h thng cn phn chia CPU cho nhiu qu trnh hin thi cng tn ti. i vi Linux, s lng qu trnh c th ln ti con s hng nghn. Vi s lng qu trnh ng thi nhiu nh vy, cc thut ton lp lch cn phi hiu qu: Linux thng lp lch theo ch Round Robin (RR) thc hin vic lun chuyn CPU theo lng t thi gian. Thnh phn quan trng th hai trong nhn l h thng cc mun chng trnh (c gi l li gi h thng) lm vic vi h thng file. Linux c hai cch thc lm vic vi cc file: lm vic theo byte (k t) v lm vic theo khi. Mt c im ng ch l file trong Linux c th c nhiu ngi cng truy nhp ti nn cc li gi h thng lm vic vi file cn m bo vic file c truy nhp theo quyn v c chia x cho ngi dng. 1.2.2. S b v shell Mt s ni dung chi tit v shell (cn c gi l h v) trong Linux c trnh by trong chng "Lp trnh trn shell". Nhng ni dung trnh by di y cung cp mt cch nhn s b v shell v vai tr ca n trong hot ng chung ca h iu hnh. Ngi dng mong mun my tnh thc hin mt cng vic no th cn g lnh th hin yu cu ca mnh h thng p ng yu cu . Shell l b dch lnh v hot ng nh mt kt ni trung gian gia nhn vi ngi dng: Shell nhn dng lnh do ngi dng a vo; v t dng lnh ni trn, nhn tch ra cc b phn nhn c mt hay mt s lnh tng ng vi cc on vn bn c trong dng lnh. Mt lnh bao gm tn lnh v tham s: t u tin l tn lnh, cc t tip theo (nu c) l cc tham s. Tip theo, shell s dng nhn khi sinh mt qu trnh mi (khi to qu trnh) v sau , shell ch i qu trnh con ny tin hnh, hon thin v kt thc. Khi shell sn sng tip nhn dng lnh ca ngi dng, mt du nhc shell (cn gi l du nhc nhp lnh) xut hin trn mn hnh. Linux c hai loi shell ph bin l: C-shell (du nhc %), Bourne-shell (du nhc $) v mt s shell pht trin t cc shell ni trn (chng hn, TCshell - tcsh vi du nhc ngm nh > pht trin t C-shell v GNU Bourne - bash vi du nhc bash # pht trin t Bourne-shell). Du mi phn bit shell ni trn khng phi hon ton r rng do Linux cho php ngi dng thay i li du nhc shell nh vic thay gi tr cc bin mi trng PS1 v PS2. Trong ti liu ny, chng ta s dng k hiu "hng ro #" biu th du nhc shell. C-shell c tn gi nh vy l do cch vit lnh v chng trnh lnh Linux ta nh ngn ng C. Bourne-shell mang tn tc gi ca n l Steven Bourne. Mt s lnh trong Cshell (chng hn lnh alias) khng cn c trong Bourne-shell v v vy nhn bit h thng ang lm vic vi shell no, chng ta g lnh: # alias Nu mt danh sch xut hin th shell ang s dng l C-shell; ngc li, nu xut hin thng bo "Command not found" th shell l Bourne-shell. Lnh c chia thnh 3 loi lnh:

1 4

Lnh thng trc (c sn ca Linux). Tuyt i a s lnh c gii thiu trong ti liu ny l lnh thng trc. Chng bao gm cc lnh c cha sn trong shell v cc lnh thng trc khc. File chng trnh ngn ng my: chng hn, ngi dng vit trnh trn ngn ng C qua b dch gcc (bao gm c trnh kt ni link) to ra mt chng trnh trn ngn ng my. File chng trnh shell (Shell Scrip). Khi kt thc mt dng lnh cn g phm ENTER shell phn tch v thc hin lnh.

1.3. Gii thiu v s dng lnh trong Linux


Nh gii thiu phn trn, Linux l mt h iu hnh a ngi dng, a nhim, c pht trin bi hng nghn chuyn gia Tin hc trn ton th gii nn h thng lnh cng ngy cng phong ph; n thi im hin nay Linux c khong hn mt nghn lnh. Tuy nhin ch c khong vi chc lnh l thng dng nht i vi ngi dng. Ti liu ny cng hn ch gii thiu khong vi chc lnh . Chng ta ng e ngi v s lng lnh c gii thiu ch chim mt phn nh trong tp hp lnh bi v y l nhng lnh thng dng nht v chng cung cp mt phm vi ng dng rng ln, tha mn yu cu ca chng ta. Cng nh ni trn, ngi dng lm vic vi my tnh thng qua vic s dng trm cui: ngi dng a yu cu ca mnh bng cch g "lnh" t bn phm v giao cho h iu hnh x l. Khi ci t Linux ln my tnh c nhn th my tnh c nhn va ng vai tr trm cui, va ng vai tr my tnh x l. Dng tng qut ca lnh Linux c th c vit nh sau: # <Tn lnh> [<cc tham s>] trong : Tn lnh l mt dy k t, khng c du cch, biu th cho mt lnh ca Linux hay mt chng trnh. Ngi dng cn h iu hnh p ng yu cu g ca mnh th phi chn ng tn lnh. Tn lnh l bt buc phi c khi g lnh. Cc tham s c th c hoc khng c, c vit theo quy nh ca lnh m chng ta s dng, nhm cung cp thng tin v cc i tng m lnh tc ng ti. ngha ca cc du [, <, >, ] c gii thch phn quy tc vit lnh. Cc tham s c phn ra thnh hai loi: tham s kha (sau y thng dng l "ty chn") v tham s v tr. Tham s v tr thng l tn file, th mc v thng l cc i tng chu s tc ng ca lnh. Khi g lnh, tham s v tr c thay bng nhng i tng m ngi dng cn hng tc ng ti. Tham s kha chnh l nhng tham s iu khin hot ng ca lnh theo cc trng hp ring. Trong Linux, tham s kha thng bt u bi du tr "-" hoc hai du tr lin tip "--". Khi g lnh, cng ging nh tn lnh, tham s kha phi c vit chnh xc nh trnh by trong m t lnh. Mt lnh c th c mt s hoc rt nhiu tham s kha. Ph thuc vo yu cu c th ca mnh, ngi dng c th chn mt hoc mt s cc tham s kha khi g lnh. Trong m t lnh, thng xut hin thut ng ty-chn. Ty chn lnh (thc cht l tham s kha) cho php iu chnh hot ng ca lnh trong Linux, lm cho lnh c tnh ph dng cao. Tu chn lnh cho php lnh c th p ng mun ca ngi dng i vi hu ht (tuy khng phi lc no cng vy) cc tnh hung t ra cho thao tc ng vi lnh. 1 5

K hiu "" biu th vic g phm ht dng <Enter>. kt thc mt yu cu, ngi dng nht thit phi g phm "". V d, khi ngi dng g lnh xem thng tin v cc file: # ls -l g trong lnh ny: ls l tn lnh thc hin vic a danh sch cc tn file/ th mc con trong mt th mc, -l l tham s kha, cho bit yu cu xem y thng tin v cc i tng hin ra. Ch , trong tham s kha ch ci (ch "l") phi i ngay sau du tr "-". Tng ng vi lnh ls cn c cc tham s kha -a, -L, ... v chng cng l cc ty chn lnh. Trong mt s tham s kha c nhiu ch ci thay cho mt du "-" l hai du "--" u tham s. V d, nh trng hp tham s --file ca lnh date. g* l tham s v tr ch r ngi dng cn xem thng tin v cc file c tn gi bt u l ch ci "g". Trong ti liu ny, quy c rng khi vit mt lnh (trong m t lnh v g lnh) th khng cn phi vit du "" cui dng lnh , song lun ghi nh rng phm ENTER ("") l bt buc khi g lnh. Lu : Linux (v UNIX ni chung) c xy dng trn ngn ng lp trnh C, v vy khi g lnh phi phn bit ch thng vi ch hoa. Ngoi tr mt s ngoi l, trong Linux chng ta thy ph bin l: Cc tn lnh l ch thng, Mt s tham s c th l ch thng hoc ch hoa (v d, trong lnh date v thi gian h thng th hai tham s -r v -R c ngha hon ton khc nhau). Tn cc bin mi trng cng thng dng ch hoa. Trong ti liu ny, ti nhng dng vn bn din gii, s dng cch vit tn lnh, cc tham s kha bng kiu ch khng chn, m nh date, -R, -r ... Linux phn bit siu ngi dng (ting Anh l superuser hoc root, cn c gi l ngi qun tr hay ngi dng ti cao hoc siu ngi dng) vi ngi dng thng thng. Trong tp hp lnh ca Linux, c mt s lnh m ch siu ngi dng mi c php s dng cn ngi dng thng thng th khng c php (v d nh lnh adduser thc hin vic b sung thm ngi dng). Mt khc trong mt s lnh, vi mt s tham s kha th ch siu ngi dng c php dng, cn vi mt s tham s khc th mi ngi dng u c php (v d nh lnh passwd thay i mt khu ngi dng). Mt dng lnh c th c nhiu hn mt lnh, trong lnh sau c ngn cch bi vi lnh i ngay trc bng du ";" hoc du "|". V d v mt s dng lnh dng ny: # ls -l; date # head Filetext | sort >temp Sau khi ngi dng g xong dng lnh, shell tip nhn dng lnh ny v phn tch ni dung vn bn ca lnh. Nu lnh c g ng th n c thc hin; ngc li, trong trng hp c sai st khi g lnh th shell thng bo v sai st v 1 6

du nhc shell li hin ra ch lnh tip theo ca ngi dng. V ph bin, nu nh sau khi ngi dng g lnh, khng thy thng bo sai st hin ra th c ngha lnh c thc hin mt cch bnh thng. Trc khi i vo ni dung chi tit cc lnh thng dng, chng ta xem xt v mt s quy nh dng trong m t lnh c trnh by trong ti liu ny. 1.3.1. Cc quy c khi vit lnh Trong ti liu ny, cc lnh c trnh by theo mt b quy tc c php nht qun. B quy tc ny cho php phn bit trong mi lnh cc thnh phn no l bt buc phi c, cc thnh phn no c th c hoc khng ... Di y l ni dung ca cc quy tc trong b quy tc . Tn lnh l bt buc, phi l t u tin trong bt k lnh no, phi c g ng nh khi m t lnh. Tn khi nim c nm trong cp du ngoc quan h (< v >) biu th cho mt lp i tng v l tham s bt buc phi c. Khi g lnh th tn khi nim (c th c coi l "tham s hnh thc") phi c thay th bng mt t (thng l tn file, tn th mc ... v c th c coi l "tham s thc s") ch i tng lin quan n thao tc ca lnh. V d, m t c php ca lnh more xem ni dung file l # more <file> th t more l tn lnh, cn <file> l tham s trong file l tn khi nim v l tham s bt buc phi c. Lnh ny c tc ng l hin ln mn hnh theo cch thc cun ni dung ca file vi tn ch trong lnh. xem ni dung file c tn l temp, ngi dng g lnh: # more temp Nh vy, tn lnh more c g ng nh m t c php (c ni dung v v tr) cn "file" c thay th bng t "temp" l tn file m ngi dng mun xem ni dung. Cc b phn nm gia cp du ngoc vung [ v ] l c th g hoc khng g cng c. V d, c php ca lnh halt l # halt [ty-chn] Vi cc ty chn l -w, -n, -d, -f, -i m mi ty chn cho mt cch thc hot ng khc nhau ca lnh halt. Lnh halt c tc ng chnh l lm ngng hot ng ca h iu hnh, tuy nhin khi ngi dng mun c mt cch hot ng no ca lnh ny th s chn mt (hoc mt s) tu chn lnh tng ng. Mt s cch g lnh halt ca ngi dng nh sau y l ng c php: # halt # halt -w # halt -n # halt -f Cc gi tr c trong cp | v | trong cc b phn cch nhau bng du s ng "|" cho bit cn chn mt v ch mt trong cc gi tr nm gia hai du ngoc . 1 7

V d, khi gii thiu v ty chn lnh ca lnh tail xem phn cui ni dung ca file, chng ta thy: -f, --follow[={tn | c t}] Nh vy, sau tham s kha --follow, nu xut hin thm du bng "=" th phi c hoc tn hoc c t. y l trng hp cc chn la "loi tr nhau". Du ba chm ... th hin vic lp li thnh phn c php i ngay trc du ny, vic lp li c th t khng n nhiu ln (khng k chnh thnh phn c php ). Cch thc ny thng c dng vi cc tham s nh tn file. V d, m t lnh chown nh sau: chown [ty-chn] <ch>[,[nhm]]<file>... Nh vy trong lnh chown c th khng c hoc c mt s ty chn lnh v c t mt n nhiu tn file. Cc b phn trong m t lnh, nu khng nm trong cc cp du [ ], <>, { } th khi g lnh thc s phi g y ng nh khi m t (ch , quy tc vit tn lnh l mt trng hp ring ca quy tc ny). Vic kt hp cc du ngoc vi nhau cho php to ra cch thc s dng quy tc t hp cc tham s trong lnh. V d, lnh more bnh thng c c php l: # more <file> c ngha l thay <file> bng tn file cn xem ni dung, nu kt hp thm du ngoc vung [ v ], tc l c dng sau (chnh l dng tng qut ca lnh more): # more [<file>] th <file> ni chung phi c trong lnh more, tuy nhin trong mt s trng hp c th b qua tham s file. Lu : i vi nhiu lnh, cho php ngi dng g tham s kha kt hp tng ng vi ty_chn trong m t lnh. Tham s kha kt hp c vit theo cch <xu-k-t>, trong xu-k-t gm cc ch ci trong tham s kha. V d, trong m t lnh in lch cal: cal [ty-chn] [thng [nm] ] c ba tham s kha l -m, -j, -y. Khi g lnh c th g mt t hp no t ba tham s kha ny c tnh hung s dng lnh theo mun. Chng hn, nu g lnh cal -mj 3 th lnh cal thc hin theo iu khin ca hai tham s kha -m (chn Th Hai l ngy u tun, thay v cho ngm nh l Ch Nht) v -j (hin th ngy trong thng di dng s ngy trong nm k t u nm). V vy, khi vit [ty-chn] trong m t lnh biu th c vic s dng tng ty chn, nhiu ty chn hoc kt hp cc tu chn. Trong mt s lnh, c hai tham s kha cng tng ng vi mt tnh hung thc hin lnh, trong mt tham s gm mt k t cn tham s kia li l mt t. Tham s di mt t l tham s chun ca lnh, cn tham s mt k t l cch vit ngn gn. Tham s chun dng c trong mi Linux v khi g phi c k t trong t. 1 8

V d, khi m t lnh date c ty chn: -d, --date=STRING nh vy hai tham s -d v --date=STRING c cng ngha. Ngoi nhng quy c trn y, ngi dng ng qun mt quy nh c bn l cn phn bit ch hoa vi ch thng khi g lnh. 1.3.3. Lm n gin thao tc g lnh Vic s dng bn phm nhp lnh tuy khng phi l mt cng vic nng n, song Linux cn cho php ngi dng s dng mt s cch thc thun tin hn khi g lnh. Mt s trong nhng cch thc l: S dng vic khi phc dng lnh, S dng cc phm c bit, S dng cc k hiu thay th v phm <Tab>, S dng thay th alias, S dng chng trnh lnh. Cch thc s dng chng trnh lnh (shell script) s c gii thiu chi tit trong cc chng sau. Di y, chng ta xem xt cch thc s dng vic khi phc dng lnh, phm c bit v k hiu thay th. C ch khi phc dng lnh Linux cung cp mt cch thc c bit l kh nng khi phc lnh. Ti du nhc shell: Ngi dng s dng cc phm mi tn ln/xung (/) trn bn phm nhn li cc dng lnh c a vo trc y ti du nhc shell, chn mt trong cc dng lnh v bin tp li ni dung dng lnh theo ng yu cu mi ca mnh. V d, ngi dng va g xong dng lnh: # ls -l tenfile* sau mun g lnh ls -l tentaptin th ti du nhc ca shell, ngi dng s dng cc phm di chuyn ln () hoc xung () nhn c: # ls -l tenfile* dng cc phm tt di chuyn, xo k t (xem phn sau) c c: # ls -l ten v g tip cc k t "taptin" nhn c: # ls -l tentaptin chnh l kt qu mong mun. Trong trng hp s lng k t thay th l rt t so vi s lng k t ca ton dng lnh th hiu qu ca cch thc ny rt cao. Lu : Vic nhn lin tip cc phm di chuyn ln () hoc xung () cho php ngi dng nhn c cc dng lnh g t trc m khng ch dng lnh mi c g. Cch thc ny tng t vi cch thc s dng tin ch DOSKEY trong h iu hnh MS-DOS. 1 9

Mt s phm c bit khi g lnh Khi ngi dng g lnh c th xy ra mt s tnh hung nh sau: Dng lnh ang g c ch sai st, khng ng theo yu cu ca ngi dng v vy cn phi sa li i cht ni dung trn dng lnh . Trong trng hp cn s dng cc phm c bit (cn gi l phm vit tt hay phm tt) di chuyn, xo b, b sung vo ni dung dng lnh. Sau khi s dng cch thc khi phc dng lnh, chng ta nhn c dng lnh tng t vi lnh cn g v sau s dng cc phm tt hon thin lnh. Di y gii thiu cc phm tt v ngha ca vic s dng chng: Nhn phm di chuyn con tr sang bn phi mt v tr Nhn phm di chuyn con tr sang bn tri mt v tr Nhn phm <ESC-BACKSPACE> xo mt t bn tri con tr Nhn phm <ESC-D> xo mt t bn phi con tr Nhn phm <ESC-F> di chuyn con tr sang bn phi mt t Nhn phm <ESC-B> di chuyn con tr sang bn tri mt t Nhn phm <CTRL-A> di chuyn con tr v u dng lnh Nhn phm <CTRL-E> di chuyn con tr v cui dng Nhn phm <CTRL-U> xa dng lnh C th dng phm <ALT> thay cho phm <ESC>. Cc k hiu m t nhm file v phm <Tab> Khi g lnh thc s nhiu trng hp ngi dng mong mun mt tham s trong lnh khng ch xc nh mt file m li lin quan n mt nhm cc file m tn gi ca cc file trong nhm c chung mt tnh cht no . Trong nhng trng hp nh vy, ngi dng cn s dng cc k hiu m t nhm file (wildcards), chng ta gi l k hiu m t nhm (cn c gi l k hiu thay th). Ngi ta s dng cc k t *, ? v cp hai du [ v ] m t nhm file. Cc k t ny mang ngha nh sau khi vit vo tham s tn file thc s: "*" : l k t m t nhm gm mi xu k t (thay th mi xu). M t ny cho mt nhm ln nht trong ba m t. "?" : m t nhm gm mi xu vi di khng qu 1 (thay th mt k t). Nhm ny l tp con ca nhm u tin (theo k t "*"). [xu-k-t] : m t nhm gm mi xu c di 1 l mi k t thuc xu ni trn. M t ny cho mt nhm c lc lng b nht trong ba m t. Nhm ny l tp con ca nhm th hai (theo k t "?"). Khi g lnh phi g c hai du [ v ]. Mt dng khc ca m t nhm ny l [<k_t_1>-<k_t_2>] ngha l gia cp du ngoc c ba k t trong k t gia l du ni (du -) th cch vit ny tng ng vi vic lit k mi k t t <k_t_1> n <k_t_2>. Chng hn, cch vit [a-d] tng ng vi cch vit [abcd]. V d, gi s khi mun lm vic vi tt c cc file trong mt th mc no , ngi dng g * thay th tham s file th xc nh c cc tn file sau (chng ta vit bn tn file trn mt 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

Nu ngi dng g s* ( ch cc tn c ch ci u l s) thay th tham s file th xc nh c cc tn file sau:


shadow syslog.conf shadowshells sysctl.conf

Nu ngi dng g [si]* ( ch cc tn c ch ci u l s hoc 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 vy, Linux (v UNIX ni chung) khng ch s dng hai k t m t nhm * v ? m cn c cch thc s dng cp k t [ v ]. Cn phn bit cp du [ v ] c s dng khi ngi dng g lnh c ngha hon ton khc vi ngha ca chng khi c s dng trong m t lnh. Hn th na, Linux cn cung cp cho ngi dng cch thc s dng phm <TAB> hon thnh nt tn file (tn th mc) trong lnh. V d, khi chng ta g dng lnh # ls /u<TAB>local<TAB>b<TAB> th n cng tng ng nh g dng lnh (v y chnh l ni dung xut hin ti du nhc shell): # ls /usr/local/bin vi iu kin trong th mc /usr ch c th mc local c bt u bi ch "l" v trong th mc local cng ch c th mc bin c bt u bi ch "b". Trong trng hp nu nh mt k t cha xc nh, ngi dng cn g thm k t tip theo trong tn file (tn th mc) v nhn phm <TAB> hon thnh dng lnh. 1.3.4. Tip ni dng lnh Nh lu trn y, mt dng lnh c th gm mt hoc mt s lnh, mt khc tham s ca lnh c th l rt di khng th trong khun kh ca mt dng vn bn c. Khi g lnh, nu dng lnh qu di, Linux cho php ngt dng lnh xung dng di bng cch thm k t bo hiu chuyn dng "\" ti cui dng; trong trng hp , k t "\" phi l k t cui cng thuc dng lnh trc. V d, # cd vsd\ thumuc th dng th hai l phn tip theo ca dng th nht v kt hp c hai dng ny thc cht l mt dng lnh Linux. 2 1

1.4. Trang Man


Chng ta c th ni rng Linux l mt h iu hnh rt phc tp vi hng nghn lnh v mi lnh li c th c ti vi hoc vi chc tnh hung s dng do chng cho php c nhiu ty chn lnh. thuc ht c ni dung tt c cc lnh ca Linux l mt iu ht sc kh khn, c th ni l khng th. Linux cho php ngi dng s dng cch thc gi trang Man c c cc thng tin y gii thiu ni dung cc lnh. Di y l mt s ni dung v cch thc s dng trang Man. "Man" l t vit tt ca "manual", c coi l ti liu trc tuyn trong Linux lu tr ton b cc lnh c sn vi cc thng tin tham kho kh y cho php ngi dng c th m ra nhn c tr gip. m trang Man ca mt lnh, chng ta s dng lnh man ca Linux v g: # man <tn-lnh> Ni dung ca trang Man tuy khng phi l qu kh hiu, song hiu ht c n cng i hi khng t thi gian. Tuy vy, nu qun ni dung mt lnh no th cch tt nht l hy s dng trang Man. Cu trc chung ca mt trang Man nh sau: COMMAND(1) Linux Programmer's Manual COMMAND(1) NAME tn lnh - khi qut tc dng ca lnh SYNOPSIS c php ca lnh DESCRIPTION m t c th hn v tc dng ca lnh OPTIONS lit k cc ty chn lnh v tc dng ca chng FILES lit k cc file m lnh s dng hoc tham chiu n SEE ALSO lit k cc lnh, cc ti liu, ..., c lin quan n lnh REPORTING BUGS a ch lin h nu gp li khi s dng lnh AUTHOR tn tc gi ca lnh Ngi dng thm ch khng nh chnh xc tn lnh. Linux cn c mt cch thc h tr ngi dng c th nhanh chng tm c lnh cn s dng trong trng hp ch nh nhng ch ci u ca tn lnh, l cch thc s dng phm TAB. Trong cch thc ny, ngi dng ch cn nh mt s ch ci u tin ca tn lnh. C th trnh by cch thc theo c php sau y: # <dy-ch-ci><TAB><TAB> Trong dy-ch-ci c t mt n mt vi ch ci thuc phn u ca tn lnh. Ch rng, cc ch ci v hai phm <TAB> phi c g lin tip nhau. Kt hp cch thc ny vi cch thc s dng lnh man (vi s phong ph v ty chn ca lnh man) nhn c mt cch thc kh tuyt vi tr gip ngi dng.

2 2

V d, mun s dng lnh history nhng li khng nh chnh xc tn lnh c vit ra nh th no m ch nh n c bt u bi ch h, hy g ch h ti du nhc shell v nhn phm TAB hai ln, s thy mt danh sch cc lnh c ch ci u tin l h c hin 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 vy, tt c cc lnh c tn bt u vi ch h c hin th trn mn hnh v cho php ngi dng c th xc nh c lnh cn quan tm. Trng hp tn ti mt s lng ln cc lnh c cng ch ci u tin m ngi dng g, thay v hin ht mi tn lnh, h iu hnh cho ra mt thng bo hi ngi dng c mun xem ton b cc lnh hay khng. Ngi dng p ng thng bo tu theo mun ca mnh. V d, khi ngi dng g ni dung nh sau: # p<TAB><TAB> th h thng p li l:
There are 289 possibilities. Do you really wish to see them all? (y or n)

Ngi dng g phm "y" nu mun xem, hoc g "n" nu b qua. Ngi dng c th g nhiu hn mt ch ci u tn lnh v iu cho php gim bt s tn lnh m h thng tm c v hin th. Chng hn, khi bit hai ch ci u l "pw" v ngi dng g: # pw<TAB><TAB> th h thng s hin ra danh sch cc tn lnh bt u bi "pw":
pwck pwconv pwd pwdb_chkpwd pwunconv

Trong trng hp ny, ngi dng s nhn bit c tn lnh ang cn tm thun tin hn.

2 3

CHNG 2. THAO TC VI H THNG


2.1. Qu trnh khi ng Linux
Trong phn ny, chng ta xem xt s b qu trnh khi ng h iu hnh Linux. Mt trong nhng cch thc khi ng Linux ph bin nht l cch thc do chng trnh LILO (LInux LOader) thc hin. Chng trnh LILO c np ln a ca my tnh khi ci t h iu hnh Linux. LILO c np vo Master Boot Record ca a cng hoc vo Boot Sector ti phn vng khi ng (trn a cng hoc a mm). Gi s my tnh ca chng ta ci t Linux v s dng LILO khi ng h iu hnh. LILO thch hp vi vic trn my tnh c ci t mt s h iu hnh khc nhau v theo , LILO cn cho php ngi dng chn la h iu hnh khi ng. Giai on khi ng Linux ty thuc vo cu hnh LILO c la chn trong qu trnh ci t Linux. Trong tnh hung n gin nht, Linux c khi ng t a cng hay a mm khi ng. Qu trnh khi ng Linux c th c m t theo s sau: T heo s ny, LILO c ti vo my thc hin m vic u tin l a nhn vo b nh trong v sau ti chng trnh init thc hin vic khi ng Linux. Nu ci t nhiu phin bn Linux hay ci Linux cng cc h iu hnh khc (trong cc trng hp nh th, mi phin bn Linux hoc h iu hnh khc c gn nhn - label phn bit), th thng bo sau y c LILO a ra: Nhn init
LILO boot:

LILO

cho php nhp xu l nhn ca mt trong nhng h iu hnh hin c trn my khi ng n. Ti thi im , ngi dng cn g nhn ca h iu hnh cn khi ng vo, v d, g
LILO boot: linux

nu chn khi ng lm vic trong Linux, hoc g


LILO boot: dos

nu chn khi ng lm vic trong MS-DOS, Windows. Lu : Nu chng ta khng nh c nhn ca h iu hnh c trong my chn, hy g phm <TAB> c LILO cho bit nhn ca cc h iu hnh.
LILO boot: <TAB>

s hin ra danh sch cc nhn (v d nh): linux dos ... v hin li thng bo ni trn ta g nhn ca h iu hnh. LILO cng cho php t ch chn ngm nh h iu hnh khi ng m theo nu chng ta khng c tc ng g sau thng bo chn h iu hnh th LILO s t ng chn h iu hnh ngm nh ra khi ng. Nu chng ta khng can thip vo cc file tng ng ca trnh LILO th h iu hnh Linux l h iu hnh ngm nh. Gi s Linux c chn khi ng. Khi init thc hin, chng ta s thy mt chui (khong vi chc) dng thng bo cho bit h thng phn cng c Linux nhn din v 2 4

thit lp cu hnh cng vi tt c trnh iu khin phn mm c np khi khi ng. Qu trnh init l qu trnh khi thy, l cha ca mi qu trnh. Ti thi im khi ng h thng init thc hin vai tr u tin ca mnh l chy chng trnh shell trong file /etc/inittab v cc dng thng bo trn y chnh l kt qu ca vic chy chng trnh shell . Sau khi chng trnh shell trn c thc hin xong, bt u qu trnh ngi dng ng nhp (login) vo h thng.

2.2. Th tc ng nhp v cc lnh thot khi h thng


2.2.1. ng nhp Sau khi h thng Linux (ly Red Hat 6.2 lm v d) khi ng xong, trn mn hnh xut hin nhng dng sau:
Ret Hat Linux release 6.2 (Zoot) Kernel 2.2.14-5.0 on an i686 May1 login:

Dng th nht v dng th hai cho bit loi phin bn Linux, phin bn ca nhn v Chng ta c th thay i cc dng hin th nh trnh by trn y bng cch sa i file /etc/rc.d/rc.local nh sau: Thay on 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 mun hin th" >> /etc/issue v d sa thnh: echo "" > /etc/issue echo "This is my computer" >> /etc/issue th trn mn hnh ng nhp s c dng sau:
This is my computer hostname login:

kin trc phn cng c trn my, dng th ba l du nhc ng nhp ngi dng thc hin vic ng nhp. Ch l cc dng trn y c th thay i cht t ty thuc vo phin bn Linux. Ti du nhc ng nhp, hy nhp tn ngi dng (cn gi l tn ng nhp): y l tn k hiu cung cp cho Linux nhm nhn din mt ngi dng c th. Tn ng nhp ng vi mi ngi dng trn h thng l duy nht, km theo mt mt khu ng nhp.
May1 login: root Password:

2 5

Khi nhp xong tn ng nhp, h thng s hin ra thng bo hi mt khu v di chuyn con tr xung dng tip theo ngi dng nhp mt khu. Mt khu khi c nhp s khng hin th trn mn hnh v chnh iu gip trnh khi s "nhm ng" ca ngi khc. Nu nhp sai tn ng nhp hoc mt khu, h thng s a ra mt thng bo li:
May1 login: root Password: Login incorrect My1 login:

Nu ng nhp thnh cng, ngi dng s nhn thy mt s thng tin v h thng, mt vi tin tc cho ngi dng... Lc , du nhc shell xut hin ngi dng bt u phin lm vic ca mnh.
May1 login: root Password: Last login: Fri Oct 27 14:16:09 on tty2 Root[may1 /root]#

Dy k t trong dng cui cng chnh l du nhc shell. Trong du nhc ny, root l tn ngi dng ng nhp, may1 l tn my v /root tn th mc hin thi (v y l ngi dng root). Khi du nhc shell xut hin trn mn hnh th iu c ngha l h iu hnh sn sng tip nhn mt yu cu mi ca ngi dng. Du nhc shell c th khc vi trnh by trn y (Mc 2.7 cung cp cch thay i du nhc shell), nhng c th hiu n l chui k t bt u mt dng c cha tr chut v lun xut hin mi khi h iu hnh hon thnh mt cng vic no . 2.2.2. Ra khi h thng kt thc phin lm vic ngi dng cn thc hin th tc ra khi h thng. C rt nhiu cch cho php thot khi h thng, y chng ta xem xt mt s cch thng dng nht. Cch n gin nht m bo thot khi h thng ng n l nhn t hp phm CTRL+ALT+DEL. Khi , trn mn hnh s hin th mt s thng bo ca h thng v cui cng l thng bo thot trc khi tt my. Cn ch l: Nu ang lm vic trong mi trng X Window System, hy nhn t hp phm CTRL+ALT+BACKSPACE trc ri sau hy nhn CTRL+ALT+DEL. Cch th hai l s dng lnh shutdown vi c php nh sau: shutdown [ty-chn] <time> [cnh-bo] Lnh ny cho php dng tt c cc dch v ang chy trn h thng. Cc ty-chn ca lnh ny nh sau: -k : khng thc s shutdown m ch cnh bo. -r : khi ng li ngay sau khi shutdown. -h : tt my thc s sau khi shutdown. -f : khi ng li nhanh v b qua vic kim tra a.

2 6

-F : khi ng li v thc hin vic kim tra a. -c : b qua khng chy lnh shutdown. Trong ty chn ny khng th a ra tham s thi gian nhng c th a ra thng bo gii thch trn dng lnh gi cho tt c cc ngi dng. -t s -giy : qui nh init(8) ch khong thi gian s-giy tm dng gia qu trnh gi cnh bo v tn hiu kill, trc khi chuyn sang mt mc chy khc. v hai tham s v tr cn li: time : t thi im shutdown. Tham s time c hai dng. Dng tuyt i l gg:pp (gg: gi trong ngy, pp: pht) th h thng s shutdown khi ng h my trng vi gi tr tham s. Dng tng i l +<s> l hn sau thi khong <s> pht s shutdown; coi shutdown lp tc tng ng vi +0. cnh-bo : thng bo gi n tt c ngi dng trn h thng. Khi lnh thc hin tt c cc my ngi dng u nhn c cnh bo. V d, khi ngi dng g lnh: shutdown +1 Sau mot phut nua he thong se shutdown! trn mn hnh ca tt c ngi dng xut hin thng bo "Sau mot phut nua he thong se shutdown! " v sau mt pht th h thng shutdown thc s. Cch th ba l s dng lnh halt vi c php nh sau: halt [ty-chn] Lnh ny tt hn my. Cc tu chn ca lnh halt: -w : khng thc s tt my nhng vn ghi cc thng tin ln file /var/log/wtmp (y l file lu tr danh sch cc ngi dng ng nhp thnh cng vo h thng). -d : khng ghi thng tin ln file /var/log/wtmp. Ty chn -n c ngha tng t song khng tin hnh vic ng b ha. -f : thc hin tt my ngay m khng thc hin ln lt vic dng cc dch v c trn h thng. -i : ch thc hin dng tt c cc dch v mng trc khi tt my. Chng ta cn nh rng, nu thot khi h thng khng ng cch th dn n hu qu l mt s file hay ton b h thng file c th b h hng. Lu : C th s dng lnh exit tr v du nhc ng nhp hoc kt thc phin lm vic bng lnh logout. 2.2.3. Khi ng li h thng Ngoi vic thot khi h thng nh cc cch thc trn y (n t hp ba phm Ctrl+Alt+Del, dng lnh shutdown hoc lnh halt), khi cn thit (chng hn, gp phi tnh hung mt trnh ng dng chy qun) c th khi ng li h thng nh lnh reboot. C php lnh reboot: reboot [ty-chn] Lnh ny cho php khi ng li h thng. Ni chung th ch siu ngi dng mi c php s dng lnh reboot, tuy nhin, nu h thng ch c duy nht mt ngi dng ang

2 7

lm vic th lnh reboot vn c thc hin song h thng i hi vic xc nhn mt khu. Cc ty chn ca lnh reboot nh sau l -w, -d, -n, -f, -i c ngha tng t nh trong lnh halt. 2.2.4. Khi ng vo ch ho Linux cho php nhiu ch khi ng, nhng ch ny c lit k trong file /etc/inittab. Di y l ni dung ca file ny: # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, <miquelsdrinkel.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 dng hot ng ca h thng # 1 - Single user mode - y l ch n ngi dng, ta c th ng nhp vo ch ny trong trng hp mun khc phc mt s s c. # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) - y l ch a ngi dng, giao din text, khng h tr kt ni mng. # 3 - Full multiuser mode Ch a ngi dng, giao din text # 4 unused Khng s dng ch ny # 5 - X11 - y l ch a ngi dng, giao din ho # 6 - reboot (Do NOT set initdefault to this) Ch khi ng li my tnh # id:3:initdefault: - y l ch ngm nh h thng s s dng khi 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 khi ng s 3 l ch khi ng vo ch Text, v ch 5 l kh ng vo ch ho. Nh vy cho my tnh khi ng vo ch ho ta sa li dng cu hnh id:3:initdefault: thnh id:5:initdefault:

Trong Linux c mt s loi giao din ho do mt s t chc vit ra. Hai t chc ni ting l GNOME (http://www.gnome.org) v KDE (http://www.kde.org) vit ra cc giao din ho mang tn trng vi t chc l GNOME v KDE. Cng tu vo vic c ci giao din GNOME hay KDE m khi khi ng vo ch ho, my tnh c cc giao din tng ng. Trn hnh trn l giao din GNOME m khi khi ng vo ch ho. Mt khc, cc giao din ny lin tc c pht trin, do

2 9

mi phin bn s c s khc nhau. Trong giao din ng nhp ha, h thng hin th hp thoi cho php ngi dng nhp vo tn ti khon; sau khi ngi dng nhp tn ti khon ca mnh, h thng hi tip mt khu. Nu c tn ti khon v mt khu u chnh xc th ngi dng c php vo h thng v mt giao din lm vic mi s hin ra nh hnh di.

2.3. Lnh thay i mt khu


Mt khu l vn rt quan trng trong cc h thng a ngi dng v m bo tnh bo mt ti a, cn thit phi ch ti vic thay i mt khu. Thm ch trong trng hp h thng ch c mt ngi s dng th vic thay i mt khu vn l rt cn thit. Mt khu l mt xu k t i km vi tn ngi dng m bo cho php mt ngi vo lm vic trong h thng vi quyn hn c quy nh. Trong qu trnh ng nhp, ngi dng phi g ng tn v mt khu, trong g mt khu l cng vic bt buc phi thc hin. Tn ngi dng c th c c ng khai song mt khu th tuyt i phi c m bo b mt. Vic ng k tn v mt khu ca siu ngi dng c tin hnh trong qu trnh khi to h iu hnh Linux. Vic ng k tn v mt khu ca mt ngi dng thng thng c tin hnh khi mt ngi dng mi ng k tham gia s dng h thng. Thng thng siu ngi dng cung cp tn v mt khu cho ngi dng mi (c th do ngi dng ngh) v dng lnh adduser (hoc lnh useradd) ng k tn v mt khu vi h 3 0

thng. Sau , ngi dng mi nht thit cn thay i mt khu bo m vic gi b mt c nhn tuyt i. Lnh passwd cho php thay i mt khu ng vi tn ng nhp ngi dng. C php lnh passwd: passwd [ty-chn] [tn-ngi-dng] vi cc ty chn nh sau: -k : thay i mt khu ngi dng. Lnh i hi phi xc nhn quyn bng vic g mt khu ang dng trc khi thay i mt khu. Cho php ngi dng thay i mt khu ca mnh c lp vi siu ngi dng. -f : t mt khu mi cho ngi dng song khng cn tin hnh vic kim tra mt khu ang dng. Ch siu ngi dng mi c quyn s dng tham s ny. -l : kha mt ti khon ngi dng. Vic kha ti khon thc cht l vic dch bn m ha mt khu thnh mt xu k t v ngha bt u bi k hiu "!". Ch siu ngi dng mi c quyn s dng tham s ny. -stdin : vic nhp mt khu ngi dng ch c tin hnh t thit b vo chun khng th tin hnh t ng dn (pipe). Nu khng c tham s ny cho php nhp mt khu c t thit b vo chun hoc t ng dn. -u : m kha (tho b kha) mt ti khon (i ngu vi tham s -l). Ch siu ngi dng mi c quyn s dng tham s ny. -d : xa b mt khu ca ngi dng. Ch siu ngi dng mi c quyn s dng tham s ny. -S : hin th thng tin ngn gn v trng thi mt khu ca ngi dng c a ra. Ch siu ngi dng mi c quyn s dng tham s ny. Nu tn-ngi-dng khng c trong lnh th ngm nh l chnh ngi dng g lnh ny. V d khi ngi dng user1 g lnh: # passwd user1 h thng thng bo:
Changing password for user user1 New UNIX password:

ngi dng nhp mt khu mi ca mnh vo. Sau khi ngi dng g xong mt khu mi, h thng cho ra thng bo:
BAD PASSWORD: it is derived from your password entry Retype new UNIX password:

ngi dng khng nh mt ln na mt khu va g dng trn (nh phi g li ng ht nh ln trc). Ch nn qu phn vn v thng bo dng pha trn v hu ht khi g mt khu mi lun gp nhng thng bo kiu i loi nh vy, chng hn nh:
BAD PASSWORD: it is too simplistic/systematic

V sau khi chng ta khng nh li mt khu mi, h thng cho ra thng bo:
Passwd: all authentication tokens updated successfully.

cho bit vic thay i mt khu thnh cng v du nhc shell li hin ra. Khi siu ngi dng g lnh:

3 1

# passwd -S root s hin ra thng bo


Changing password for user root Password set, MD5 encryption

cho bit thut ton m ha mt khu m Linux s dng l mt thut ton hm bm c tn l MD5. Lu : C mt li khuyn i vi ngi dng l nn chn mt khu khng qu n gin qu (nhm trnh ngi khc d d tm ra) hoc khng qu phc tp (trnh kh khn cho chnh ngi dng khi phi ghi nh v g mt khu). c bit khng nn s dng h tn, ngy sinh, s in thoi ... ca bn thn hoc ngi thn lm mt khu v y l mt trong nhng trng hp mt khu n gin nht. Nu thng bo mt khu qu n gin c lp i lp li mt vi ln v khng c thng bo mt khu mi thnh cng quay v du nhc shell th nn g li lnh v chn mt mt khu mi phc tp hn i cht.

2.4. Lnh xem, thit t ngy, gi hin ti v xem lch trn h thng
2.4.1 Lnh xem, thit t ngy, gi Lnh date cho php c th xem hoc thit t li ngy gi trn h thng. C php ca lnh gm hai dng, dng xem thng tin v ngy, gi: date [ty-chn] [+nh-dng] v dng thit t li ngy gi cho h thng: date [ty-chn] [MMDDhhmm[ [CC[YY] ]-ss]] Cc ty-chn nh sau: -d, --date=xu-vn-bn : hin th thi gian di dng xu-vn-bn, m khng ly "thi gian hin ti ca h thng nh theo ngm nh; xu-vn-bn c t trong hai du nhy n hoc hai du nhy kp. -f, --file=file-vn-bn : ging nh mt tham s --date nhng ng vi nhiu ngy cn xem: mi dng ca file-vn-bn c vai tr nh mt xu-vn-bn trong trng hp tham s --date. -I, --iso-8601[=m-t] : hin th ngy gi theo chun ISO-8601 (v d: 2000-11-8). -I tng ng vi tham s --iso-8601='date' Vi --iso-8601: nu m-t l 'date' (hoc khng c) th hin th ngy, nu m-t l 'hours' hin th ngy+gi, nu m-t l 'minutes': ngy+gi+pht; nu m-t l 'seconds': ngy + gi + pht + giy. -r, --reference= file : hin th thi gian sa i file ln gn y nht. -R, --rfc-822 : hin th ngy theo RFC-822 (v d: Wed, 8 Nov 2000 09:21:46 -0500). -s, --set=xu-vn-bn : thit t li thi gian theo kiu xu-vn-bn. -u, --utc, --universal : hin th hoc thit t thi gian theo UTC (v d: Wed Nov 8 14:29:12 UTC 2000). --help : hin th thng tin tr gip v thot.

3 2

Trong dng lnh date cho xem thng tin ngy, gi th tham s nh-dng iu khin cch hin th thng tin kt qu. nh-dng l dy c t mt n nhiu cp gm hai k t, trong mi cp k t u tin l % cn k t th hai m t nh dng. Do s lng nh dng l rt nhiu v vy chng ta ch xem xt mt s nh dng in hnh ( xem y cc nh dng, s dng lnh man date). Di y l mt s nh dng in hnh: %% : Hin ra chnh k t %. %a : Hin ra thng tin tn ngy trong tun vit tt theo ngn ng bn a. %A : Hin ra thng tin tn ngy trong tun vit y theo ngn ng bn a. %b : Hin ra thng tin tn thng vit tt theo ngn ng bn a. %B : Hin ra thng tin tn thng vit y theo ngn ng bn a. Trong dng lnh date cho php thit t li ngy gi cho h thng th tham s [MMDDhhmm[ [CC[YY] [.ss]] m t ngy, gi mi cn thit 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 di y trnh by mt s v d s dng lnh date, mi v d c cho tng ng vi mt cp hai dng, trong dng trn m t lnh c g cn dng di l thng bo ca 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. Lnh xem lch Lnh cal cho php xem lch trn h thng vi c php nh sau: cal [ty-chn] [<thng> [<nm>]] 3 3

nu khng c tham s, lch ca thng hin thi s c hin th. Cc tu-chn l: -m : chn ngy Th hai l ngy u tin trong tun (mc nh l ngy Ch nht). -j : hin th s ngy trong thng di dng s ngy trong nm (v d: ngy 1/11/2000 s c hin th di dng l ngy th 306 trong nm 2000, s ngy bt u c tnh t ngy 1/1). -y : hin th lch ca nm hin thi. 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 nhp dng lnh trn, trn mn hnh s hin th lch ca thng 1 nm 2001, mc nh chn ngy ch nht l ngy bt u ca tun. Di y l v d hin th s ngy trong thng 3 di dng 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 thng


Lnh uname cho php xem thng tin h thng vi c php l: uname [ty-chn] Nu khng c tu chn th hin tn h iu hnh. Lnh c cc ty chn l: -a, --all : hin tt c cc thng tin. -m, --machine : kiu kin trc ca b x l (i386, i486, i586, i686...). -n, --nodename : hin tn ca my. -r, --release : hin nhn ca h iu hnh. -s, --sysname : hin tn h iu hnh. -p, --processor : hin kiu b x l ca my ch. V d, nu g lnh # uname -a 3 4

th mn hnh s hin 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 hin ra c tt c 6 trng l: Tn h iu hnh: Linux Tn my: linuxsrv.linuxvn.net Tn nhn ca h iu hnh: 2.2.14-5.0 Ngy sn xut: #1 Tue Mar 7 21:07:39 EST 2000 Kiu kin trc b x l: i686 Kiu b x l ca my ch: unknown V d nu g lnh: # uname -spr th mn hnh s hin ra nh sau:
Linux 2.2.14-5.0 unknown

l tn h iu hnh, tn nhn v kiu b x l ca my ch. Lu : Chng ta lm r thm ni dung lu trong mc 1.3.1 v tham s kha kt hp: Trong v d trn y khi vit tham s -spr l yu cu thc hin lnh usame vi ngha kt hp tnh hung theo c ba tham s kha -s, -p, -r. Ch rng, khng th vit -s -p -r thay cho -spr c. Nh lu mc 1.3.1 trong nhiu lnh ca Linux cho php vit kt hp cc tham s kha theo cch thc nh trn min l cc tham s khng xung khc vi nhau.

2.6. Thay i ni dung du nhc shell


Trong Linux c hai loi du nhc: du nhc cp mt (du nhc shell) xut hin khi nhp lnh v du nhc cp hai (du nhc nhp liu) xut hin khi lnh cn c d liu c nhp t bn phm v tng ng vi hai bin nhc tn l PS1 v PS2. PS1 l bin h thng tng ng vi du nhc cp 1: Gi tr ca PS1 chnh l ni dung hin th ca du nhc shell. nhn bit thng tin h thng hin ti, mt nhu cu t ra l cn thay i gi tr ca cc bin h thng PS1 v PS2. Linux cho php thay i gi tr ca bin h thng PS1 bng lnh gn tr mi cho n. Lnh ny c dng: # PS1='<dy k t>' Nm (5) k t u tin ca lnh gn trn y (PS1=') phi c vit lin tip nhau. Dy k t nm gia cp hai du nhy n (c th s dng cp hai du kp ") v khng c php cha du nhy. Dy k t ny bao gm cc cp k t iu khin v cc k t khc, cho php c th c du cch. Cp k t iu khin gm hai k t, k t u tin l du s xui "\" cn k t th hai nhn mt trong cc trng hp lit k trong bng di y. Bng di y gii thiu mt s cp k t iu khin c th c s dng khi mun thay i du nhc lnh:

Cp k t iu khin

ngha

3 5

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

Hin th th t ca lnh trong lch s Hin th th t ca lnh Hin th du -la ($). i vi siu ngi dng (super user), th hin th du s hiu (#) Hin th du s (\) Hin th ngy hin ti Hin th tn my (hostname) K hiu xung dng Hin th tn h shell Hin th gi hin ti Hin th tn ngi dng Hin th tn thc s ca th mc hin thi (v d th mc hin thi l /mnt/hda1 th tn thc s ca n l /hda1) Hin th tn y ca th mc hin thi (v d /mnt/hda1)

V d, hin thi du nhc shell c dng: root[may1 /hda1]# Sau khi g lnh root@may1 /hda1]# PS1='[\h@\u \w : \d]\$' th du nhc shell c thay i l: [may1@root /mnt/hda1 : Fri Oct 27 ]# ngoi vic i th t gia tn ngi dng v my cn cho chng ta bit thm v ngy h thng qun l v tn y ca th mc hin thi. Linux cung cp cch thc hon ton tng t nh i vi bin PS1 thay i gi tr bin h thng PS2 tng ng vi du nhc cp hai.

2.7. Lnh gi ngn ng tnh ton s hc


Linux cung cp mt ngn ng tnh ton vi chnh xc ty thng qua lnh bc. Khi yu cu lnh ny, ngi dng c cung cp mt ngn ng tnh ton (v cho php lp trnh tnh ton c dng ngn ng lp trnh C) hot ng theo thng dch. Trong ngn ng lp trnh c cung cp (tm thi gi l ngn ng bc), tn ti rt nhiu cng c h tr tnh ton v lp trnh tnh ton: kiu php ton s hc phong ph, php ton so snh, mt s hm chun, bin chun, cu trc iu khin, cch thc nh ngha hm, cch thc thay i chnh xc, t li ch thch ... Ch cn s dng mt phn nh tc ng ca lnh bc, chng ta c mt "my tnh s bm tay" hiu qu. C php lnh bc: bc [ty-chn] [file...] vi cc tu chn sau y: -l, --mathlib : thc hin php tnh theo chun th vin ton hc (v d: 5/5=1.00000000000000000000). -w, --warn : khi thc hin php tnh khng tun theo chun POSIX (POSIX l mt chun trong Linux) th mt cnh bo xut hin. 3 6

-s, --standard : thc hin php tnh chnh xc theo chun ca ngn ng POSIX bc. -q, --quiet : khng hin ra li gii thiu v phn mm GNU khi dng bc. Tham s file l tn file cha chng trnh vit trn ngn ng bc, khi lnh bc thc hin s t ng chy cc file chng trnh ny (Nu c nhiu tham s th c ngha s chy nhiu chng trnh lin tip nhau). Di y l mt v d s dng lnh bc dng n gin nht. Khi g lnh ti du nhc: # bc -l mn hnh xut hin li gii thiu v GNU khi dng bc v ngn ng bc c kch hot phc v ngi 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 tha, / l php chia ly thng, % l chia ly phn d. Lu : Ngn ng lp trnh tnh ton bc l mt ngn ng rt mnh c ni dung ht sc phong ph cho nn trong khun kh ca ti liu ny khng th m t ht cc ni dung ca ngn ng c. Chng ta cn s dng lnh man bc nhn c thng tin y v lnh bc v ngn ng tnh ton bc. y trnh by s b mt s yu t c bn nht ca ngn ng (bt l vit tt ca biu thc, b l vit tt ca bin): Cc php tnh: - bt: ly i; ++ b, --b, b ++, b --: php ton tng, gim b; cc php ton hai ngi cng +, tr -, nhn *, chia /, ly phn d %, ly tha nguyn

3 7

bc ^; gn =; gn sau khi thao tc <thao tc>=; cc php ton so snh <, <=, >, >=, bng ==, khc != ... Php so snh cho 1 nu ng, cho 0 nu sai. Bn bin chun l scale s lng ch s phn thp phn; last gi tr tnh ton cui cng; ibase c s h m i vi input v obase l c s h m vi output (ngm nh hai bin ny c gi tr 10). Cc hm chun sin s (bt); cosin c (bt); arctg a (bt); lgarit t nhin l (bt); m c s t nhin e (bt); hm Bessel bc nguyn n ca bt l j (n, bt).

3 8

CHNG 3. H THNG FILE


3.1 Tng quan v h thng file
3.1.1. Mt s khi nim Ngi dng tng lm vic vi h iu hnh DOS/Windows th rt quen bit vi cc khi nim: file (tp tin), th mc, th mc hin thi ... m bo tnh h thng v thun tin cho ngi dng cha tng lm vic thnh tho vi mt h iu hnh no khc, chng ny vn gii thiu v cc khi nim ny mt cch s b. Mt i tng in hnh trong cc h iu hnh l file. File l mt tp hp d liu c t chc c h iu hnh qun l theo yu cu ca ngi dng. Cch t chc d liu trong file thuc v ch ca n l ngi to ra file. File c th l mt vn bn (trng hp c bit l chng trnh ngun trn C, PASCAL, shell script ...), mt chng trnh ngn ng my, mt tp hp d liu ... H iu hnh t chc vic lu tr ni dung file trn cc thit b nh lu di (chng hn a t) v m bo cc thao tc ln file. Chnh v c h iu hnh m bo cc chc nng lin quan n file nn ngi dng khng cn bit file ca mnh lu vng no trn a t, bng cch no c/ghi ln cc vng ca a t m vn thc hin c yu cu tm kim, x l ln cc file. H iu hnh qun l file theo tn gi ca file (tn file) v mt s thuc tnh lin quan n file. Trc khi gii thiu mt s ni dung lin quan n tn file v tn th mc, chng ta gii thiu s b v khi nim th mc. lm vic c vi cc file, h iu hnh khng ch qun l ni dung file m cn phi qun l cc thng tin lin quan n cc file. Th mc (directory) l i tng c dng cha thng tin v cc file, hay ni theo mt cch khc, th mc cha cc file. Cc th mc cng c h iu hnh qun l trn vt dn ngoi v v vy, theo ngha ny, th mc cng c coi l file song trong mt s trng hp phn bit vi "file" th mc, chng ta dng thut ng file thng thng. Khc vi file thng thng, h iu hnh li quan tm n ni dung ca th mc. Mt s ni dung sau y lin quan n tn file (bao gm c tn th mc): Tn file trong Linux c th di ti 256 k t, bao gm cc ch ci, ch s, du gch ni, gch chn, du chm. Tn th mc/file trong Linux c th c nhiu hn mt du chm, v d: This_is.a.VERY_long.filename. Nu trong tn file c du chm "." th xu con ca tn file t du chm cui cng c gi l phn m rng ca tn file (hoc file). V d, tn file trn y c phn m rng l .filename. Ch rng khi nim phn m rng y khng mang ngha nh mt s h iu hnh khc (chng hn nh MS-DOS). Lu : Chng ta nn lu rng, khng phi k t no cng c ngha. Nu c hai file ch khc nhau k t cui cng, th i vi Linux, l hai file c th trng tn. Bi l, Linux ch ly 32 hay 64 k t u tin trong tn file m thi (ty theo phin bn Linux), phn tn file cn li dnh cho ch ca file, Linux theo di thng tin, nhng thng khng xem cc k t ng sau k t th 33 hay 65 l quan trng i vi n. Xin nhc li lu v phn bit ch hoa v ch thng i vi tn th mc/file, v d hai file FILENAME.tar.gz v filename.tar.gz l hai file khc nhau.

3 9

Nu trong tn th mc/file c cha khong trng, s phi t tn th mc/file vo trong cp du nhy kp s dng th mc/file . V d, to th mc c tn l My document chng hn, hy nh dng lnh sau: # mkdir "My document" Mt s k t sau khng c s dng trong tn th mc/file: !, *, $, &, # ... Khi s dng chng trnh mc (Midnight Commander), vic hin th tn file s b sung mt k t theo ngha: du "*" cho file kh thi trong Linux, du "~" cho file sao lu, du "." cho file n, du "@" cho file lin kt... Tp hp tt c cc file c trong h iu hnh c gi l h thng file l mt h thng thng nht. Bi chnh t cch thc s dng th mc, h thng file c t chc lgic theo dng hnh cy: H thng file c xut pht t mt th mc gc (c k hiu l "/") v cho php to ra th mc con trong mt th mc bt k. Thng thng, khi khi to Linux c ngay h thng file ca n. Hnh 3.1. cho minh ha mt phn trong cy lgic ca h thng file.

ch mt file hay mt th mc, chng ta cn a ra mt ng dn, v d ng dn xc nh file Xclients trong hnh 3.1. chng ta vit nh sau:
/etc/X11/xinit/Xclients

ng dn ny cho bit Xclients nm trong xinit, xinit nm 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. Mt phn cu trc lgic dng cy ca h thng File

nm trong etc v etc nm trong gc /.

4 0

Tn file thng l tham s thc s khi g lnh v cng vic g lnh tr nn rt nng n i vi ngi dng nu nh trong lnh phi g mt ng dn di theo dng trn (c bit vi tn gi l ng dn tuyt i). V vy, Linux (cng nh nhiu h iu hnh khc) s dng khi nim th mc hin thi ca mi ngi dng lm vic trong h thng. Th mc hin thi l mt th mc trong h thng file m hin thi "ngi dng ang ".

Qua th mc hin thi, Linux cho php ngi dng ch mt file trong lnh ngn gn hn nhiu. V d, nu th mc hin thi l th mc xinit th ch file ni, ngi dng ch cn vit Xclients hoc ./Xclients trong k hiu "." ch th mc hin thi. ng dn c xc nh qua th mc hin thi c gi l ng dn tng i. Khi mt ngi dng ng nhp vo h thng, Linux lun chuyn ngi dng vo th mc ring, v ti thi im th mc ring l th mc hin thi ca ngi dng. Th mc ring ca siu ngi dng l /root, th mc ring ca ngi dng c tn l user1 l /home/user1 ... Linux cho php dng lnh cd chuyn sang th mc khc (ly th mc khc lm th mc hin thi). Hai du chm ".." c dng ch th mc ngay trn th mc hin thi (cha ca th mc hin thi). Linux cn cho php ghp mt h thng file trn mt thit b nh (a mm, vng a cng cha c a vo h thng file) thnh mt th mc con trong h thng file ca h thng bng lnh mount. Cc h thng file c ghp thuc vo cc kiu khc nhau. Hai mc tip theo (3.1.2 v 3.1.3.) gii thiu nhng ni dung su hn v h thng file Linux. 3.1.2. S b kin trc ni ti ca h thng file Trn a t, h thng file c coi l dy tun t cc khi lgic mi khi cha hoc 512B hoc 1024B hoc bi ca 512B l c nh trong mt h thng file. Trong h thng file, cc khi d liu c a ch ha bng cch nh ch s lin tip, mi a ch c cha trong 4 byte (32 bit). Cu trc ni ti ca h thng file bao gm 4 thnh phn k tip nhau: Boot block (dng khi ng h thng), Siu khi (Super block), Danh sch inode v Vng d liu. Di y, chng ta xem xt s lc ni dung cc thnh phn cu trc ni ti mt h thng file. Siu khi Siu khi cha nhiu thng tin lin quan n trng thi ca h thng file. Trong siu khi c cc trng sau y: Kch thc ca danh sch inode (khi nim inode s c gii thch trong mc sau): nh kch c vng khng gian trn H thng file qun l cc inode. Kch thc ca h thng file. Hai kch thc trn y tnh theo n v dung lng b nh ngoi, Mt danh sch ch s cc khi ri (thng trc trn siu khi) trong h thng file.

4 1

Ch s cc khi ri thng trc trn siu khi c dng p ng nhu cu phn phi mi. Ch rng, danh sch ch s cc khi ri c trn siu khi ch l mt b phn ca tp tt c cc khi ri c trn h thng file. Ch s ca khi ri tip theo trong danh sch cc khi ri. Ch s khi ri tip theo dng h tr vic tm kim tip cc khi ri: bt u tm t khi c ch s ny tr i. iu c ngha l mi khi c ch s khng ln hn ch s ny hoc c trong danh sch cc khi ri thng trc hoc c cp pht cho mt file no . Nhiu thao tc to file mi, xo file, thay i ni dung file v.v. cp nht cc thng tin ny. Mt danh sch cc inode ri (thng trc trn siu khi) trong h thng file. Danh sch ny cha ch s cc inode ri c dng phn phi ngay c cho mt file mi c khi to. Thng thng, danh sch ny ch cha mt b phn cc inode ri trn h thng file. Ch s inode ri tip theo trong danh sch cc inode ri. Ch s inode ri tip theo nh v vic tm kim tip thm inode ri: bt u tm t inode c ch s ny tr i. iu c ngha l mi inode c ch s khng ln hn ch s ny hoc c trong danh sch cc inode ri thng trc hoc c tng ng vi mt file no . Hai tham s trn y to thnh cp xc nh c danh sch cc inode ri trn h thng file cc thao tc to file mi, xo file cp nht thng tin ny. Cc trng kha (lock) danh sch cc khi ri v danh sch inode ri: Trong mt s trng hp, chng hn khi h thng ang lm vic thc s vi a t cp nht cc danh sch ny, h thng khng cho php cp nht ti hai danh sch ni trn. C ch dn v vic siu khi c bin i: nh k thi gian siu khi b nh trong c cp nht li vo siu khi a t v v vy cn c thng tin v vic siu khi b nh trong khc vi ni dung b nh ngoi: nu hai bn khng ging nhau th cn phi bin i chng c ng nht. C ch dn rng h thng file ch c th c (cm ghi): Trong mt s trng hp, h thng ang cp nht thng tin t b nh ngoi th ch cho php c i vi h thng file, S lng tng cng cc khi ri trong h thng file, S lng tng cng cc inode ri trong h thng file, Thng tin v thit b, Kch thc khi (n v phn phi d liu) ca h thng file. Hin ti kch thc ph bin ca khi l 1KB. Trong thi gian my hot ng, theo tng giai on, nhn s a siu khi ln a nu n c bin i ph hp vi d liu trn h thng file. Mt trong khi nim ct li xut hin trong h thng file l inode. Cc i tng lin quan n khi nim ny s c trnh by trong cc mc tip theo.

4 2

Inode Mi khi mt qu trnh khi to mt file mi, nhn h thng s gn cho n mt inode cha s dng. hiu r hn v inode, chng ta xem xt s lc mi quan h lin quan gia file d liu v vic lu tr trn vt dn ngoi i vi Linux. Ni dung ca file c cha trong vng d liu ca h thng file v c phn chia cc khi d liu (cha ni dung file) v hnh nh phn b ni dung file c trong mt inode tng ng. Lin kt n tp hp cc khi d liu ny l mt inode, ch thng qua inode mi c th lm vic vi d liu ti cc khi d liu: Inode cha dng thng tin v tp hp cc khi d liu ni dung file. C th quan nim rng, t hp gm inode v tp cc khi d liu nh vy l mt file vt l: inode c thng tin v file vt l, trong c a ch ca cc khi nh cha ni dung ca file vt l. Thut ng inode l s kt hp ca hai t index vi node v c s dng ph dng trong Linux. Cc inode c phn bit nhau theo ch s ca inode: chnh l s th t ca inode trong danh sch inode trn h thng file. Thng thng, h thng dng 2 bytes lu tr ch s ca inode. Vi cch lu tr ch s nh th, khng c nhiu hn 65535 inode trong mt h thng file. Nh vy, mt file ch c mt inode song mt file li c mt hoc mt s tn file. Ngi dng tc ng thng qua tn file v tn file li tham chiu n inode (tn file v ch s inode l hai trng ca mt phn t ca mt th mc). Mt inode c th tng ng vi mt hoc nhiu tn file, mi tng ng nh vy c gi l mt lin kt. Inode c lu tr ti vng danh sch cc inode. Trong qu trnh lm vic, Linux dng mt vng b nh, c gi l bng inode (trong mt s trng hp, n cn c gi tng minh l bng sao in-core inode) vi chc nng tng ng vi vng danh sch cc inode c trong h thng file, h tr cho qu trnh truy nhp d liu trong h thng file. Ni dung ca mt in-core inode khng ch cha cc thng tin trong inode tng ng m cn c b sung cc thng tin mi gip cho qu trnh x l inode. Chng ta xem xt cu trc ni ti ca mt inode thy c s trnh by ni ti ca mt file. Inode bao gm cc trng thng tin sau y: Kiu file. Trong Linux phn loi cc kiu file: file thng thng (regular), th mc, c t k t, c t khi v ng dn FIFO (pipes). Linux quy nh trng kiu file c gi tr 0 tng ng l inode cha c s dng. Quyn truy nhp file. Trong Linux, file l mt ti nguyn chung ca h thng v vy quyn truy nhp file c c bit quan tm trnh nhng trng hp truy nhp khng hp l. i vi mt inode, c 3 mc quyn truy nhp lin quan n cc i tng: mc ch ca file (i tng ny c k hiu l u: t ch user), mc nhm ngi dng ca ch nhn ca file (i tng ny c k hiu l g: t ch group), mc ngi dng khc (i tng ny c k hiu l a: t ch all). Quyn truy nhp l c, ghi, thc hin hoc mt t hp no t nhm gm 3 quyn trn. Ch rng, quyn thc hin i vi mt th mc tng ng vi vic cho php tm mt tn file c trong th mc . S lng lin kt i vi inode: y chnh l s lng cc tn file trn cc th mc c lin kt vi inode ny, 4 3

nh danh ch nhn ca inode, nh danh nhm ch nhn: xc nh tn nhm ngi dng m ch file l mt thnh vin ca nhm ny, di ca file tnh theo byte, Thi gian truy nhp file: thi gian file c sa i mun nht, thi gian file c truy nhp mun nht, thi gian file c khi to, Bng a ch cha cc a ch khi nh cha ni dung file. Bng ny c 13 phn t a ch, trong c 10 phn t trc tip, 1 phn t gin tip bc 1, 1 phn t gin tip bc 2 v mt phn t gin tip bc 3 (chi tit c trong phn sau). Ni dung ca file thay i khi c thao tc ghi ln n; ni dung ca mt inode thay i khi ni dung ca file thay i hoc thay i ch hoc thay i quyn hoc thay i s lin kt. V d v ni dung mt 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 phn t a ch d liu Bn sao in-core inode cn b sung thm trng trng thi ca in-core inode. Trng trng thi ca in-core inode c cc thng tin sau: inode b kho, mt qu trnh ang ch i khi inode tho kha, in-core inode khc vi inode do s thay i d liu trong inode, in-core inode khc vi inode do s thay i d liu trong file, s lng cc tn file ni vi file ang c m, s hiu thit b lgic ca h thng file cha file ni trn ch s inode: dng lin kt vi inode trn a, cc mc ni ti cc in-core inode khc. Trong b nh trong, cc in-core inode c lin kt theo mt hng bm v mt danh sch t do. Trong danh sch hng bm cc in-core inode ha hp theo s hiu thit b lgic v s hiu inode. Trong qu trnh h thng lm vic, ny sinh khi nim inode tch cc nu nh c mt qu trnh ang lm vic vi inode (nh m file). Mt inode thuc vo danh sch cc inode ri khi khng c file vt l no tng ng vi inode . 4 4

Bng cha a ch khi d liu ca File trong UNIX Bng cha a ch khi d liu ca file gm 13 phn t vi 10 phn t trc tip v 3 phn t gin tip: Mi phn t c di 4 bytes, cha mt s hiu ca mt khi nh trn a. Mi phn t trc tip tr ti 1 khi d liu thc s cha ni dung file. Phn t gin tip bc 1 (single indirect) tr ti 1 khi nh ngoi. Khc vi phn t trc tip, khi nh ngoi ny khng dng cha d liu ca file m li cha danh sch ch s cc khi nh ngoi v chnh cc khi nh ngoi ny mi thc s cha ni dung file. Nh vy, nu khi c di 1KB v mt ch s khi ngoi c di 4 bytes th a ch gin tip cho php nh v khng gian trn a lu tr d liu ca file ti 256KB (Khng gian b nh ngoi trong vng d liu phi dng ti l 257KB). Tng t i vi cc phn t gin tip mc cao hn. C ch qun l a ch file nh trn cho thy c s phn bit gia file nh vi file ln. File nh c di b hn v theo cch t chc nh trn, phng php truy nhp s cho php tc nhanh hn, n gin hn do ch phi lm vic vi cc phn t trc tip. Khi x l, thut ton c File tin hnh theo cc cch khc nhau i vi cc phn t trc tip v gin tip. C ch t chc lu tr ni dung Fle nh trnh by cho php di file c th ln ti 24 (2 +216 + 28+10) khi. Vng d liu bao gm cc khi d liu, mi khi d liu c nh ch s phn bit. Khi trn vng d liu c dng cha ni dung cc file, ni dung cc th mc v ni dung cc khi nh v a ch ca cc file. Ch rng, ch s ca khi d liu c cha trong 32 bit v thng tin ny xc nh dung lng ln nht ca h thng file. 3.1.3. Mt s thut ton lm vic vi inode H thng li gi h thng file Khi lm vic vi file thng thng qua li gi h thng. Mt s li gi h thng thng gp nh m file open, ng file close, c ni dung file read, ghi ni dung file write v.v. Bng di y thng k cc li gi h thng lm vic vi h thng file v phn loi theo chc nng ca mi li gi h thng (mt li gi c th c nhc ti mt s ln): Thi im s dng file open creat dup pipe close S dng namei open creat chdir chroot chown chmod gn inode thuc Vo-ra Cu trc h Qun tnh file file thng 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 Thut ton h thng file mc thp Namei iput Ialloc ifree alloc Thut ton nh v buffer brelse Bread breada

free

bmap bwrite

Hnh 3.2. Tng th v li gi h thng File

4 5

Chng ta xem xt mt s thut ton lm vic vi inode. Thut ton truy nhp ti inode (iget) Nhiu tnh hung i hi thut ton iget, chng hn nh, mt qu trnh m mt file mi hoc to mt file mi v.v.. Thut ton iget cp pht mt bn in-core inode i vi mt s hiu inode. Tuy nhin, trong trng hp cha c bn sao in-core inode th d c ni dung ca n cn phi c c ni dung ca inode v cn nh v khi d liu cha inode cho. Cng thc lin quan n khi a t cha inode c th c vo b nh trong nh sau: Ch s khi cha inode = (s hiu inode - 1) / (s lng inode trong mt khi nh) + ch s khi nh u tin cha danh sch inode trn a. Sau khi c khi a cha inode vo b nh trong, xc nh chnh xc v tr ca inode, chng ta c cng thc sau: Byte v tr u tin = ((s hiu inode - 1) mod (s lng inode trong mt khi nh))* di mt inode V d, nu nh mi inode a chim 64 bytes, mi khi a cha 8 inode a th inode s 8 s bt u t byte th 448 trn khi a u tin trong vng danh sch cc inode. rng, khi lm vic vi mt h thng file th super block ca n lun c mt trong b nh trong h thng c nhng thng tin lm vic. Ch rng, trong super block c mt danh sch cc inode ri (trn n) v mt danh sch cc khi ri. Thut ton iget nhn mt inode cho n tch cc v iu ty thuc vo mt s tnh hung sau y: - Nu inode khng tn ti trong vng m m li khng thuc danh sch cc inode ri trn super block th h thng phi thng bo mt li c gp. Li ny xy ra do yu cu mt inode khng cn vng m lm vic vi file na (tng ng vi trng hp trong MS-DOS thng bo: too many files opened), - inode c trong vng m cc inode trn h thng file ( c in-core inode). Trong trng hp ny x l theo hai bc: + inode tng ng b kha bi mt qu trnh khc: lc phi i cho n khi qu trnh trc y khng kha inode na. Sau khi c tho kha inode c th tr thnh tch cc hoc ri, + Nu inode danh sch cc inode ri th loi b n khi danh sch ny bng cch t inode sang tch cc. - inode khng tn ti trn vng m tuy nhin danh sch cc inode ri khc rng. Khi danh sch cc inode ny khc rng, c ngha l c nhng inode khng c gi tr: loi b n v t inode mi vo thay th. Thut ton iput loi b inode Thut ton iput c chc nng i ngu vi thut ton iget: cn tho bt s xut hin ca mt inode, chng hn khi chng trnh thc hin thao tc ng file. Khc vi trng hp thut ton iget, thut ton iput khng ny sinh tnh hung sai st. Trong thut ton ny, khi mt qu trnh khng lm vic vi mt file c lin kt vi mt inode na th mt s tnh hung xy ra: - H thng gim s lng file tch cc i 1, - Nu s lng file tch cc l 0 th:

4 6

+ Nu l lnh xo file th trc h thng thc hin thao tc gim s lin kt vi inode i 1 v v vy c th s lng lin kt tr thnh 0, c ngha l s tn ti ca file vt l khng cn. Khi , chng ta thc hin vic xo thc s file ni trn bng mt s thao tc: gii phng cc khi d liu, t kiu file ca inode l 0 v gii phng inode. + khi s lin kt >0 thi cn cp nht s thay i ca inode ln a t. Trong trng hp s lng file tch cc vn dng th khng thc hin thao tc g. Ch l trong thut ton ny c s dng thut ton ifree.

Thut ton ialloc gn inode cho mt file mi Khi mt file mi c xut hin, chng hn khi to file creat, phi cung cp mt inode cho file v thut ton ialloc p ng i hi trn. Hot ng ca thut ton ialloc c gii thch nh sau: - kim tra danh sch inode ri trn super block, xy ra mt trong hai trng hp hoc danh sch rng hoc khng rng, - Nu danh sch khng rng th ly mt inode tip theo cho file, khi to cc gi tr ban u ca inode v gim s inode ri trn super trn super block. - Nu danh sch cc inode ri trn super block l rng: tm kim trn h thng file nhng inode ri ti vo danh sch cc inode ri trn super block. Nu danh sch y hoc khng tm thy c na th gn mt inode cho file. Nu danh sch inode ri trn super block l rng v khng tm thy inode ri trn a th s c thng bo li. Trn danh sch cc inode ri, nhn lu gi mt inode c gi l inode nh, chnh l inode cui cng c tm thy sau ny thun li cho tm kim. Thut ton ifree ti mt inode ri trn a vo danh sch cc inode ri trn super block Thut ton namei tm ch s mt inode theo tn file Thut ton namei l mt thut ton ph dng, nhiu thut ton lm vic vi file phi s dng namei. T tn mt ng dn file/th mc, thut ton namei cho inode tng ng. Thut ton cp pht d liu trn a Khi nhn mun cp pht mt khi d liu, n s cp pht khi ri tip theo c ghi nhn trong super block. Khi mt khi d liu c cp cho mt file th n ch c cp pht li khi n tr thnh ri. Nu khng cn khi rng no trn h thng file m li c nhu cu cung cp khi th nhn s thng bo li. 3.1.4. H tr nhiu h thng File Cc phin bn u tin ca Linux ch h tr mt h thng file duy nht l h thng file minix. Sau , vi s m rng nhn, cng ng Linux thm vo n rt nhiu kiu h thng file khc nhau v Linux tr thnh mt h iu hnh h tr rt nhiu h thng file. Di y l mt s h thng file thng dng trong cc h iu hnh khc nhau c Linux h tr.

4 7

H thng file ADFS: ADFS vit tt ca Acorn Disc Filing System l h thng file chun trn h iu hnh RiscOS. Vi s h tr ny, Linux c th truy cp vo cc phn vng a nh dng theo h thng file ADFS. H thng file AFFS: AFFS (The Amiga Fast File System) l mt h thng file ph bin ca h iu hnh AmigaOS phin bn 1.3 chy trn cc my Amiga. H thng file CODA: CODA l mt h thng file mng cho php ngi dng c th kt gn cc h thng file t xa v truy cp chng nh cc h thng file cc b (local). H thng file DEVPTS: H thng file cho Unix98 PTYs. H thng file EFS: y l mt dng h thng file s dng cho CDROM. H thng file EXT2: H thng file EXT2 (The second extended filesystem) l h thng c dng ch yu trn cc phin bn ca h iu hnh Linux. Chng ta s tr li ngin cu h thng file ny trong cc phn sau. H thng file HFS: y l h thng file chy trn cc my Apple Macintosh. H thng file HPFS: HPFS l h thng file c s dng trong h iu hnh OS/2. Linux h tr h thng file ny mc ch c (read only). H thng file ISOFS: y l h thng file c s dng cho cc a CD. H thng thng dng nht cho cc a CD hin nay l ISO 9660. Vi s h tr ny, h thng Linux c th truy cp d liu trn cc a CD. H thng file MINIX: MINIX l h thng file u tin m Linux h tr. H thng file ny c s dng trong h iu hnh Minix v mt s h thng Linux c. H thng file MSDOS: Vi s h tr ny, h thng Linux c th truy cp c cc phn vng ca h iu hnh MSDOS. Linux cng c th s dng kiu MSDOS truy cp cc phn vng ca Window 95/98 tuy nhin khi , cc u im ca h iu hnh Window s khng cn gi tr v d nh tn file ch ti a 13 k t (k c m rng). H thng file NFS: NFS (Network File System) l mt h thng file trn mng h tr vic truy cp d liu t xa ging nh h thng file CODA. Vi NFS, cc my chy Linux c th chia s cc phn vng a trn mng s dng nh l cc phn vng cc b ca chnh my mnh. H thng file NTFS: Vi s h tr ny, h thng Linux c th truy cp vo cc phn vng ca h iu hnh Microsoft Window NT. H thng file PROC: y l mt h thng file c bit c Linux h tr. H thng file PROC khng chim mt phn vng no ca h thng v cng khng qun l cc d liu lu tr trn a. PROC hin th ni dung ca chnh nhn h thng. Cc file trong h thng file PROC lu tr cc thng tin v trng thi hin hnh ca nhn. Thng tin v mi mt tin trnh ang thc hin trong h thng c lu trong mt th mc mang tn ng vi ch s process ID ca tin trnh . Ngi dng c th s dng h thng file PROC ly cc thng tin v nhn cng nh sa i mt s gi tr ca nhn thng qua sa i ni dung ca cc file trong h thng file ny. Tuy nhin, vic sa i trc tip nh trn tng i nguy him, d gy v h thng. H thng file QNX4: y l h thng file c s dng trong h iu hnh QNX 4. 4 8

H thng file ROMFS: y l cc h thng file ch c (read only) c s dng ch yu cho vic khi to a o (ramdisk) trong qu trnh khi ng a ci t. H thng file SMB: SMB (Server Mesage Block) l mt giao thc ca Windows dng chia s file gia cc h iu hnh Windows 95/98, Windows NT v OS/2 Lan Manager. Vi s h tr SMB, h iu hnh Linux c th chia s cng nh truy cp cc file nm trn cc phn vng ca mt my chy cc h iu hnh k trn. Ni tm li, SMB cng l mt dng h tr h thng file mng gip h thng c th chia s vi cc h thng s dng chung giao thc SMB. H thng file UMSDOS: H thng file UMSDOS (Unix-like MSDOS) l h thng file c m rng t h thng file MSDOS theo nh hng Unix. H thng file ny c mt s u im so vi MSDOS nh l h tr tn file di, h tr vic phn quyn, h tr cc lin kt (link), h tr cc file c bit (device, pipe ...) v... H thng file ny c th c s dng lm phn vng gc ca h thng Linux. H thng file VFAT: VFAT chnh l h thng file m rng ca h thng FAT. H thng file ny c s dng trong cc h iu hnh Windows 95/98. Nh vy, ngoi kh nng h tr nhiu loi thit b, Linux cn c kh nng h tr nhiu kiu h thng file. Bng cch h tr nhiu kiu h thng file, Linux c th truy cp v x l cc file ca nhiu h iu hnh khc nhau. Mc d c kh nng truy cp nhiu h thng file khc nhau, h thng file ca Linux vn phi m bo cung cp cho ngi dng mt giao din nht qun i vi cc file, bo v cc file trn cc h thng khc nhau, ti u cc thao tc truy cp vo thit b... thc hin c iu ny, Linux s dng mt h thng file c bit gi l h thng file o VFS (Virtual File System).

4 9

H thng file o VFS c thit k cung cp mt giao din thng nht v cc file c lu tr trn cc thit b. Hnh 3.3 m t mi quan h gia VFS vi cc h thng file thc 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 thng file o VFS

cc thit b lu tr. VFS c trch nhim cung cp cho chng trnh ngi dng mt giao din nht qun v h thng file thng qua cc lnh gi h thng (system call). Mi khi c mt yu cu truy cp file, VFS s da vo cc h thng file thc tm kim file yu cu trn cc thit b vt l. Vi mi file tm c, n thc hin thao tc m file v cho tng ng file vi mt cu trc d liu gi l i-node. VFS cung cp rt nhiu lnh gi thao tc vi h thng file nhng ch yu thuc vo cc loi sau: Cc thao tc lin quan ti h thng file. Cc thao tc lin quan ti i-node. Cc thao tc vi file ang m. Cc thao tc vi vng m d liu. 3.1.5. Lin kt tng trng (lnh ln) Trong Linux c hai kiu lin kt l lin kt tng trng (lin kt mm) v lin kt cng. 5 0

"Lin kt cng" l mt cch gi khc i vi mt file ang tn ti (khng c s phn bit gia file gc v file lin kt). Theo cch ni k thut, chng cng chia s mt inode v inode ny cha ng tt c cc thng tin v file. Khng th to mt lin kt cng ti mt th mc. "Lin kt tng trng" l mt kiu file c bit, trong , mt file lin kt thc s tham chiu theo tn n mt file khc. C th hiu kiu file ny nh l mt con tr ch dn ti mt file hoc mt th mc, v c s dng thay th cho file hoc th mc c tr ti. Hu ht cc thao tc (nh m, c, ghi ...) c thc hin trn cc file lin kt, sau , nhn h thng s t ng "tham chiu" v thc hin trn file ch ca lin kt. Tuy nhin, c mt s cc thao tc nh xa file, file lin kt s b xa b ch khng phi file ch ca n. to mt lin kt tng trng, hy s dng lnh ln vi c php nh sau: ln [ty-chn] <ch> [tn-ni] Lnh ny s to mt lin kt n th mc/file ch vi tn file lin kt l tn-ni. Nu tn-ni khng c, mt lin kt vi tn file lin kt ging nh tn file ch s c to ra trong th mc hin thi. Cc tu chn ca lnh ln: -b, --backup[=CONTROL] : to lin kt quay tr li cho mi file ch ang tn ti. -f, --force : xa b cc file ch ang tn ti. -d, -F, --directory : to lin kt cng n cc th mc (ty chn ny ch dnh cho ngi dng c quyn qun tr h thng). Mt s phin bn khng c ty chn ny. -n, --no-dereference : mt file bnh thng c xem l ch lin kt t mt th mc. -i, interactive : vn to lin kt d file ch b xa b. -s, --symbolic : to cc lin kt tng trng. --target-directory=<tn-th-mc> : xc nh th mc tn-th-mc l th mc c cha cc lin kt. -v, --verbose : hin th tn cc file trc khi to lin kt. --help : hin th trang tr gip v thot. V d, mun to lin kt n file /usr/doc/g77/DOC vi tn file lin kt l g77manual.txt, th g lnh nh sau: # ln -s /usr/doc/g77/DOC g77manual.txt Khi chy chng trnh mc, cc file lin kt c tn bt u bi du "", v khi vt sng di chuyn n file lin kt th tn file c lin kt n s hin th bn di.

3.2 Quyn truy nhp th mc v file


3.2.1 Quyn truy nhp Mi file v th mc trong Linux u c mt ch s hu v mt nhm s hu, cng nh mt tp hp cc quyn truy nhp. Cho php thay i cc quyn truy nhp v quyn s hu file v th mc nhm cung cp truy nhp nhiu hn hay t hn. Thng tin v mt file c dng sau (c hin ra theo lnh hin danh sch file ls -l):

5 1

drwxr-xr-x

12 root root

4096

Oct 23 2000 LinuxVN.com

Tp hp quyn truy nhp

S lin kt Ngi n file ch file (th mc)

Nhm ch Kch thc file file (byte)

Ngy gi Tn file to file

Trong , dy 10 k t u tin m t kiu file v quyn truy nhp i vi tp tin . Theo mc nh, ngi dng to mt file chnh l ngi ch (s hu) ca file v l ngi c quyn s hu n. Ngi ch ca file c c quyn thay i quyn truy nhp hay quyn s hu i vi file . Tt nhin, mt khi chuyn quyn s hu ca mnh cho ngi dng khc th ngi ch c khng c php chuyn quyn s hu v quyn truy nhp c na. Tp hp mt chui c 10 k t gii thiu trn y c chia ra lm 4 phn: kiu file, cc quyn truy nhp n file ca ch s hu, ca nhm s hu v ngi dng khc. C mt s kiu file trong Linux. K t u tin trong tp hp 10 k t m t kiu file v quyn truy nhp s cho bit file thuc kiu no (ch ci c gi l ch ci biu din). Bng di y s lit k cc kiu file trong Linux: Ch ci biu din d b c l p s Kiu file Th mc (directory) File kiu khi (block-type special file) File kiu k t (character-type special file) Lin kt tng trng (symbolic link) File ng ng (pipe) Socket File bnh thng (regular file)

Chn k t tip theo trong chui l quyn truy nhp c chia ra lm 3 nhm tng ng vi quyn truy nhp ca ngi s hu, nhm s hu v ngi dng khc. V d, 10 k t u tin trong dng v d ngay trc y s c phn tch thnh: hiu c chnh xc quyn truy nhp c ngha nh th no i vi h thng my tnh, d rwx r-x r-x phi nh rng Quyn ca Quyn ca Quyn ca Linux Kiu file: th m c ng i ch nh m ch ng i dng khc xem m i th u l file. Nu ci t mt ng dng, n cng s c xem nh mi chng trnh khc, tr mt iu: h thng nhn bit rng mt ng dng l mt chng trnh kh thi, tc l n c th chy c. Mt bc th gi cho m l mt dng file vn bn bnh thng, nhng

5 2

nu thng bo cho h thng bit l mt chng trnh kh thi, h thng s c chy chng trnh (v tt nhin l li). C ba loi quyn truy nhp chnh i vi th mc/file, l: c (read - r), ghi (write w) v thc hin (execute - x). Quyn c cho php ngi dng c th xem ni dung ca file vi rt nhiu chng trnh khc nhau, nhng h s khng th thay i, sa cha hoc xa bt k thng tin no trong . Tuy nhin, h c th sao chp file thnh file ca h v sa cha file bn sao. Quyn ghi l quyn truy nhp tip theo. Ngi s dng vi quyn ghi khi truy nhp vo file c th thm thng tin vo file. Nu c quyn ghi v quyn c i vi mt file, c th son tho li file - quyn c cho php xem ni dung, v quyn ghi cho php thay i ni dung file. Nu ch c quyn ghi, s thm c thng tin vo file, nhng li khng th xem c ni dung ca file. Loi quyn truy nhp th ba l quyn thc hin, quyn ny cho php ngi dng c th chy c file, nu l mt chng trnh kh thi. Quyn thc hin c lp vi cc quyn truy nhp khc, v th hon ton c th c mt chng trnh vi quyn c v quyn thc hin, nhng khng c quyn ghi. Cng c trng hp mt chng trnh ch c quyn thc hin, c ngha l ngi dng c th chy ng dng, nhng h khng th xem c cch n lm vic hay sao chp n. Bng di y gii thiu cch k hiu ca cc quyn truy nhp: Quyn truy nhp --r-r-x rwrwx ngha Khng cho php mt quyn truy nhp no Ch c quyn c Quyn c v thc hin (cho chng trnh v shell script) Quyn c v ghi Cho php tt c cc quyn truy nhp (cho chng trnh)

Tuy nhin, i vi th mc th ch c ba loi k hiu ca cc quyn truy nhp l: ---, rx v rwx, v ni dung ca th mc l danh sch ca cc file v cc th mc con c bn trong th mc . Quyn c mt th mc l c xem ni dung ca th mc v quyn thc hin i vi mt th mc l quyn tm c file v th mc con c trong th mc. Nh vy, vi v d ang c xem xt, chng ta nhn c y l mt th mc v quyn truy nhp n c gii thch nh sau: d rwx r-x r-x Kiu file: th mc Quyn ca ngi ch: c, ghi, thc hin Quyn ca nhm ch: c, thc hin (khng ghi) Quyn ngi dng khc: c, thc hin (khng ghi)

Gii thch: S hn ch trng hp v quyn truy nhp th mc c gii thch theo cc lp lun nh sau:

5 3

Hy hnh dung, gi s ch c quyn c trn th mc, khi s xem c c nhng file hay th mc no trong th mc nhng li khng th xem c th ni dung ca mt file hay th mc c trn th mc v khng tm c n. Hoc gi s c quyn thc hin - quyn ny s cho php tm c file c trn th mc - nhng li khng c quyn c i vi mt th mc, vy th lm th no bit c trong th mc c nhng file no. 3.2.2. Cc lnh c bn a. Thay i quyn s hu file vi lnh chown thay i quyn s hu i vi mt file, hy s dng lnh chown vi c php nh sau: chown [ty-chn] [ch][.nhm] <file ...> Lnh ny cho php thay ch s hu file. Nu ch c tham s v ch, th ngi dng ch s c quyn s hu file v nhm s hu khng thay i. Nu theo sau tn ngi ch l du "." v tn ca mt nhm th nhm s nhm s hu file. Nu ch c du "." v nhm m khng c tn ngi ch th ch c quyn s hu nhm ca file thay i, lc ny, lnh chown c tc dng ging nh lnh chgrp (lnh chgrp c trnh by di y). Cc ty chn ca lnh chown: -c, --changes : hin th dng thng bo ch vi cc file m lnh lm thay i s hu (s thng bo hin ra c th t hn trng hp -v, -verbosr). -f, --silent, --quiet : b qua hu ht cc thng bo li. -R, --recursive : thc hin i quyn s hu i vi th mc v file theo quy. -v, --verbose : hin th dng thng bo vi mi file lin quan m chown tc ng ti (c hoc khng thay i s hu). --help : a ra trang tr gip v thot. V d, th mc LinuxVN.com c thng tin v cc quyn truy nhp nh sau:
drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com

Ngi s hu hin ti th mc LinuxVN.com l ngi dng thu. ngi dng lan l ch s hu th mc trn, hy g lnh: # chown lan LinuxVN.com Khi , nu dng lnh ls th thng tin v th mc LinuxVN.com s c dng:
drwxr-xr-x 12 lan root 4096 Oct 23 2000 LinuxVN.com

vi ngi s hu th mc by gi l ngi dng lan. Khi chuyn quyn s hu file cho mt ngi khc, ngi ch c mt quyn s hu file . b. Thay i quyn s hu nhm vi lnh chgrp Cc file (v ngi dng) cn thuc vo cc nhm, y l phng thc truy nhp file thun tin cho nhiu ngi dng nhng khng phi tt c ngi dng trn h thng. Khi ng nhp, mc nh s l thnh vin ca mt nhm c thit lp khi siu ngi dng root to ti khon ngi dng. Cho php mt ngi dng thuc nhiu nhm khc nhau, nhng mi ln ng nhp ch l thnh vin ca mt nhm. 5 4

thay i quyn s hu nhm i vi mt hoc nhiu file, hy s dng lnh chgrp vi c php nh sau: chgrp [ty-chn] {nhm|--reference=nhmR} <file...> Lnh ny cho php thay thuc tnh nhm s hu ca file theo tn nhm c ch ra trc tip theo tham s nhm hoc gin tip qua thuc tnh nhm ca file c tn l nhmR. Cc ty chn ca lnh l (mt s tng t nh lnh chown): -c, --changes : hin th dng thng bo ch vi cc file m lnh lm thay i s hu (s thng bo hin ra c th t hn trng hp -v, -verbosr). -f, --silent, --quiet : b qua hu ht cc thng bo li. -R, --recursive : thc hin i quyn s hu i vi th mc v file theo quy. -v, --verbose : hin th dng thng bo vi mi file lin quan m chgrp tc ng ti (c hoc khng thay i s hu). --help : hin th trang tr gip v thot Tham s --reference=nhmR cho thy cch gin tip thay nhm ch ca file theo nhm ch ca mt file khc (tn l nhmR) l cch thc c a chung hn. Tham s ny l xung khc vi tham s nhm ca lnh. c. Thay i quyn truy cp file vi lnh chmod C php lnh chmod c ba dng: chmod [ty-chn] <mod [,mod]...> <file...> chmod [ty-chn] <mod-h-8> <file...> chmod [ty-chn] --reference=nhmR <file...> Lnh chmod cho php xc lp quyn truy nhp theo kiu (mode) trn file. Dng u tin l dng xc lp tng i, dng th hai l dng xc lp tuyt i v dng cui cng l dng gin tip ch dn theo quyn truy nhp ca file nhmR. Cc ty chn ca lnh chmod c lit k nh di y v c ngha tng t cc tu chn tng ng ca cc lnh chown, chgrp: -c, --changes -f, --silent, --quiet -v, --verbose -R, --recursive --help v tham s --reference=RFILE cng ngha gin tip nh trong lnh chgrp. Gii thch v hai cch xc lp quyn truy nhp file trong lnh chmod nh sau: xc lp tuyt i (dng h thng m s vit theo h c s 8 biu din cho cc quyn truy nhp) v xc lp tng i (dng cc ch ci biu din quyn truy nhp). Cch xc lp tng i

5 5

Cch xc lp tng i l d nh theo ngha ca ni dung cc mod v ch nhng thay i thc s mi c biu din trong lnh. Ba hp sau y s gii thch cc ch ci biu din mod theo cch xc lp tng i. Quyn truy cp
u=user (ngi s hu) g=group (nhm s hu) o=other (ngi khc) a=all (tt c ngi dng)

Thao tc thay i
+ (thm quyn) - (g b quyn) = (xc nhn quyn)

Kiu truy cp
r=read (quyn c) w=write (quyn ghi) x=execute (quyn thc hin)

C th kt hp cc mc t hp th nht v hp th ba vi mt mc t hp th hai to ra mt mod. V d, nu mun thm quyn ghi i vi file test cho tt c ngi dng trong nhm s hu, hy chn g cho nhm s hu, + cho thm quyn truy nhp, v w cho quyn ghi. Lc lnh chmod s c dng sau: chmod g+w test Cch xc lp tng i trong lnh chmod gn ging nh mt menu c nhiu mc chn khc nhau, cho php kt hp c c s la chn theo yu cu. Nu quyt nh g b quyn c v thc hin trn file test cho nhng ngi khng cng nhm, hy chn o cho ngi dng khc, - g b quyn truy nhp, v r,x cho quyn c v thc hin. Lnh chmod s l: chmod o-rx test Cch xc lp tuyt i i vi ngi dng hiu s b v biu din s trong h c s 8 th cch xc lp tuyt i li c a chung hn. Phn 3.2.1. cho bit biu din quyn truy nhp file thng qua dy gm 9 v tr di dng rwxrwxrwx, trong tng cm 3 v tr theo th t tng ng vi: ch s hu, nhm s hu v ngi dng khc. Nh vy thuc tnh quyn truy nhp ca mt file c th biu din thnh 9 bt nh phn trong bt c gi tr 1 th quyn c xc nh, ngc li th quyn b tho b. Nh vy, ch s hu tng ng vi 3 bt u tin, nhm s hu tng ng vi 3 bt gia, ngi dng khc tng ng vi 3 bt cui. Mi cm 3 bt nh vy cho mt ch s h 8 (nhn gi tr t 0 n 7) v thuc tnh quyn truy nhp tng ng vi 3 ch s h 8. V d, cp 3 s h 8 l 755 tng ng vi dng 9 bt 111101101 vi 111 cho ch s hu, 101 cho nhm s hu, 101 cho ngi dng khc. V d lnh: chmod 753 memo1 t thuc tnh quyn truy nhp i vi file memo1 l rwxr-xr-x. d xc lp 3 ch s h 8 p dng cch tnh nh sau:

5 6

Quyn Ch c Ch ghi Ch thc hin Khng c quyn no

Ch s h 8 4 2 1 0

Quyn Ch c v ghi Ch c v thc hin Ch ghi v thc hin c, ghi v thc hin

Ch s h 8 6 5 3 7

d. ng nhp vo mt nhm ngi dng mi vi lnh newgrp Linux cho php mt ngi dng c th l thnh vin ca mt hoc nhiu nhm ngi dng khc nhau, trong c mt nhm c gi l nhm khi ng. iu ny c m bo khi thc hin lnh adduser hoc usersdd. Tuy nhin, ti mt thi im, mt ngi dng thuc vo ch mt nhm. Khi mt ngi dng ng nhp, h thng ngm nh ngi dng l thnh vin ca nhm khi ng, v c quyn truy nhp i vi nhng file thuc quyn s hu ca nhm khi ng . Nu mun s dng quyn s hu theo cc nhm khc i vi nhng file th ngi dng phi chuyn i thnh thnh vin ca mt nhm nhng nhm c gn vi ngi dng. Lnh newgr cho php ngi dng chuyn sang nhm ngi dng khc gn vi mnh vi c php: newgrp [nhm] trong nhm l mt tn nhm ngi dng tn ti trong h thng. V d, mt ngi dng l thnh vin ca hai nhm user v installer, vi user l nhm khi ng. Khi ng nhp, ngi dng c t cch l thnh vin ca nhm user. Khi mong mun s dng mt s cc chng trnh thuc quyn s hu ca nhm installer, ngi dng cn g lnh sau: # newgrp installer Nu ngi dng ni trn c chuyn vo mt nhm m ngi dng khng l thnh vin, chng hn dng lnh: # newgrp hot2 th Linux s a ra mt khuyn co thn thin nh sau:
newgrp: Sorry

3.3 Thao tc vi th mc
Nh c gii thiu (mc 3.1.1.), Linux t chc h thng file theo cch s dng cc th mc. Mc ny bt u bng vic gii thiu mt s th mc chnh v tc dng ca chng trong h thng Linux. Sau mt s lnh thao tc vi th mc c bn nht c trnh by. 3.3.1 Mt s th mc c bit * Th mc gc / y l th mc gc cha ng tt c cc th mc con c trong h thng.

5 7

* Th mc /root Th mc /root c th c coi l "th mc ring" ca siu ngi dng. Th mc ny c s dng lu tr cc file tm thi, nhn Linux v nh khi ng, cc file nh phn quan trng (nhng file c s dng n trc khi Linux c th gn kt n phn vng /user), cc file ng nhp quan trng, b m in cho vic in n, hay vng lu tm cho vic nhn v gi email. N cng c s dng cho cc vng trng tm thi khi thc hin cc thao tc quan trng, v d nh khi xy dng (build) mt gi RPM t cc file RPM ngun. * Th mc /bin Trong Linux, chng trnh c coi l kh thi nu n c th thc hin c. Khi mt chng trnh c bin dch, n s c dng l file nh phn. Nh vy, chng trnh ng dng trong Linux l mt file nh phn kh thi. Chnh v l , nhng nh pht trin Linux quyt nh phi t chc mt th mc "binaries" lu tr cc chng trnh kh thi c trn h thng, chnh l th mc /bin. Ban u, th mc /bin (bin l vit tt ca t binary) l ni lu tr cc file nh phn kh thi. Nhng theo thi gian, ngy cng c nhiu hn cc file kh thi c trong Linux, do , c thm cc th mc nh /sbin, /usr/bin c s dng lu tr cc file . * Th mc /dev Mt phn khng th thiu trong bt k my tnh no l cc trnh iu khin thit b. Khng c chng, s khng th c c bt k thng tin no trn mn hnh ca (cc thng tin c c do trnh iu khin thit b hin th a ra). Cng khng th nhp c thng tin (nhng thng tin do trnh iu khin thit b bn phm c v chuyn ti h thng), v cng khng th s dng a mm ca (c qun l bi trnh iu khin a mm). Tt c cc trnh iu khin thit b u c lu tr trong th mc /dev. * Th mc /etc Qun tr h thng trong Linux khng phi l n gin, chng hn nh vic qun l ti khon ngi dng, vn bo mt, trnh iu khin thit b, cu hnh phn cng, v.v.. gim bt phc tp, th mc /etc c thit k lu tr tt c cc thng tin hay cc file cu hnh h thng. * Th mc /lib Linux c mt trung tm lu tr cc th vin hm v th tc, l th mc /lib. * Th mc /lost+found Mt file c khi phc sau khi c bt k mt vn hoc gp mt li v ghi a trn h thng u c lu vo th mc ny. * Th mc /mnt Th mc /mnt l ni kt ni cc thit b (v d a cng, a mm...) vo h thng file chnh nh lnh mount. Thng thng cc th mc con ca /mnt chnh l gc ca cc h thng file c kt ni: /mnt/floppy: a mm, /mnt/hda1: vng u tin ca a cng th nht (hda), /mnt/hdb3: vng th ba ca a cng th 2 (hdb) ...

5 8

* Th mc /tmp Th mc /tmp c rt nhiu chng trnh trong Linux s dng nh mt ni lu tr cc file tm thi. V d, nu ang son tho mt file, chng trnh s to ra mt file l bn sao tm thi (bn nhp) ca file v lu vo trong th mc /tmp. Vic son tho thc hin trc tip trn file tm thi ny v sau khi son tho xong, file tm thi s c ghi ln file gc. Cch thc nh vy bo m s an ton i vi file cn son tho. * Th mc /usr Thng thng th th mc /usr l trung tm lu tr tt c cc lnh hng n ngi dng (user-related commands). Tuy nhin, ngy nay tht kh xc nh trong th mc ny c nhng th g, bi v hu ht cc file nh phn cn cho Linux u c lu tr y, trong ng ch l th mc con /usr/src bao gm cc th mc con cha cc chng trnh ngun ca nhn Linux. * Th mc /home Th mc ny cha cc th mc c nhn ca ngi dng: mi ngi dng tng ng vi mt th mc con y, tn ngi dng c ly lm tn ca th mc con. * Th mc /var Th mc /var c s dng lu tr cc file cha cc thng tin lun lun thay i, bao gm b m in, vng lu tm thi cho vic nhn v gi th (mail), cc kha qu trnh, v.v.. * Th mc /boot L th mc cha nhn ca h thng (Linux-*.*.), System.map (file nh x n cc driver np cc h thng file khc), nh (image) ca h thng file dng cho initrd (ramdisk), trnh iu khin cho cc thit b RAID (mt thit b gm mt mng cc a cng tng tc v an ton khi ghi d liu), cc bn sao lu boot record ca cc phn vng a khc. Th mc ny cho php khi ng v np li bt k trnh iu khin no c yu cu c cc h thng file khc. * Th mc /proc y l th mc dnh cho nhn (kernel) ca h iu hnh v thc t y l mt h thng file c lp do nhn khi to. * Th mc /misc v th mc /opt Cho php lu tr mi i tng vo hai th mc ny. * Th mc /sbin Th mc lu gi cc file h thng thng t ng chy. 3.3.2 Cc lnh c bn v th mc * Xc nh th mc hin thi vi lnh pwd C php lnh: 5 9

pwd Lnh ny cho bit hin ngi dng ang trong th mc no v hin ra theo dng mt ng dn tuyt i. V d, g lnh pwd ti du nhc lnh sau khi ngi dng lan va ng nhp th mn hnh hin th nh sau: # pwd
/home/lan

# * Xem thng tin v th mc vi lnh ls S dng lnh ls v mt s cc ty chn ca n l c th bit c mi thng tin v mt th mc. C php lnh: ls [ty-chn] [file]... Lnh ny a ra danh sch cc file lin quan n tham s file trong lnh. Trng hp ph bin tham s file l mt th mc, tuy nhin trong mt s trng hp khc, tham s file xc nh nhm (khi s dng cc m t nhm *, ? v cp [ v ]); nu khng c tham s file, mc nh danh sch cc file c trong th mc hin thi s c hin th. Cc ty chn ca lnh: -a : lit k tt c cc file, bao gm c file n. -l : a ra thng tin y nht v cc file v th mc. -s : ch ra kch thc ca file, tnh theo khi (1 khi = 1204 byte). -F : xc nh kiu file (/ = th mc, * = chng trnh kh thi). -m : lit k cc file c ngn cch nhau bi du ",". -C : a ra danh sch cc file v th mc theo dng ct (hai th mc gn nhau c xp vo mt ct). -1 : hin th mi file hoc th mc trn mt dng. -t : sp xp cc file v th mc trong danh sch theo th t v thi gian c sa i gn y nht. -x : a ra danh sch cc file v th mc theo dng ct (hai th mc gn nhau c xp trn hai dng u ca hai ct k nhau). -r : sp xp danh sch hin th theo th t ngc li. -R : lit k ln lt cc th mc v ni dung ca cc th mc. V d, lnh # ls -l s hin th danh sch y nht v cc file v th mc c trong th mc hin thi.
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 bit tng s khi (1024 byte) trn a lu tr cc file trong danh sch (14*4+36+16=108). Mi dng tip theo trnh by thng tin v mi file hay th mc con. Cc thng tin ny c gii thiu trc y. Chng hn, drwxr-xr-x 22 root root 4096 Oct 31 2000 var

Kiu file v S lin kt Ngi quyn truy n file ch file nhp (th mc)

Nhm ch Kch thc file file (byte)

Ngy gi to file

Tn file

ngha ca mi trng trn y c gii thch trong mc 3.2.1. Khi g lnh: # ls [is]* cho danh sch cc file v th mc con c tn bt u bng hoc ch ci i hoc ch ci s c trong th mc hin thi:
info-dir shadow sysctl.conf initlog.conf inittab shadowshells syslog.conf services smb.conf

* Lnh to th mc mkdir Lnh mkdir to mt th mc vi c php: mkdir [ty-chn] <th-mc> Lnh ny cho php to mt th mc mi nu th mc cha thc s tn ti. to mt th mc, cn c t tn v v tr ca n trn h thng file (v tr mc nh l th mc hin thi). Nu th mc tn ti, h thng s thng bo cho bit. Cc ty chn:

6 1

-m, --mode=Mod : thit lp quyn truy nhp Mod nh trong lnh chmod nhng khng cho quyn rwxrwxrwx. -p, --parents : to cc th mc cn thit m khng thng bo li khi n tn ti. --verbose : hin th cc thng bo cho mi th mc c to. --help : a ra trang tr gip v thot. V d, nu mun to th mc test trong th mc home, hy g lnh sau: # mkdir /home/test * Lnh xa b th mc rmdir Nh bit, lnh mkdir to ra mt th mc mi, v v i ngu th lnh rmdir c dng xa b mt th mc. C php lnh: rmdir [ty-chn[ <th-mc> C th xa b bt k th mc no nu c quyn . Lu rng, th mc ch b xa khi n "rng", tc l khng tn ti file hay th mc con no trong . Khng c cch g khi phc li cc th mc b xa, v th hy suy ngh cn thn trc khi quyt nh xa mt th mc. Cc ty chn ca lnh: --ignore-fail-on-non-empty : b qua cc li nu xa mt th mc khng rng. -p, --parents : xa b mt th mc, sau ln lt xa b tip cc th mc c trn ng dn cha th mc va xa. V d, dng lnh rmdir -p /a/b/c s tng ng vi ba dng lnh rmdir /a/b/c, rmdir /a/b, rmdir /a (vi iu kin cc th mc l rng). --verbose : a ra thng bo khi xa mt th mc. --help : hin th trang tr gip v thot. V d: # rmdir -p /test/test1/test2
rmdir: /: No such file or directory

# Dng lnh trn s ln lt xa ba th mc test2, test1, test v hin th thng bo trn mn hnh kt qu ca lnh. * Lnh i tn th mc mv C php lnh: mv <tn-c> <tn-mi> Lnh ny cho php i tn mt th mc t tn-c thnh tn-mi. V d, lnh # mv LinuxVN.com LinuxVN s i tn th mc LinuxVN.com thnh LinuxVN. Nu s dng lnh mv i tn mt th mc vi mt ci tn c t cho mt file th lnh s gp li. Nu tn mi trng vi tn mt th mc ang tn ti th ni dung ca th mc c i tn s ghi ln ni dung ca th mc trng tn. 6 2

3.4. Cc lnh lm vic vi file


3.4.1 Cc kiu file c trong Linux Mc 3.1.2. trnh by s lc v kiu ca cc file. Nh c gii thiu, c rt nhiu file khc nhau trong Linux, nhng bao gi cng tn ti mt s kiu file cn thit cho h iu hnh v ngi dng, di y gii thiu li mt s cc kiu file c bn. File ngi dng (user data file): l cc file to ra do hot ng ca ngi dng khi kch hot cc chng trnh ng dng tng ng. V d nh cc file thun vn bn, cc file c s d liu hay cc file bng tnh. File h thng (system data file): l cc file lu tr thng tin ca h thng nh: cu hnh cho khi ng, ti khon ca ngi dng, thng tin thit b ... thng c ct trong cc tp dng vn bn ngi dng c th can thip, sa i theo mnh. File thc hin (executable file): l cc file cha m lnh hay ch th cho my tnh thc hin. File thc hin lu tr di dng m my m ta kh c th tm hiu c ngha ca n, nhng tn ti mt s cng c "hiu" c cc file . Khi dng trnh ng dng mc (Midnight Commander, chng 8), file thc hin c bt u bi du (*) v thng c mu xanh lc. Th mc hay cn gi l file bao hm (directory): l file bao hm cc file khc v c cu to hon ton tng t nh file thng thng khc nn c th gi l file. Trong mc, file bao hm thng c mu trng v bt u bng du ng (~) hoc du chia (/). V d: /, /home, /bin, /usr, /usr/man, /dev ... File thit b (device file): l file m t thit b, dng nh l nh danh ch ra thit b cn thao tc. Theo quy c, file thit b c lu tr trong th mc /dev. Cc file thit b hay gp trong th mc ny l tty (teletype - thit b truyn thng), ttyS (teletype serial - thit b truyn thng ni tip), fd0, fd1, ... (floppy disk- thit b a mm), hda1, hda2, ... hdb1, hdb2, ... (hardisk - thit b cng theo chun IDE; a, b,... nh s a vt l; 1, 2, 3... nh s logic). Trong mc, file thit b c mu tm v bt u bng du cng (+). File lin kt (linked file): l nhng file cha tham chiu n cc file khc trong h thng tp tin ca Linux. Tham chiu ny cho php ngi dng tm nhanh ti file thay v ti v tr nguyn thy ca n. Hn na, ngi ta c th gn vo cc thng tin ph tr lm cho file ny c tnh nng tri hn so vi tnh nng nguyn thy ca n. Ta thy loi file ny ging nh khi nim shortcut trong MS-Windows98. Khng ging mt s h iu hnh khc (nh MS-DOS chng hn), Linux qun l thi gian ca tp tin qua cc thng s thi gian truy nhp (accesed time), thi gian kin to (created time) v thi gian sa i (modified time). 3.4.2. Cc lnh to file Trong Linux c rt nhiu cch to file, sau y l cc cch hay c dng.

6 3

* To file vi lnh touch Lnh touch c nhiu chc nng, trong mt chc nng l gip to file mi trn h thng: touch rt hu ch cho vic t chc mt tp hp cc file mi. C php lnh: touch <file> Thc cht lnh ny c tc dng dng cp nht thi gian truy nhp v sa cha ln cui ca mt file. V l do ny, cc file c to bng lnh touch u c sp xp theo thi gian sa i. Nu s dng lnh touch i vi mt file cha tn ti, chng trnh s to ra file . S dng bt k trnh son tho no son tho file mi. V d, dng lnh touch to file newfile:
# touch newfile

* To file bng cch i hng u ra ca lnh (>) Cch ny rt hu ch nu mun lu kt qu ca mt lnh thc hin. gi kt qu ca mt lnh vo mt file, dng du ">" theo ngha chuyn hng li ra chun. V d, a kt qu ca lnh ls -l /bin vo file /home/thu/lenhls bng cch g:
# ls -l /bin > /home/thu/lenhls

Linux t ng to nu file lenhls cha c, trong trng hp ngc li, ni dung file c s b th ch bi kt qu ca lnh. # ls -l /bin >/home/thu/lenhls Nu mun b sung kt qu vo cui file thay v thay th ni dung file, hy s dng du ">>". V d, lnh # ls -l /bin >> /home/thu/lenhls a cc dng danh sch file trong th mc /bin vo cui ni dung ca file /home/thu/lenhls. * To file vi lnh cat Lnh cat tuy n gin nhng rt hu dng trong Linux. Chng ta c th s dng lnh ny ly thng tin t u vo (bn phm...) ri kt xut ra file hoc cc ngun khc (mn hnh ...), hay xem ni dung ca mt file ... Phn ny trnh by tc dng ca lnh cat i vi vic to file. C php lnh: cat > <file> Theo ngm nh, lnh ny cho php ly thng tin u vo t bn phm ri xut ra mn hnh. Son tho ni dung ca mt file bng lnh cat tc l i hng u ra ca lnh t mn hnh vo mt file. Ngi dng g ni dung ca file ngay ti du nhc mn hnh v g CTRL+d kt thc vic son tho. Nhc im ca cch to file ny l n khng cho php sa li, v d nu mun sa mt li chnh t trn mt dng, ch c cch l xa n v tr ca li v g li ni dung va b xa. V d. to file newfile trong th mc /home/vd bng lnh cat. # cat > /home/vd/newfile
This is a example of cat command

6 4

Sau khi son tho xong, g Enter v CTRL+d tr v du nhc lnh, nu khng g Enter th phi g CTRL+d hai ln. C th s dng lun lnh cat xem ni dung ca file va son tho: # cat /home/vd/newfile
This is a example of cat command

# 3.4.3 Cc lnh thao tc trn file * Sao chp file vi lnh cp Lnh cp c hai dng nh sau: cp [ty-chn] <file-ngun> ... <file-ch> cp [ty-chn] --target-directory=<th-mc> <file-ngun>... Lnh ny cho php sao file-ngun thnh file-ch hoc sao chp t nhiu file-ngun vo mt th mc ch (tham s <file-ch> hay <th-mc>). Dng th hai l mt cch vit khc i th t hai tham s v tr. Cc ty chn: -a, --archive : ging nh -dpR (t hp ba tham s -d, -p, -R, nh di y). -b, --backup[=CONTROL] : to file lu cho mi file ch nu nh n ang tn ti. -d, --no-dereference : duy tr cc lin kt. -f, --force : ghi file ch ang tn ti m khng nhc nh. -i, --interactive : c thng bo nhc nh trc khi ghi . -l, --link : ch to lin kt gia file-ch t file-ngun m khng sao chp. -p, --preserve : duy tr cc thuc tnh ca file-ngun sang file-ch. -r : cho php sao chp mt cch quy file thng thng. -R : cho php sao chp mt cch quy th mc. -s, --symbolic-link : to lin kt tng trng thay cho vic sao chp cc file. -S, --suffix=<hu-t> : b qua cc hu t thng thng (hoc c ch ra). -u, --update : ch sao chp khi file ngun mi hn file ch hoc khi file ch cha c. -v, --verbose : a ra thng bo v qu trnh sao chp. --help : hin th trang tr gip v thot. File ch c to ra c cng kch thc v cc quyn truy nhp nh file ngun, tuy nhin file ch c thi gian to lp l thi im thc hin lnh nn cc thuc tnh thi gian s khc. V d, lnh # cp /home/ftp/vd /home/test/vd1 Nu v tr ch, m t y tn file ch th ni dung file ngun s c sao chp sang file ch. Trong trng hp ch a ra v tr file ch c t trong th mc no th tn ca file ngun s l tn ca file ch. # cp /home/ftp/vd /home/test/ 6 5

Trong v d ny, tn file ch s l vd ngha l to mt file mi /home/test/vd. Nu s dng lnh ny sao mt th mc, s c mt thng bo c a ra cho bit ngun l mt th mc v v vy khng th dng lnh cp sao chp. # cp . newdir
cp: .: omitting directory

V d v vic lnh cp cho php sao nhiu file cng mt lc vo mt th mc. # 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 vi nhiu lnh lm vic vi file, khi g lnh c th s dng k hiu m t nhm xc nh mt nhm file lm cho tng hiu lc ca cc lnh . V d, lnh: # cp * bak thc hin vic sao chp mi file c trong th mc hin thi sang th mc con ca n c tn l bak. Dng lnh # cp /usr/src/linux-2.2.14/include/linux/*.h bak cho php sao chp mi file vi tn c hai k hiu cui cng l ".h" sang th mc con bak. Chnh v l do ni trn, d trong nhiu lnh tuy khng ni n vic s dng k hiu m t nhm file nhng chng ta c th p dng chng nu iu khng tri vi suy lun thng thng. Do nhng tnh hung nh th l qu phong ph cho nn khng th gii thiu ht trong ti liu. Chng ta ch mt gii php l mi khi s dng mt lnh no , nn th nghim cch thc hiu qu ny. * i tn file vi lnh mv C php lnh i tn file: mv <tn-c> <tn-mi> Lnh ny cho php i tn file t tn c thnh tn mi. V d: # mv vd newfile Lnh ny s i tn file vd thnh newfile. Trong trng hp file newfile tn ti, ni dung ca file vd s ghi ln ni dung ca file newfile. * Xa file vi lnh rm Lnh rm l lnh rt "nguy him" v trong Linux khng c lnh khi phc li nhng g xa, v th hy cn trng khi s dng lnh ny. C php lnh: 6 6

rm [ty-chn] <file> ... Lnh rm cho php xa b mt file hoc nhiu file. Cc ty chn: -d, --directory : loi b lin kt ca th mc, k c th mc khng rng. Ch c siu ngi dng mi c php dng ty chn ny. -f, --force : b qua cc file (xc nh qua tham s file) khng tn ti m khng cn nhc nh. -i, --interactive : nhc nh trc khi xa b mt file. -r, -R, --recursive : xa b ni dung ca th mc mt cch quy. -v, --verbose : a ra cc thng bo v qu trnh xa file. --help : hin th trang tr gip v thot. Lnh rm cho php xa nhiu file cng mt lc bng cch ch ra tn ca cc file cn xa trong dng lnh (hoc dng k kiu m t nhm). V d, dng lnh ls xem danh sch cc file trong th mc hin thi: # 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 dng lnh xa file vd2.txt sau y: # rm vd2.txt telex.o v sau dng lnh ls xem li 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 lnh # rm bak/*.h xa mi file vi tn c hai k hiu cui cng l ".h" trong th mc 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

6 7

* Lnh m t v dng trong file wc Linux c lnh wc dng m s k t, s t, hay s dng trong mt file. C php lnh: wc [ty-chn] [file]... Lnh hin ra s lng dng, s lng t, s lng k t c trong mi file, v mt dng tnh tng nu c nhiu hn mt file c ch ra. Nu khng c ty chn no th mc nh a ra c s dng, s t v s k t. Ngm nh khi khng c tn file trong lnh th s c v m trn thit b vo chun. Cc tu chn: -c, --byte, --chars : a ra s k t trong file. -l, --lines : a ra s dng trong file. -L, --max-line-length : a ra chiu di ca dng di nht trong file. -w, --words : a ra s t trong file. --help : hin th trang tr gip v thot. V d, sau khi g lnh: # wc /home/lan/mau/mau1 xut hin dng thng bo:
11 64 293 /home/lan/mau/mau1

Dng thng bo trn cho bit file mau1 c 293 k t, s 64 t v c 11 dng. V d sau khi g lnh: # wc ngi dng g tip cc dng nh sau:
This is a example of wc command without [namefile]

sau ngi dng g cp phm Ctrl-d kt thc th thy dng thng bo hin ra: 2 9 49 Khi g lnh wc m khng c mt tham s no, mc nh s son tho trc tip ni dung trn thit b vo chun. Dng CTRL+d kt thc vic son tho, kt qu s hin 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

Lnh trn m s k t, s t, s dng trn mi file c ch ra, v dng cui cng hin th tng s dng, s t, s k t m c. Bng cch kt hp lnh wc vi mt s lnh khc, c th c nhiu cch bit c nhng thng tin cn thit. Chng hn: kt hp vi lnh ls xc nh s file c trong mt th mc: # ls | wc -l
37

6 8

dng lnh trn cho bit trong th mc ch ca c 36 file (do dng u tin kt qu thng bo ca lnh ls khng xc nh mt file). kt hp vi lnh cat bit s ti khon c nhn c trn my ca ngi dng: # cat /etc/passwd | wc -l
324

* Lnh loi b nhng dng khng quan trng uniq Trong mt s trng hp khi xem ni dung mt file, chng ta thy c mt s cc thng tin b trng lp, v d cc dng trng hoc cc dng cha ni dung ging nhau. ng thi lm gn v thu nh kch thc ca file, c th s dng lnh uniq lit k ra ni dung file sau khi loi b cc dng trng lp. C php lnh: uniq [ty-chn] [input] [output] Lnh uniq s loi b cc dng trng lp k nhau t input (thit b vo chun) v ch gi li mt dng duy nht trong s cc dng trng lp ri a ra output (thit b ra chun). Cc tu chn: -c, --count : m v hin th s ln xut hin ca cc dng trong file. -d : hin th ln mn hnh dng b trng lp. -u : hin th ni dung file sau khi xa b ton b cc dng b trng lp khng gi li mt dng no. -i : hin th ni dung file sau khi xa b cc dng trng lp v ch gi li duy nht mt dng c ni dung b trng lp. -D : hin th tt c cc dng trng lp trn mn hnh. Nu s dng lnh uniq trn mt file khng c cc dng trng lp th lnh khng c tc dng. V d, ngi dng s dng lnh cat xem ni dung file vduniq # cat vduniq Gnome c hai phng php thot ra ngoi. Gnome c hai phng php thot ra ngoi. thot bng cch s dng menu chnh, hy m menu chnh, chn mc Logout y menu. Chn YES/ NO kt thc phin lm vic vi Gnome. Chn YES/ NO kt thc phin lm vic vi Gnome. Nu mun thot bng cch s dng nt Logout trn Panel, trc ht phi thm nt ny vo Panel. Chn YES/ NO kt thc phin lm vic vi Gnome. Trong file vduniq c hai dng b trng lp 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 Chn YES/ NO kt thc phin lm vic vi Gnome. 6 9

Chn YES/ NO kt thc phin lm vic vi Gnome. Dng lnh uniq loi b dng trng lp: # uniq vduniq Gnome c hai phng php thot ra ngoi. thot bng cch s dng menu chnh, hy m menu chnh, chn mc Logout y menu. Chn YES/ NO kt thc phin lm vic vi Gnome. Nu mun thot bng cch s dng nt Logout trn Panel, trc ht phi thm nt ny vo Panel. Chn YES/ NO kt thc phin lm vic vi Gnome. Dng cui cng trong file vduniq c ni dung trng vi dng th 5, nhng sau lnh uniq, n khng b xa v khng k vi dng c ni dung trng lp. * Sp xp ni dung file vi lnh sort sort l lnh c cc thng tin v sp xp chng theo th t trong bng ch ci hoc theo th t c quy nh theo cc ty chn ca lnh. C php lnh: sort [ty-chn] [file] ... Hin th ni dung sau khi sp xp ca mt hoc nhiu file ra thit b ra chun l tc dng ca lnh sort. Ngm nh sp xp theo th t t in ca cc dng c trong cc file (tng ch ci theo bng ch h thng (chng hn ASCII) v k t v tr u tin trong cc dng). Cc ty chn: +<s1> [-<s2>] : Hai gi tr s1 v s2 xc nh "kha" sp xp ca cc dng, thc cht ly xu con t v tr s1 ti v tr s2 ca cc dng so snh ly th t sp xp cc dng. Nu s2 khng c th coi l ht cc dng; nu s2 nh hn s1 th b qua la chn ny. Ch , nu c s2 th phi cch s1 t nht mt du cch. -b : b qua cc du cch ng trc trong phm vi sp xp. -c : kim tra nu file sp xp th thi khng sp xp na. -d : xem nh ch c cc k t [a-zA-Z0-9] trong kha sp xp, cc dng c cc k t c bit (du cch, ? ...) c a ln u. -f : sp xp khng phn bit ch hoa ch thng. -n : sp xp theo kch thc ca file. -r : chuyn i th t sp xp hin thi. V d, mun sp xp file vdsort # cat vdsort trc ht phi thm nt ny vo Panel. 21434 bn xc nhn l c thc s mun thot hay khng. menu chnh, chn mc Logout y menu. Bn c th s dng mc Logout t menu chnh Gnome c hai phng php thot ra ngoi. 7 0

hoc nt Logout trn Panel chnh thot ra ngoi. Khi mt hp thoi Logout s xut hin yu cu 57879 La chn YES hoc NO kt thc phin lm vic vi Gnome. N khng cung cp chc nng hot ng no khc ngoi chc nng ny. N khng cung cp chc nng hot ng no khc ngoi chc nng ny. Nu mun thot bng cch s dng nt Logout trn Panel, # sort -f vdsort 21434 57879 Bn c th s dng mc Logout t menu chnh bn xc nhn l c thc s mun thot hay khng. Gnome c hai phng php thot ra ngoi. hoc nt Logout trn Panel chnh thot ra ngoi. Khi mt hp thoi Logout s xut hin yu cu La chn YES hoc NO kt thc phin lm vic vi Gnome. menu chnh, chn mc Logout y menu. Nu mun thot bng cch s dng nt Logout trn Panel, N khng cung cp chc nng hot ng no khc ngoi chc nng ny. N khng cung cp chc nng hot ng no khc ngoi chc nng ny. trc ht phi thm nt ny vo Panel. C th kt hp lnh sort vi cc lnh 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

Lnh trn cho th t sp xp ca cc file theo kch thc trong th mc hin thi. 3.4.4 Cc lnh thao tc theo ni dung file * S dng lnh file xc nh kiu file C php lnh file: 7 1

file [ty-chn] [-f file] [-m <file-nh>...] <file>...

Lnh file cho php xc nh v in ra kiu thng tin cha trong file. Lnh file s ln lt kim tra t kiu file h thng, kiu file magic (v d file m t thit b) ri n kiu file vn bn thng thng. Nu file c kim tra tha mn mt trong ba kiu file trn th kiu file s c in ra theo cc dng c bn sau: text: dng file vn bn thng thng, ch cha cc m k t ASCII. executable: dng file nh phn kh thi. data: thng l dng file cha m nh phn v khng th in ra c. Mt s tu chn sau y: -b : cho php ch a ra kiu file m khng a km theo tn file. -f tn-file : cho php hin th kiu ca cc file c tn trng vi ni dung trn mi dng trong file tn-file. kim tra trn thit b vo chun, s dng du "-". -z : xem kiu ca 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

Lnh trn cho xem kiu ca hai file file.c, file v th mc /dev/hda. Nh rng kt qu ca lnh file khng phi lc no cng chnh xc tuyt i. * Xem ni dung file vi lnh cat on trc, chng ta c dp lm quen vi lnh cat thng qua tc dng to file ca lnh. Phn ny gii thiu tc dng ch yu ca lnh cat: l tc dng xem ni dung ca mt file. C php lnh: cat [ty-chn] <tn file> Cc ty chn: -A, --show-all : ging nh ty chn -vET. -b, --number-nonblank : hin th thm s th t trn mi dng (b qua dng trng). -e : ging nh ty chn -vE. -E, --show-ends : hin th du "$" ti cui mi dng. -n, --number : hin th s th t ca mi dng (k c dng trng). -s : nu trong ni dung file c nhiu dng trng th s loi b bt ch hin th mt dng trng. -t : ging nh -vT. -T, --show-tabs : hin th du TAB di dng ^I. -v, --show-nonprinting : hin th cc k t khng in ra c ngoi tr LFD v TAB. --help : hin th trang tr gip v thot. V d: 7 2

# cat vdcat chng ta thy xut hin cc dng sau y:


Gnome c hai phng php thot ra ngoi. c th s dng mc Logout t menu chnh hoc nt Logout trn Panel chnh thot ra ngoi. thot bng cch s dng menu chnh, hy m menu chnh, chn mc Logout y menu. Khi mt hp thoi Logout s xut hin yu cu xc nhn l c thc s mun thot hay khng. hoc nt Logout trn Panel chnh thot ra ngoi. thot bng cch s dng menu chnh, hy m menu chnh, chn mc Logout y menu.

# cat -bEs vdcat th ni dung file hin ra nh sau:


1 Gnome c hai phng php thot ra ngoi. $ 2 c th s dng mc Logout t menu chnh $ 3 hoc nt Logout trn Panel chnh thot ra ngoi.$ 4 thot bng cch s dng menu chnh, hy m $ 5 menu chnh, chn mc Logout y menu. $ $ 6 Khi mt hp thoi Logout s xut hin yu cu $ 7 xc nhn l c thc s mun thot hay khng.$ $ 8 hoc nt Logout trn Panel chnh thot ra ngoi.$ 9 thot bng cch s dng menu chnh, hy m $ 10 menu chnh, chn mc Logout y menu.

* Xem ni dung cc file ln vi lnh more Lnh cat cho php xem ni dung ca mt file, nhng nu file qu ln, ni dung file s tri trn mn hnh v ch c th nhn thy phn cui ca file. Linux c mt lnh cho php c th xem ni dung ca mt file ln, l lnh more. C php lnh: more [-dlfpcsu] [-s] [+/xumu] [+dng-s] [file ...] Lnh more hin th ni dung ca file theo tng trang mn hnh. Cc la chn: -s : xc nh s dng ni dung ca file c hin th (s). -d : trn mn hnh s hin th cc thng bo gip ngi dng cch s dng i vi lnh more, v nh [ Press space to continue, "q" to quit .], hay hin th [Press "h" for instructions .] thay th cho ting chung cnh bo khi bm sai mt phm.

7 3

-l : more thng xem ^L l mt k t c bit, nu khng c ty chn ny, lnh s dng ti dng u tin c cha ^L v hin th % ni dung xem c (^L khng b mt), nhn phm space (hoc enter) tip tc. Nu c ty chn -l, ni dung ca file s c hin th nh bnh thng nhng mt khun dng khc, tc l du ^L s mt v trc dng c cha ^L s c thm mt dng trng. -p : khng cun mn hnh, thay vo l xa nhng g c trn mn hnh v hin th tip ni dung file. -c : khng cun mn hnh, thay vo xa mn hnh v hin th ni dung file bt u t nh mn hnh. -s : xa bt cc dng trng lin nhau trong ni dung file ch gi li mt dng. -u : b qua du gch chn. +/xumu : ty chn +/xumu ch ra mt chui s c tm kim trc khi hin th mi file. +dng-s : bt u hin 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%) 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 vi lnh more, c th s dng mt s cc phm tt thc hin mt s cc thao tc n gin trong khi ang thc hin lnh. Bng di y lit k cc phm tt : Phm tt [Space] n [Enter] h d hoc CTRL+D q hoc CTRL+Q s f b hoc CTRL+B Chc nng Nhn phm space hin th mn hnh tip theo Hin th n dng tip theo Hin th dng tip theo Hin th danh sch cc phm tt Cun mn hnh (mc nh l 11 dng) Thot khi lnh more B qua n dng (mc nh l 1) B qua k mn hnh tip theo (mc nh l 1) Tr li k mn hnh trc (mc nh l 1)

7 4

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

Hin th s dng hin thi xem k file tip theo Tr li k file trc Chy chng trnh son tho vi ti dng hin thi V li mn hnh Hin th tn file hin thi v s dng Lp li lnh trc

* Thm s th t ca cc dng trong file vi lnh nl Nh bit lnh cat vi tham s -n s nh s th t ca cc dng trong file, tuy nhin Linux cn cho php dng lnh nl thc hin cng vic nh vy. C php lnh: nl [ty-chn] <file> Lnh ny s a ni dung file ra thit b ra chun, vi s th t ca dng c thm vo. Nu khng c file (tn file), hoc khi file l du "-", th c ni dung t thit b vo chun. Cc tu chn: -b, --body-numbering=STYLE : s dng kiu STYLE cho vic nh th t cc dng trong ni dung file. C cc kiu STYLE sau: a : nh s tt c cc dng k c dng trng; t : ch nh s cc dng khng trng; n : khng nh s dng. -d, --section-delimiter=CC : s dng CC nh s trang logic (CC l hai k t xc nh phm vi cho vic phn trang logic). -f, --footer-numbering=STYLE : s dng kiu STYLE nh s cc dng trong ni dung file (mt cu c th c hai dng ...). -h, --header-numbering=STYLE : s dng kiu STYLE nh s cc dng trong ni dung file. -i, --page-increment=s : nh s th t ca dng theo cp s cng c cng sai l s. -l, --join-blank-lines=s :nhm s dng trng vo thnh mt dng trng. -n, --number-format=khun : chn s dng theo khun (khun: ln - cn tri, khng c s 0 u; rn - cn phi, khng c s 0 u; rz - cn phi v c s 0 u) -p, --no-renumber : khng thit lp li s dng ti mi trang logic. -s, --number-separator=xu : thm chui xu vo sau s th t ca dng. -v, --first-page=s : s dng u tin trn mi trang logic. -w, --number-width=s : hin th s th t ca dng trn ct th s. --help : hin 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

Lnh trong v d trn cho thm s th t ca cc cu trong file vdnl theo dng: nh s th t tt c cc dng, k c dng trng, cc s th t c cn phi v c s 0 u (lu rng c dng trong file c hin ra thnh hai dng trn giy). * Xem qua ni dung file vi lnh head Cc on trc cho bit cch thc xem ni dung ca mt file nh lnh cat hay more. Trong Linux cng c cc lnh khc cho nhiu cch thc xem ni dung ca mt file. Trc ht, chng ta hy lm quen vi lnh head. C php lnh head [ty-chn] [file]... Lnh ny mc nh s a ra mn hnh 10 dng u tin ca mi file. Nu c nhiu hn mt file, th ln lt tn ca file v 10 dng ni dung u tin s c hin th. Nu khng c tham s file, hoc file l du "-", th ngm nh s c t thit b vo chun. Cc tu chn: -c, --bytes=c : hin th c (s nguyn) k t u tin trong ni dung file (c c th nhn gi tr l b cho 512, k cho 1K, m cho 1 Meg) -n, --lines=n : hin th n (s nguyn) dng thay cho 10 dng ngm nh. -q, --quiet, --silent : khng a ra tn file dng u. -v, --verbose : lun a ra tn file dng u. --help : hin 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

Lnh ny cho xem qua 6 dng u tin trong ni dung hai file vdhead1 v vdhead2. * Xem qua ni dung file vi lnh tail Lnh th hai cho php xem qua ni dung ca file l lnh tail vi c php: tail [ty-chn] [file]... Lnh tail ngm nh a ra mn hnh 10 dng cui trong ni dung ca cc file. Nu c nhiu hn mt file, th ln lt tn ca file v 10 dng cui s c hin th. Nu khng c tham s file, hoc file l du "-" th ngm nh s c t thit b vo chun. Cc ty chn: --retry : c gng m mt file kh truy nhp khi bt u thc hin lnh tail. -c, --bytes=n : hin th n (s) k t sau cng. -f, --follow[={name | descritptor}] : sau khi hin ni dung file s hin thng tin v file: -f, -follow, v --follow=descriptor l nh nhau. -n, --lines=n : hin th n (s) dng cui cng ca file thay cho 10 dng ngm nh. --max-unchanged-stats=n : hin th ti liu v file (ngm nh n l 5). --max-consecutive-size-changes=n : hin th ti liu v file (ngm nh n l 200). --pid=PID : kt hp vi ty chn -f, chm dt sau khi qu trnh c ch s = PID li. -q, --quiet, --silent : khng a ra tn file dng u trong ni dung c hin th. -s, --sleep-interval=k : kt hp vi ty chn -f, dng k giy gia cc hot ng. -v, --verbose : lun hin th tn ca file. --help : hin 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

Lnh trn cho xem hai dng cui ca hai file vdtail1 v vdtail2. * Tm s khc nhau gia hai file (lnh diff) Vic tm ra s khc nhau gia hai file i khi l rt cn thit. Linux c mt lnh c tc dng nh vy, l lnh diff vi c php: diff [tu-chn] <file1> <file2> 7 7

Trong trng hp n gin, lnh diff s so snh ni dung ca hai file. Nu file1 l mt th mc cn file2 l mt file bnh thng, diff s so snh file c tn trng vi file2 trong th mc file1 vi file2. Nu c file1 v file2 u l th mc, diff s thc hin s so snh ln lt cc file trong c hai th mc theo th t t a-z (s so snh ny s khng qui nu tu chn -r hoc --recursive khng c a ra). Tt nhin so snh gia hai th mc khng th chnh xc nh khi so snh hai file. Cc tu chn: -a: xem tt c cc file dng vn bn v so snh theo tng dng. -b: b qua s thay i v s lng ca k t trng. -B: b qua mi s thay i m ch chn hoc xo cc dng trng. --brief: ch thng bo khi c s khc nhau m khng a ra chi tit ni dung khc nhau. -d: tm ra s khc bit nh (tu chn ny c th lm chm tc lm vic ca lnh diff). --exclude-from=file: khi so snh th mc, b qua cc file v cc th mc con c tn ph hp vi mu c trong file. -i: so snh khng bit ch hoa ch thng. -r: thc hin so snh qui trn th mc. -s: thng bo khi hai file l ging nhau. -y: hin th hai file cnh nhau d phn bit s khc nhau. 3.4.5 Cc lnh tm file * Tm theo ni dung file bng lnh grep Lnh grep cng nh lnh ls l hai lnh rt quan trng trong Linux. Lnh ny c hai tc dng c bn nh sau: tc dng th nht l lc u ra ca mt lnh khc vi c php l <lnh> | grep <mu lc> tc dng th hai, v cng l tc dng c bn c gii thiu trong phn ny, l tm dng cha mu nh trong file c ch ra. C php lnh grep: grep [ty-chn] <mu-lc> [file] Lnh grep hin th tt c cc dng c cha mu-lc trong file c ch ra (hoc t thit b vo chun nu khng c file hoc file c dng l du "-") Cc ty chn: -G, --basic-regexp : xem mu lc nh mt biu thc thng thng. iu ny l ngm nh. -E, --extended-regexp : xem mu lc nh mt biu thc m rng. -F, --fixed-strings : xem mu nh mt danh sch cc xu c nh, c phn ra bi cc dng mi. Ngoi lnh grep cn c hai lnh l egrep v fgrep. egrep tng t nh lnh grep -E, fgrep tng t vi lnh grep -F . Lnh grep cn c cc ty chn sau: -A NUM, --after-context=NUM : a ra NUM dng ni dung tip theo sau dng c cha mu. 7 8

-B NUM, --before-context=NUM : a ra NUM dng ni dung trc dng c cha mu. -C [NUM], --context[=NUM] : hin th NUM dng (mc nh l 2 dng) ni dung. -NUM : ging --context=NUM a ra cc dng ni dung trc v sau dng c cha mu. Tuy nhin, grep s khng a ra dng no nhiu hn mt ln. -b, --byte-offset : hin th a ch tng i trong file u vo trc mi dng c a ra -c, --count : m s dng tng ng cha mu trong file u vo thay cho vic hin th cc dng cha mu. -d ACTION, --directories=ACTION : nu u vo l mt th mc, s dng ACTION x l n. Mc nh, ACTION l read, tc l s c ni dung th mc nh mt file thng thng. Nu ACTION l skip, th mc s b b qua. Nu ACTION l recurse, grep s c ni dung ca tt c cc file bn trong th mc ( quy); ty chn ny tng ng vi ty chn -r. -f file, --file=file : ly cc mu t file, mt mu trn mt dng. File trng cha ng cc mu rng, v cc dng a ra cng l cc dng trng. -H, --with-file : a ra tn file trn mi dng cha mu tng ng. -h, --no-filename : khng hin th tn file km theo dng cha mu trong trng hp tm nhiu file. -i : hin th cc dng cha mu khng phn bit ch hoa ch thng. -l : a ra tn cc file trng vi mu lc. -n, --line-number : thm s th t ca dng cha mu trong file. -r, --recursive : c tt c cc file c trong th mc ( quy). -s, --no-messages : b qua cc thng bo li file khng c c hoc khng tn ti. -v, --invert-match : hin th cc dng khng cha mu. -w, --word-regexp : ch hin th nhng dng c cha mu lc l mt t trn vn. -x, --line-regexp : ch hin th nhng dng m ni dung trng hon ton vi mu lc. V d, ngi dng g lnh cat xem ni dung file text: # cat -n text th hin ra ni 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 lnh grep lc cc dng c cm filesystem # grep -n filesystem text


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

Cng c th s dng cc k hiu biu din thng thng (regular - expression) trong mu lc a ra c nhiu cch tm kim file khc nhau. Bng di y lit k mt s k hiu hay dng: K hiu C \c ^ $ . [xy] [^xy] c* ngha - thay th cho k t c - hin th c nh l mt k t bnh thng nu c l mt k t iu khin - bt u mt dng - kt thc dng - thay cho mt k t n - chn mt k t trong tp hp cc k t c a ra - chn mt k t khng thuc tp hp cc k t c a ra - thay cho mt mu c hoc khng cha k t c

# grep - H thutest text


text: thutest text: toithutest

# grep -H "^thutest" text


text: thutest

Ngoi cc ty chn khc nhau, lnh grep cn c hai dng na trn Linux. Hai dng l egrep - s dng vi cc mu lc phc tp, v fgrep - s dng tm nhiu mu lc cng mt lc. Thnh thong mt biu thc n gin khng th xc nh c i tng cn tm, v d, nh ang cn tm cc dng c mt hoc hai mu lc. Nhng lc , lnh egrep t ra rt c ch. egrep - expression grep - c rt nhiu cc k hiu biu din mnh hn grep. Di y l cc k hiu hay dng:

8 0

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

ngha - thay th cho k t c - hin th c nh l mt k t bnh thng nu c l mt k t iu khin - bt u mt dng - kt thc dng - thay cho mt k t n - chn mt k t trong tp hp cc k t c a ra - chn mt k t khng thuc tp hp cc k t c a ra - thay cho mt mu c hoc khng cha k t c - thay cho mt mu c cha mt hoc nhiu hn k t c - thay cho mt mu khng c hoc ch c cha duy nht mt k t c - hoc l a hoc l b - a mt biu thc

V d, gi s by gi mun tm cc dng c cha mt hoc nhiu hn k t b trn file passwk vi lnh egrep. # egrep 'b+' /etc/passwd | head cho ra cc dng kt 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 lnh: # egrep '([^a-zA-Z] | :wi)' /etc/printcap | head th nhn c thng bo kt 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:

Lnh trn cho php tm cc dng c bt u bi (^) mt ch ci khng phn bit ch hoa ch thng ([a-zA-Z]) hoc ( | ) dng c cha mu :wi. Bt k lc no mun tm cc dng c cha nhiu hn mt mu lc, egrep l lnh tt nht s dng. C nhng lc cn phi tm nhiu mu lc trong mt lc. V d, c mt file cha rt nhiu mu lc v mun s dng mt lnh trong Linux tm cc dng c cha cc mu . Lnh fgrep s lm c iu ny. V d, file thu c ni 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 ni dung l: # cat mauloc


empty test

By gi mun s dng ni dung file mauloc lm mu lc tm cc cu trong file thu, hy g lnh: # fgrep -i -f mauloc thu
/dev/hda9: empty /dev/hda10: empty thutest toithutest

* Tm theo cc c tnh ca file vi lnh find Cc on trn y gii thiu cch thc tm file theo ni dung vi cc lnh grep, egrep v fgrep. Linux cn cho php ngi dng s dng mt cch thc khc y nng lc, l s dng lnh find, lnh tm file theo cc thuc tnh ca file. Lnh ny c mt s khc bit so vi cc lnh khc, l cc ty chn ca lnh l mt t ch khng phi mt k t. iu kin cn i vi lnh ny l ch ra c im bt u ca vic tm kim trong h thng file v nhng quy tc cn tun theo ca vic tm kim. C php ca lnh find: find [ng-dn] [biu-thc] Lnh find thc hin vic tm kim file trn cy th mc theo biu thc c a ra. Mc nh ng dn l th mc hin thi, biu thc l -print. Biu thc c th c nhng dng sau: 8 2

Cc ton t: ( EXPR ); ! EXPR hoc -not EXPR; EXPR1 -a EXPR2 hoc EXPR1 -and EXPR2; EXPR1 -o EXPR2 hoc EXPR1 -or EXPR2; v EXPR1, EXPR2 Cc ty chn lnh: tt c cc ty chn ny lun tr v gi tr true v c t u biu thc -daystart : o thi gian (-amin, -atime, -cmin, -ctime, -mmin, -mtime). -depth : thc hin tm kim t ni dung bn trong th mc trc (mc nh vic tm kim c thc hin bt u ti gc cy th mc c cha file cn tm). -follow : (ty chn ny ch p dng cho th mc) nu c ty chn ny th cc lin kt tng trng c trong mt th mc lin kt s c ch ra. -help, --help : hin th kt qu ca lnh find v thot. cc test -amin n : tm file c truy nhp n pht trc. -atime n : tm file c truy nhp n*24 gi trc. -cmin n : trng thi ca file c thay i n pht trc y. -ctime n : trng thi ca file c thay i n*24 gi trc y. -empty : file rng v hoc l th mc hoc l file bnh thng. -fstype kiu : file thuc h thng file vi kiu. -gid n : ch s nhm ca file l n. -group nhm : file thuc quyn s hu ca nhm. -links n : file c n lin kt. -mmin n : d liu ca file c sa ln cui vo n pht trc y. -mtime n : d liu ca file c sa vo n*24 gi trc y. -name mu : tm kim file c tn l mu. Trong tn file c th cha c cc k t i din nh du "*", "?"... -type kiu : tm cc file thuc kiu vi kiu nhn cc gi tr: b: c bit theo khi c: c bit theo k t d: th mc p: pipe f: file bnh thng l: lin kt tng trng s: socket -uid n: ch s ngi s hu file l n. -user tn-ngi: file c s hu bi ngi dng tn-ngi. Cc hnh ng -exec lnh : ty chn ny cho php kt hp lnh find vi mt lnh khc c c thng tin nhiu hn v cc th mc c cha file cn tm. Ty chn exec phi s dng du {} - n s thay th cho tn file tng ng, v du '\' ti cui dng lnh, (phi c khong trng gia {} v '\'). Kt thc lnh l du ';' 8 3

-fprint file : hin th y tn file vo trong file. Nu file khng tn ti th s c to ra, nu tn ti th s b thay th ni dung. -print : hin th y tn file trn thit b ra chun. -ls : hin th file hin thi theo khun dng: lit k danh sch y km c s th mc, ch s ca mi file, vi kch thc file c tnh theo khi (block). V d: # find -name 'what*'
./usr/bin/whatis ./usr/bin/whatnow ./usr/doc/AfterStep-1.8.0/TODO/1.0to1.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 (lnh tar) D liu rt c gi tr, s mt nhiu thi gian v cng sc nu phi to li, thm ch c lc cng khng th no to li c. V vy, Linux a ra cc cch thc ngi dng bo v d liu ca mnh. C bn nguyn nhn c bn khin d liu c th b mt: li phn cng, li phn mm, li do con ngi hoc do thin tai. Sao lu l cch bo v d liu mt cch kinh t nht. Bng cch sao lu d liu, s khng c vn g xy ra nu d liu trn h thng b mt. Mt vn rt quan trng trong vic sao lu l la chn phng tin sao lu. cn phi quan tm n gi c, tin cy, tc , ch li cng nh tnh kh dng ca cc phng tin sao lu. C rt nhiu cc cng c c th c s dng sao lu. Cc cng c truyn thng l tar, cpio v dump (cng c trong ti liu ny l tar). Ngoi ra cn rt nhiu cc cng c khc c th la chn ty theo phng tin sao lu c trong h thng. C hai kiu sao lu l sao lu theo kiu ton b (full backup) v sao lu theo kiu tng dn (incremental backup). Sao lu ton b thc hin vic sao mi th trn h thng file, bao gm tt c cc file. Sao lu tng dn ch sao lu nhng file c thay i hoc c to ra k t t sao lu cui cng. 8 4

Vic sao lu ton b c th c thc hin d dng vi lnh tar vi c php: tar [ty-chn] [<file>, ...] [<th-mc>, ...] Lnh (chng trnh) tar c thit k to lp mt file lu tr duy nht. Vi tar, c th kt hp nhiu file thnh mt file duy nht c kch thc ln hn, iu ny s gip cho vic di chuyn file hoc sao lu bng t tr nn d dng hn nhiu. Lnh tar c cc la chn: -c, --create : to file lu tr mi. -d, --diff, --compare : tm ra s khc nhau gia file lu tr v file h thng c lu tr. --delete : xa t file lu tr (khng s dng cho bng t). -r, --append : chn thm file vo cui file lu tr. -t, --list : lit k ni dung ca mt file lu tr. -u, --update : ch thm vo file lu tr cc file mi hn cc file c. -x, --extract, --get : tch cc file ra khi file lu tr. -C, --directory tn-th-mc : thay i n th mc c tn l tn-th-mc. --checkpoint : a ra tn th mc khi c file lu tr. -f, --file [HOSTNAME:]file : ty chn ny xc nh tn file lu tr hoc thit b lu tr l file (nu khng c ty chn ny, mc nh ni lu tr l /dev/rmt0). -h, --dereference : khng hin cc file lin kt m hin cc file m chng tr ti. -k, --keep-old-files : gi nguyn cc file lu tr ang tn ti m khng ghi file lu tr mi ln chng. -K, --starting-file file : bt u ti file trong file lu tr. -l, --one-file-system : to file lu tr trn h thng file cc b. -M, --multi-volume : ty chn ny c s dng khi dung lng ca file cn sao lu l ln v khng cha ht trong mt n v lu tr vt l. -N, --after-date DATE, --newer DATE : ch lu tr cc file mi hn cc file c lu tr trong ngy DATE. --remove-files : xa file gc sau khi sao lu chng vo trong file lu tr. --totals : a ra tng s byte c to bi ty chn --create. -v, --verbose : hin 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

# Lnh trn to mt file sao lu ca th mc /usr/src trong th mc /dev/ftape, (dng thng bo trn cho bit rng tar s chuyn c du / vo trong file sao lu). Nu vic sao lu khng th thc hin gn vo trong mt bng t, lc hy s dng ty chn -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 rng phi nh dng a mm trc khi thc hin vic sao lu, c th s dng mt thit b u cui khc thc hin vic nh dng a khi tar yu cu mt a mm mi. Sau khi thc hin vic sao lu, c th kim tra kt qu ca cng vic bng ty chn -compare:
# tar --compare --verbose -f /dev/ftape usr/src/ usr/src/Linux usr/src/Linux-1.2.10-includes/ ... #

s dng kiu sao lu tng dn, hy s dng ty chn -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 rng, tar khng th thng bo c khi cc thng tin trong inode ca mt file b thay i, v d nh thay i quyn truy nhp ca file, hay thay i tn file chng hn. bit c nhng thng tin thay i s cn dng n lnh find v so snh vi trng thi hin thi ca file h thng vi danh sch cc file c sao lu t trc. 3.5.2 Nn d liu Vic sao lu rt c ch nhng ng thi n cng chim rt nhiu khng gian cn thit sao lu. gim khng gian lu tr cn thit, c th thc hin vic nn d liu trc khi sao lu, sau thc hin vic gii nn (dn) nhn li ni dung trc khi nn. Trong Linux c kh nhiu cch nn d liu, ti liu ny gii thiu hai phng cch ph bin l gzip v compress.

8 6

* Nn, gii nn v xem ni dung cc file vi lnh gzip, gunzip v zcat C php cc lnh ny nh sau: gzip [ty-chn] [ -S suffix ] [ < file> ] gunzip [ty-chn] [ -S suffix ] [ <file> ] zcat [ty-chn] [ <file> ] Lnh gzip s lm gim kch thc ca file v khi s dng lnh ny, file gc s b thay th bi file nn vi phn m rng l .gz, cc thng tin khc lin quan n file khng thay i. Nu khng c tn file no c ch ra th thng tin t thit b vo chun s c nn v gi ra thit b ra chun. Trong mt vi trng hp, lnh ny s b qua lin kt tng trng. Nu tn file nn qu di so vi tn file gc, gzip s ct b bt. gzip s ch ct phn tn file vt qu 3 k t (cc phn c ngn cch vi nhau bi du chm). Nu tn file gm nhiu phn nh th phn di nht s b ct 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 phc tr li dng nguyn th vi lnh gzip -d hoc gunzip. Vi lnh gzip c th gii nn mt hoc nhiu file c phn m rng l .gz, -gz, .z, -z, _z hoc .Z ... gunzip dng gii nn cc file nn bng lnh gzip, zip, compress, compress -H. Lnh zcat c s dng khi mun xem ni dung mt file nn trn thit b ra chun. Cc ty chn: -c, --stdout --to-stdout : a ra trn thit b ra chun; gi nguyn file gc khng c s thay i. Nu c nhiu hn mt file u vo, u ra s tun t l cc file c nn mt cch c lp. -d, --decompress --uncompress : gii nn. -f, --force : thc hin nn hoc gii nn thm ch file c nhiu lin kt hoc file tng ng thc s tn ti, hay d liu nn c c hoc ghi trn thit b u cui. -h, --help : hin th mn hnh tr gip v thot. -l, --list : hin th nhng thng tin sau i vi mt file c nn: compressed size: kch thc ca file nn uncompressed size: kch thc ca file c gii nn ratio: t l nn (0.0% nu khng bit) uncompressed_name: tn ca file c gii nn Nu kt hp vi ty chn --verbose, cc thng tin sau s c hin th: method: phng thc nn crc: CRC 32-bit cho d liu c gii nn date & time: thi gian cc file c gii nn Nu kt hp vi ty chn --name, tn file c gii nn, thi gian gii nn c lu tr trong file nn Nu kt hp vi ty chn --verbose, tng kch thc v t l nn ca tt c cc file s c hin th Nu kt hp vi ty chn --quiet, tiu v tng s dng ca cc file nn khng c hin th.

8 7

-n, --no-name : khi nn, ty chn ny s khng lu tr tn file gc v thi gian nn, (tn file gc s lun c lu nu khi nn tn ca n b ct b). Khi gii nn, ty chn ny s khng khi phc li tn file gc cng nh thi gian thc hin vic nn. Ty chn ny c ngm nh. -N, --name : ty chn ny ngc vi ty chn trn (-n), n hu ch trn h thng c s gii hn v di tn file hay khi thi im nn b mt sau khi chuyn i file. -q, --quiet : b qua mi cnh bo. -r, --recursive : nn th mc. -S .suf, --suffix .suf : s dng phn m rng .suf thay cho .gz. Bt k phn m rng no cng c th c a ra, nhng cc phn m rng khc .z v .gz s b ngn chn trnh s ln xn khi cc file c chuyn n h thng khc. -t, --test : ty chn ny c s dng kim tra tnh ton vn ca file c nn -v, --verbose : hin th phn trm thu gn i vi mi file c nn hoc gii nn -#, --fast, --best : iu chnh tc ca vic nn bng cch s dng du #, nu -# l -1 hoc --fast th s dng phng thc nn nhanh nht (less compression), nu l -9 hoc --best th s dng phng thc nn chm nht (best compression). Ngm nh mc nn l -6 (y l phng thc nn theo tc 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, gii nn v xem file vi cc lnh compress, uncompress, zcat C php cc lnh nh sau: compress [ty-chn] [<file>]

8 8

uncompress [ty-chn] [<file>] zcat [ty-chn] [<file>] Lnh compress lm gim kch thc ca file v khi s dng lnh ny, file gc s b thay th bi file nn vi phn m rng l .Z, cc thng tin khc lin quan n file khng thay i. Nu khng c tn file no c ch ra, thng tin t thit b vo chun s c nn v gi ra thit b ra chun. Lnh compress ch s dng cho cc file thng thng. Trong mt vi trng hp, n s b qua lin kt tng trng. Nu mt file c nhiu lin kt cng, compress b qua vic nn file tr khi c ty chn -f. Cc ty chn: -f : nu ty chn ny khng c a ra v compress chy trong ch nn trc, ngi dng s c nhc khi cc file thc s tn ti v c th b ghi . Cc file c nn c th c khi phc li nh vic s dng lnh uncompress. -c : ty chn ny s thc hin vic nn hoc gii nn ri a ra thit b ra chun, khng c file no b thay i. Lnh zcat tng ng vi uncompress -c. zcat thc hin vic gii nn hoc l cc file c lit k trong dng lnh hoc t thit b vo chun a ra d liu c gii nn trn thit b ra chun. -r : nu ty chn ny c a ra, compress s thc hin vic nn cc th mc. -v : hin th t l gim kch thc cho mi file c nn.

8 9

CHNG 4. QUN TR QU TRNH


4.1 Qu trnh trong UNIX
4.1.1. S b v qu trnh Qu trnh l i tng trong h thng tng ng vi mt phin thc hin ca mt chng trnh. Qu trnh bao gm ba thnh phn l text, data, stack. Text l thnh phn cu lnh thc hin, data l thnh phn d liu cn stack l thnh phn thng tin tm thi hot ng theo c ch LIFO. Cc cu lnh trong text ch thao tc ti vng data, stack tng ng ca qu trnh, khng truy nhp c ti data v stack ca cc qu trnh khc, ngoi tr cc vng d liu dng chung. Cc qu trnh c h thng phn bit bng s hiu ca qu trnh, vit tt l PID (Proccess Index). Qu trnh c to khi khi ng h iu hnh l qu trnh 0. Mi qu trnh khc u c to ra t mt qu trnh khc thng qua li gi h thng fork: qu trnh thc hin li gi h thng fork c gi l qu trnh cha, cn qu trnh c to ra theo li gi fork c gi l qu trnh con. Tr qu trnh 0 khng c cha, mi qu trnh c trong h thng u c mt cha v mt cha c th c nhiu con. Kt qu dch chng trnh ngun s to ra file chng trnh ch gm mt s phn nh sau (lu tr trn vt dn ngoi): Phn u file m t mt s c tnh ca file chng trnh (tng t File header ca file chng trnh trong MS-DOS), Phn text ca chng trnh, Cc gi tr m u v vic phn phi b nh i vi vng data ca chng trnh, Mt s bng thng tin lin quan n t file. Khi c li gi fork, thng qua li gi h thng exec, nhn s ti ni dung ca file chng trnh vo b nh trong theo cc vng text, data v stack: Vng text ca qu trnh tng ng vi file chng trnh, Vng data ca qu trnh tng ng vi cc gi tr c quy nh trong file chng trnh, Vng stack c nhn t ng to vi kch thc theo s linh hot ca nhn. Phn stach bao gm cc stack frame (khung) lgic: mi satck frame c t vo khi gi mt hm v ly ra khi quay v. Mi stack frame cha tham s ca hm, cc bin a phng v.v. Tng ng trong stack c mt stack pointer lin quan n chiu su ca stack. Trong m chng trnh c cc dng lnh qun l hnh trng ca stack, v nhn s nh v khng gian i vi stack theo yu cu. 4.1.2. S b cu trc iu khin ca UNIX Theo phn cp, h thng thc hin theo ba mc: mc ngi dng, mc nhn v mc phn cng. Mc ngi dng (user level): gm c chng trnh ngi dng v chng trnh trong cc th vin. Cc chng trnh ny chy (phn lnh ca chng thc hin) 9 0

trong trng thi ngi dng ca qu trnh. Chng trnh ngi dng thao tc vi nhn hoc trc tip hoc gin tip nh gi th vin nh cc li gi h thng. Mc nhn l mc trng tm nht ca h iu hnh Linux-UNIX. Chy mc nhn l nhng chng trnh ca h iu hnh thuc h thng con iu khin File (h thng con lm vic vi File - File Subsystem), h thng con iu khin qu trnh (Proccess Control System), cc li gi h thng (system calls), cc chng trnh iu khin thit b (Device Drivers), Cache b m (Buffer cache) v cc chng trnh iu khin phn cng (Hard Control). Hai thnh phn c bn nht l H thng iu khin File v H thng con iu khin qu trnh.

Hnh v di y cho s b cu trc iu khin trong UNIX: Chng trnh ngi dng Mc ngi dng Mc nhn Th vin mu

Gao din theo cc li gi h thng

H thng con iu khin File Cache b m

H thng con iu khin qu trnh (bao gm 3 thnh phn con bn phi B truyn thng lin qu trnh B lp lch Thnh phn iu phi b nh

K tKhi iu khin thit b

IU KHIN PHN CNG

Mc nhn Mc phn cng

PHN CNG

Cu trc ca Nhn v cc mc qu trnh

9 1

4.1.3. Cc h thng con trong nhn H thng con iu khin File c nhim v qun l h thng File, cung cp vng nh ri a cho File, iu khin truy cp File v tm kim d liu v.v. a s cc thut ton v cc li gi h thng lin quan n File v cc hm chng trnh con mc thp c trnh by trong chng 2. Cc qu trnh tng tc vi H thng con iu khin File nh cc li gi h thng (cc li gi h thng File mc cao). Vic truy nhp ti File nh hai cch thc: truy nhp trc tip vi File hoc thng qua buffer cache. Cc buffer cache lu tr d liu tm thi theo tng khi. Nhn vo-ra d liu thng qua cc khi trung gian v nh thit b nh th cp: truy nhp d liu theo khi, Nhn thao tc trc tip vi khi iu khin thit b truy nhp trc tip d liu trong File khng qua thit b ph: truy nhp theo k t. H thng con iu khin qu trnh chu trch nhim ng b ha s tng tc lin qu trnh, qun l b nh v lp lch thc hin i vi cc qu trnh ang tn ti. H thng con iu khin File v H thng con iu khin qu trnh tng tc vi nhau khi file c ti vo b nh trong v cho thc hin. Mt s li gi h thng cho khi iu khin qu trnh: fork: To qu trnh mi. Li gi hm ny c dng pid=fork() exec: Cho thc hin qu trnh ang tn ti; exec(pid) exit: Cho kt thc qu trnh ang tn ti, brk: iu khin kch thc b nh cp pht cho qu trnh, signal: iu khin cc hin tng bt thng trong qu trnh H thng con iu khin qu trnh bao gm 3 thnh phn sau y: Thnh phn iu phi b nh c nhim v qun l, iu khin cp pht b nh. Mt s trang b loi b khi cp pht b nh cho qu trnh. B lp lch (schelduler) c nhim v iu phi CPU cho cc qu trnh. Cc qu trnh c u tin v b lp lch chn qu trnh c u tin cao nht. B truyn thng lin qu trnh thc hin vic ng b ha cc qu trnh lin quan nhau. B iu khin phn cng (hardware control) c chc nng cho php ngt v tng tc thng tin vi my. Cc thit b nh a, thit b u cui c th ngt CPU khi ang thc hin qu trnh. Cc chng trnh x l ngt l hm ring bit trong nhn m khng phi l mt qu trnh. Stack trong qu trnh Mi qu trnh thc hin c mode nhn v mode ngi dng v vy phn chia hai loi stack nhn v stack ngi 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(' cn 2 i s i vi chng trnh sao file!'); exit(1) | fdold = open (argv[1], O_RDONLY); /* m file ngun ch c */ if (fdold == -1) | printf (' Khng th m file &cs\n',argv[1]); exit(1); | fdnew =creat (argv[2],0666); /*m File ich rw cho mi ngi */ if (fdnew ==-1) | printf('Khng th khi to 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); | Trong chng trnh trn, m lnh (gi l phn text) ca file c sinh ra t cc hm main v copy. Khi to gi tr ban u cho bin version v dnh vng nh cho bin mng buffer. Trong v d trn, cc tham s argc, argv v cc bin fdold, fdnew trong chng trnh main trong stack khi main c gi (mt ln i vi mi chng trnh), cn cc tham s old v new v bin count trong hm copy xut hin mi khi copy c gi. Stack ngi dng Bin cc b khng c a ch frame 2 a ch quay li sau khi write Cc tham s b m ca write buffer mi frame 3 Cc bin cc count call write () b a ch ca Frame 1 Stack nhn

Hng tng ca stack

Frame 3 call Bin cc b func2() a ch ca Frame 1 9 3

a ch quay v sau li gi a ch quay v sau li gi copy func2 Cc tham s old Tham s ca func2 nhn ca copy new frame 2 Frame 2 Bin cc b fdold call copy () call Bin cc b fdnew func2() a ch ca Frame 0 a ch ca Frame 0 a ch quay v sau li gi a ch quay v sau li gi main func1 Tham s ca argc Tham s ca func1 nhn main Frame 1 argv Frame 1 call main () call func1() Cc stack cho mt qu trnh Qu trnh trong UNIX c thc hin theo mt trong hai mode: mode nhn hay mode ngi dng v tng ng vi 2 mode ny, qu trnh s dng stack ring bit i vi mi mode. Stack ngi dng cha cc i s, bin cc b, v cc d liu khc i vi vic thc hin hm trong mode ngi dng. Stach nhn cha cc i s, bin cc b, cc tham s, cc a ch lin kt v.v. lin quan n thc hin cc hm theo mode nhn. 4.1.4. S b v iu khin qu trnh Nhn s dng 4 cu trc d liu sau y truy nhp n qu trnh: Bng cc qu trnh, tng ng vi mi qu trnh ang tn ti trong h thng l mt thnh phn. Mi thnh phn bao gm mt s trng sau y (mi thnh phn y chnh l mt PCB): - Trng thi ca qu trnh, - Ch s hu ca qu trnh, - Trng lin quan n trng thi ngng ca qu trnh (theo li gi hm sleep) - a ch ca vng s dng tng ng vi qu trnh, - Cc thng tin tng ng c trnh by trong PCB. Vng s dng (U-area) cha cc thng tin ring, c tc dng khi qu trnh ang thc hin: - Ch s thnh phn tng ng vi qu trnh trong bng cc qu trnh: a ch ca khi PCB tng ng, - B m thi gian chy mc nhn v mc ngi dng, - Cc gi tr tr v v m li (nu c) i vi li gi h thng hin ti, - M t v cc file ang m ng vi qu trnh, - Tham s lu tr dung lng d liu di chuyn trong vo - ra. - Th mc hin ti v th mc gc hin ti: mi trng ca qu trnh, - Cc gii hn kch thc file v qu trnh, - Cc mc cho php thc hin i vi qu trnh, - Mt s thng tin khc Cc bng nh v a ch b nh i vi mi qu trnh,

9 4

Bng cha vng b nh chung: phn hoch b nh, c tnh mi vng theo phn hoch: cha text, data hoc vng b nh dng chung v.v. S b v mi lin kt ca cc cu trc d liu trn c m t nh hnh v pha sau. Nhn x l vi cc li gi h thng nh sau: - Vi li gi fork: Nhn sao vng a ch ca qu trnh c, cho php cc qu trnh chia x vng b nh, - Vi li gi exec: Nhn cp pht cc vng b nh thc cho cc vng text, data v stack, - Vi li gi exit: Nhn s gii phng cc vng b nh lin quan n qu trnh. Bng cc vng nh cho mt qu trnh U-area Bng cc vng nh (bng cc trang o) C c cu tr c d liu i u khi n qu trn h 4.1.

B nh trong (cc trang thc) 5. Trng thi v chuyn dch trng thi S biu din cc trng thi v vic chuyn trng thi trong UNIX c trnh by trong hnh di y (S hiu trng thi qu trnh xem trong hnh v). Thc hin mc ngi dng (1)

Hon thin (9)

Thc hin mc nhn (2)

Sn sng sang mc ngi dng (7)

Ch i thiu ti nguyn (4)

Sn sng thc hin (3) i b nh thc hin (5)

Ch i b nh ngoi (6)

Qu trnh pht sinh (8)

9 5

S chuyn trng thi qu trnh Khi qu trnh c pht sinh n trng thi (8), ty thuc vo tnh trng b nh qu trnh c phn phi b nh trong (3) hay b nh ngoi (5). Trng thi (3) th hin qu trnh sn sng thc hin, cc thnh phn ca n b nh trong ch i CPU thc hin. Vic thc hin tip theo ty thuc vo trng thi trc ca n. Nu ln u pht sinh, n cn i ti thc hin mc nhn hon thin cng vic li gi fork s t trng thi (3) sang trng thi (1), trong trng hp khc, t trng thi (3) n i ti trng thi ch di CPU mc ngi dng (7). Trong trng thi thc hin mc ngi dng (1), qu trnh i ti trng thi (2) khi gp li gi h thng hoc hin tng ngt xy ra. T trng thi (1) ti trng thi (7) khi ht lng t thi gian. Trng thi (4) l trng thi ch i trong b nh cn trng thi (6) th hin vic ch i trong b nh ngoi. Cung chuyn t trng thi (2) vo ngay trng thi (2) xy ra khi qu trnh trng thi thc hin mc nhn, nhn h thng gi cc hm x l ngt tng ng. 4.1.6. S ngng hot ng v hot ng tr li ca qu trnh Mt qu trnh trong trng thi thc hin mc nhn c kh nng chuyn sang trng thi ngng theo li gi hm sleep. Trng thi ngng xy ra trong mt s tnh hung ch i mt s kin: hon thnh vic vo-ra, qu trnh khc thc hin li gi exit v.v. Sau khi s kin xy ra, qu trnh t trng thi ngng chuyn sang trng thi sn sng c th c cp pht CPU chy. 4.1.7. S b v lnh i vi qu trnh Khi m mt trang man, lit k cc file vi lnh ls, chy trnh son tho vi hay chy bt k mt lnh no trong Linux th iu c ngha l ang khi to mt hoc nhiu qu trnh. Trong Linux, bt c chng trnh no ang chy u c coi l mt qu trnh. C th c nhiu qu trnh cng chy mt lc. V d dng lnh ls -l | sort | more s khi to ba qu trnh: ls, sort v more. Qu trnh c th tri qua nhiu trng thi khc nhau v ti mt thi im mt qu trnh ri vo mt trong cc trng thi . Bng di y gii thiu cc trng thi c bn ca qu trnh trong Linux. K hiu D R S T Z ngha (uninterruptible sleep) trng thi ny qu trnh b treo v khng th chy li n bng mt tn hiu. (runnable) trng thi sn sng thc hin, tc l qu trnh c th thc hin c nhng ch n lt thc hin v mt qu trnh khc ang c CPU. (sleeping) trng thi tm dng, tc l qu trnh tm dng khng hot ng (20 giy hoc t hn) (traced or stopped) trng thi dng, qu trnh c th b treo bi mt qu trnh ngoi

9 6

W < N L

(zombie process) qu trnh kt thc thc hin, nhng n vn c tham chiu trong h thng khng c cc trang thng tr qu trnh c mc u tin cao hn qu trnh c mc u tin thp hn c cc trang kha bn trong b nh

4.2. Cc lnh c bn
4.2.1. Lnh fg v lnh bg Linux cho php ngi dng s dng t hp phm CTRL+z dng mt qu trnh v khi ng li qu trnh bng cch g lnh fg. Lnh fg (foreground) tham chiu n cc chng trnh m mn hnh cng nh bn phm ang lm vic vi chng. V d, ngi dng ang xem trang man ca lnh sort, nhn xung cui thy c ty chn -b, mun th ty chn ny ng thi vn mun xem trang man. Thay cho vic nh q thot v sau chy li lnh man, cho php ngi dng g CTRL+z tm dng lnh man v g lnh th ty chn -b. Sau khi th xong, hy g fg tip tc xem trang man ca lnh sort. Kt qu ca qu trnh trn hin 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 phn trc, cch thc g phm CTRL+z tm dng mt qu trnh c gii thiu. Linux cn ngi dng cch thc chy mt chng trnh di ch nn (background) - s dng lnh bg - trong khi cc chng trnh khc ang chy, v chuyn mt chng trnh vo trong ch nn - dng k hiu &. Nu mt qu trnh hot ng m khng a ra thng tin no trn mn hnh v khng cn nhn bt k thng tin u vo no, th c th s dng lnh bg a n vo trong ch nn ( ch ny n s tip tc chy cho n khi kt thc). Khi chng trnh cn a thng tin ra mn hnh hoc nhn thng tin t bn phm, h thng s t ng dng chng trnh v thng bo cho ngi dng. Cng c th s dng ch s iu khin cng vic (job control) lm vic vi chng trnh no mun. Khi chy mt chng trnh trong ch nn, chng trnh c nh s th t (c bao bi du ngoc vung []), theo sau l ch s ca qu trnh. Sau c th s dng lnh fg + s th t ca chng trnh a chng trnh tr li ch ni v tip tc chy. c mt chng trnh (hoc mt lnh ng) t ng chy trong ch nn, ch cn thm k hiu '&' vo cui lnh. Trong mt s h thng, khi qu trnh nn kt thc th h thng s gi thng bo ti ngi dng, nhng trn hu ht cc h thng, khi qu trnh trn nn hon thnh th h thng s ch cho n khi ngi dng g phm Enter th mi hin th du nhc lnh mi km theo thng bo hon thnh qu trnh (thng th mt qu trnh hon thnh sau khong 20 giy). Nu c chuyn mt chng trnh vo ch nn mc d n c cc thng tin cn xut hoc nhp t cc thit b vo ra chun th h thng s a ra thng bo li di dng sau: Stopped (tty input/output) tn chng trnh. V d, lnh sau y thc hin vic tm kim file thu1 trong ch nn: # find -name thu1 &
[5] 918

trong ch ny, s th t ca chng trnh l [5], ch s qu trnh tng ng vi lnh find l 918. V g Enter khi qu trnh cha thc hin xong nn trn mn hnh ch hin th s th t ca chng trnh v ch s qu trnh, nu ch khong 30 hoc 40 giy sau ri g Enter ln na, mn hnh hin th thng bo hon thnh chng trnh nh sau: #
[5] Done find -name thu1

# Gi s chng trnh cha hon thnh v mun chuyn n ln ch ni, hy g lnh sau: # fg 5
find -name thu1 ./thu1

chng trnh hon thnh v hin th thng bo rng file thu1 nm th mc gc. Thng thng s a ra mt thng bo li nu ngi dng c chuyn mt chng trnh vo ch nn khi m chng trnh cn phi xut hoc nhp thng tin t thit b vo ra chun. V d, lnh: # vi &
[6] 920

9 8

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

# Lnh trn chy chng trnh vi trong ch nn, tuy nhin lnh gp phi li v y l chng trnh i hi hin th cc thng tin ra mn hnh (output). Dng thng bo li Stopped (tty intput) vi cng xy ra khi chng trnh vi cn nhn thng tin. 4.2.2. Hin th cc qu trnh ang chy vi lnh ps Linux cung cp cho ngi dng hai cch thc nhn bit c nhng chng trnh no ang chy trong h thng. Cch d hn, l lnh jobs s cho bit cc qu trnh no dng hoc l c chy trong ch nn. Cch phc tp hn l s dng lnh ps. Lnh ny cho bit thng tin y nht v cc qu trnh ang chy trn h thng. V d: # ps
PID 7813 7908 TTY TIME CMD pts/0 00:00:00 bash pts/0 00:00:00 ps

# (PID - ch s ca qu trnh, TTY - tn thit b u cui trn qu trnh c thc hin, TIME - thi gian chy qu trnh, CMD - lnh khi to qu trnh). C php lnh ps: ps [ty-chn] Lnh ps c mt lng qu phong ph cc ty chn c chia ra lm nhiu loi. Di y l mt s cc ty chn hay dng. Cc ty chn n gin: -A, -e : chn hin th tt c cc qu trnh. -T : chn hin th cc qu trnh trn trm cui ang chy. -a : chn hin th tt c cc qu trnh trn mt trm cui, bao gm c cc qu trnh ca nhng ngi dng khc. -r : ch hin th qu trnh ang c chy. Chn theo danh sch -C : chn hin th cc qu trnh theo tn lnh. -G : hin th cc qu trnh theo ch s nhm ngi dng. -U : hin th cc qu trnh theo tn hoc ch s ca ngi dng thc s (ngi dng khi ng qu trnh). -p : hin th cc qu trnh theo ch s ca qu trnh. -s : hin th cc qu trnh thuc v mt phin lm vic. -t : hin th cc qu trnh thuc mt trm cui. -u : hin th cc qu trnh theo tn v ch s ca ngi dng hiu qu.

9 9

Thit t khun dng c a ra ca cc qu trnh -f : hin th thng tin v qu trnh vi cc trng sau UID - ch s ngi dng, PID - ch s qu trnh, PPID - ch s qu trnh khi to ra qu trnh, C - , STIME - thi gian khi to qu trnh, TTY - tn thit b u cui trn qu trnh c chy, TIME - thi gian thc hin qu trnh, CMD - lnh khi to qu trnh -l : hin th y cc thng tin v qu trnh vi cc trng F, S, UID, PID, PPID, C, PRI, NI, ADDR, SZ, WCHAN, TTY, TIME, CMD -o xu-chn : hin th cc thng tin v qu trnh theo dng do ngi dng t chn thng qua xu-chn cc k hiu iu khin hin th c cc dng nh sau: %C, %cpu % CPU c s dng cho qu trnh %mem % b nh c s dng chy qu trnh %G tn nhm ngi dng %P ch s ca qu trnh cha khi ng ra qu trnh con %U nh danh ngi dng %c lnh to ra qu trnh %p ch s ca qu trnh %x thi gian chy qu trnh %y thit b u cui trn qu trnh c thc hin V d, mun xem cc thng tin nh tn ngi dng, tn nhm, ch s qu trnh, ch s qu trnh khi to ra qu trnh, tn thit b u cui, thi gian chy qu trnh, lnh khi to qu trnh, hy g lnh: # 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. Hy qu trnh vi lnh kill Trong mt s trng hp, s dng lnh kill hy b mt qu trnh. iu quan trng nht khi s dng lnh kill l phi xc nh c ch s ca qu trnh m chng ta mun hy. C php lnh: kill [ty-chn] <ch-s-ca-tin-trnh> kill -l [tn hiu] Lnh kill s gi mt tn hiu n qu trnh c ch ra. Nu khng ch ra mt tn hiu no th ngm nh l tn hiu TERM s c gi. -s : xc nh tn hiu c gi. Tn hiu c th l s hoc tn ca tn hiu. Di y l mt s tn hiu hay dng: S Tn ngha 1 SIGHUP (hang up) y l tn hiu c gi n tt c cc qu trnh ang chy trc khi logout khi h thng 2 SIGINT (interrupt) y l tn hiu c gi khi nhn 1 0

CTRL+c SIGKILL (kill) tn hiu ny s dng qu trnh ngay lp tc SIGTERM tn hiu ny yu cu dng qu trnh ngay lp tc, nhng cho php chng trnh xa cc file tm. -p : lnh kill s ch a ra ch s ca qu trnh m khng gi mt tn hiu no. -l : hin th danh sch cc tn hiu m lnh kill c th gi n cc qu trnh (cc tn hiu 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 ngng hot ng mt thi gian vi lnh sleep Nu mun cho my ngh mt thi gian m khng mun tt v ngi khi ng li th cn dng lnh sleep. C php: sleep [ty-chn] NUMBER[SUFFIX] NUMBER: s giy(s) ngng hot ng. SUFFIX : c th l giy(s) hoc pht(m) hoc gi hoc ngy(d) 1 0

Cc ty chn: --help : hin th tr gip v thot --version : hin th thng tin v phin bn v thot 4.2.5. Xem cy qu trnh vi lnh pstree bit lnh xem cc qu trnh ang chy trn h thng, tuy nhin trong Linux cn c mt lnh cho php c th nhn thy mc phn cp ca cc qu trnh, l lnh pstree. C php lnh: pstree [ty-chn] [pid | ngi-dng] Lnh pstree s hin th cc qu trnh ang chy di dng cy qu trnh. Gc ca cy qu trnh thng l init. Nu a ra tn ca mt ngi dng th cy ca cc qu trnh do ngi dng s hu s c a ra. pstree thng gp cc nhnh qu trnh trng nhau vo trong du ngoc vung, v d: init -+-getty |-getty |-getty |-getty thnh init ---4*[getty] -a : ch ra tham s dng lnh. Nu dng lnh ca mt qu trnh c tro i ra bn ngoi, n c a vo trong du ngoc n. -c : khng th thu gn cc cy con ng nht. Mc nh, cc cy con s c thu gn khi c th -h : hin th qu trnh hin thi v "t tin" ca n vi mu sng trng -H : ging nh ty chn -h, nhng qu trnh con ca qu trnh hin thi khng c mu sng trng -l : hin th dng di. -n : sp xp cc qu trnh cng mt t tin theo ch s qu trnh thay cho sp xp 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. Lnh thit t li u tin ca qu trnh nice v lnh renice Ngoi cc lnh xem v hy b qu trnh, trong Linux cn c hai lnh lin quan n u tin ca qu trnh, l lnh nice v lnh renice. chy mt chng trnh vi u tin nh trc, hy s dng lnh nice. C php lnh: nice [ty-chn] [lnh [tham-s ]... ] Lnh nice s chy mt chng trnh (lnh) theo u tin sp xp. Nu khng c lnh, mc u tin hin ti s hin th. u tin c sp xp t -20 (mc u tin cao nht) n 19 (mc u tin thp nht). -ADJUST : tng u tin theo ADJUST u tin --help : hin th trang tr gip v thot thay i u tin ca mt qu trnh ang chy, hy s dng lnh renice. C php lnh: renice <-u-tin> [ty-chn] Lnh renice s thay i mc u tin ca mt hoc nhiu qu trnh ang chy. -g : thay i quyn u tin theo nhm ngi dng -p : thay i quyn u tin theo ch s ca qu trnh -u : thay i quyn u tin theo tn ngi dng V d: # renice +1 987 -u daemon root -p 32

1 0

lnh trn s thay i mc u tin ca qu trnh c ch s l 987 v 32, v tt c cc qu trnh do ngi dng daemon v root s hu.

1 0

CHNG 5. QUN L TI KHON NGI DNG


Chng ny cung cp mt s cng c hu ch trong Linux qun l cc ti khon ngi dng trn h thng.

5.1 Ti khon ngi dng


Nh bit, trong h iu hnh a ngi dng, cn phn bit ngi dng khc nhau do quyn s hu cc ti nguyn trong h thng, chng hn nh, mi ngi dng c quyn hn vi file, qu trnh ca ring h. iu ny vn rt quan trng thm ch c khi my tnh ch c mt ngi s dng ti mt thi im. Mi truy cp h thng Linux u thng qua ti khon ngi dng. V th, mi ngi s dng c gn vi tn duy nht ( c ng k) v tn c s dng ng nhp. Tuy nhin mt ngi dng thc s c th c nhiu tn ng nhp khc nhau. Ti khon ngi dng c th hiu l tt c cc file, cc ti nguyn, v cc thng tin thuc v ngi dng . Khi ci t h iu hnh Linux, ng nhp root s c t ng to ra. ng nhp ny c xem l thuc v siu ngi dng (ngi dng cp cao, ngi qun tr), v khi ng nhp vi t cch ngi dng root, c th lm bt c iu g mun trn h thng. Tt nht ch nn ng nhp root khi thc s cn thit, v hy ng nhp vo h thng vi t cch l mt ngi dng bnh thng. Ni dung chng ny gii thiu cc lnh to mt ngi dng mi, thay i thuc tnh ca mt ngi dng cng nh xa b mt ngi dng. Lu , ch c th thc hin c cc lnh trn nu c quyn ca mt siu ngi dng.

5.2 Cc lnh c bn qun l ngi dng


Ngi dng c qun l thng qua tn ngi dng (thc ra l ch s ngi dng). Nhn h thng qun l ngi dng theo ch s, v vic qun l theo ch s s d dng v nhanh thng qua mt c s d liu lu tr cc thng tin v ngi dng. Vic thm mt ngi dng mi ch c th thc hin c nu ng nhp vi t cch l siu ngi dng. to mt ngi dng mi, cn phi thm thng tin v ngi dng vo trong c s d liu ngi dng, v to mt th mc c nhn cho ring ngi dng . iu ny rt cn thit thit lp cc bin mi trng ph hp cho ngi dng. Lnh chnh thm ngi dng trong h thng Linux l useradd (hoc adduser). 5.2.1 File /etc/passwd Danh sch ngi dng cng nh cc thng tin tng ng c lu tr trong file /etc/passwd. V d di y l ni dung ca file /etc/passwd:
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

Mi dng trong file tng ng vi by trng thng tin ca mt ngi dng, v cc trng ny c ngn cch nhau bi du ':'. ngha ca cc trng thng tin ln lt nh sau: 1 0

Tn ngi dng (username) Mt khu ngi dng (passwd - c m ha) Ch s ngi dng (user id) Cc ch s nhm ngi dng (group id) Tn y hoc cc thng tin khc v ti khon ngi dng (comment) Th mc ngi dng ng nhp Shell ng nhp (chng trnh chy lc ng nhp) Bt k ngi dng no trn h thng u c th c c ni dung file /etc/passwd, v c th ng nhp vi t cch ngi dng khc nu h bit c mt khu, y chnh l l do v sao mt khu ng nhp ca ngi dng khng hin th trong ni dung file. 5.2.2 Thm ngi dng vi lnh useradd Siu ngi dng s dng lnh useradd to mt ngi dng mi hoc cp nht ngm nh cc thng tin v ngi dng. C php lnh: useradd [ty-chn] <tn-ngi-dng> useradd -D [ty-chn] Nu khng c ty chn -D, lnh useradd s to mt ti khon ngi dng mi s dng cc gi tr c ch ra trn dng lnh v cc gi tr mc nh ca h thng. Ti khon ngi dng mi s c nhp vo trong cc file h thng, th mc c nhn s c to, hay cc file khi to c sao chp, iu ny ty thuc vo cc ty chn c a ra. Cc ty chn nh sau: -c, comment : son tho trng thng tin v ngi dng. -d, home_dir : to th mc ng nhp cho ngi dng. -e, expire_date : thit t thi gian (YYYY-MM-DD) ti khon ngi dng s b hy b. -f, inactive_days : ty chn ny xc nh s ngy trc khi mt khu ca ngi dng ht hiu lc khi ti khon b hy b. Nu =0 th hy b ti khon ngi dng ngay sau khi mt khu ht hiu lc, =-1 th ngc li (mc nh l -1). -g, initial_group : ty chn ny xc nh tn hoc s khi to ng nhp nhm ngi dng. Tn nhm phi tn ti, v s ca nhm phi tham chiu n mt nhm tn ti. S nhm ngm nh l 1. -G, group : danh sch cc nhm ph m ngi dng cng l thnh vin thuc cc nhm . Mi nhm s c ngn cch vi nhm khc bi du ',', mc nh ngi dng s thuc vo nhm khi to. -m : vi ty chn ny, th mc c nhn ca ngi dng s c to nu n cha tn ti. -M : khng to th mc ngi dng. -n : ngm nh khi thm ngi dng, mt nhm cng tn vi ngi dng s c to. Ty chn ny s loi b s ngm nh trn.// -p, passwd : to mt khu ng nhp cho ngi dng.// -s, shell : thit lp shell ng nhp cho ngi dng. -u, uid : thit t ch s ngi dng, gi tr ny phi l duy nht. Thay i cc gi tr ngm nh 1 0

Khi ty chn -D c s dng, lnh useradd s b qua cc gi tr ngm nh v cp nht cc gi tr mi. -b, default_home : thm tn ngi dng vo cui th mc c nhn to tn th mc c nhn mi. -e, default_expire_date : thay i thi hn ht gi tr ca ti khon ngi dng. -f, default_inactive : xc nh thi im ht hiu lc ca mt khu ng nhp khi ti khon ngi dng b xa b. -g, default_group : thay i ch s nhm ngi dng. -s, default_shell : thay i shell ng nhp. Ngoi lnh useradd, c th to ngi dng mi bng cch sau: Son tho file /etc/passwd bng vipw. Lnh vipw m trnh son tho trn h thng v hiu chnh bn sao tm ca file /etc/passwd. Vic s dng file tm v kha file s c tc dng nh mt c ch kha ngn vic hai ngi dng cng son tho file mt lc. Lc s thm dng thng tin mi v ngi dng cn to. Hy cn thn trong vic son tho trnh nhm ln. Ring trng mt khu nn trng v to mt khu sau. Khi file ny c lu, vipw s kim tra s ng nht trn file b thay i. Nu tt c mi th dng nh thch hp th c ngha l file /etc/passwd c cp nht. V d: thm ngi dng c tn l new, ch s ngi dng 503, ch s nhm l 100, th mc c nhn l /home/new v shell ng nhp 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

To th mc c nhn ca ngi dng mi vi lnh mkdir # mkdir /home/new Sao chp cc file t th mc /etc/skel/ (y l th mc lu tr cc file cn thit cho ngi dng) vo file c nhn va to Thay i quyn s hu v cc quyn truy nhp file /home/new vi cc lnh chown v chmod # chown new /home/new # chmod go=u,go-w /home/new Thit lp mt khu ca ngi dng vi lnh passwd # passwd new passwd: Sau khi thit lp mt khu cho ngi dng bc cui cng, ti khon ngi dng s lm vic. Nn thit lp mt khu ngi dng bc cui cng, nu khng h c th v tnh ng nhp trong khi ang sao chp cc file. 1 0

5.2.3 Thay i thuc tnh ngi dng Trong Linux c rt nhiu lnh cho php thay i mt s cc thuc tnh ca ti khon ngi dng nh: chfn: thay i thng tin c nhn ca ngi dng. chsh: thay i shell ng nhp. passwd: thay i mt khu. Mt s cc thuc tnh khc s phi thay i bng tay. V d, thay i tn ngi dng, cn son tho li trc tip trn file /etc/passwd (vi lnh vipw). Nhng c mt lnh tng qut cho php c th thay i bt k thng tin no v ti khon ngi dng, l lnh usermod. C php lnh: usermod [ty-chn] <tn-ng-nhp> Lnh usermod sa i cc file ti khon h thng theo cc thuc tnh c xc nh trn dng lnh. Cc ty chn ca lnh: -c, comment : thay i thng tin c nhn ca ti khon ngi dng. -d, home_dir : thay i th mc c nhn ca ti khon ngi dng. -e, expire_date : thay i thi im ht hn ca ti khon ngi dng (YYYY-MM-DD). -f, inactive_days : thit t s ngy ht hiu lc ca mt khu trc khi ti khon ngi dng ht hn s dng. -g, initial_group : ty chn ny thay i tn hoc s khi to ng nhp nhm ngi dng. Tn nhm phi tn ti, v s ca nhm phi tham chiu n mt nhm tn ti. S nhm ngm nh l 1. -G, group : thay i danh sch cc nhm ph m ngi dng cng l thnh vin thuc cc nhm . Mi nhm s c ngn cch vi nhm khc bi du ',' mc nh ngi dng s thuc vo nhm khi to. -l, login_name : thay i tn ng nhp ca ngi dng. Trong mt s trng hp, tn th mc ring ca ngi dng c th s thay i tham chiu n tn ng nhp mi. -p, passwd : thay i mt khu ng nhp ca ti khon ngi dng. -s, shell : thay i shell ng nhp. -u, uid : thay i ch s ngi dng. Lnh usermod khng cho php thay i tn ca ngi dng ang ng nhp. Phi m bo rng ngi dng khng thc hin bt k qu trnh no trong khi lnh usermod ang thc hin thay i cc thuc tnh ca ngi dng . V d mun thay i tn ngi dng new thnh tn mi l newuser, hy g lnh sau: # usermod -l new newuser 5.2.4 Xa b mt ngi dng (lnh userdel) xa b mt ngi dng, trc ht phi xa b mi th c lin quan n ngi dng . Lnh hay c dng xa b mt ti khon ngi dng l lnh userdel vi c php: userdel [-r] <tn-ngi-dng> 1 0

Lnh ny s thay i ni dung ca cc file ti khon h thng bng cch xa b cc thng tin v ngi dng c a ra trn dng lnh. Ngi dng ny phi thc s tn ti. Tu chn -r c ngha: -r : cc file tn ti trong th mc ring ca ngi dng cng nh cc file nm trong cc th mc khc c lin quan n ngi dng b xa b cng lc vi th mc ngi dng. Lnh userdel s khng cho php xa b ngi dng khi h ang ng nhp vo h thng. Phi hy b mi qu trnh c lin quan n ngi dng trc khi xo b ngi dng . Ngoi ra cng c th xa b ti khon ca mt ngi dng bng cch hiu chnh li file /etc/passwd.

5.3 Cc lnh c bn lin quan n nhm ngi dng


Mi ngi dng trong h thng Linux u thuc vo mt nhm ngi dng c th. Tt c nhng ngi dng trong cng mt nhm c th cng truy nhp mt trnh tin ch, hoc u cn truy cp mt thit b no nh my in chng hn. Mt ngi dng cng lc c th l thnh vin ca nhiu nhm khc nhau, tuy nhin ti mt thi im, ngi dng ch thuc vo mt nhm c th. Nhm c th thit lp cc quyn truy nhp cc thnh vin ca nhm c th truy cp thit b, file, h thng file hoc ton b my tnh m nhng ngi dng khc khng thuc nhm khng th truy cp c. 5.3.1 Nhm ngi dng v file /etc/group Thng tin v nhm ngi dng c lu trong file /etc/group, file ny c cch b tr tng t nh file /etc/passwd. V d ni dung ca 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:

Mi dng trong file c bn trng c phn cch bi du ':'. ngha ca cc trng theo th t xut hin nh sau: Tn nhm ngi dng (groupname) Mt khu nhm ngi dng (passwd - c m ha), nu trng ny rng, tc l nhm khng yu cu mt khu Ch s nhm ngi dng (group id) Danh sch cc ngi dng thuc nhm (users)

1 0

5.3.2 Thm nhm ngi dng Cho php hiu chnh thng tin trong file /etc/group bng bt k trnh son tho vn bn no c trn h thng ca thm nhm ngi dng, nhng cch nhanh nht l s dng lnh groupadd. C php lnh : groupadd [ty-chn] <tn-nhm> Cc tu chn l: -g, gid : ty chn ny xc nh ch s nhm ngi dng, ch s ny phi l duy nht. Ch s mi phi c gi tr ln hn 500 v ln hn cc ch s nhm c trn h thng. Gi tr t 0 n 499 ch dng cho cc nhm h thng. -r : ty chn ny c dng khi mun thm mt ti khon h thng. -f : ty chn ny s b qua vic nhc nh, nu nhm ngi dng tn ti, n s b ghi . V d: Thm nhm ngi dng bng cch son tho file /etc/group:
installer:x:102:hieu, huy, sang tiengviet:x:103:minh, long, dung

Hai dng trn s b sung hai nhm ngi dng mi cng danh sch cc thnh vin trong nhm: nhm installer vi ch s nhm l 102 v cc thnh vin l cc ngi dng c tn hieu, huy, sang. Tng t l nhm tiengviet vi ch s nhm l 103 v danh sch cc thnh vin l minh, long, dung. y l hai nhm (102, 103) ngi dng h thng. Thm nhm ngi dng mi vi lnh groupadd: # groupadd -r installer Lnh trn s cho php to mt nhm ngi dng mi c tn l installer, tuy nhin cc thnh vin trong nhm s phi b sung bng cch son tho file /etc/group. 5.3.3 Sa i cc thuc tnh ca mt nhm ngi dng (lnh groupmod) Trong mt s trng hp cn phi thay i mt s thng tin v nhm ngi dng bng lnh groupmod vi c php nh sau: groupmod [ty-chn] <tn-nhm> Thng tin v cc nhm xc nh qua tham s tn-nhm c iu chnh. Cc ty chn ca lnh: -g, gid : thay i gi tr ch s ca nhm ngi dng. -n, group_name : thay i tn nhm ngi dng. 5.3.4 Xa mt nhm ngi dng (lnh groupdel) Nu khng mun mt nhm no tn ti na th ch vic xa tn nhm trong file /etc/group. Nhng phi lu rng, ch xa c mt nhm khi khng c ngi dng no thuc nhm na. Ngoi ra c th s dng lnh groupdel xa mt nhm ngi dng. C php lnh: groupdel <tn-nhm>

1 1

Lnh ny s sa i cc file ti khon h thng, xa tt c cc thc th lin quan n nhm. Tn nhm phi thc s tn ti.

5.4 Cc lnh c bn khc c lin quan n ngi dng


Ngoi cc lnh nh thm ngi dng, xa ngi dng ..., cn c mt s lnh khc c th gip ch rt nhiu nu ang lm vic trn mt h thng a ngi dng. 5.4.1 ng nhp vi t cch mt ngi dng khc khi dng lnh su i lc mun thc hin lnh nh mt ngi dng khc v s dng cc file hay thit b thuc quyn s hu ca ngi dng . Lnh su cho php thay i tn ngi dng mt cch hiu qu v cp cho cc quyn truy nhp ca ngi dng . C php lnh: su <ngi-dng> Nu ng nhp vi t cch ngi dng bnh thng v mun tr thnh siu ngi dng (root) dng lnh sau: # su root Khi h thng s yu cu nhp mt khu ca siu ngi dng. Nu cung cp ng mt m, th s l ngi dng root cho ti khi dng lnh exit hoc CTRL+d ng xut ra khi ti khon ny v tr v ng nhp ban u. Tng t, nu ng nhp vi t cch root v mun tr thnh ngi dng bnh thng c tn l newer th hy g lnh sau: # su newer s khng b hi v mt khu khi thay i t siu ngi dng sang mt ngi dng khc. Tuy nhin nu ng nhp vi t cch ngi dng bnh thng v mun chuyn i sang mt ng nhp ngi dng khc th phi cung cp mt khu ca ngi dng . 5.4.2 Xc nh ngi dng ang ng nhp (lnh who) * Lnh who l mt lnh n gin, cho bit c hin ti c nhng ai ang ng nhp trn h thng vi c php nh sau: who [ty-chn] Cc tu chn l: -H, --heading : hin th tiu ca cc ct trong ni dung lnh. -m : hin th tn my v tn ngi dng vi thit b vo chun. -q, --count : hin th tn cc ngi dng ng nhp v s ngi dng ng nhp. V d: # who
root tty1 Nov 15 03:54 lan pts/0 Nov 15 06:07

# Lnh who hin th ba ct thng tin cho tng ngi dng trn h thng. Ct u l tn ca ngi dng, ct th hai l tn thit b u cui m ngi dng ang s dng, ct th ba hin th ngy gi ngi dng ng nhp. Ngoi who, c th s dng thm lnh users xc nh c nhng ngi ng nhp trn h thng. 1 1

V d: # users
lan root

# * Trong trng hp ngi dng khng nh ni tn ng nhp trong mt phin lm vic (iu ny nghe c v nh hi v l nhng l tnh hung i lc gp phi), hy s dng lnh whoami v who am i. C php lnh: whoami hoc who am i V d: # whoami
lan

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

# Lnh who am i s hin kt qu y hn vi tn my ng nhp, tn ngi dng ang ng nhp, tn thit b v ngy gi ng nhp. * C mt cch khc xc nh thng tin ngi dng vi lnh id C php lnh: id [ty-chn] [ngi-dng] Lnh ny s a ra thng tin v ngi dng c xc nh trn dng lnh hoc thng tin v ngi dng hin thi. Cc tu chn l: -g, --group : ch hin th ch s nhm ngi dng. -u, --user : ch hin th ch s ca ngi dng. --help : hin 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 tin hnh (lnh w) Lnh w cho php xc nh c thng tin v cc qu trnh ang c thc hin trn h thng v nhng ngi dng tin hnh qu trnh . C php lnh: w [ngi-dng] Lnh w a ra thng tin v ngi dng hin thi trn h thng v qu trnh h ang thc hin. Nu ch ra ngi dng trong lnh th ch hin ra cc qu trnh lin quan n ngi 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. TRUYN THNG V MNG UNIX-LINUX


6.1. Lnh truyn thng
6.1.1. Lnh write Lnh write c dng trao i gia nhng ngi hin ang cng lm vic trong h thng. Thng thng, mt ngi dng mun lin h vi ngi dng khc, cn s dng lnh who: $who hin 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 ngi dng, s hiu terminal, ngy gi vo h thng. Sau s dng lnh write chuyn thng bo cho nhau. $write <tn ngi dng> [<tn trm cui>] cn gi thng bo n ngi dng user1 c tn user2 s g: $write user2 tty43 Nu ngi dng user2 hin khng lm vic th trn mn hnh ngi dng user1 s hin ra: "user2 is not logged in" v hin li du mi shell. Nu ngi dng user2 ang lm vic, my ngi dng user2 s pht ra ting chung v trn mn hnh hin ra: Message from user1 on tty17 at <gi, pht> Cng lc , ti my ca user1 mn hnh trng hin nhng thng tin gi ti ngi dng user2. Ngi gi g thng bo ca mnh theo quy tc: - Kt thc mt dng bng cm -o, - Kt thc dng cui cng (ht thng bo) bng cm -oo. kt thc kt ni vi ngi dng user2, ngi dng user1 g ctrl-d. t chi mi vic nhn thng bo t ngi khc, s dng lnh khng nhn thng bo: $mesg n (n - no) Mt ngi khc gi thng bo n ngi ny s nhn c vic truy nhp khng cho php permission denied. tip tc cho php ngi khc gi thng bo n, s dng lnh: $mesg y (y - yes) 6.1.2. Lnh mail Lnh mail cho php gi th in t gia cc ngi dng, song hot ng theo ch off-line (gin tip). Khi dng lnh write truyn thng cho nhau th i hi hai ngi gi v nhn ng thi ang lm vic v cng chp nhn cuc trao i . Cch thc s dng mail l khc hn: mt trong hai ngi gi hoc nhn c th khng ng nhp vo h thng. m bo cch thc truyn thng gin tip (cn gi l off-line) nh vy, h thng to ra cho mi ngi dng mt hp th ring. Khi mt ngi dng lnh mail gi th n mt ngi khc th th c t ng cho vo hp th ca ngi nhn v ngi nhn sau cng dng lnh mail xem trong hp th c th mi hay khng. Khng nhng th mail cn cho php s dng trn mng internet (a ch mail thng di dng tnlogin@my.mng.lnh-vc.quc-gia).

1 1

Lnh mail ch yu cu ngi gi (hoc ngi nhn) login trong h thng. Vic nhn v gi th c tin hnh t mt ngi dng. Th gi i cho ngi dng khc, c lu ti hp th ca h thng. - Ti thi im login h thng, ngi dng c th thy c c th mi khi trn mn hnh xut hin dng thng bo "you have mail". Lnh mail trong UNIX gm 2 chc nng: gi th v qun l th. Tng ng, c hai ch lm vic vi lnh mail: mode lnh (command mode) qun tr th v mode son (compose mode) cho php to th. a/ Mode son Mode son lm vic trc tip vi mt th v gi ngay cho ngi khc. Mode son thc cht l s dng lnh mail c tham s: $mail tn_ngi_nhn> V d, $mail user2 Lnh ny cho php son v gi th cho ngi nhn c tn c ch. Sau khi g lnh, mn hnh b xa v con tr son tho nhp nhy gc trn, tri ngi dng g ni dung th. kt thc son th, hy g ctrl-d, mn hnh ca mail bin mt v du mi ca shell li xut hin. Ch : Dng sau y c dng gi th son trong ni dung mt file no (ch du "<" ch dn thit b vo chun l ni dung file thay v cho bn phm): $mail tn_ngi_nhn < tn_file_ni_dung_th V d, $ mail user2 < thu1 Ni dung th t File thu1 c gi cho ngi nhn user2, du mi ca shell li hin ra. Cch lm trn y hay c s dng trong gi / nhn th in t hoc lin kt truyn thng v cho php tit kim c thi gian kt ni vo h thng, c bit chi ph phi tr khi kt ni l ng k. b/ Mode lnh Nh ni s dng mode lnh ca mail qun l hp th. Vo mail theo mode lnh khi dng lnh mail khng tham s: $mail Sau khi g lnh, mn hnh mail mode lnh c hin ra vi du mi ca mode lnh. (ph bin l du chm hi "?") Ti y ngi dng s dng cc lnh ca mail qun l h thng th ca mnh. Cn tr gip g du chm hi (mn hnh c hai du ??): ? mn hnh hin ra dng sau: <s> Hin th s <s> (du cch) Hin th ngay pha trc + Hin th ngay tip theo l cmd thc hin lnh cmd dq xa th hin thi v ra khi mail m user gi th hin thi cho ngi dng s tn-file ghi th hin thi vo file c tn r [tn-file] tr li th hin thi (c th t file) d <s> xa th s u khi phc th hin thi u <s> khi phc th s m <user> ... chuyn tip th ti cc ngi dng khc q ra khi mail 1 1

Thc hin cc lnh theo ch dn trn y qun tr c hp th ca c nhn. 6.1.3. Lnh talk Trong Linux cho php s dng lnh talk thay th cho lnh write.

6.2 Cu hnh Card giao tip mng


cc my c th giao tip c vi nhau trong mng theo giao thc TCP/IP, thit b dng lm phng tin giao tip l Card giao tip mng (network card). qun l thit b ny Linux cung cp lnh ifconfig. Lnh ny dng xem cc thng tin v cu hnh mng hin thi ca my cng nh gn cc a ch cho cc card giao tip mng (interface). Ngoi ra ta cng c th dng lnh ny kch hot hoc tt mt card mng. /sbin/ifconfig <giao din> [ <a ch> ] [ arp | -arp][ broadcast <a ch>][netmask <mt n mng> ]

trong :
<giao din> tn ca thit b giao tip mng, chng hn eth0 cho card mng u tin, eth1 cho card mng th hai. <a ch> a ch mng s gn cho giao din ny. up tu chn ny s kch hot giao din c ch ra. down tu chn ny s tt giao din c ch ra. arp | -arp cho php hay cm giao thc ARP trn giao din ny. broadcast <a ch> xc nh a ch qung b cho giao din ny. netmask <mt n mng> xc nh mt n mng cho giao din ny. xem cu hnh ca my hin ti ta dng lnh # ifconfig V v d v kt 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 trng hp ny ta thy my hin ti c 2 card mng v c gn cc a ch tng ng nh trn. Mun ch xem cc thng tin v mt card mng no thi ta dng lnh: # ifconfig eth0 Mun kch hot mt card mng ta dng lnh # ifconfig eth0 up Mun tt mt card mng ta dng lnh # ifconfig eth0 down Mun t li a ch cho mt card mng ta dng lnh: # ifconfig eth0 203.162.9.154 netmask 255.255.255.248 Ngoi ra nu my tnh c ci giao din GNOME cng cc package qun l mng ca GNOME th ta c th s dng lnh c giao din ho gip cho vic cu hnh cc tham s card mng d dng hn. c cng c ny ta phi ci t package redhat-config-networkxxx.rpm trong xxx l s hiu phin bn ca chng trnh. Trong giao din ho GNOME ta nh lnh redhat-config-network, mt hp thoi s hin ln cho php ta thay i cc tham s cho tng card mng c ci trn my.

6.3. Cc dch v mng


6.3.1 H thng tin mng NIS Khi s dng h thng mng ni chung, mc ch ca chng ta l lm cho mi trng mng tr nn trong sut i vi ngi dng. Mt trong nhng im quan trng l lm cho cc d liu quan trng nh l thng tin v ngi dng, v cc trm trong mng l ng nht trn tt c cc trm lm vic. NIS (Network Information System) l mt ng dng cung cp cc tin ch truy nhp c s d liu phn phi thng tin, chng hn nh d liu trong /etc/passwd v /etc/group cho tt c cc my trm trn mng. iu ny lm cho mng tr nn mt h thng duy nht. NIS c xy dng trn vic s dng dch v RPC (Remote Procedure Call). N bao gm mt th vin my ch, th vin my trm v cc cng c qun tr. Ban u NIS c gi l nhng trang vng (Yellow Pages YP). Cng vi s pht 1 1

trin ca NIS m c s xut hin khc nhau trong cc phin bn. NIS truyn thng c xy dng trn th vin libc 4/5. NIS+ l s m rng ca NIS song vn h tr bo mt thng tin. NYS l mt phin bn chun h tr c NIS v NIS+. Hot ng ca NIS NIS lu tr c s d liu v thng tin qun tr mng trong cc file maps. Cc file ny c t trn mt NIS server trung tm, t cc NIS client c th truy nhp n cc thng tin thng qua dch v RPC. Cc file maps thng l cc file theo nh dng DMB, mt dng c s d liu n gin. Cc file maps c to ra t cc file vn bn nh /etc/hosts hay /etc/passwd. Mi file vn bn ny c th c nhiu file maps khc nhau ty thuc vo kha ca n. V d nu kha l tn my trm th ta c file hosts.byname, nu 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

Mi mt file maps c mt tn ngn hn nh i vi ngi dng gi l cc nickname. hin th danh sch cc nickname ta dng lnh 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 ca NIS thng c tn l ypserv. Trong cc mng c nh ta ch cn mt my lm my ch NIS. Mt min (domain) NIS l mt tp hp cc my trm c qun l bi mt my ch NIS. hin th v t tn cho mt min ta s dng lnh #domainname nis-domain Tn min NIS s cho bit my ch ca min no cc ng dng s truy cp nhn thng tin cn thit. bit c my ch no trong mng l NIS server, cc chng trnh ng dng phi hi ypbind, mt chng trnh chy ngm c nhim v pht hin cc NIS server trn mng. N s pht cc gi tin qung b tm cc my ch NIS trn mng hoc s dng cc thng tin trong cc file cu hnh ngi qun tr cung cp.

1 1

Ci t v cu hnh cho my ch NIS Vi NIS ta c khi nim my ch NIS chnh v my ch NIS ph, mt min ch c th c mt my ch NIS chnh. Khi trong mng c nhiu my trm lm vic, mt my ch NIS c th b qu ti, hoc khi c s c th ton b h thng mng s khng th hot ng c. Cc my ch NIS ph s gip gii quyt vn ny. Vic ci t cc my ch NIS ph ch khc my ch NIS chnh ch to ra cc file map. Chng khng c to ra bng makedbm m c ly v t my ch chnh. By gi ta tm hiu cch ci t my ch NIS chnh. Trc tin ta phi ci t phn mm ypserv ln my tnh. Chng trnh s nm trong package ypserv-xxx.rpm. Ta c th ci t bng lnh: #rpm -ivh ypserv-xxx.rpm #mkdir /var/yp/nis-domain to cc file c s d liu ta s dng chng trnh makedbm. Do phi m bo chng trnh c ci trn my, vic to lp s c tin hnh thng qua mt makefile. Trong file ny s cha cc lnh cn thit to ra file maps. Sau khi ci t phn mm ta dng lnh make: #domainname nis-domain #cd /var/yp #make Cc file map khng t ng cp nht mi khi ta sa thng tin qun tr. Do vy mi khi c s thay i, ta cn thc hin li lnh make cp nht s sa i. Ci t cc my trm NIS Trc tin ta cn ci t phn mm ypbind ln my trm bng lnh: #rpm -ivh ypbind-xxx.rpm Bc tip theo l ch ra tn ca my ch v tn min NIS m trm ny s s dng bng cch thay i thng tin trong file /etc/yp.conf nh sau:

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


Dng u tin cho bit my trm ny thuc vo min NIS c tn l nis-domain. Nu khng c dng lnh ny th ta c th ch ra bng cch nh lnh domainname ti du nhc dng lnh. Dng th 2 ch ra tn my ch NIS. a ch IP ca tn my ch ny phi xut hin trong file /etc/hosts. Hoc ta c th s dng a ch IP ngay trn dng ny. Khi ta s dng my tnh thng xuyn phi thay i min NIS, ta c th ch ra nhiu min NIS v cc my ch tng ng vi n bng lnh server. File cu hnh di y cho php thc hin iu :

#yp.conf
server ln-server1 domainname1 server ln-server2 domainname2 Khi mun s dng mt min khc th ta ch cn nh li lnh domainname xc nh min ta tng ng.

1 1

Sau khi to ra cc file cu hnh c bn, ta nn kim tra xem chng trnh ypbind hot ng hay cha. Trc ht, khi ng ypbind, sau dng tin ch ypcat ly thng tin qun l bi NIS server. xem thng tin v a ch IP ca cc trm ta dng lnh: #ypbind #ypcat hosts.byname 192.168.50.1 may1 192.168.50.1 may2 .... Nu ta khng nhn c kt qu nh trn hoc ta nhn c mt thng bo li cant bind to servers domain, c ngha l h thng NIS hot ng cha tt, ta c th kim tra xem tn min v tn my ch trong file yp.conf chnh xc cha v sau ping my ch. Nu my ch hot ng ta kim tra xem s hot ng ca ypserv bng lnh rpcinfo: #rpcinfo u serverhost ypserv program 10004 version 2 ready and waiting Nu ta nhn c thng bo nh trn l ypserv ang hot ng tt. La chn cc file map Khi s dng NIS ta cn xc nh nhng file cu hnh no ca cc my trm s c thay th bi NIS. Thng thng NIS c s dng tra cu cc thng tin v my trm v ti khon ngi dng. Mc d ta s dng NIS nh l mt h qun tr tp trung, h thng ny vn cho php cc my trm lm vic c quyn t do la chn s dng cc file cu hnh cc b hoc s dng t NIS server. Th t c ch ra trong file /etc/nsswitch.conf. V d sau cho bit th t s dng dch v ca cc hm gethostbyname(), gethostbyaddr() v getservbyname(). Cc dch v c lit k trc s c s dng, nu khng thnh cng th s dng dch v sau .

#nsswitch.conf
hosts: nis dns files services files nis Di y l danh sch cc dch v c th s dng trong file /etc/nsswitch.conf. Cc file, chng trnh c th c s dng s ph thuc vo tng loi dch v: nisplus hay nis+: s dng NIS+ server cho min NIS hin thi. Tn ca server c ch ra trong file /etc/nis.conf. nis: s dng NIS server cho domain hin thi. Tn ca server c ch ra trong file /etc/yp.conf. Vi thnh phn hosts, cc file map l hosts.byname v hosts.byaddr s c s dng. dns: s dng DNS server, dch v ny c s dng cho mnh thnh phn hosts. Tn ca my ch c t trong file /etc/resolv.conf. files: s dng cc file cu hnh cc b, v d: /etc/passwd cho thnh phn passwd. dbm: tm thng tin trong cc file c s d liu /var/dbm. Tn ca cc file l tn ca cc file map tng ng ca dch v NIS. Cc thnh phn c h tr hin thi ca NYS l: hosts, networks, passwd, group, shadow, services, protocols, rpc, v mt s file khc. Nu c t kha [NOTFOUND=return] trong cc thnh phn ca file nsswitch.conf, NIS s thot ra ngay m khng s dng tip cc dch v sau trong trng hp n khng tm thy thng tin dch v trc . Ch khi no dch v trc b li, NIS mi dng tip dch v

1 2

sau. Trong v d di NIS ch s dng cc file cc b khi khi ng hoc DNS, NIS server b hng.

#/ect/nsswitch.conf
hosts: nis dns [NOTFOUND=return] files network: nis [NOTFOUND=return] files services: file nis protocol: files nis rpc: files nis S dng cc file map passwd v group Mt trong nhng ng dng chnh ca NIS l ng b thng tin v cc ti khon ca ngi s dng trn tt c cc my trm trong min NIS. Khi thng tin v ngi dng trn trm c lit k mt phn nh trong /etc/passwd, phn cn li c lu trong file map passwd.byname. Vic chn nis trong file /etc/nsswitch.conf cha NIS c th hot ng. Khi s dng ti khon ca ngi dng c cung cp bi NIS, trc tin phi m bo s hiu ca ngi dng trong file passwd phi trng vi s hiu ca ngi dng trn NIS. Nu s hiu ngi dng, s hiu nhm ca ngi dng khc vi thng tin trong min NIS, ta cn sa li cho trng nhau. Trc tin ta thay i s hiu ngi dng (uid) v s hiu nhm (gid) trong file /etc/passwd v /etc/group trn trm cc b sang cc gi tr mi ca NIS. Sau i quyn s hu ca tt c cc file bng cch thay i s hiu uid v gid c sang uid v gid mi. Gi s ngi dng anhnv c s hiu uid l 501, thuc nhm sinhvien c gid l 423, ta sa i quyn s hu 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 thc hin cc cng vic trn s hiu uid v gid ca mt ngi dng trn my trm s ng nht vi NIS. Bc tip theo l sa i file /etc/nsswitch.conf nh sau:

#/etc/nsswitch.conf
passwd: nis files group: nis files File trn quy nh lnh login v cc lnh thuc h ny s truy vn NIS server khi mt ngi dng mun truy nhp, nu khng tm thy n s tm tip n cc file cc b. Thng thng ta loi b hu ht ngi dng khi cc file cc b, ch gi li root hoc cc ti khon chung nh mail, news, cho mt s tc v cn chuyn i s hiu uid sang tn v ngc li. V d trong chng trnh qun l cng vic cron s dng lnh su tm tr thnh news. Nu news khng c trong /etc/passwd, chng trnh trn s khng thc hin c. Khi ngi dng mun thay i mt khu, h khng th dng lnh passwd nh khi cha c NIS. Lnh passwd ch c tc dng sa i cc file cu hnh cc b. NIS cung cp mt cng c l yppasswd, n khng nhng cho php sa i mt khu ngi dng trn NIS m cn thay i cc thuc tnh khc nh shell Chng trnh ny c thc hin khi khi ng h thng bng cch chy thm dch v rpc.yppasswd. V thi quen ngi dng c th

1 2

g lnh passwd khi mun thay i mt khu. Gii php y l thay i passwd bng mt lin kt n yppasswd. #cd /bin #mv passwd passwd.old #ln yppasswd passwd

6.4 H thng file trn mng


Linux c dch v chia s file trn mng my tnh. Khi ta mun c kh nng cc my Linux c th chia s ti nguyn l cc file vi nhau, dch v NFS s cung cp kh nng ny. Dch v ny cho php chia s file cho cc ngi dng trn mng LAN, cc file ny c kh nng xut hin i vi cc ngi dng nh l cc file trn my ca mnh. 6.4.1 Ci t NFS ci t dch v ny ta cn chun b mt package l nfs-utils-xxx.rpm trong xxx l s hiu phin bn. ng nhp vi quyn root v s dng lnh: # rpm ivh nfs-utils-xxx.rpm Nu khng c li thng bo li th vic ci t thnh cng. NFS s dng th tc RPC (Remote Procedure Calls) gi v nhn yu cu gia cc my ch v my trm trn mng, do vy dch v nh x cng portmap (dch v qun l cc yu cu RPC) phi c khi ng trc. Trn my ch NFS d nh s chia s cc file d liu phi khi ng hai dch v nfs v portmap bng lnh: # service nfs start # service portmap start NFS hot ng th ta cn phi khi ng cc dch v sau: Portmapper: tin trnh ny khng lm vic trc tip vi NFS m tham gia qun l cc yu cu RPC t my trm gi n. Mountd: tin trnh ny s nh x cc file trn my ch ti cc th mc trn my trm yu cu. N s hu b nh x ny nu c lnh umount t my trm. Nfs: l tin trnh chnh thc hin cc nhim v ca giao thc NFS. N c nhim v cung cp cho cc my trm cc th mc hoc file c yu cu. Ta c th kim tra cc thng tin v cc dch v NFS bng lnh: #rpcinfo -p Ta s thu c kt 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 Khi ng v dng NFS Vic khi ng dch v NFS cng kh n gin v c gii thiu trn bng cch khi ng portmap v nfs. # service nfs start hoc #/etc/init.d/nfs start Vic dng (tt) dch v ny cng kh n gin, ta dng lnh sau: #service nfs stop hoc #/etc/init.d/nfs stop Ta c th t cho dch v ny c t ng khi ng khi ta khi ng my tnh bng cch dng lnh: #setup

Hnh t cc ng dng t khi ng khi Linux khi ng Sau chn System services, tip ta s nhn c mt danh sch cc dch v hin ang c trong h thng. Mun cho dch v no c t ng khi ng ta ch cn chn dch v , y ta chn dch v c tn nfs. Chn OK v cui cng chn Quit. 6.4.3 Cu hnh NFS server v Client Cu hnh nfs ta ch cn sa file /etc/exports, y l file cha danh sch cc th mc c chia s cho cc my khc. N cng ng thi cha danh sch cc my trm c quyn c truy cp v quyn truy cp ca cc my trm ny. Mt ch v nh dng ca file ny nh sau: cc dng trng s c b qua, cc dng bt u bng du # c coi l cc dng

1 2

ch thch v s c b qua. Cc dng di qu ta c th ngt trn nhiu dng bng cch s dng du ngt dng (\). Cu trc ca mi dng khai bo trong file ny nh sau: Tn th mc Danh sch a ch cc my trm, quyn truy nhp ca cc my trm

Danh sch a ch cc my trm, quyn truy nhp ca cc my trm


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 mc l ng dn n th mc ta mun chia s cho cc my khc. Danh sch a ch cc my trm, c th l a ch IP hoc tn my (c lit k trong file /etc/hosts). Trong trng hp mun lit k danh sch cc my c a ch gn k nhau trong mt khong no ta c th c cch vit rt gn nh sau: chng hn ta mun lit k cc a ch ca my trm trong khong t 192.168.0.0 n cc my trm c a ch 192.168.0.15 ta ch cn vit 192.168.0.0/28. Quyn truy nhp c vit di dng (rw) ch quyn c v ghi, cn (ro) th cc my trm ch c quyn c trn th mc , (noaccess) cm cc my trm truy nhp vo cc th mc con ca th mc chia s. Ch , gia a ch ca my v quyn truy nhp khng c du cch. 6.4.4 S dng mount

c d liu trn cc th mc c chia s ny ta c th dng cch sau: ta s dng lnh mount, nhng trong trng hp ny ta phi cn quyn qun tr (root). C php ca lnh s nh sau:
#mount <tn_my_ch:/tn_th_mc_chia_s> </tn_th_mc_cn_nh_x>

Lu , trc khi ra lnh ny ta phi to ra th mc cn nh x (trong trng hp n cha tn ti). V d, nh x th mc /software/project trn mt my ch 192.168.0.33 vo th mc /mnt/project trn my hin ti ta dng lnh sau:
#mount 192.168.0.33:/software/project /mnt/project

By gi th mc /mnt/project trn my hin ti s bnh ng nh cc th mc khc trn my. Ta c th sao chp, c cc file trn th mc ny.
6.4.5 Unmount

Sau khi thc hin xong cc thao tc cn thit, ta c th hy b nh x ny bng lnh umount nh sau:
#umount /mnt/project

Sau lnh ny th ta khng cn c kh nng thao tc vi th mc trn my ch c na, nu mun ta li phi nh x li.
1 2

Ngoi ra mun xem trng thi hot ng ca dch v nfs ta c th dng lnh:
#/etc/init.d/nfs status

N s hin th thng tin v trng thi hin ti ca dch v ny ang chy hay dng li.
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 tp cu hnh By gi nu ta mun h thng s t ng nh x th mc ny khi my khi ng cho nhng ngi dng khng c quyn qun tr c th dng c th ta c th s dng cch sa i ni dung ca file /etc/fstab. Cng tng t nh lnh mount trn, trong file /etc/fstab cng c cc trng ging nh ni trn. Mi mt dng trong file ny s c cu trc nh sau: <tn_my_ch:/ng_dn_n_th_mc_chia_s> </ng_dn_n_th_mc_cc_b> nfs tham s nfs ch cho h iu hnh bit kiu file l nfs. V d ta c th thm dng 192.168.0.33:/software/project /mnt/project nfs vo cui file /etc/fstab.

1 2

CHNG 7. LP TRNH SHELL V LP TRNH C TRN LINUX


7.1. Cch thc pipes v cc yu t c bn lp trnh trn shell
7.1.1. Cch thc pipes Trong Linux c mt s loi shell, shell ngm nh l bash. Shell cho php ngi dng chy tng lnh shell (thc hin trc tip) hoc dy lnh shell (file script) v c bit hn l theo dng thng qua ng dn (pipe). Trong mt dng lnh ca shell c th thc hin mt danh sch cc lnh tun t nhau dng: <lnh> [; <lnh>]... Nh vy danh sch lnh l dy cc lnh lin tip nhau, ci sau cch ci trc bi du chm phy ";" V d, $ cal 10 1999; cal 11 1999 ; cal 12 1999 Shell cho ngi dng cch thc c bit thc hin cc lnh tun t nhau, ci ra ca lnh trc l ci vo ca lnh sau v khng phi thng qua ni lu tr trung gian. S dng ng dn l cch thc c bit trong UNIX v Linux, c th hin l mt cch thc ca shell truyn thng lin qu trnh. ng dn c t chc theo kiu cu trc d liu dng xp hng "vo trc ra trc" FIFO "First In First Out". Trong cu trc dng xp hng, mt u ca dng nhn phn t vo v cn u kia li xut phn t ra. Trong ng cnh ca shell, vi hai qu trnh A v B c kt ni mt ng dn c th hin nh sau: Qu trnh A Qu trnh B

Nh vy u ra ca A thng thng hoc l thit b ra chun (mn hnh) hoc l mt File (l mt tham s ca lnh) c thay bng "u nhp ca ng dn". Tng t, u vo ca B thng thng hoc l thit b vo chun (bn phm) hoc l mt File (l mt tham s ca lnh) c thay bng "u xut ca ng dn". Dng byte ln lt "chy" t qu trnh A sang qu trnh B. M t cch thc s dng ng ng trong shell nh sau: <lnh phc hp> l hoc <lnh> hoc (<lnh>[;<lnh>]...) Vy ng ng c dng <lnh phc hp> | <lnh phc hp> Lnh phc hp pha sau c th khng c i s. Trong trng hp , thng tin kt qu t lnh pha trc tr thnh thng tin input ca lnh ngay pha sau m khng chu tc ng theo cch thng thng ca lnh trc na. V d, $ cal 1999 | more Ni dung lch nm 1999 (lnh cal ng vai tr qu trnh A) khng c in ngay ra mn hnh nh thng thng theo tc ng ca lnh cal na m c lu ln mt "file" tm thi kiu "ng dn" ca h thng v sau tr thnh i s ca lnh more (lnh more ng vai tr qu trnh B). Trong chng trnh, c th dng ng dn lm file vo chun cho cc lnh c tip theo. V d, ls -L | \ 1 2

th k hiu "\" ch ra rng ng dn c dng nh file vo chun. 7.1.2. Cc yu t c bn lp trnh trong shell Shell c cng c cho php c th lp trnh trn shell lm tng thm thn thin khi giao tip vi ngi dng. Cc i tng tham gia cng c nh th c th c lit k: - Cc bin (trong ch ti cc bin chun), - Cc hm vo - ra - Cc php ton s hc, - Biu thc iu kin, - Cu trc r nhnh, - Cu trc lp. a. Mt s ni dung trong chng trnh shell - Chng trnh l dy cc dng lnh shell song c t trong mt file vn bn (c son tho theo son tho vn bn), - Cc dng lnh bt u bng du # chnh l dng ch thch, b b qua khi shell thc hin chng trnh, - Thng thng cc b dch lnh shell l sh (/bin/sh) hoc ksh (/bin/ksh) thc hin mt chng trnh shell ta c cc cch sau y: $sh <<tn chng trnh> hoc $sh <tn chng trnh> hoc nh i mod ca chng trnh: $chmod u+x <tn chng trnh> v chy chng trnh $<tn chng trnh> - Phn ln cc yu t ngn ng trong lp trnh shell l tng ng vi lp trnh C. Trong ti liu ny s dng chng mt cch t nhin. b. Cc bin trong file script Trong shell c th k ti 3 loi bin: Bin mi trng (bin shell c bit, bin t kha, bin shell xc nh trc hoc bin shell chun) c lit k nh sau (cc bin ny thng gm cc ch ci hoa): - HOME : ng dn th mc ring ca ngi dng, - MAIL: ng dn th mc cha hp th ngi dng, - PATH: th mc dng tm cc file th hin ni dung lnh, - PS1: du mi ban u ca shell (ngm nh l $), - PS2: du mi th 2 ca shell (ngm nh l >), - PWD: Th mc hin ti ngi dng ang lm, - SHELL: ng dn ca shell (/bin/sh hoc /bin/ksh) - TERM: S hiu gn cho trm cui, - USER: Tn ngi dng vo h thng, Trong .profile th mc ring ca mi ngi dng thng c cc cu lnh dng: <bin mi trng> = <gi tr> Bin ngi dng: Cc bin ny do ngi dng t tn v c cc cnh thc nhn gi tr cc bin ngi dng t bn phm (lnh read). Bin c t tn gm mt xu k t, quy tc t tn nh sau: k t u tin phi l mt ch ci hoc du gch chn (_), sau tn l mt hay nhiu k t khc. to ra mt bin ta ch cn gn bin mt gi tr no . Php gn l mt du bng (=). V d: myname=TriThanh 1 2

Ch : khng c c du cch (space) ng trc hay ng sau du bng. Tn bin l phn bit ch hoa ch thng. truy xut n mt bin ta dng c php sau; $tn_bin. Chng hn ta mun in ra gi tr ca bin myname trn ta ch cn ra lnh: echo $myname. $myname. $myname. Mt s v d v cch t tn bin: $ no=10 #y l mt cch khai bo hp l Nhng cch khai bo di y l khng hp l
$ no =10 #c du cch sau tn bin $ no= 10 # c du cch sau du = $ no = 10 # c du cch c ng trc ln ng sau du =

Ta c th khai bo mt bin nhng n c gi tr NULL nh trong nhng cch sau: $ vech= $ vech="" Nu ta ra lnh in gi tr ca bin ny th ta s thu c mt gi tr NULL ra mn hnh (mt dng trng). Bin t ng (hay bin-ch c, tham s v tr) l cc bin do shell c sn; tn cc bin ny cho trc. C 10 bin t ng: $0, $1, $2, ..., $9 Tham bin $0 cha tn ca lnh, cc tham bin thc bt u bng $1 (nu tham s c v tr ln hn 9, ta phi s dng c php ${} v d, ${10} thu c cc gi tr ca chng). Shell bash c ba tham bin v tr c bit, $#, $@, v $#. $# l s lng tham bin v tr (khng tnh $0). $* l mt danh sch tt c cc tham bin v tr loi tr $0, c nh dng nh l mt xu n vi mi tham bin c phn cch bi k t $IFS. $@ tr v tt c cc tham bin v tr c a ra di dng N xu c bao trong du ngoc kp. S khc nhau gia $* v $@ l g v ti sao li c s phn bit? S khc nhau cho php ta x l cc i s dng lnh bng hai cch. Cch th nht, $*, do n l mt xu n, nn c th c biu din linh hot hn khng cn yu cu nhiu m shell. $@ cho php ta x l mi i s ring bit bi v gi tr ca chng l N i s c lp. Dng ra (hay dng vo) tng ng vi cc tham s v tr l cc "t" c trong cc dng . V d, $chay vao chuong trinh roi Nu chay l mt lnh 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 Mt v d khc v bin v tr gip ta phn bit c s khc nhau gia bin $* 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 chy chng trnh ny ta s thu c kt 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 nht v th 2 ta thy kt qu c s khc nhau, dng th nht bin $* tr v tham bin v tr di dng mt xu n, v th cntparm bo co mt tham bin n. Dng th hai gi cntparm, tr v i s dng lnh ca l 3 xu c lp, v th cntparm bo co ba tham bin. c. Cc k t c bit trong bash K t < > ( ) | \ & { } ~ ` ; # $ * ? M t nh hng u vo nh hng u ra Bt u subshell Kt thc subshell K hiu dn Dng hin k t c bit Thi hnh lnh chy ch ngm Bt u khi lnh Kt thc khi lnh Th mc home ca ngi dng hin ti Thay th lnh Chia ct lnh Li ch gii Trch dn mnh Trch dn yu Biu thc bin K t i din cho chui K t i din cho mt k t Cc k t c bit ca bash Du chia ct lnh, ; , cho php thc hin nhng lnh bash phc tp nh trn mt dng. Nhng quan trng hn, n l kt thc lnh theo l thuyt POSIX. K t ch gii, # , khin bash b qua mi k t t cho n ht dng. im khc nhau gia cc k t trch dn mnh v trch dn yu, v , tng ng l: trch dn mnh bt bash hiu tt c cc k t theo ngha en; trch dn yu ch bo h cho mt vi k t c bit ca bash .

1 2

7.2. Mt s lnh lp trnh trn shell


7.2.1. S dng cc ton t bash Cc ton t string Cc ton t string, cng c gi l cc ton t thay th trong ti liu v bash, kim tra gi tr ca bin l cha gn gi tr hoc khng xc nh. Bng di l danh sch cc ton t ny cng vi miu t c th cho chc nng ca tng ton t. Ton t ${var:- word} ${var:= word} ${var:+ word} ${var:?message} ${var: offset[:length]} Chc nng Nu bin tn ti v xc nh th tr v gi tr ca n, nu khng th tr v word Nu bin tn ti v xc nh th tr v gi tr ca n, nu khng th gn bin thnh word, sau tr v gi tr ca n Nu bin tn ti v xc nh th tr v word, cn khng th tr v null Nu bin tn ti v xc nh th tr v gi tr ca n, cn khng th hin th bash: $var:$message v thot ra khi lnh hay tp lnh hin thi. Tr v mt xu con ca var bt u ti offset ca di length. Nu length b b qua, ton b xu t offset s c tr v. Cc ton t string ca bash

minh ho, hy xem xt mt bin shell c tn l status c khi to vi gi tr defined. S dng 4 ton t string u tin cho kt qu status nh sau: $echo ${status:-undefined} defined $echo ${status:=undefined} defined $echo ${status:+undefined} undefined $echo ${status:?Dohhh\! undefined} defined By gi s dng lnh unset xo bin status, v thc hin vn cc lnh , 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

Cn thit unset status ln th hai v lnh th ba, echo ${status:+undefined}, khi to li status thnh undefined. Cc ton t substring c trong danh sch bng trn c bit c ch. Hy xt bin foo c gi tr Bilbo_the_Hobbit. Biu thc ${foo:7} tr v he_Hobbit, trong khi ${foo:7:5} li tr v he_Ho. Cc ton t Pattern-Matching Cc ton t pattern-matching c ch nht trong cng vic vi cc bn ghi di bin hay cc xu c nh dng t do c nh gii bi cc k t c nh. Bin mi trng $PATH l mt v d. Mc d n c th kh di, cc th mc ring bit c phn nh bi du hai chm. Bng di l danh sch cc ton t Pattern-Matching ca bash v chc nng ca chng. Ton t ${var#pattern} Chc nng Xo b phn khp (match) ngn nht ca pattern trc var v tr v phn cn li ${var##pattern} Xo b phn khp (match) di nht ca pattern trc var v tr v phn cn li ${var%pattern} Xo b phn khp ngn nht ca pattern cui var v tr v phn cn li ${var%%pattern} Xo b phn khp di nht ca pattern cui var v tr v phn cn li ${var/pattern/string} Thay phn khp di nht ca pattern trong var bng string. Ch thay phn khp u tin. Ton t ny ch c trong bash 2.0 hay ln hn. ${var//pattern/string} Thay phn khp di nht ca pattern trong var bng string. Thay tt c cc phn khp. Ton t ny c trong bash 2.0 hoc ln hn. Cc ton t bash Pattern-Matching Thng thng quy tc chun ca cc ton t bash pattern-matching l thao tc vi file v tn ng dn. V d, gi s ta c mt tn bin shell l mylife c gi tr l /usr/src/linux/Documentation/ide.txt (ti liu v trnh iu khin a IDE ca nhn). S dng mu /* v */ ta c th tch c tn th mc 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) Lnh th 2 xo xu matching */ di nht trong tn file v tr v tn file. Lnh th 4 lm khp tt c mi th sau /, bt u t cui bin, b tn file v tr v ng dn ca file. Kt qu ca tp lnh 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, lnh thay th mi du hai chm trong bin mi trng $PATH bng mt dng mi, kt qu hin th ng dn rt d c (v d ny s sai nu ta khng c bash phin bn 2.0 hoc mi 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 chui kim tra str1 = str2 str1 != str2 -n str -z str Cc ton t so snh s hc kim tra -eq -ge -gt -le -lt -ne iu kin thc str1 bng str2 str1 khc str2 str c di ln hn 0 (khc null) str c di bng 0 (null) Ton t snh chui ca bash iu kin thc bng ln hn hoc bng ln hn nh hn hoc bng nh hn khc Cc cch test s nguyn ca bash

7.2.2. iu khin lung Cc cu trc iu khin lung ca bash, n bao gm: if Thi hnh mt hoc nhiu cu lnh nu c iu kin l true hoc false. for Thi hnh mt hoc nhiu cu lnh trong mt s c nh ln. while Thi hnh mt hoc nhiu cu lnh trong khi mt iu kin no l true hoc false. until Thi hnh mt hoc nhiu cu lnh cho n khi mt iu kin no tr thnh true hoc false. case Thi hnh mt hoc nhiu cu lnh ph thuc vo gi tr ca bin. select Thi hnh mt hoc nhiu cu lnh da trn mt khong tu chn ca ngi dng. 1 3

7.2.2.1 Cu trc r nhnh c iu kin if


Bash cung cp s thc hin c iu kin lnh no s dng cu lnh if, cu lnh if ca bash y chc nng nh ca C. C php ca n c khi qut nh sau: if condition then statements [elif condition statements] [else statements] fi u tin, ta cn phi chc chn rng mnh hiu if kim tra trng thi thot ca cu lnh last trong condition. Nu n l 0 (true), sau statements s c thi hnh, nhng nu n khc 0, th mnh else s c thi hnh v iu khin nhy ti dng u tin ca m fi. Cc mnh elif (tu chn) (c th nhiu tu ) s ch thi hnh khi iu kin if l false. Tng t, mnh else (tu chn) s ch thi hnh khi tt c else khng tha mn. Nhn chung, cc chng trnh Linux tr v 0 nu thnh cng hay hon ton bnh thng, v khc 0 nu ngc li, v th khng c hn ch no c. Ch : Khng phi tt c chng trnh u tun theo cng mt chun cho gi tr tr v, v th cn kim tra ti liu v cc chng trnh ta kim tra m thot vi iu kin if. V d chng trnh diff, tr v 0 nu khng c g khc nhau, 1 nu c s khc bit v 2 nu c vn no . Nu mt cu iu kin hot ng khng nh mong i th hy kim tra ti liu v m thot . Khng quan tm n cch m chng trnh xc nh m thot ca chng, bash ly 0 c ngha l true hoc bnh thng cn khc 0 l false. Nu ta cn c th kim tra mt m thot ca lnh, s dng ton t $? ngay sau khi chy lnh. $? tr v m thot ca lnh chy ngay lc . Phc tp hn, bash cho php ta phi hp cc m thot trong phn iu kin s dng cc ton t && v || c gi l ton t logic AND v OR. C php y cho ton t AND nh sau: command1 && command2 Cu lnh command2 ch c chy khi v ch khi command1 tr v trng thi l s 0 (true). C php cho ton t OR th nh sau: command1 || command2 Cu lnh command2 ch c chy khi v ch khi command1 tr li mt gi tr khc 0 (false). Ta c th kt hp li c 2 loi ton t li c mt biu thc nh sau: command1 && comamnd2 || command3 Nu cu lnh command1 chy thnh cng th shell s chy lnh command2 v nu command1 khng chy thnh cng th command3 c chy.

1 3

V d: $ rm myf && echo "File is removed successfully" || echo "File is not removed" Nu file myf c xa thnh cng (gi tr tr v ca lnh l 0) th lnh "echo File is removed successfully" s c thc hin, nu khng th lnh "echo File is not removed" c chy. Gi s trc khi ta vo trong mt khi m, ta phi thay i mt th mc v copy mt file. C mt cch thc hin iu ny l s dng cc ton t if lng nhau, nh l on 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 vit on m ny sc tch hn nhiu nh sau: if cd /home/kwall/data && cp datafile datafile.bak then # more code here fi C hai on m u thc hin cng mt chc nng, nhng on th hai ngn hn nhiu, gn nh v n gin. Mc d if ch kim tra cc m thot, ta c th s dng cu trc [] lnh test kim tra cc iu kin phc tp hn. [condition] tr v gi tr biu th condition l true hay false. test cng c tc dng tng t. Mt v d khc v cch s dng cu 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 lng cc php ton iu kin ca bin hin ti khong 35, kh nhiu v hon chnh. Ta c th kim tra cc thuc tnh file, so snh cc xu v cc biu thc s hc. Ch : Cc khong trng trc du m ngoc v sau du ng ngoc trong [condition] l cn phi c. y l iu kin cn thit trong c php shell ca bash. Bng di l danh sch cc ton t test file ph bin nht (danh sch hon chnh c th tm thy trong nhng 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

iu kin true file tn ti v l mt th mc file tn ti file tn ti v l mt file bnh thng(khng l mt th mc hay mt file c bit) file cho php c file tn ti v khc rng file cho php ghi file kh thi hoc nu file l mt th mc th cho php tm kim trn file file ca ngi dng hin ti file thuc mt trong cc nhm ngi dng hin ti l thnh vin file1 mi hn file2 file1 c hn file2 Cc ton t test file ca bash

V d chng trnh shell cho cc ton t test file trn cc th mc trong bin $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 lp for (gii thiu trong phn di) s duyt ton b cc ng dn th mc trong bin PATH sau kim tra cc thuc tnh ca th mc . Kt qu nh sau (kt qu c th khc nhau trn cc my khc nhau do gi tr ca bin 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 biu thc trong phn iu kin cng c th kt hp vi nhau to thnh cc biu thc phc tp hn bng cc php ton logic. Di y l mt bng cc biu thc 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 lp quyt nh: for


Nh thy chng trnh trn, for cho php ta chy mt on m mt s ln nht nh. Tuy nhin cu trc for ca bash ch cho php ta lp i lp li trong danh sch cc gi tr nht nh bi v n khng t ng tng hay gim con m vng lp nh l C, Pascal, hay Basic. Tuy nhin vng lp for l cng c lp thng xuyn c s dng bi v n iu khin gn gng trn cc danh sch, nh l cc tham s dng lnh v cc danh sch cc file trong th mc. C php y ca for l: for value in list

1 3

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

Linux khng c tin ch i tn hay copy cc nhm ca file. Trong MS-DOS nu ta c 17 file c phn m rng a*.doc, ta c th s dng lnh COPY copy *.doc thnh file *.txt. Lnh DOS nh sau: C:\ cp doc\*.doc doc\*.txt s dng vng lp for ca bash b p nhng thiu st ny. on m di y c th c chuyn thnh chng trnh shell thc hin ng nh nhng g ta mun: for docfile in doc/*.doc do cp $docfile ${docfile%.doc}.txt done S dng mt trong cc ton t pattern-matching ca bash, on m ny lm vic copy cc file c phn m rng l *.doc bng cch thay th .doc cui ca tn file bng .txt. Mt v d khc v vng for n gin nh sau: #!/bin/bash
for i in 1 2 3 4 5 do echo "Welcome $i times" done

Ta cng c mt cu trc v for nh sau, chng trnh ny cng c cng chc nng nh chng trnh trn nhng ta ch n s khc bit v c php ca lnh 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 Tip theo l mt v d v vng for lng 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 dng cu 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 chy chng trnh vi tham s: $ chmod 755 mtable $ ./mtable 7 Ta thu c kt qu nh sau: 7*1=7 7 * 2 = 14 ... .. 7 * 10 = 70

7.2.2.3 Cc vng lp khng xc nh: while v until

1 3

Vng lp for gii hn s ln m mt on m c thi hnh, cc cu trc while v until ca bash cho php mt on m c thi hnh lin tc cho n khi mt iu kin no xy ra. Ch vi ch l on m ny cn vit sao cho iu kin cui phi xy ra nu khng s to ra mt vng lp v tn. C php ca n nh sau: while condition do statements done C php ny c ngha l khi no condition cn true, th thc hin statements cho n khi condition tr thnh false (cho n khi mt chng trnh hay mt lnh tr v khc 0): until condition do statements done C php until c ngha l tri ngc vi while: cho n khi condition tr thnh true th thi hnh statements (c ngha l cho n khi mt lnh hay chng trnh tr v m thot khc 0) Cu trc while ca bash khc phc thiu st khng th t ng tng, gim con m cua vng lp for. V d, ta mun copy 150 bn ca mt file, th vng lp while l mt la chn gii quyt bi ton ny. Di 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 gii thiu cch s dng tnh ton s nguyn ca bash. Cu lnh declare khi to mt bin, idx, nh ngha l mt s nguyn. Mi ln lp idx tng ln, n s c kim tra thot khi vng lp. Vng lp until tuy cng c kh nng ging while nhng khng c dng nhiu v rt kh vit v chy chm. Mt v d na v cch s dng vng lp while c minh ha trong chng trnh in bn nhn ca mt 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 cu trc la chn: case v select


Cu trc iu khin lung tip theo l case, hot ng cng tng t nh lnh switch ca C. N cho php ta thc hin cc khi lnh ph thuc vo gi tr ca bin. C php y ca case nh sau: case expr in pattern1 ) statements ;; pattern2 ) statements ;; [*) statements ;;] esac expr c em i so snh vi tng pattern, nu n bng nhau th cc lnh tng ng s c thi hnh. Du ;; l tng ng vi lnh break ca C, to ra iu khin nhy ti dng u tin ca m esac. Khng nh t kho switch ca C, lnh case ca bash cho php ta kim tra gi tr ca expr da vo pattern, n c th cha cc k t i din. Cch lm vic ca cu trc case nh sau: n s khp (match) biu thc expr vi cc mu pattern1, pattern2,nu c mt mu no khp th khi lnh tng ng vi mu s c thc thi, sau n thot ra khi lnh case. Nu tt c cc mu u khng khp v ta c s dng mu * (trong nhnh *)), ta thy y l mu c th khp vi bt k gi tr no (k t i din l *), nn cc lnh trong nhnh ny s c thc hin. Cu trc iu khin select (khng c trong cc phin bn 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 lp trnh quy c. select cho php ta d dng trong vic xy dng cc menu n gin v p ng cc chn la ca ngi dng. C php ca n nh sau: select value [in list] do statements that manipulate $value done Di y l mt v d v cch s dng lnh 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 to cc menu bng select Lnh u tin t k t IFS l : (k t phn cch), v th select c th phn tch hon chnh bin mi trng $PATH. Sau n thay i li nhc default khi select bng bin PS3. Sau khi xo sch mn hnh, n bc vo mt vng lp, a ra mt danh sch cc th mc nm trong $PATH v nhc ngi dng chn la nh l minh ho trong hnh di.

Nu ngi dng chn hp l, lnh ls c thc hin kt qu c gi cho lnh m t wc m s file trong th mc v hin th kt qu c bao nhiu file trong th mc . Do ls c th s dng m khng cn i s, script u tin cn chc chn l $dir khc null (nu n l null, ls s hot ng trn th mc hin hnh nu ngi dng chn 1 menu khng hp l). Nu ngi dng chn khng hp l, mt thng bo li s c hin th. Cu lnh read (c gii thiu sau) cho php ngi dng nh vo la chn ca mnh v nhn Enter lp li vng lp hay nhn Ctrl + C thot. Ch : Nh gii thiu, cc vng lp script khng kt thuc nu ta khng nhn Ctrl+C. Tuy nhin ta c th s dng lnh break thot ra. 1 4

7.2.2.5 Cc hm shell
Cc hm chc nng ca bash l mt cch m rng cc tin ch sn c trong shell, n c cc im li sau: Thi hnh nhanh hn do cc hm shell lun thng trc trong b nh. Cho php vic lp trnh tr nn d dng hn v ta c th t chc chng trnh thnh cc module. Ta c th nh ngha cc hm shell s dng theo hai cch: function fname { commands } hoc l fname() { commands } C hai dng u c chp nhn v khng c g khc gia chng. gi mt hm nh ngha n gin l gi tn hm cng vi cc i s m n cn. Nu so snh vi C hay Pascal, hm ca bash khng c cht ch, n khng kim tra li v khng c phng thc tr v i s bng gi tr. Tuy nhin ging nh C v Pascal, cc bin a phng c th khai bo cc b i vi hm, do trnh c s xung t vi bin ton cc. thc hin iu ny ta dng t kho local nh trong on m sau: function foo { local myvar local yourvar=1 } Trong v d v cc bin v tr trn ta cng thy c cch s dng hm trong bash. Cc hm shell gip m ca ta d hiu v d bo dng. S dng cc hm v cc ch thch ta s rt nhiu cng sc khi ta phi tr li nng cp on m m ta vit t thi gian rt lu trc . 7.2.3 Cc ton t nh hng vo ra Ta c bit v cc ton t nh hng vo ra, > v <. Ton t nh hng ra cho php ta gi kt qu ra ca mt lnh vo mt file. V d nh lnh sau: $ cat $HOME/.bash_profile > out N s to mt file tn l out trong th mc hin ti cha cc ni dung ca file bash_profile, bng cch nh hng u ra ca cat ti file . Tng t, ta c th cung cp u vo l mt lnh t mt file hoc l lnh s dng ton t u vo, <. Tac th vit li lnh cat s dng ton t nh hng u vo nh sau: $ cat < $HOME/.bash_profile > out

1 4

Kt qu ca lnh ny vn nh th nhng n cho ta hiu thm v cch s dng nh hng u vo u ra. Ton t nh hng u ra, >, s ghi ln bt c file no ang tn ti. i khi iu ny l khng mong mun, v th bash cung cp ton t ni thm d liu, >>, cho php ni thm d liu vo cui file. Hay xem lnh thm b danh cdlpu vo cui ca file .bashrc ca ti: $echo alias cdlpu=cd $HOME/kwall/projects/lpu >> $HOME/.bashrc Mt cch s dng nh hng u vo l u vo chun (bn phm). C php ca lnh ny nh sau: Command << label Input Label C php ny ni ln rng command c cc input cho n khi n gp label. Di y l v d v cch s dng cu 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. Hin dng vn bn Lnh echo hin ra dng vn bn c ghi ngay trong dng lnh c c php: echo [ty chn] [xu k t] vi cc ty chn nh sau: -n : hin xu k t v du nhc trn cng mt dng. -e : bt kh nng thng dch c cc k t iu khin. -E : tt kh nng thng dch c cc k t iu khin. --help : hin h tr v thot. Mt s bn Linux khng h tr tham s ny. V d, dng lnh echo vi tham s -e # echo -e th dng lnh echo \n s thy hin ra chnh dng vn bn lnh: th dng lnh echo # y k t iu khin \n l k t xung dng.

1 4

7.2.5. Lnh read c d liu cho bin ngi dng Lnh read c dng read <tn bin> V d chng trnh shell c tn thu1.arg c ni 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 thc hin $chmod u+x thu1.arg v $thu1.arg Hoi ten nguoi va hien lai s thy xut hin 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. Lnh set gn kt qu ra t lnh shell ra cc bin t ng, ta dng lnh set Dng lnh set set `<lnh>` Sau lnh ny, kt qu thc hin lnh khng hi ra l mn hnh m gn kt qu tng ng cho cc bin t ng. Mt cch t ng cc t trong kt qu thc hin lnh s gn tng ng cho cc bin t ng (t $1 tr i). Xem xt mt v d sau y (chng trnh thu2.arg) c ni 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 ca File chng trnh ny v chy, chng ta nhn c: Thoi gian: 7:20:15 EST Thu: Tue Ngay 20 thang Oct nam 1998 Nh vy, $# = 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 bin Cc tnh ton trong shell c thc hin vi cc i s nguyn. Cc php ton gm c: cng (+), tr (-), nhn (*), chia (/), mod (%). Biu thc thc hin theo cc php ton nu. Tnh ton trn shell c dng: `expr <biu thc>` 1 4

V d, chng trnh vi tn cong.shl sau y: #!/bin/sh # Tinh va in hai so tong = `expr $1 + $2` echo "Tong = $tong" Sau , khi i mod v chy $cong.shl 5 6 s hin 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. Lp trnh C trn UNIX


7.3.1. Trnh bin dch gcc H iu hnh UNIX lun km theo b dch ngn ng lp trnh C vi tn gi l cc (C compiler). Trong Linux, b dch c tn l gcc (GNU C Compiler) vi ngn ng lp trnh khng khc nhiu vi C chun. Ni dung chi tit v cc ngn ng lp trnh trn Linux thuc phm vi ca cc ti liu khc. gcc cho ngi lp trnh kim tra trnh bin dch. Qu trnh bin dch bao gm bn giai on: Tin x l Bin dch Tp hp Lin kt Ta c th dng qu trnh sau mt trong nhng giai on kim tra kt qu bin dch ti giai on y. gcc cng c th chp nhn ngn ng khc ca C, nh ANSI C hay C truyn thng. Nh ni trn, gcc thch hp bin dch C++ hay Objective-C. Ta c th kim sot lng cng nh kiu thng tin cn debug, tt nhin l c th nhng trong qu trnh nh phn ha kt qu v ging nh hu ht cc trnh bin dch, gcc cng thc hin ti u ha m. Trc khi bt u i su vo nghin cu gcc, ta xem mt v d sau: #include<stdio.h> int main (void) { fprintf( stdout, Hello, Linux programming world!\n); return 0; } Mt chng trnh in hnh dng minh ho vic s dng gcc

bin dch v chy chng trnh ny hy g: $ gcc hello.c o hello $ ./hello Hello, Linux programming world! Dng lnh u tin ch cho gcc phi bin dch v lin kt file ngun hello.c, to ra tp tin thc thi, bng cch ch nh s dng i s -o hello. Dng lnh th hai thc hin chng trnh, v kt qu cho ra trn dng th 3. C nhiu ch m ta khng nhn thy c, gcc trc khi chy hello.c thng qua b tin x l ca cpp, m rng bt k mt macro no v chn thm vo ni dung ca nhng file #include. Tip n, n bin dch m ngun tin x l sang m obj . Cui cng, trnh lin kt, to ra m nh phn cho chng trnh hello.
1 4

Ta c th to li tng bc ny bng tay, chia thnh tng bc qua tin trnh bin dch. ch cho gcc bit phi dng vic bin dch sau khi tin x l, ta s dng tu chn E ca gcc: $ gcc E hello.c o hello.cpp Xem xt hello.cpp v ta c th thy ni dung ca stdio.h c chn vo file, cng vi nhng m thng bo tin x l khc. Bc tip theo l bin dch hello.cpp sang m obj. S dng tu chn c ca gcc hon thnh: $ gcc x cpp-output -c hello.cpp o hello.o Trong trng hp ny, ta khng cn ch nh tn ca file output bi v trnh bin dch to mt tn file obj bng cch thay th .c bi .o. Tu chn x ch cho gcc bit bt u bin dch bc c ch bo trong trng hp ny vi m ngun tin x l. Lm th no gcc bit chia loi c bit ca file? N da vo ui m rng ca file trn xc nh r phi x l file nh th no cho dng. Hu ht nhng ui m rng thng thng v ch thch ca chng c lit k trong bng di.
Phn m rng .c .c, .cpp .i .ii Kiu

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

M ngun ngn ng C M ngun ngn ng C++ M ngun C tin x l M ngun C++ tin x l M ngun Hp ng M i tng bin dch (obj) M th vin bin dch Cc phn m rng ca tn file i vi gcc

Lin kt file i tng, v cui cng to ra m nh phn: $ gcc hello.o o hello Trong trng hp , ta ch mun to ra cc file obj, v nh vy th bc lin kt l khng cn thit. Hu ht cc chng trnh C cha nhiu file ngun th mi file ngun u phi c bin dch sang m obj trc khi ti bc lin kt cui cng. Gi s c mt v d, ta ang lm vic trn killerapp.c l chng trnh s dng phn m ca helper.c, nh vy bin dch killerapp.c ta phi dng dng lnh sau: $ gcc killerapp.c helper.c o killerapp gcc qua ln lt cc bc tin x l - bin dch lin kt, lc ny to ra cc file obj cho mi file ngun trc khi to ra m nh phn cho killerapp. Mt s tu chn dng lnh ca gcc:
-o FILE Ch nh tn file output; khng cn thit khi bin dch sang m obj. Nu FILE khng c ch r th tn mc nh s l a.out.

-c

Bin dch khng lin kt.

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 tin x l t tn F00 vi mt gi tr ca BAR trn dng lnh. Trc khi cha quyt nh c DIRNAME hy tm kim nhng file include trong danh sch cc th mc( tm trong danh sch cc ng dn th mc) Trc khi cha quyt nh c DIRNAME hy tm kim nhng file th vin trong danh sch cc th mc. Vi mc nh gcc lin kt da trn nhng th vin dng chung Lin kt da trn nhng th vin tnh Lin kt da trn libF00 Bao gm chun g ri thng tin m nh phn Bao gm tt c thng tin m nh phn m ch c chng trnh g ri GNU- gdb mi c th hiu c Ti u ho m bin dch Ch nh mt mc ti u ho m N, 0<=N<=3. H tr chun ANSI/ISO ca C, loi b nhng m rng ca GNU m xung t vi chun( tu chn ny khng bo m m theo ANSI). Cho ra tt c nhng cnh bo quy nh bi chun Thng bo ra tt c cc li quy nh bi chun ANSI/ISO ca C. H tr cho c php ngn ng C ca Kernighan v Ritchie (ging nh c php nh ngha hm kiu c). Chn tt c thng ip cnh bo. Thng bo ra tt c nhng cnh bo hu ch thng thng m gcc c th cung cp. Chuyn i tt c nhng cnh bo sang li m s lm ngng tin trnh bin dch. Cho ra mt danh sch s ph thuc tng thch c to. Hin ra tt c cc lnh s dng trong mi bc ca tin trnh bin dch.

Trong trng hp ta vit mt chng trnh rt ln c cu thnh bi t nhiu file, vic bin dch s rt phc tp v phi vit cc dng lnh gcc rt l di. khc phc tnh trng ny, cng c GNU make c a ra. GNU make c gii quyt bng cch cha tt c cc dng lnh phc tp trong mt file gi l makefile. N cng lm ti u ha qu trnh dch bng cch pht hin ra nhng file no c thay i th n mi dch li, cn file no khng b thay i th n s khng lm g c, v vy thi gian dch s c rt ngn.

1 4

Mt makefile l mt c s d liu vn bn cha cch lut, cc lut ny s bo cho chng trnh make bit phi lm g v lm nh th no. Mt lut bao gm cc thnh phn nh sau: ch (target) ci m make phi lm Mt danh sch cc thnh phn ph thuc (dependencies) cn to ra ch Mt danh sch cc cu lnh thc thi trn cc thnh phn ph thuc Khi c gi, GNU make s tm cc file c tn l GNUmakefile, makefile hay Makefile. Cc lut s c c php nh sau: target: dependency1, dependency2, . command command Target thng l mt file nh file kh thi hay file object ta mun to ra. Dependency l mt danh sch cc file cn thit nh l u vo to ra target. Command l cc bc cn thit (chng hn nh gi chng trnh dch) to ra target. Di y l mt v d v mt makefile v to ra mt chng trnh kh thi c tn l editor (s hiu dng ch a vo tin theo di, cn ni dung ca makefile khng cha s hiu dng). Chng trnh ny c to ra bi mt s cc file ngun: 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 dch chng trnh ny ta ch cn ra lnh make trong th mc cha file ny. Trong makefile ny cha tt c 5 lut, lut u tin c ch l editor c gi l ch ngm nh. y chnh l file m make s phi to ra, editor c 3 dependencies editor.o, screen.o, keyboard.o. Tt c cc file ny phi tn ti th mi to ra c ch trn. Dng th 2 l lnh m make s gi thc hin to ra ch trn. Cc dng tip theo l cc ch v cc lnh tng ng to ra cc file i tng (object).
7.3.3. Lm vic vi file

Trong Linux, lm vic vi file ta s dng m t file (file descriptor). Mt trong nhng thun li trong Linux v cc h thng UNIX khc l giao din file lm nh nhau i vi nhiu loi thit b. a t, cc thit b vo/ra, cng song song, gi
1 4

my trm (pseudoterminal), cng my in, bng mch m thanh, v chut c qun l nh cc thit b c bit ging nh cc tp thng thng lp trnh ng dng. Cc socket TCP/IP v min, khi kt ni c thit lp, s dng m t file nh th chng l cc file chun. Cc ng (pipe) cng tng t cc file chun. Mt m t file n gin ch l mt s nguyn c s dng nh ch mc (index) vo mt bng cc file m lin kt vi tng tin trnh. Cc gi tr 0, 1 v 2 lin quan n cc dng (streams) vo ra chun: stdin, stderr v stdout; ba dng thng kt ni vi my ca ngi s dng v c th c chuyn tip (redirect). Mt s li gi h thng s dng m t file. Hu ht cc li gi tr v gi tr -1 khi c li xy ra v bin errno ghi m li. M li c ghi trong trang chnh tu theo tng li gi h thng. Hm perror() c s dng hin th ni dung thng bo li da trn m li.
Hm open()

Li gi open() s dng m mt file. Khun mu ca hm v gii thch tham s v c ca n c cho di 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 mt xu ch ra ng dn n file s c m. Thng s th ba xc nh ch ca file Unix (cc bit c php) c s dng khi to mt file v nn c s dng khi to mt file . Tham s flags nhn mt trong cc gi tr O_RDONLY, O_WRONLY hoc 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 gii
M file c M file ghi M file c v ghi To file nu cha tn ti file Tht bi nu file c Khng iu khin tty nu tty m v tin trnh khng iu khin tty Ct file nu n tn ti Ni thm v con tr t cui file Nu mt qu trnh khng th hon thnh m khng c tr, tr v trng thi trc Tng t O_NONBLOCK Thao tc s khng tr v cho n khi d liu c ghi vo a hoc thit b khc

Cc gi tr c ca hm open()

1 5

open() tr v mt m t file nu khng c li xy ra. Khi c li , n tr v gi tr -1 v t gi tr cho bin errno. Hm create() cng tng t nh open() vi cc c O_CREATE | O_WRONLY | O_TRUNC Hm close() Chng ta nn ng m t file khi thao tc xong vi n. Ch c mt i s l s m t file m li gi open() tr v. Dng ca li gi close() l: #include <unistd.h> int close(int fd); Tt c cc kho (lock) do tin trnh x l trn file c gii phng, cho d chng c t m t file khc. Nu qu trnh ng file lm cho b m lin kt bng 0 th file s b xo. Nu y l m t file cui cng lin kt n mt file c m th bn ghi bng file m c gii phng. Nu khng phi l mt file bnh thng th cc hiu ng khng mong mun c th xy ra. Hm read() Li gi h thng read() s dng c d liu t file tng ng vi mt m t file. #include <unistd.h> ssize_t read(int fd, void *buf, size_t count); i s u tin l m t file m c tr v t li gi open() trc . i s th hai l mt con tr ti b m sao chp d liu v i s th ba l s byte s c c. read() tr v s byte c c hoc -1 nu c li xy ra. Hm write() Li gi h thng write() s dng ghi d liu vo file tng ng vi mt m t file. #include <unistd.h> ssize_t write(int fd, const void *buf, size_t count); i s u tin l s m t file c tr v t li gi open() trc . i s th hai l con tr ti b m ( sao chp d liu, c dung lng ln cha d liu) v i s th ba xc nh s byte s c ghi. write() tr v s byte c hoc -1 nu c li xy ra Hm ftruncate() Li gi h thng ftruncate() ct file tham chiu bi m t file fd vi di c xc nh bi tham s length #include <unistd.h> int ftruncate(int fd, size_t length); Tr v gi tr 0 nu thnh cng v -1 nu c li xy ra. Hm lseek() Hm lseek() t v tr c v ghi hin ti trong file c tham chiu bi m t file files ti v tr offset 1 5

#include <sys/types.h> #include <unistd.h> off_t lseek(int fildes, off_t offset, int whence); Ph thuc vo gi tr ca whence, gi tr ca offset l v tr bt u (SEEK_SET), v tr hin ti (SEEK_CUR), hoc cui file (SEEK_END). Gi tr tr v l kt qu ca offset: bt u file, hoc mt gi tr ca off_t , gi tr -1 nu c li. Hm fstat() Hm fstat () a ra thng tin v file thng qua vic m t cc file, ni kt qu ca struct stat c ch ra con tr ch n buf().Kt qu tr v gi tr 0 nu thnh cng v nhn gi tr -1 nu sai ( kim tra li). #include <sys/stat.h> #include <unistd.h> int fstat(int filedes, struct stat *buf); Sau y l nh ngha ca 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; / * thit b */ st_ino ; /* inode */ st_mode; /* ch bo v */ st_nlink; /* s lng cc lin kt cng */ st_uid; /* s hiu ca ngi ch */ st_gid; /* s hiu nhm ca ngi ch*/ st_rdev; /* kiu thit b */ st_size;/* kch thc bytes */ st_blksize; /* kch thc khi*/ st_blocks; /* S lng cc khi s dng*/ st_atime; /* thi gian truy cp cui cng*/ st_mtime; /* thi gian cp nht cui cng */ st_ctime; /* thi gian thay i cui cng */

Li gi h thng fchown() cho php tathay i ngi ch v nhm ngi ch kt hp vi vic m file. #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 ca ngi ch, v tham s th ba l s nh danh ca nhm ngi ch. Ngi dng hoc nhm ngi dng s c

1 5

php s dng khi gi tr -1 thay i. Gi tr tr v l 0 nu thnh cng v 1 nu gp li (kim tra bin errno). Thng thng ngi dng c th thay i nhm cc file thuc v h. Ch root mi c quyn thay i ngi ch s hu ca nhiu nhm. Hm fchdir( ) Li gi hm fchdir( ) thay i th mc bng cch m file c m t bi bin fd. Gi tr tr v l 0 nu thnh cng v 1 nu c li (kim tra bin errno). #include <unistd.h> int fchdir(int fd); Mt v d v cch s dng cc hm thao tc vi 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; /* kt 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 vin lin kt Phn ny s gii thiu cch to ra v s dng th vin (cc module chng trnh c vit v c ti s dng nhiu ln). Th vin gc ca C/C++ trn Linux chnh l glibc, th vin ny cung cp cho ngi dng rt nhiu li gi h thng. Cc th vin trn

Linux thng c t chc di dng tnh (static library), th vin chia s (shared library) v ng (dynamic library - ging nh DLL trn MS Windows). Th vin tnh c lin kt c nh vo trong chng trnh trong qu trnh lin kt. Th vin dng chung c np vo b nh trong khi chng trnh bt u thc hin v cho php cc ng dng cng chia s loi th vin ny. Th vin lin kt ng c np vo b nh ch khi no chng trnh gi ti.
7.3.4.1 Th vin lin kt tnh

Th vin tnh v cc th vin dng chung (shared library) l cc file cha cc file c gi l cc module c bin dch v c th s dng li c. Chng c lu tr di mt nh dng c bit cng vi mt bng (hoc mt bn ) phc v cho qu trnh lin kt v bin dch. Cc th vin lin kt tnh c phn m rng l .a. s dng cc module trong th vin ta cn thm phn #include file tiu (header) vo trong chng trnh ngun v khi lin kt (sau qu trnh bin dch) th lin kt vi th vin . Di y l mt v d v cch to v s dng mt th vin lin kt tnh. C 2 phn trong v d ny, phn th nht l m ngun cho th vin v phn th 2 cho chng trnh s dng th vin.

1 5

/* * liberr.h */ #ifndef _LIBERR_H #define _LIBERR_H #include <stdarg.h> /* in ra mt thng bo li ti vicgi stderr v return hm gi */ void err_quit(const char *fmt, ); /* in ra mt thng ip li cho logfile v tr v hm gi */ void log_ret(char *logfile, const char *fmt, ); /* in ra mt thng ip li cho logfile v thot */ void log_quit( char *logfile, const char *fmt , ); /* in ra mt thng bo li v tr li hm gi */ void err_prn(const char *fmt, va_list ap, char *logfile); #endif //_LIBERR_H

M ngun 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 ngun file liberr.c to mt th vin tnh, bc u tin l dch on m ca form i tng: $gcc H c liberr.c o liberr.o tip 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

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 ngun file testerr.c Bin dch chng trnh kim tra, ta s dng dng lnh: $ gcc -g errtest.c -o errtest -L. -lerr Tham s -L. ch ra ng dn ti th mc cha file th vin l th mc hin thi, tham s lerr ch r th vin thch hp m chng ta mun lin kt. Sau khi dch ta c th kim tra bng cch chy chng trnh. 7.3.4.2 Th vin dng chung Th vin dng chung c nhiu thun li hn th vin tnh.Th nht, th vin dng chung tn t ti nguyn h thng, chng s dng t khng gian a v m ngun th vin dng chung khng bin dch sang m nh phn nhng c lin kt v c dng t ng mi ln dng. Chng s dng t b nh h thng v nhn chia s b nh cho th vin dng chung ny v tt c cc chng trnh u s dng chung min b nh ny. Th 2, th vin dng chung nhanh hn vi chng ch cn np vo mt b nh. L do cui cng l m ngun trong th vin dng chung d bo tr. Khi cc li c sa hay thm vo cc c tnh, ngi dng cn s dng th vin nng cp. i vi th vin tnh, mi chng trnh khi s dng th vin phi bin dch li. Trnh lin kt (linker)/module ti (loader) ld.so lin kt tn biu tng ti th vin dng chung mi ln chy. Th vin dng chung c tn c bit (gi l soname), bao gm tn th vin v phin bn chnh. V d: tn y ca th vin C trong h thng l libc.so.5.4.46, tn th vin l libc.so, tn phin bn chnh l 5, tn phin bn ph l 4, 46 l mc v (patch 1 5

level). Nh vy, soname th vin C l libc.5. Th vin libc6 c soname l libc.so.6, s thay i phin bn chnh l s thay i ng k th vin. Phin bn ph v patch level thay i khi li c sa nhng soname khng thay i v bn mi c s thay khc bit ng k so vi bn c. Cc chng trnh ng dng lin kt da vo soname. Tin ch idconfig to mt biu tng lin kt t th vin chun libc.so.5.4.46 ti soname libc.5 v lu tr thng tin ny trong /etc/ld.so.cache. Trong lc chy, ld.so c phn lu tr, tm soname thch hp v np th vin hin tai vo b nh, kt ni hm ng dng gi ti i tng thch hp trong th vin. Cc phin bn th vin khc nhau nu: Cc giao din hm u ra thay i. Cc giao din hm mi c thm. Chc nng hot ng thay i so vi c t ban u Cu trc d liu u ra thay i Cu trc d liu u ra c thm duy tr tnh tng thch ca th vin, cn m bo cc yu cu: Khng thm vo nhng tn hm c hoc thay i hot ng ca n Ch thm vo cui cu trc d liu c hoc lm cho chng c tnh tu chn hay c khi to trong th vin Khng m rng cu trc d liu s dng trong cc mng Xy dng th vin dng chung hi khc so vi th vin tnh, qu trnh xy dng th vin dng chung c minh ho di y: Khi bin dch file i tng, s dng ty chn -fpic ca gcc n s to ra m c lp v tr (position independence code) t c th lin kt hay s dng bt c ch no Khng loi b file i tng v khng s dng cc ty chn fomit frame -pointer ca gcc, v nu khng s nh hng n qu trnh g ri (debug) S dng tu chn -shared and soname ca gcc S dng tu chn Wl ca gcc truyn tham s ti trnh lin kt ld. Thc hin qu trnh lin kt da vo th vin C, s dng tu chn l ca gcc Tr li th vin x li li , to th vin dng chung trc ht xy dng file i tng: $ gcc -fPiC -g -c liberr.c -o liberr.o Tip theo lin kt th vin: $ gcc -g -shared -Wl,-soname,liberr.so -o liberr.so.1.0.0 liberr.o -lc V khng th ci t th vin ny nh th vin h thng trong /usr hay /usr/lib chng ta cn to 2 kin kt, mt cho soname: V cho trnh lin kt khi kt ni da vo liberr, s dng lerr: $ ln -s liberr.so.1.0.0 liberr.so By gi, d dng th vin dng chung mi chng ta quay li chng trnh kim tra, chng ta cn hng trnh lin kt ti th vin no s dng v tm n u, v vy chng ta s s dng tu chn l v L: $ gcc -g errtest.c -o errtest -L. -lerr Cui cng chy chong trnh, chng ta cn ch cho ld.so ni tm th vin dng chung : $ LD_LIBRARY_PATH=$(pwd) ./errtest 7.3.4.3 S dng i tng dng chung theo cch ng 1 5

Mt cch s dng th vin dng chung l np chng t ng mi khi chy khng ging nh nhng th vin lin kt v np mt cch t ng. Ta c th s dng giao din dl (dynamic loading) v n to s linh hot cho lp trnh vin hay ngi dng. Gi s ta ang to mt ng dng s l ho. Trong ng dng, ta biu din d liu mt dng khng theo chun nhng li thun tin cho ta x l, v ta cn c nhu cu chuyn d liu ra cc nh dng thng dng c (s lng cc nh dng ny c th c hng trm loi) hoc c d liu t cc nh dng mi ny vo x l. gii quyt vn ny ta c th s dng gii php l th vin. Nhng khi c thm mt nh dng mi th ta li phi bin dch li chng trnh. y li l mt iu khng thch hp lm. Kh nng s dng th vin ng s gip ta gii quyt vn va gp phi. Giao din dl cho php to ra giao din (cc hm) c v vit chung khng ph thuc vo nh dng ca file nh. thm hoc sa cc nh dng ca file nh ta ch cn vit thm mt module m nhn chc nng v bo cho chng trnh ng dng bit l c thm mt module mi bng cch ch cn thay i mt file cu hnh trong mt th mc xc nh no . Giao din dl (cng n thun c xy dng nh mt th vin - th vin libdl) cha cc hm ti (load), tm kim v gii phng (unload) cc i tng chia s. s dng cc hm ny ta thm file <dlfcn.h> vo phn #include vo trong m ngun, v khi dch th lin kt n vi th vin libdl bng cch s dng tham s v tn ldl trong dng lnh dch. dl cung cp 4 hm x l cc cng vic cn thit ti, s dng v gii phng i tng dng chung.

Truy cp i tng chia s


truy cp mt i tng chia s, dng hm dlopen() c c t nh sau: void *dlopen(const char *filename, int flag); dlopen() truy cp i tng chia s bng filename v bng c. Filename c th l ng dn y , tn file rt gn hay NULL. Nu l NULL dlopen() m chng trnh ang chy, l chng trnh ca bn, nu filename l ng dn dlopen() m file , nu l tn rt gn 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 hiu (symbol) hay tn hm t i tng truy cp s c tm mi khi chng c gi, hoc c c th l RTLD_NOW, c ngha tt c k hiu t i tng truy cp s c tm trc khi hm dlopen() tr v. dlopen() tr iu khin ti i tng truy nhp nu n tm thy t filename hay tr v gi tr NULL nu khng tm thy. S dng i tng chia s Trc khi c th s dng m ngun trong th vin ta phi bit ang tm ci g v tm u. Hm dlsym() s gip iu : void *dlsym(void *handle, char *symbol); dlsym() tm k hiu hay tn hm trong truy cp v tr li con tr kiu void ti i tng hay NULL nu khng thnh cng. Kim tra li Hm dlerror() s gip ta kim tra li khi s dng i tng truy cp ng: const char *dlerror(void); Nu mt trong cc hm li, dlerror() tr v thng bo chi tit li v gn gi tr NULL cho phn b li.

Gii phng i tng chia s


1 6

bo v ti nguyn h thng c bit b nh, khi ta s dng xong module trong mt i tng chia s, th gii phng chng. Hm dlclose() s ng i tng chia s: int dlclose(void *handle);

S dng giao din dl


minh ho cch s dng dl,chng ta quay li th vin x l li, s dng mt 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 ngun chng trnh dltest.c Bin dch v d trn bng lnh: $ gcc -g -Wall dltest.c -o dltest -ldl Nh tac th thy, chng ta khng lin kt da vo liberr hay liberr.h trong m ngun. Tt c truy cp ti liberr.so thng qua dl. Chy chng trnh bng cch sau: $ LD_LIBRARY_PATH=$(pwd) ./dltest Nu thnh cng th ta nhn c kt qu nh sau: couldnt open foobar: No such file or directory

1 6

7.3.5 Cc cng c cho th vin Cng c nm Lnh nm lit k ton b cc tn hm (symbol) c m ho trong file i tng (object) v nh phn (binary). Lnh nm s dng c php sau: nm [options] file Lnh nm lit k nhng tn hm cha trong file. Bng di lit k cc tu chn ca lnh nm: Tu chn -C| -demangle -s|-print-armap -u| -undefined-only - l | -line-numbers Miu t Chuyn tn k t vo tn mc ngi dng cho d c. Khi s dng cc file lu tr (phn m rng l .a), in ra cc ch s ca module cha hm . Ch a ra cc hm khng c nh ngha trong file ny, tc l cc hm c nh ngha mt file khc. S dng thng tin g ri in ra s dng ni hm c nh ngha.

Cc tu chn ca lnh nm Cng c ar Lnh ar s dng c php sau: ar {dmpqrtx} [thnh vin] file Lnh ar to, chnh sa v trch cc file lu tr. N thng c s dng to cc th vin tnh- nhng file m cha mt hoc nhiu file i tng cha cc chng trnh con thng c s dng (subrountine) nh dng tin bin dch (precompiled format), lnh ar cng to v duy tr mt bng m tham chiu qua tn k t ti cc thnh vin m trong chng c nh ngha. Chi tit ca lnh ny c trnh by trong chng trc. Cng c idd Lnh nm lit k cc hm c nh ngha trong mt file i tng, nhng tr khi ta bit nhng g th vin nh ngha nhng hm no. Lnh idd hu ch hn nhiu. idd lit k cc th vin c chia s m mt chng trnh yu cu m chy. C php ca n l: idd [options] file Lnh idd in ra tn ca th vin chia s m file ny s dng. V d: chng trnh th client mutt cn 5 th vin 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 hiu lnh idconfig Lnh idconfig s dng c php sau: ldconfig [tu chn] [libs]

1 6

Lnh ldconfig xc nh r cc lin kt ng (lin kt khi chy) c yu cu bi th vin c chia s nm trong cc th mc /usr/lib v /lib. Di y l cc ty chn ca lnh ny: Cc tu chn -p -v Cc miu t n thun ch in ra ni dung ca /etc/ld.so.cache, mt danh sch hin thi cc th vin c chia s m ld.so bit. Cp nht /etc/ld.so.cache , lit k s phin bn ca mi th vin, qut cc th mc v bt k lin kt m c to ra hoc cp nht. Cc tu chn ca hm idconfig

Bin mi trng v file cu hnh. Chng trnh ti (loader) v trnh lin kt (linker) ld.so s dng 2 bin mi trng. Bin th nht l $LD_LIBRARY, cha danh sch cc th mc cha cc file th vin c phn cch bi du hai chm tm ra cc th vin cn thit khi chy. N ging nh bin mi trng $PATH. Bin mi trng th hai l $LD_PRELOAD, mt danh sch cc th vin c ngi dng thm vo c phn cch nhau bi khong trng (space). ld.so cng cho php s dng 2 file cu hnh m c cng mc ch vi bin mi trng c cp trn. File /etc/ld.so.conf cha mt danh sch cc th mc m chng trnh ti v trnh lin kt (loader/linker) nn tm kim cc th vin chia s bn cnh /usr/lib v /lib. /etc/ld.so.preload cha danh sch cc file th vin c phn cch bng mt khong trng cc th vin ny l th vin ngi dng to ra.

1 6

TI LIU THAM KHO

1 6

CH THCH MT S THUT NG
Vn chn thut ng ting Vit cho cc thut ng gc ting Anh lun l vn cn c tho lun vic chn la nh vy l thch hp. D cho trong ti liu ny, nhiu thut ng ting Vit c s dng mt cch ph bin nhng ti liu cng lit k vo bng ch thch di y vi mc ch gip bn c thun tin trong tra cu v lin h. Trong bng ch thch, mi thut ng ting Vit dng trong ti liu s c km theo thut ng ting Anh gc v sau c th l mt li ch thch ngn. Bng ch thch l mt c gng nh nhm h tr s dng ti liu ny hiu qu hn v phm vi s dng ca n gii hn trong ti liu. Ting Vit File Ting Anh File Gii thch ngn Tp hp d liu c t chc theo mt mc ch s dng: on vn bn, mt chng trnh ngun, mt tp hp d liu ... Cn c gi l tp hay gi theo cch gi nguyn gc ting Anh l File. Tn gi ca file (file thng, th mc, file c bit ...) c dng xc nh file. Ni cha mt danh sch cc file trong h thng File, c Linux coi nh mt dng file c bit. H thng ton b cc file c trong h iu hnh Linux (v UNIX ni chung). Linux cho php ngi s dng dng lnh trnh by mt "thao tc" yu cu h thng thc hin. Lnh c sn trong Linux (trong shell hoc c t ti nhng th mc theo quy nh ca Linux). Dng lnh bao gm mt hoc mt s lnh trong mt ln yu cu ca ngi dng. Kt thc dng lnh l du xung dng. Th tc bt u mt phin lm vic ca mt ngi s dng. Login l lnh cho php ng nhp. Th tc logout kt thc phin lm vic. Ngi s dng Linux cho cng vic ca mnh. Linux quy nh c mt siu ngi dng thc hin c quyn hn ti cao trong h thng bao gm cc lnh qun tr h thng. Vi mt s lnh Linux (thm, bt ngi dng ...) th ch siu ngi dng c php s dng. im nh du trn mn hnh nh du v tr hin thi hin thng tin. Trong trnh son tho vn bn, n l v tr son tho hin thi trong vn bn B chng trnh bao gm cc file trn a (bng) t c chc nng qun l ti nguyn my tnh v ng vai tr l "my tnh o" i vi ngi dng. 1 6

Tn file Th mc H thng file Lnh Tin ch (cn gi l lnh thng trc) Dng lnh ng nhp Ngi dng Siu ngi dng (ngi dng ti cao/ngi qun tr) Con tr H iu hnh

Filename Directory File system Command Utility

Command line Login User Superuser

cursor Operating System (OS)

H iu hnh a chng trnh H iu hnh a ngi dng Nhn Qu trnh Chng trnh gii thch lnh

Multiprogramming OS

H iu hnh hot ng theo cch thc trong b nh ng thi c nhiu chng trnh c "bnh ng" trong phn phi ti nguyn (CPU, b nh).

Multi-users OS Mi ngi dng s dng mt trm cui c kt ni my tnh trc tip thc hin cng vic trn my tnh (c a chng trnh). B phn ct li nht ca Linux, thng trc Kernel thc hin cc chc nng c bn ca h iu hnh (cn c gi l li) Mt ln thc hin ca mt chng trnh (Cn c Process gi l tin trnh). Mt s h iu hnh gi l bi ton (task). Mt chng trnh thuc h iu hnh c chc nng Command tip nhn, phn tch dng lnh ngi dng lnh Comment c thc hin. Trong Linux l shell, trong MSProgram DOS l COMMAND.COM. (CCP) Login Th tc m mt ngi dng cn phi thc hin khi bt u phin lm vic vi Linux. Th tc ny yu cu ngi dng a vo tn k hiu v mt khu c ng k trong h thng. Th tc m mt ngi dng cn phi thc hin khi kt thc phin lm vic vi Linux. Trn my tnh c nhn, sau khi ng xut s ko theo mt ng nhp mi. Cn gi l du nhc dng lnh K hiu c dng xc nh mt nhm file (v d *, ?, [] v [] vi -). Cn c gi l k hiu thay th. Qu trnh to ra h iu hnh Linux ln my tnh s dng

ng nhp

ng xut

Logout

Du nhc shell K hiu m t wildcards nhm Ci t Linux Installation Linux

1 6

PH LC A. QU TRNH CI T REDHAT-LINUX
Linux s dng phn cng ca my PC hiu qu hn MS-DOS, Window hay WinNT, v do kh nng chu cc li do cu hnh sai phn cng s km hn. Chng ta cn lm mt s vic trc khi bt u ci t gim thiu cc kh nng khng th ci t tip khi gp phi vn ny. Trc tin, hy c gng tm cng nhiu cng tt cc ti liu v phn cng my PC m mnh nh ci, nh mainboard, card ho, mn hnh, modem... v chng ni c th tm thy v tra cu d dng. Tip theo, tm hiu thng tin v phn cng my tnh ca v tp hp chng li. Chng ta c th lm iu ny khi s dng chc nng in cu hnh my ca mt s tin ch nh MSD trong DOS, hoc System Information trong Windows. Nhng thng tin chnh xc v bn phm, chut, mn hnh... s gip rt nhiu trong qu trnh cu hnh X sau ny. Sau , kim tra phn cng my tnh ca tm ra cc vn nu c, bi chng c th lm qu trnh ci t Linux b treo. Sau y l mt s vn thng gp. Mt h thng DOS hay Windows c th qun l a IDE v CDROM c khi jumper master/slave khng c t ng. Trong khi Linux khng gii quyt c vn ny. V vy nu c nghi ng hy xem li cc jumper ny c t ng cha. Mt s thit b ngoi vi cn c nhng tin ch t cu hnh cho chng khi my khi ng. Cc thit b nh card mng, CD-ROM, card m thanh hoc bng t c th gp phi vn ny. Nu trng hp ny xy ra, c th s dng lnh t cu hnh li ti du nhc khi ng. Mt s h iu hnh khc cho php chut dng bus chia s mt IRQ vi cc thit b khc, trong khi Linux khng h tr iu ny. Nu th lm iu , h thng c th b treo. Nn lin h vi ngi dng Linux c kinh nghim c gii p nhng vng mc. Cn tin hnh cng vic chun b thi gian cho vic ci t. Qu trnh ci t c th ko di mt ting hoc hn vi nhng h thng ch ci Linux, hoc ln ti ba ting vi h thng cn chy nhiu h iu hnh khc nhau (thng vi nhng h thng ny kh nng b treo my hoc c li khi ci t s cao hn). Ph lc ny gii thiu cch ci t hai phin bn RedHat l 6.2 v 7.1 nhm cung cp tnh a dng khi ci t, to iu kin cho ngi s dng.

AA. Ci t phin bn RedHat 6.2


AA.1. To a mm khi ng Bc ny ch cn thit khi khng th khi ng t CD-ROM. Nu mua Red Hat Linux trc tip t Red Hat Linux s nhn km a khi ng. Cn nu mua bn copy t cng ty th 3, ta phi t to a khi ng v cch to l nh sau: Trong Windows, a a mm vo . Bm phm phi chut vo desktop to folder mi, t tn Bootdisk ri m folder ny. a a CD Red Hat vo CD. M My Computer, nhn vo CD, m folder c tn Dosutils, nhn vo file Rawrite, bm phm phi chut v ko n vo Bootdisk. Chn Copy here t menu xut hin. ng ca s Dosutils. M folder Images trong CD-ROM. Chp file Boot.img vo folder Bootdisk, ging nh lm vi Rawrite.

1 6

Chn Start.Run g vo Command trong hp hi thoi, nhn OK. Mt ca s xut hin vi du nhc DOS C:\Windows\Desktop. G vo cd bootdisk, nhn Enter. Khi hon tt vic to a mm khi ng: g rawrite ti du nhc DOS. Nhp boot.img l tn file mun copy, nhn Enter. G a:\ (tn a mm), v nhn Enter khi c hi ch. AA.2. Phn vng li a DOS/Windows hin thi Trong hu ht cc h thng c s dng, cng thng c phn vng cho MSDOS, OS/2,... Cn thay i kch thc, sp xp li cc phn vng ny to ch trng cho vic ci t Linux. Cch tt nht lm vic ny l dng mt phn mm chuyn dng, chng hn nh phn mm PQMagic ca Power Quest. Dng phn mm ny, c th di chuyn / thay i kch thc / thm / xo / format cc phn vng trong cng mt cch d dng vi giao din ho. Cn vic dng FDisk ca MS-DOS th cc k vt v, mun di chuyn / thay i kch thc ca mt phn vng no , u tin phi backup tt c cc d liu trong phn vng, xo phn vng (vic ny s lm mt cc thng tin v d liu trong phn vng), tip theo l to mt phn vng mi vi kch thc mong mun, cui cng l restore li ton b d liu backup vo phn vng mi to ny! Tt nht dng mt phn mm min ph cc mnh nh PQMagic. AA.3. Cc bc ci t (bn RedHat 6.2 v khi ng t CD-ROM) a a CDROM Redhat 6.2 vo CD, sau trong BIOS SETUP ta t ch khi ng t CD. Khi khi ng li my, qu trnh s c boot t CDROM. Sau y l chi tit qu trnh mt a khi ng ci t tin hnh. La chn ch ci t H thng a ra cc ch cho chng ta la chn : G Enter chn ch ci t ha. G text + Enter chn ch Text. G expert + Enter chn ch Expert. Chn ch ny c ngha ta t chn cu hnh phn cng cn hai ch trn s t ng detect. G linux ks + Enter chn ch ci t t mng hoc t a mm. La chn ngn ng hin th. H thng a ra rt nhiu ngn ng cho php la chn, v d nh Czech, English, French, German.... Thng chn English. La chn cu hnh bn phm Linux i hi la chn cu hnh bn phm t cc m hnh sau: Model : Brazilian ABNT 2 Dell Generic. Microsoft. ................. 1 6

Ta s la chn bn phm tng thch theo cc dng trn, nu khng r bn phm thuc loi no th nn chn kiu Generic. Layout: Ngn ng s dng g (khong 24 ngn ng) Variant: C 2 ch l. Eliminate Dead Keys (khi chng ta s dng cc k t c bit). None (kiu mc nh). Test: chng ta s g cc phm kim tra th. Chn cu hnh chut H thng a ra 10 loi chut la chn loi tng thch vi chut ca mnh, nu khng bit r chut thuc loi no th nn chn kiu Generic. V phi chn ng kiu chut l PS/2 hay Serial nu khng th s khng s dng c chut. H thng a ra li gii thiu v bn Red Hat ang ci t. La chn kiu ci t. Install (ci mi) gm c cc ch : GNome Workstation. KDE Workstation. Server Custom Upgrade (Nng cp) Tu chn ci t WorkStation Nu la chn kiu ci mi l GNome Workstation hoc KDE Workstation th h thng s ci t X Window System v chng trnh qun l Desktop theo dng GNome hoc KDE. Nu cha tho lm v Linux th hy s dng tu chn ny, n s b qua nhiu bc. La chn Custom l ch ph hp vi ngi quen vi Linux. C hai la chn WorkStation ny s chun b cc vic sau: Nu a cng ca cha h c phn vng trc , Linux s xo ht tt c cc phn vng trn cc a cng v ci t cc phn vng sau: + Mt phn vng swap kch thc 64MB + Mt phn vng root (c mount l / ) cha ng mi file c ci t. Ch l chng ta s phi cn ti thiu 600MB cng tin hnh ci t theo kiu WorkStattion. Nu h thng c ci sn Windows (Windows 3.1/95/98), kiu ci t WorkStation s t ng cu hnh h thng khi ng ch song song s dng LILO. Tu chn ci t Server Nu la chn kiu ci t mi l Server th h thng s ci t theo kiu my ch Linux v cng nh kiu WorkStation, tu chn ny s trnh phi cu hnh nhiu thnh phn phn cng. V khi ci t theo kiu ny, nn cn thn v h thng s xo tt c cc partition trn 1 6

tt c cc a. V vy, ch chn kiu ci t Server nu chc chn trong cng khng c mt d liu g c. Sau y l cc bc m kiu ny tin hnh phn vng a: + To mt phn vng Swap kch thc 64MB. + To mt phn vng kch thc 256MB vi mount point l /. + To mt phn vng kch thc ti thiu 512MB c mount l /usr. + To mt phn vng ti thiu 215MB c mount l /home. + To mt phn vng kch thc 256MB c mount l /var. Nh vy chng ta phi cn ti thiu 1.6BG cng tin hnh ci t theo kiu Server. Tu chn ci t Custom i vi kiu Custom h thng s cho php t chn cc thnh phn v cu hnh phn cng ci t mt cch y nht, tuy nhin cng ri rm v phc tp nht. T bc 7 tr i, ch gii thiu v tu chn ci t ny. Sau y s gii thiu tng qut mt s bc m qu trnh ny thit t: To cc phn vng: cn phi ch r Redhat s c ci t vo phn vng no. Format cc phn vng: Nhng phn vng mi c thm vo s phi c format li theo nh dng Linux filesystem. Tuy nhin cng c th la chn phn vng no cn phi format. La chn v ci t cc gi phn mm i km: Thc hin sau khi phn vng a cng. Thit t cu hnh LILO: c th la chn ci t LILO vo Master Boot Record hoc Sector u tin ca phn vng Root hoc khng la chn ci LILO. Xc nh cc Partition u tin cn xc nh cc im kch hot (mount point) cho mt hoc nhiu partition. Trong bng partition c cc thng tin sau: Mount Point: Xc nh partition no s c kch hot khi Linux c ci t v chy. Nu partition tn ti v c nhn l not set th ta xc nh mount point bng cch kch chut vo nt Edit hoc double - click trn partition. V h thng khuyn chng ta nn to cc partition theo cch sau: Mt swap partition (t nht 16MB) - dng h tr b nh o. Nu my chng ta c 16Mb Ram hoc t hn th bt buc chng ta phi to swap partition. Thm ch nu c nhiu b nh hn, chng ta cng nn to swap partition. Kch thc ti thiu ca swap partition = max |b nh Ram v 16Mb|. Mt boot partition (ti a 16Mb) - cha nhn ca HH cng vi cc file trong qu trnh khi ng. Mt root partition (t 500Mb - 1Gb) l ni cha th mc gc v tt c cc file (tr cc file trong boot partition). Vi 500Mb cho php ci theo kiu Workstation v vi 1Gb cho php ci mi th.

1 7

Device: Hin tn cc device partition (V d: hda2 i din cho partition th 2 trn cng primary). Request: Cho bit khng gian m partition hin c. Nu mun thay i kch thc th chng ta phi xo partition v to li bng cch dng nt Add. Actual: Cho bit khng gian m partition ang s dng. Type: Cho bit kiu ca partition. V chng ta c th add, edit, v delete cc partition bng cch kch chut vo cc nt . Chc nng ca tng nt l: Add: Dng to mt partition mi, gm c cc thng tin sau: Mount Point: gm c cc kiu /: /boot : /usr : /home : /var : /opt : /tmp : /usr/local : Size (Megs): chn kch thc ca partition. Grow to fill disk: nu chn th partition ny s s dng ton b vng a trng cn li. Partition type: gm c cc kiu Linux Swap: chn kiu ny nu chng ta mun to partition swap. Linux Native : chn kiu ny nu chng ta mun to partition root. Linux RAID : DOS 16-bit < 32 : DOS 16-bit > 32 : Edit: Dng thay i mount point ca partition. Delete: Dng xo partition. Reset: Khi phc li nhng thay i. Make RAID Device: S dng Make Raid device ch khi c kinh nghim v RAID. Drive Summaries: hin th thng tin v cu hnh a. Chn Partition Format Gm c cc thng tin:

1 7

Partition mun Format. La chn Check for bad blocks while formating Chn Check for bad blocks while formating tm ra nhng bad bocks trn a sau s nh du li nhm khng ghi d liu ln chng na. Chn cu hnh LILO (Linux Loader) chn cu hnh LILO, phi khng t du kim Do not install LILO. Nu Linux Native c tn l /dev/hda5 th mn hnh s hin ra cho php ci t chng trnh np Linux vo Master Boot Record (MBR) hoc First Sector of boot partition (sector u tin ca phn vng khi ng). Ni chung l nn chn Master Boot Record c th khi ng t nhiu . Nu c cc a SCSI hoc a cng ca h tr LBA th cn phi nh du kim vo mc Use Linear Mode. Kernel Parameters: Cc tham s s dng bt c khi no nhn c khi ng. Bng di s cho bit thng tin v cc phn vng: tn phn vng, loi phn vng, c phi l phn vng khi ng khng ?. cn chn phn vng khi ng l phn vng c tn Linux (thng l phn vng m Redhat s t mc nh v chng ta khng phi thay i g). Nu c phn vng tn l dos, chnh l phn vng trc khi ci t th sau ny mi khi khi ng my tnh, chng ta c th chn phn vng ny khi ng mt cch bnh thng bng cch g tn phn vng ti du nhc LILO Boot trong qu trnh khi ng. Cho php thay i tn ca phn vng tng ng trong phn Boot Label. Tu chn Create boot disk: ch cn chn mc ny nu khng ci LILO hoc ci LILO nhng khng ci vo MBR. Ch l nu khng ci LILO th bt buc phi chn mc ny khi ng t a mm. Chn mi gi Nu ci trong ch ha, mn hnh mc nh s hin ra mt bn th gii. C th thay i bn theo cc kiu sau: World (bn th gii) North American (Bc M) South American (Nam M) Pacific Rim (Chu c) Europe (Chu u) Africa (Chu Phi) Asia (Chu ) i vi Vit Nam ta th chn Asia/Saigon (trong a CD ci t LinuxVN th mc chn l Asia/Hanoi). C th chn mi gi theo kiu UTC Offset (Universal Time Coordinated), tc l kiu GMT +/- lch. Nu h thng gi s ti s dng UTC th chn System clock uses UTC. 1 7

Thit t cu hnh Account (ngi s dng) Nh bit Linux k tha t Unix, do n cng h tr ch a ngi dng nh Unix. Bn ci t Redhat cho php t lun cu hnh ngi dng ngay trong qu trnh ci t. u tin chng ta cn t mt khu cho ngi dng Root trong phn Root Password v xc nhn li mt khu ny trong mc Confirm. Ch l mc nh tt c cc mt khu u phi ti thiu 6 k t. Sau ta c th thm ngay mt s ngi dng u tin: Tn t trong Account Name, g password trong mc Password v xc nhn mt khu trong mc Password (confirm) ngay bn cnh, tn y ca ngi dng trong mc Full Name. Sau g phm Add th thm ngi dng mi vo danh sch cc ngi dng. Phm Edit cho php hin th ngi dng hin hnh trong bng danh sch ngi dng, phm Delete xo ngi dng hin thi. Thit t cu hnh quyn hn (Authentication Configuration) Thc hin cc mc sau: Enable MD5 Password: cch m ho ny cho php mt khu di ti 256 k t. Shadow Password: y l cch bo mt ti a cho mt khu, file cha mt khu /etc/passwd s c thay bng etc/shadow v file ny ch c php hin th bi ngi dng Root. Chn c 2 mc ny s tng tnh bo mt ca h thng. Enable NIS: chn mc ny nu my tnh kt ni vo mng NIS (Network Information System) cho php mt nhm my tnh trong vng Network Information Service vi cng mt password. NIS domain: tn ca domain hoc nhm my tnh cha h thng. NIS server: cho php my tnh dng mt NIS server rng, hn l mt thng ip rng ri trong mng LAN. La chn cc gi phn mm ci t (Pakage Selection) C rt nhiu mc chn s ni chi tit phn sau nh: Printer Support, h thng X Window, GNome, KDE, DOS / Window Connectivity,.... La chn Everything s ci y tt c mi th, do cn phi la chn cc gi phn mm ph hp nu Linux Native / khng . Cc packages c th c chn ci t bao gm: Printer Support: Nu c ci Linux s c gng nhn my in hoc cho php ngi dng thit lp cc thng s v my in ca h thng. X Window System: Mi trng ha nguyn thu trong Linux, c gi tt l X. X khng phi l mt giao din ha ngi dng thc s m ch l mt h ca s cng vi cc cng c mt giao din ha ngi dng c th c xy dng t . GNOME: L mt giao din ha ngi dng p hn, tin li v thn thin hn X, GNOME cng cung cp mt giao din lp trnh mc cao hn to ra cc ng dng vi giao din kiu GNOME.

1 7

KDE: KDE l mt giao din ha ngi dng c pht trin da trn th vin giao din ha C++ Qt. Th vin giao din ny h tr UNIX, Windows v c Mac. Do c pht trin trc GNOME nn KDE c nhiu im tt hn. Mail/ WWW/ News tools: B cng c dng gi, nhn th tn in t, duyt Web v c cc bn tin. Dos/ Windows Connectivity: B gi lp DOS v Windows cho php ngi dng chy cc ng dng DOS v Windows ngay trong Linux. Graphic Manupulation: Cc tin ch ha nh Gview, Imgedit... cho php trnh din v x l cc file hnh nh. Games: Mt s chng trnh tr chi gii tr trong ch text hoc X Window. Multimedia Support: Cc chng trnh h tr a phng tin, nh nghe midi, wave, mp3... iu khin joystick, thu m ... Dialup WorkStation: Cho php ngi dng s dng modem v quay s s dng cc dch v qua ng in thoi nh gi nhn mail, web... News Server: Cung cp dch v my ch news, cho php my tnh tr thnh mt server bn tin. NFS Server: My ch h thng file mng NFS (Network File System). SMB Server: My ch h thng file mng Samba. IPX/ Netware Connectivity: Gip h thng chy Linux giao tip vi cc my tnh khc qua mng Netware s dng giao thc IPX. Anonymous FTP Server: Ci t package ny gip my tnh tr thnh mt my ch FTP (File Transfer Protocol), c th cung cp dch v truyn file cho cc my khc trong mng. Web Server: Ci t package ny gip my tnh tr thnh mt my ch Web, c th cung cp dch v web cho cc my khc trong mng. DNS Name Server: Ci t package ny gip my tnh tr thnh mt my ch DNS, c th cung cp dch v t tn vng cho cc my khc trong mng. Postgres (SQL) Server: Ci t package ny gip my tnh tr thnh mt my ch SQL, c th cung cp dch v truy vn d liu cho cc my khc trong mng. Network Management Workstation: Gip my tnh trm lm vic iu hnh tr thnh mt my ch SQL, c th cung cp dch v truy vn d liu cho cc my khc trong mng. TeX Document Formatting: H son tho v nh dng vn bn di dng Tex. Emacs: H son tho vn bn n gin. Development: Cc b bin dch, g ri, cng c pht trin phn mm ... di cc ngn ng nh Perl, C, C++. M ngun ca cc chng trnh trong Linux. Kernel Development: M ngun nhn Linux v b cng c pht trin dnh cho pht trin nhn Linux.

1 7

Extra Documentation: Mi ti liu v Linux c trong a CD, di nhng ngn ng nh Anh, Php, Italia, Ty Ban Nha... Utilities: Cc tin ch cho Linux. Thit t cu hnh X (X Configuration) Phn ny s t cu hnh card mn hnh th hin khi chng ta s dng cc h thng X Window. V d sau y l mt s thng s hin 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 dc: 50 - 120 Hz y l phn kh quan trng, nu card mn hnh ca khng phi l dng chun th s phi ci bng tay, mt cng vic kh mt mi. Test this Configuration: n vo y kim tra tnh nng ho c hot ng tt khng, nu mn hnh ca qua khi cuc kim tra ny th c th coi l thnh cng ti 90% qu trnh ci t Redhat. Customize X Configuration: Nu chn mc ny th ghi g Next, Redhat s cho mt bng cho thit lp bng tay cc ch ha 8 bits, 16 bits, 32 bits; cc ch phn gii 640x480, 800x600, 1024x786, ... Ch l khi chn phn gii no th lun lun g phm Test this Configuration m bo mn hnh ca lun hin th ng. Bt u qu trnh copy t a CD vo cng Bc cui cng ny s thc hin cc bc format Linux Native / (nu chn phn trc), format Linux Swap, v sau l gii nn tt c cc gi phn mm m la chn trong bc th 13 vo cng. Qu trnh ny mt khong 10 pht n 20 pht tu theo s lng cc gi chn. Kt thc qu trnh ny, g Exit, khi ng li my, nh tho a CD Redhat ra khi bt u khi ng t cng. AA.4. Cc hn ch v phn cng i vi Linux Cc b vi x l m Linux h tr Linux ch yu chy trn cc my PC th h 386, 486, 586 s dng cc phn cng h vi x l 80386. Vic ci t trn cc phn cng khc th vn ang trong giai on thit k. C th chy th Linux bng mt my vi phn cng ti thiu l: b vi x l Intel 386, 486, 586, 4MB RAM v mt mm. D nhin l cng nhiu RAM th cng tt. Linux h tr VESA Local Bus v PCI.

1 7

Linux cng h tr phn ln cho cc cng chun ESDI v MCA (bus c quyn ca IBM). Linux cng c th chy trn cc laptop h 386. C mt cch ci t Linux trn 8086 c bit n di tn gi ELKS (Embeddable Linux Kernel Subset). y l mt nhn Linux 16 bit c ch yu s dng trong cc h thng nhng. Thc ra phin bn Linux hin nay khng th chy c y trn 8086 hay 286 bi v nhng b vi x l ny khng h tr cho vic chuyn i tc v cng nh qun l b nh. Linux h tr a qu trnh cho cc kin trc Intel MP. Di y l danh sch cc b VXL m Linux h tr: Dng 68000 ca Amigas v Ataris hin ang c trin khai nghin cu. Cc phin bn GNU/Linux cng c th ci t cho cc nn Alpha, Sparc, PowerPC, ARM. Mt d n v Linux trn PPC cng c tin hnh. Apple h tr MkLinux trn cc Power Macs da trn OSF ca Mach vi nhn. Linux cho my 64 bit DEC Alpha/AXP. ang nghin cu v Linux cho MIPS, bt u i vi R4 trn cc my Deskstation Type. Hin c 2 bn Linux cho dng my dng h vi x l ARM. Mt l ca vi x l ARM3 trn cc my Acorn A5000 v n cn bao gm c cc thit b I/O cho 82710. Cn li l cho h vi x l ARM610 ca my Acorn RISC PC. Linux cho SPARC ang c tin hnh. C bn Hardhat cho cc my SGI/Indy. Cc yu cu v khng gian cng i vic ci t ti thiu l 10 MB, ch yu l th ch khng c nhiu cc tnh nng khc. Ta c th ci t thm X vi khong 80 MB. Nu ci t c b GNU/Linux s cn khong 500MB-1GB bao gm c m ngun v nhiu th khc na. Cc yu cu v b nh Ti thiu l 4MB. Ta c th s dng swapping chy thm cc ci t khc. Linux ni chung l chy tng i thoi mi vi 4MB Ram nhng cc ng dng X Windows s chy chm bi v chng cn phi thc vic swap vo ra trn a. Mt vi ng dng hin ti li ch chy bnh thng vi 128MB b nh vt l chng hn nh Netscape. S tng thch vi cc h iu hnh khc: DOS, OS/2, 386BSD, Win95 Linux s dng sp xp phn dng ging nh MS-DOS do n c th chia s a vi cc h iu hnh khc. Tuy vy, iu ny cng c ngha l cc h iu hnh khc cng c th khng hn l hon ton tng thch. Cc trnh Fdisk v Format ca DOS thnh thong li c th vit ln d liu trong phn vng ca Linux bi v chng c th s dng cc thng tin phn vng sai lnh t boot sector ca phn vng ch khng phi l t bng phn vng. trnh hin tng ny, mt tng l a v 0 a ch bt u ca mt phn vng 1 7

va mi to lp trong Linux trc khi s dng cc lnh format ca MS-DOS. S dng lnh sau: $ dd if=/dev/zero of=/dev/hdXY bs=512 count=1 Vi hdXY l phn vng lin quan, chng hn /dev/hda1 l phn vng u tin trn a IDE u tin. Linux c th c v ghi cc file trn cc phn vng FAT ca DOS v OS/2 v cc a mm bng cch s dng h thng file DOS c tch hp vo nhn hoc cc cng c mtool. Nhn cng cung cp h tr cho h thng file VFAT ca Windows 9x v Windows NT. Hin ti cc a phn vng theo NTFS cng ang c nghin cu h tr cng vi vic h tr nn a nh l mt tnh nng chun. Linux cng c th truy cp c ti h thng file HPFS ca OS/2 nhng ch ch read-only. Ngi ta c th thc hin iu ny nh mt la chn khi bin dch nhn. Linux cng h tr cho vic thao tc trn cc nh dng AFFS (Amiga Fast File System) t bn 1.3 tr v sau bng cch nh mt la chn lc bin dch hay nh mt m un ring. Tuy vy, iu ny cng ch dng mc ch c. Cc truy cp a mm th cha c h tr bi v s khc bit gia cc iu khin a ca PC v Amiga. i vi cc my chy cc h iu hnh ca Unix nh BSD, System V... th cc nhn hin ti cng mi ch c th c h thng file UFS trn System V, Xenix, BSD, mt s sn phm tha k khc nh SunOS, FreeBSD, NetBSD, NeXTStep. H tr UFS cng c coi nh mt la chn lc bin dch nhn hay nh mt m un. Linux cho php c/vit trn cc a SMB ca cc nhm Windows v WinNT. C mt chng trnh tn l Samba cho php truy cp v h thng file mng WfW (min l dng giao thc TCP/IP) . i vi cc my Macintosh th c mt tp hp cc chng trnh cp ngi dng c th c, ghi trn HFS (Macintosh Hierarchical File System). Cu hi t ra l c th chy mt chng trnh Windows trong Linux hay khng ? Chng trnh tn WINE ang c pht trin m phng mi trng Windows trong Linux. Hin ti khi mun dng hai h iu hnh cng lc vi Linux th ta c chng trnh LILO boot. LILO boot bt buc ta phi la chn h iu hnh vo lc khi ng. Ngoi ra, cn c mt chng trnh tn LOADLIN l mt chng trnh DOS cho php np Linux (cng nh bt k h iu hnh khc) khin cho Linux cng tn ti vi DOS. LOADLIN c bit hu dng khi ta mun ci Linux trn cc a th 3, 4 ca h thng (hoc khi ta thm mt SCSI vo mt h thng c cha IDE). Trong trng hp ny th LILO boot s khng c kh nng tm kim v np nhn. Do ta s phi to mt th mc chng hn C:LINUX, t LOADLIN vo trong cng vi mt bn copy ca nhn v ri s dng n. Ch : Cn to t nht mt phn vng Linux di gii hn 1024 cylinder logic.

1 7

PH LC B. TRNH SON THO VIM


UNIX c hai b son tho l ed v vi trong vi c a chung hn do vi c pht trin t b son tho dng lnh ed. Trong ch vn bn, Linux cho php ngi dng s dng trnh son tho vim m vim chnh l b son tho tng thch vi vi. vim c phn ln ngi dng s dng son tho cc file vn bn ASCII, c bit l to ra cc vn bn chng trnh ngun. vim c su ch c bn: Ch thng (Normal mode): trong ch thng ngi dng c php nhp tt c cc lnh son tho thng thng. Nu khng thit lp tu chn insertmode, ngm nh vo ngay ch thng khi khi ng vim. Ch thng cn c gi l ch lnh. Ch o (Visual mode): ch ny cng gn ging nh ch thng, ch khc ch l lnh di chuyn c tc dng nh du vn bn. Mt khc, cc lnh khc (khng l lnh di chuyn) thc s tc dng trong phm vi nhng on vn bn c nh du. Ch chn la (Select mode): ch ny tng t nh ch la chn ca MS-Windows. Ngi dng c th nhp mt k t thuc loi in n c xo mt s la chn v chy ch chn. Ch chn (Insert mode): Trong ch ny, c th son tho vn bn bnh thng nh cc b son tho quen bit khc. Vn bn s c chn vo trong b m. Ch dng lnh (Command-line mode hay cmdline mode): Trong ch ny, mt dng lnh c nhp ti y ca s son tho. c th l cc lnh Ex (:), cc lnh tm kim (/ hay ?), v cc lnh lc (!). Ch Ex (Ex mode): ging nh ch dng lnh, nhng sau khi nhp mt lnh, vn trong ch Ex. Tuy nhin cn rt nhiu hn ch i vi cc lnh ch ny. Ngoi ra cn c nm ch ph sau: Ch ch thc hin (Operator-pending mode): ch ny ging ch thng, nhng sau khi gi mt lnh, vim s ch cho n khi on vn bn chu tc ng ca lnh c a ra. Ch thay th (Replace mode): ch thay th l mt trng hp c bit ca ch chn. Ngi dng c th nhp mi k t nh trong ch chn, ch khc ch: mi k t nhp s thay th cho mt k t tn ti (c th gi l ch - overwrite). Ch chn-lnh (Insert Normal mode): g CTRL-O trong ch chn chuyn sang ch chn-lnh. Ch ny cng ging nh ch thng, nhng sau khi thc hin mt lnh, vim s tr li ch chn. Ch chn-o (Insert Visual mode): ch ny c sinh ra khi trong ch chn thc hin mt s la chn o. vim s tr v ch chn sau khi s la chn o kt thc.

1 7

Ch chn-la chn (Insert Select mode): ch ny c khi to khi chy ch la chn trong ch chn. Khi ch la chn kt thc, vim s tr v ch chn. Vic chuyn i gia cc ch trong vim c thc hin nh cc lnh (phm lnh hoc xu lnh) ca vim v c tp hp trong bng di y. Trong bng ny, ct u tin l ch ngun, hng u tin l ch ch, giao gia hng v ct cha cc phm lnh chuyn ch (k hiu *1, *2, *3, *4, *5, *6 l cch vit tt danh sch lnh c gii thch sau): Ch cn chuyn ti Ch hin thi Thng o La chn Chn Thay th Dng lnh Ex *2 *5 <Esc> <Esc> *3 :vi Thng o v, V, ^V ^O, ^G ----La chn *4 ^G ----Chn *1 c, C *6 <Insert> :start -Thay th R --<Insert> --Dng lnh :, /, ?, ! : : ---Ex Q ------

Gii thch cc lnh vit tt: *1 chuyn sang ch chn t ch thng, s dng mt trong cc phm: i, I, a, A, o, O, c, C, s, S. *2 chuyn sang ch thng t ch o: ngoi <Esc>, v, V, CTRL-V c th g mt phm lnh thng thng (ngoi tr phm lnh di chuyn con tr). *3 chuyn sang ch thng t ch dng lnh: Thc hin lnh <Enter> G CTRL-C hoc <Esc> *4 chuyn sang ch la chn t ch thng: S dng chut la chn vn bn S dng cc phm khng in c di chuyn du nhc tr trong khi n gi phm SHIFT *5 chuyn sang ch thng t ch la chn: s dng cc phm khng in c di chuyn du nhc tr m khng nhn phm SHIFT. *6 chuyn sang ch chn t ch la chn: nhp mt k t c th in c. Di y trnh by ni dung mt s cc lnh c bn trong vim.

1 7

B.1 Khi ng vim


B.1.1 M chng trnh son tho vim Cch n gin nht bt u dng vim son tho mt file vn bn, l g mt trong ba lnh sau: bt u son tho hay hiu chnh mt file vim [tu-chn] bt u son tho mt hoc nhiu file vim [tu-chn] <danh sch cc file> son tho mt file t thit b vo chun vim [tu chn] Nu tham s danh sch cc file khng c th vim s thao tc vi mt file mi (vng m son tho rng). Ngc li, file u tin trong danh sch tr thnh file hin hnh v c c vo trong vng son tho. Con tr s xut hin u dng u tin ca vng ny. hng n file k tip, ta nh lnh ":next" ch lnh. son tho mt file c tn bt u bng "-" th phi in vo tn file du "--". V d: # vim vdvim`
~ ~ ~ ~ ~ ~ ~ "vdvim"[New File] 0,0-1 All

Lnh trn m mt ca s cho ngi dng son tho mt file mi c tn l "vdvim" Mt s cc tu chn c bn: + [n] + <lnh> +/<mu> <file> -o[n] --help t du nhc tr ti dng th n (ngm nh l dng cui) thc hin lnh sau khi np file t du nhc tr ti dng u tin c cha mu trong file m n ca s (ngm nh c mt ca s cho mt file: n=1) hin th danh sch cc tham s v thot

B.1.2. Tnh nng m nhiu ca s Trong vim, c th chia ca s son tho hin thi thnh nhiu phn hay m nhiu ca s cng lc son tho cc file khc nhau. V d lnh sau s m hai file vd1 v vd2 trn hai ca s son tho: # vim -o2 vd1 vd2
~ ~ ~

1 8

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

Sau y l mt s cc lnh 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 ca s hin ti thnh hai phn chia ca s v son tho <file> trn mt phn chia ca ca s chia ca s, tm file trn ng dn v son tho n chia ca s v edit alternate file to mt ca s trng mi (ging :new) dng vic son tho v ng ca s (ging :q) phng to ca s hin hnh trn ton mn hnh di chuyn tr son tho xung ca s di di chuyn tr son tho ln ca s trn di chuyn tr son tho ln nh ca s di chuyn tr son tho xung y ca s di chuyn tr son tho n ca s c kch hot lc trc di chuyn tr son tho n ca s tip theo to tt c cc ca s c chiu cao nh nhau gim chiu cao ca ca s hin thi tng chiu cao ca ca s hin thi thit t chiu cao ca ca s hin thi

B.1.3. Ghi v thot trong vim Bng di y gii thiu cc lnh ghi ni dung file ln h thng file v thot khi vim sau khi son tho xong ni dung ca file (tham s n, m nu c mang ngha "t dng n ti dng m"). :[n,m] w [!] :[n,m] w <file> :[n,m] w! <file> :[n,m] w[!] >> [<file>] :[n,m] w !<lnh> :[n,m] up [thi gian] [!] :q [!] :wq [!] [<file>] :x [!] <file> ghi file hin thi. ghi ni dung ra <file>, tr khi file thc s tn ti ghi ni dung ra <file>, nu file tn ti th ghi ln ni dung c chn thm vo <file>, nu khng c file, mc nh l file hin thi thc hin <lnh> trn cc dng t dng th n n dng th m nh thit b vo chun ghi file hin thi nu n c sa i thot khi vim ghi ni dung <file> (mc nh l file hin thi) v thot khi vim ging :wq nhng ch ghi khi thc s c s thay i trong ni dung file (ging ZZ)

1 8

:st [!]

dng vim v khi to mt shell (ging CTRL-Z)

B.2. Di chuyn tr son tho trong Vim


B.2.1. Di chuyn trong vn bn Di chuyn tr son tho trong vn bn l mt tnh nng rt quan trng trong mt trnh son tho vn bn vim. Di y l mt s cc lnh thc hin vic trn (ct u tin c n ch mt s l s lng): N N n n l h k j 0 ^ $ <Enter> + _ G G H M gg gk gj di chuyn tr son tho v bn phi n k t di chuyn tr son tho v bn tri n k t di chuyn tr son tho ln n dng di chuyn tr son tho xung n dng di chuyn v u dng di chuyn n t u tin ca dng hin ti di chuyn n cui dng di chuyn n u dng tip theo di chuyn n u dng trc dng hin ti n dng di chuyn n u dng sau dng hin ti n dng di chuyn n u dng sau dng hin ti n-1 dng di chuyn n dng cui cng trong file di chuyn n dng th n trong file (ging :n) di chuyn n dng u tin trn mn hnh di chuyn n dng gia mn hnh di chuyn n u dng th n (mc nh l dng u tin) di chuyn ln n dng mn hnh di chuyn xung n dng mn hnh

n n n n n n n

B.2.2. Di chuyn theo cc i tng vn bn vim cung cp cc lnh di y cho php di chuyn tr son tho nhanh theo cc i tng vn bn v iu to nhiu thun tin khi bin tp, chng hn, trong cc trng hp ngi dng cn xo b hay thay i mt t, mt cu ... N N N N N N N N N N n n W E B ge > < | | ]] [[ ][ [] di chuyn n t tip theo di chuyn n cui ca t th n di chuyn ngc li n t di chuyn ngc li n t v t du nhc tr ti ch ci cui t di chuyn n n cu tip theo di chuyn ngc li n cu di chuyn n n on tip theo di chuyn ngc li n on di chuyn n n phn tip theo v t du nhc tr ti u phn di chuyn ngc li n phn v t du nhc tr ti u phn di chuyn n n phn tip theo v t du nhc tr ti cui phn di chuyn ngc li n phn v t du nhc tr ti cui phn 1 8

B.2.3. Cun mn hnh Mn hnh s t ng cun khi di tr son tho n y hoc ln nh mn hnh. Tuy nhin cc lnh sau y gip ngi dng cun mn hnh theo mun: N N N N N N <CTRL-f> <CTRL-b> <CTRL-d> <CTRL-u> <CTRL-e> <CTRL-y> z<Enter> z. zcun ln n mn hnh (mc nh l 1 mn hnh) cun xung n mn hnh (mc nh l 1 mn hnh) cun xung n dng (mc nh l 1/2 mn hnh) cun ln n dng (mc nh l 1/2 mn hnh) cun xung n dng (mc nh l 1 dng) cun ln n dng (mc nh l 1 dng) v li ca s son tho, dng hin ti s l dng trn cng ca ca s (ging zt) v li ca s son tho, dng hin ti s l dng gia ca ca s (ging zz) v li ca s son tho, dng hin ti s l dng y ca ca s (ging zb)

B.3. Cc thao tc trong vn bn


vim c rt nhiu cc lnh h tr thao tc son tho hay hiu chnh mt file. Phn di y gii thiu chi tit v cc cch thm vn bn, hiu chnh vn bn hay xo mt vn bn. Khi son tho vn bn, nhiu dng c th c nhp bng cch s dng phm Enter. Nu c mt li cn phi sa, c th s dng cc phm mi tn di chuyn tr son tho trong vn bn v s dng cc phm Backspace hoc Delete hiu chnh. B.3.1. Cc lnh chn vn bn trong vim A A i I gI o O :r file :r! lnh chn vn bn vo v tr du nhc tr hin thi (n ln) chn vn bn vo cui mt dng (n ln) chn vn bn vo bn tri du nhc tr (n ln) chn vn bn vo bn tri k t u tin khc trng trn dng hin ti (n ln) chn vn bn vo ct u tin (n ln) chn n dng trng vo di dng hin ti chn n dng trng vo trn dng hin ti chn vo v tr con tr ni dung ca file chn vo v tr con tr kt qu ca lnh lnh

N n n n n n

B.3.2. Cc lnh xo vn bn trong vim Bn cnh cc lnh to hay chn vn bn, vim cng c mt s lnh cho php ngi dng c th xo vn bn. Di y l bng lit k mt s lnh c bn: N N N x X dd D hoc d$ xo n k t bn phi du nhc tr xo n k t bn tri du nhc tr xo n dng k t dng hin thi xo t v tr hin thi n ht 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 hin thi xo t v tr hin thi n cui file xo ngc t v tr hin thi n u file xo t dng hin thi n ht dng th n xo t dng th n n dng th m xo n dng, k c dng hin thi ri khi to ch chn (Insert) xo n dng k t v tr hin thi ri khi to ch chn (Insert) xo t dng hin thi n ht dng th n ri khi to ch chn (Insert) xo n k t v chy ch chn (Insert) xo n dng v chy ch chn (Insert)

B.3.3. Cc lnh khi phc vn bn trong vim Cc lnh sau cho php khi phc li vn bn sau mt thao tc hiu chnh no : N u U : e! CTRL-R khi phc li vn bn nh trc khi thc hin n ln thay i khi phc li hon ton dng vn bn hin thi nh trc khi thc hin bt k s hiu chnh no trn dng hiu chnh li. Lu tr trng thi ca ln ghi trc lm li (redo) n ln khi phc (undo) trc !

6.3.4. Cc lnh thay th vn bn trong vim vim cn c cc lnh cho php thay i vn bn m khng cn phi xo vn bn ri sau nh mi. n r <k t> R n n n n n n ~ gUU guu CTRL-A CTRL-X > [> ...] thay th n k t bn phi du tr bi <k t> ghi vn bn bi mt vn bn mi (hay chuyn sang ch thay th - Replace trong Vim) chuyn n ch hoa thnh ch thng v ngc li chuyn cc k t trn n dng, k t dng hin ti, t ch thng thnh ch hoa chuyn cc k t trn n dng, k t dng hin ti, t ch hoa thnh ch thng cng thm n n v vo s hin c bt i n n v t s hin c chuyn dng th n sang bn phi x khong trng (ging nh phm TAB trong Win), nu khng c n mc nh l dng hin ti, x l s du ' > ' (v d: >>> th x bng 3) chuyn dng th n sang bn tri x khong trng (ging nh phm SHIFT+TAB trong Win), nu khng c n mc nh l dng hin ti, x l s du ' < ' 1 8

< [< ...]

n n

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

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

kt hp n dng, k t dng hin ti, thnh mt dng ging nh J nhng khng chn cc khong trng cn gia t dng th n n dng th m vi rng l width, nu khng c width, mc nh rng l 80 cn phi t dng th n n dng th m vi rng l width, nu khng c width, mc nh rng l 80 cn tri t dng th n n dng th m vi rng l width, nu khng c width, mc nh rng l 80 tm t dng th n n dng th m v thay th mu1 bi mu2. Vi [g], thay th cho mi mu tm c. Vi [c], yu cu xc nhn i vi mi mu tm c lp li lnh tm v thay th trc (:s) vi phm Vim mi t dng n n dng m km theo l cc tu chn lp li vic tm kim v thay th trn dng hin thi m khng c cc tu chn

B.3.5. Sao chp v di chuyn vn bn trong vim Phn ny gii thiu vi cc cc lnh c bn ct v dn vn bn trong vim. sao chp vn bn phi thc hin ba bc sau: Sao chp vn bn vo mt b nh m (Yanking) Di chuyn du nhc tr n v tr cn sao chp (Moving) Dn vn bn (Pasting) Sau y l cc lnh c th ca tng bc: * Sao chp vn bn vo b nh m n n yw Y : [n] co [m] * Dn vn bn: n n n n P P Gp gP : [n] put m dn on vn bn c sao chp vo bn phi v tr hin thi (n ln) dn n on vn bn c sao chp vo bn tri v tr hin thi (n ln) ging nh p, nhng a du nhc tr v sau on vn bn mi dn ging nh P, nhng a du nhc tr v sau on vn bn mi dn dn m dng vn bn vo sau dng th n (nu khng c n ngm nh 1 8 sao chp n k t sao chp n dng vn bn, k t dng hin ti, vo b nh m (ging yy) sao chp dng th n vo di dng th m

: [n] put! m

l dng hin ti) dn m dng vn bn vo trc dng th n (nu khng c n ngm nh l dng hin ti)

Ngoi cc lnh trn, khi s dng vim trong xterm, ngi dng c th s dng chut thc hin cc thao tc cho vic sao chp vn bn. Vic ny ch thc hin c khi ang trong ch son tho ca vim. Nhn phm tri chut v ko t im bt u n im kt thc ca on vn bn cn sao chp. on vn bn s c t ng sao vo b nh m. Sau di tr son tho n v tr cn dn v nhy nt chut gia, vn bn s c dn vo v tr mun. di chuyn vn bn trong vim, cng phi thc hin qua ba bc sau: Ct on vn bn v dn vo b m Di chuyn du nhc tr ti v tr mi ca on vn bn Dn on vn bn vo v tr mi Di chuyn vn bn ch khc sao chp bc u tin l bc ct on vn bn. hy s dng cc lnh xo trong vim ct on vn bn. V d, khi dng lnh dd, dng b xo s c lu vo trong b m, khi c th s dng cc lnh dn dn vn bn vo v tr mi. Ngoi ra cn c th s dng mt s lnh sau: : [n] m [x] '' '" di chuyn dng th n vo di dng th x dch chuyn n v tr lc trc dch chuyn n v tr lc trc thc hin vic hiu chnh file

B.3.6. Tm kim v thay th vn bn trong vim vim c mt s cc lnh tm kim nh sau: / <xu> ? <xu> N N tm xu t dng hin ti n dng cui trong file tm xu t dng hin ti ngc ln dng u trong file tm tip xu c a ra trong lnh / hoc ? (t trn xung di) tm tip xu c a ra trong lnh / hoc ? (t di ln trn)

Xu c tm kim trong lnh / hay ? c th l mt biu thc. Mt biu thc thng thng l mt tp cc k t. Tp k t ny c xy dng bng cch kt hp gia cc k t thng thng v cc k t c bit. Cc k t c bit trong biu thc thng l: . thay th cho mt k t n ngoi tr k t xung dng \ hin th cc k t c bit * thay th cho 0 hoc nhiu k t \+ thay th cho 1 hoc nhiu k t \= thay th cho 0 hoc mt k t ^ thay th cho k t u dng $ thay th cho k t cui dng \< thay th cho ch bt u ca t \> thay th cho ch cui ca t 1 8

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

thay th cho mt k t nm trong cp du [] thay th cho k t khng thuc trong cp du [] v ng sau du ^ thay th cho mt tp c th t cc k t thay th cho mt k t c th in c thay th cho mt k t trng thay th cho phm Esc thay th cho phm Tab

vim s dng ch lnh Ex thc hin cc vic tm kim v thay th. Tt c cc lnh trong ch ny c bt u bng du ':'. c th kt hp lnh tm kim v thay thay th a ra c cc lnh phc tp theo dng tng qut sau: :<im bt u>,<im kt thc> s/<mu cn thay th>/<mu c thay th>/[g][c] V d, lnh sau y:
:1,$s/the/The/g

tm trong file ang son tho cc t the v thay chng bi cc t The. B.3.7. nh du trong vim m |a-zA-Z| '|a-z| '|A-Z| :marks nh du vn bn ti v tr hin thi vi du l cc ch ci |a-zA-Z| dch chuyn con tr ti v tr c nh du bi cc ch ci |a-z| trong phm Vim file hin thi dch chuyn con tr ti v tr c nh du bi cc ch ci |A-Z| trong mt file bt k hin th cc nh du hin thi

B.3.8. Cc phm s dng trong ch chn Chuyn i ch chuyn vo ch chn hoc ch thay th thot khi ch chn, tr li ch thng thng ging nh <Esc>, nhng ??? thc hin <lnh> v tr v ch chn Di chuyn Cc phm mi tn di chuyn tr son tho sang tri/phi/ln/xung mt k t SHIFT-left/right di chuyn tr son tho sang tri/phi mt t <Home> di chuyn tr son tho v u dng <End> di chuyn tr son tho v cui dng Cc phm c bit <Enter>, CTRL-M, CTRL-J bt u mt dng mi CTRL-E chn k t vo bn phi du nhc tr CTRL-Y chn mt k t vo bn tri du nhc tr CTRL-A chn vo trc on vn bn c chn CTRL- chn vo trc on vn bn c chn v dng ch chn CTRL-R <thanh ghi> chn ni dung ca mt thanh ghi <Insert> <Esc> CTRL-C CTRL-O <lnh>

1 8

CTRL-N CTRL-P CTRL-X ... <Backspace>, CTRL-H <Del> CTRL-W CTRL-U CTRL-T CTRL-D

chn t tip theo vo trc du nhc tr chn t trc vo trc du nhc tr hon thnh t trc du nhc tr theo nhiu cch khc nhau xo mt k t trc du nhc tr xo mt k t sau du nhc tr xo t trc du nhc tr xo tt c cc k t trn dng hin ti chn mt khong trng trc dng hin thi xo mt khong trng trc dng hin thi

B.3.9. Mt s lnh trong ch o khi nhn phm ny, c th s dng cc phm di chuyn nh du on vn bn hoc b nh du (vn bn c nh du c mu trng) V khi nhn phm ny, mt dng vn bn s c nh du v c th s dng cc phm di chuyn nh du on vn bn hoc b nh du CTRL-V nhn phm ny s nh du mt khi vn bn v c th s dng cc phm di chuyn nh du on vn bn hoc b nh du o di chuyn v tr du nhc tr trn khi c nh du hoc b nh du gv nh du li on vn bn c nh du lc trc aw chn nh du n t as chn nh du n cu ap chn nh du n on ab chn nh du n khi v

n n n n

B.3.10. Cc lnh lp n n n . q |a-z| @|a-z| @@ :@|a-z| :@@ :[n,m]g/mu/[lnh] lp li n ln thay i cui ghi cc k t c nhp vo trong thanh ghi |a-z| thc hin ni dung c trong thanh ghi |a-z| n ln lp li n ln s thc hin ca lnh @|a-z| trc thc hin ni dung ca thanh ghi |a-z| nh mt lnh Ex lp li s thc hin ca lnh :@|a-z| trc thc hin lnh (mc nh l :p) trn cc dng c cha mu nm trong khong t dng th n n dng th m :[n,m]g!/<mu>/[lnh] thc hin lnh (mc nh l :p) trn cc dng khng cha mu nm trong khong t dng th n n dng th m :sl [n] tm dng trong n giy gs tip tc dng trong n giy

B.4. Cc lnh khc


B.4.1. Cch thc hin cc lnh bn trong Vim :sh :! <lnh> khi to mt shell thc hin mt lnh shell trong Vim 1 8

:!! K q

lp li lnh ':! <lnh>' lc trc m trang man ca lnh trng vi ni dung t ti du nhc tr thot khi lnh ang thc hin tr li Vim

B.4.2. Cc lnh lin quan n file Ngoi cc lnh c bn nh sao chp hay ct dn, trong vim cn c mt s lnh cho php c th c c nhng thng tin cn thit v file. CTRL-G n g CTRL-G CTRL-G :f <tn mi> :ls :cd :w <tn file> :e[n, /mu] <file> :e[n, /mu]! <file> :e :e! :fin [!] <file> :e #n :pw :conf <lnh trong vim > hin th tn file hin thi km theo trng thi file v v tr du nhc tr (trng thi c th l: ch c, c sa, li khi c, file mi) (ging :f) hin th thng tin nh CTRL -G v c thm ng dn y ca file (nu n>1, tn buffer hin thi s c a ra) a ra v tr du nhc tr theo dng: ct/tng s ct, dng/tng s dng v k t/tng s k t i tn file hin thi thnh tn mi lit k tt c cc file hin thi ang c s dng trong Vim (ging :buffer v :files) a thm ng dn vo tn file to mt bn sao ca file hin thi vi tn mi l tn file (ging nh save as trong Win) Xc nh file cn son tho son tho file, t dng th n hoc t dng c cha mu, tr khi c s thay i thc s trong file lun son tho file, t dng th n hoc t dng c cha mu, b qua mi s thay i trong file np li file hin thi, tr khi c s thay i thc s trong file lun np li file hin thi, b qua mi s thay i thc s trong file tm file trn ng dn v son tho son tho file th n (ging n CTRL-^) Cc lnh khc a ra tn th mc hin thi thc hin lnh trong vim v a ra hp thoi yu cu xc nhn khi c thao tc i hi s xc nhn

1 8

PH LC C. MIDNIGHT COMMANDER
C.1. Gii thiu v Midnight Commander (MC)
Ngi s dng h iu hnh MS-DOS u bit tnh nng tin ch Norton Commander (NC) rt mnh trong qun l, iu khin cc thao tc v file, th mc, a cng nh l mi trng trc quan trong ch vn bn (text). D trong h iu hnh Windows sau ny c s h tr ca tin ch Explorer nhng khng v th m vai tr ca NC gim i: Nhiu ngi dng vn thch dng NC trong cc thao tc vi file v th mc. Linux cng c mt tin ch mang tn Midnight Commander (vit tt l MC) c chc nng v giao din gn ging vi NC ca MS-DOS v s dng MC trong Linux tng t nh s dng NC trong MS-DOS.

C.2. Khi ng MC
Lnh khi ng MC: # mc [Ty-chn] C mt s tu chn khi dng tin ch ny theo mt s dng thng dng sau: -a -b -c -d -P -v file -V Khng s dng cc k t ho v cc ng thng khung. Khi ng trong ch mn hnh en trng. Khi ng trong ch mn hnh mu. Khng h tr chut Vi tham s ny, Midnight Commander s t ng chuyn th mc hin hnh ti th mc ang lm vic. Nh vy, sau khi kt thc, th mc hin hnh s l th mc cui cng thao tc. S dng chc nng View ca MC xem ni dung ca file c ch ra. Cho bit phin bn chng trnh ang s dng.

Nu ch ra ng dn (path), ng dn u tin l th mc c hin th trong panel chn (selected panel), ng dn th hai c hin th panel cn li.

C.3. Giao din ca MC


Giao din ca MC c chia ra lm bn phn. Phn ln mn hnh l khng gian hin th ca hai panel. Panel l mt khung ca s hin th cc file th mc cng cc thuc tnh ca n hoc mt s ni dung khc. Theo mc nh, dng th hai t di ln s l dng lnh cn dng di cng hin th cc phm chc nng. Dng u tin trn nh mn hnh l thc n ngang (menu bar) ca MC. Thanh thc n ny c th khng xut hin nhng nu kch hot bng c hai chut ti dng u tin hoc nhn phm <F9> th n s hin ra v c kch hot. Midnight Commander cho php hin th cng mt lc c hai panel. Mt trong hai panel l panel hin hnh (panel chn). Thanh sng chn nm trn panel hin hnh. Hu ht cc thao tc u din ra trn Panel ny. Mt s cc thao tc khc v file nh Rename hay Copy s mc nh s dng th mc Panel cn li lm th mc ch. Tuy nhin ta vn c th sa c th mc ny trc khi thao tc v cc thao tc ny u tin bao gi cng yu cu nhp ng dn. Trn panel s hin th hu ht cc file v th mc con ca th mc hin hnh. Midnight Commander c c ch hin th cc kiu file khc nhau bng cc k hiu v mu 1 9

sc khc nhau, v d nh cc file biu tng lin kt s c k hiu @ u, cc file thit b s c mu tm, cc file ng ng c mu en, cc th mc c k hiu / u, cc th mc lin kt c k hiu ~... Cho php thi hnh mt lnh h thng t MC bng cch g chng ln mn hnh. Tt c nhng g c g vo u c hin th dng lnh pha di tr mt s k t iu khin v khi nhn Enter, Midnight Commander s thi hnh lnh g vo.

C.4. Dng chut trong MC


Midnight Commander s h tr chut trong trng hp khng gi vi tham s -d. Khi kch chut vo mt file trn Panel, file s c chn, c ngha l thanh sng chn s nm ti v tr file v panel cha file s tr thnh panel hin hnh. Cn nu kch chut phi vo mt file, file s c nh du hoc xo du tu thuc vo trng thi kch trc . Nu kch i chut ti mt file, file s c thi hnh nu l file thi hnh c (executable program) hoc nu c mt chng trnh c trng cho ring phn m rng th chng trnh c trng ny s c thc hin. Ngi dng cng c th thc hin cc lnh ca cc phm chc nng bng cch nhy chut ln phm chc nng . Nu kch chut ti dng u tin trn khung panel, ton b panel s b ko ln. Tng t kch chut ti dng cui cng trn khung panel, ton b panel s b ko xung. C th b qua cc thao tc chut ca MC v s dng cc thao tc chut chun bng cch gi phm <Shift>

C.5. Cc thao tc bn phm


Mt s thao tc ca Midnight Commander cho php s dng nhanh bng cch g cc phm tt (hot key). tng thch vi mt s h thng khc, trong cc bng di y v Midnight Commander, vit tt phm CTRL l C, phm ALT l M (Meta), phm SHIFT l S. Cc k hiu t hp phm c dng 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 nhn <f>. C ngha l gi phm CTRL trong khi g phm <char1> sau nh tt c ra v g phm <char2>. C ngha l gi phm ALT trong khi g phm <char>. Nu khng c hiu lc th c th thc hin bng cch g phm <Esc> nh ra ri g phm <char>. C ngha l gi phm SHIFT trong khi g phm <char>.

Sau y l chc nng mt s phm thng dng. Cc phm thc hin lnh: Enter Nu c dng lnh, lnh s c thi hnh. Cn nu khng th s tu vo v tr ca thanh sng trn panel hin hnh l file hay th mc m hoc vic chuyn i th mc hoc thi hnh file hay thi hnh mt chng trnh tng ng s din ra. Cp nht li cc thng tin trn Panel. 1 9

C-l

Cc phm thao tc trn dng lnh: 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 chn xung dng lnh hon thnh tn file, lnh, bin, tn ngi dng hoc tn my gip sao cc file c nh du (mc nh l file hin thi) trn panel chn (C-x t) hoc trn panel kia (C-x C-t) xung dng lnh a tn ng dn hin thi trn panel chn (C-x p) hoc trn panel kia (C-x C-p) xung dng lnh s dng hin li trn dng lnh cc lnh c gi trc . M-p s hin li dng lnh c thi hnh gn nht, M-n hin li lnh c gi trc lnh a du nhc tr v u dng a du nhc tr v cui dng a du nhc tr di chuyn sang tri mt k t a du nhc tr di chuyn sang phi mt k t a du nhc tr n t tip theo a du nhc tr ngc li mt t xo k t trc xo k t ti v tr du nhc tr nh du ct xo cc k t t v tr du nhc tr n cui dng xo ngc li mt 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 dng cc phm ny di chuyn trong mt panel di chuyn ngc li mt trang mn hnh di chuyn tip mt trang mn hnh di chuyn ln/ xung 1/2 trang mn hnh di chuyn n im u hoc cui ca mt mn hnh hon i panel hin hnh. Thanh sng chn s chuyn t panel c sang panel hin hnh chn nh du mt file hoc th mc ln lt chn file u tin, file gia v file cui trn panel hin th

1 9

C-s, M-s

M-t C-\ + * M-o M-y M-u

tm kim file trong th mc. Khi kch hot ch ny, nhng k t g vo s c thm vo xu tm kim thay v hin th trn dng lnh. Nu tu chn Show mini-status trong option c t th xu tm kim s c hin th dng trng thi. Khi g cc k t, thanh sng chn s di chuyn n file u tin c nhng k t u ging nhng k t g vo. S dng phm Backspace hoc Del hiu chnh sai st. Nu nhn C-s ln na, vic tm kim s c tip tc chuyn i kiu hin th thng tin v file hoc th mc thay i th mc hin thi s dng du cng la chn nh du mt nhm file. C th s dng cc k t i din nh *, ?... biu din cc file s chn s dng du tr xo nh du mt nhm file. C th s dng cc k t di din nh *, ? biu din cc file s xo s dng du * nh du hoc xo nh du tt c cc file trong panel mt panel s hin th ni dung th mc hin thi hoc th mc cha ca th mc hin thi ca panel kia di chuyn n th mc lc trc c s dng di chuyn n th mc tip theo c s dng

C.6. Thc n thanh ngang (menu bar)


Thc n thanh ngang trong Midnight Commander c hin th dng u tin trn mn hnh. Mi khi nhn <F9> hoc kch chut ti dng du tin trn mn hnh thc n ngang s c kch hot. Thc n ngang ca MC c nm mc Left, File, Command, Option v Right. Thc n Left v Right gip ta thit lp cng nh thay i kiu hin th ca hai panel left v right. Cc thc n mc con ca chng gm: thc n ny c dng khi mun thit lp kiu hin th ca cc file. C bn kiu hin th: * Full - hin th thng tin v tn , kch thc, v thi gian s i ca file; * Brief - ch hin th tn ca file; * Long - hin th thng tin y v file (tng t lnh ls -l); * User - hin th cc thng tin do t chn v file; xem nhanh ni dung ca mt file xem cc thng tin v mt th mc hoc file hin th di dng cy th mc thc hin sp xp ni dung hin th theo tn, theo tn m rng, thi gian sa cha, thi gian truy nhp, thi gian thay i, kch thc, inode thc hin vic lc file theo tn thc hin lin kt n mt my tnh thc hin vic ly 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 li

Thc n File cha mt danh sch cc lnh m c th thi hnh trn cc file c nh du hoc file ti v tr thanh chn. Cc thc n mc 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-+ M- M-* F10 F2 F3 M-! F4 F5 C-x c C-x l C-x s C-x C-s C-x o thc n dnh cho ngi dng xem ni dung ca file hin thi m v xem ni dung ca mt file bt k thc hin mt lnh lc vi tham s l tn file v hin th ni dung ca file son tho file hin thi vi trnh son tho mc nh trn h thng thc hin copy thay i quyn truy nhp i vi mt th mc hay mt file to mt lin kt cng n file hin thi to mt lin kt tng trng n file hin thi hiu chnh li mt lin kt tng trng thay i quyn s hu i vi th mc hay file thay i quyn s hu cng nh quyn truy nhp ca file hay th mc thc hin vic i tn hay di chuyn i vi mt file to mt th mc xo mt hoc nhiu file chuyn nhanh n mt th mc thc hin vic chn mt nhm cc file ngc vi lnh trn chn cc file trong th mc hin thi thot khi MC

Thc n Command cng cha mt danh sch cc lnh. 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 ! hin th th mc di dng cy th mc tm mt file thc hin tro i ni dung gia hai panel hin th a ra lnh shell c thc hin ln cui (ch s dng trn xterm, trn console SCO v Linux) thc hin so snh th mc hin ti trn panel chn vi cc th mc khc a ra danh sch cc lnh thc hin thay i th mc hin thi thc hin mt lnh trong MC v hin th kt qu trn panel chn (v d: nu mun trn panel chn hin th tt c cc file lin kt trong th mc hin thi, hy chn mc thc n ny v nhp lnh find . -type l -print

1 9

Show directory size Command history Directory hotlist Background Extension file edit

C-\ C-x j

s thy kt qu tht tuyt vi) hin th kch thc ca th mc hin th danh sch cc lnh thc hin chuyn nhanh n mt th mc thc hin mt s lnh lin quan n cc qu trnh nn cho php hiu chnh file ~/.mc/ext xc nh chng trnh s thc hin khi xem, son tho hay lm bt c iu g trn cc file c tn m rng

Thc n Options cho php thit lp, hu b mt s tu chn c lin quan n hot ng ca chng trnh MC. Configuration ... Lay-out ... Confirmation ... Display bits ... Learn keys ... Virtual FS ... Save setup thit lp cc tu chn cu hnh cho MC xc lp cch hin th ca MC trn mn hnh thit lp cc hp thoi xc nhn khi thc hin mt thao tc no thit lp cch hin th ca cc k t xc nh cc phm khng c kch hot thit lp h thng file o ghi mi s thit lp c thay i

C.7. Cc phm chc nng


Cc phm chc nng ca Midnight Commander c hin th ti dng cui cng ca mn hnh. C th thc hin cc chc nng bng cch kch chut ln nhn ca cc chc nng tng ng hoc nhn trn bn phm chc nng . F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 hin th trang tr gip a ra thc n ngi dng xem ni dung mt file son tho ni dung mt file thc hin sao chp file thc hin di chuyn hoc i tn file to th mc mi xo th mc hoc file a tr son tho ln thanh thc n nm ngang thot khi MC

C.8. B son tho ca Midnight Commander


Midnight Commander cung cp mt b son tho kh tin dng trong vic son tho cc vn bn ASCII. B son tho ny c giao din v thao tc kh ging vi tin ch Edit ca DOS hay NcEdit ca Norton Commander. hiu chnh mt s file vn bn, hy di chuyn thanh sng chn n v tr file ri nhn F4, ni dung ca file s hin ra trong vng son tho. Sau khi hiu chnh xong, nhn F2 ghi li. B son tho ny c mt thc n ngang cung cp cc chc nng y nh mt b son tho thng thng. Nu tng l ngi dng DOS v mi dng Linux th nn dng b son tho ny hiu chnh v son tho vn bn thay v b son tho Vim. Sau y l bng lit k cc phm chc nng cng nh cc mc thc n trong b son tho ny: 1 9

* Thanh thc n Thc n File: cc thao tc lin quan n file Open/load New Save Save as ... Insert file ... Copy to file ... About .. Quit C-o C-n F2 F12 F15 C-f F10 m hoc np mt file to mt file mi ghi ni dung file c son tho to mt file khc tn nhng c ni dung trng vi ni dung file hin thi chn ni dung mt file vo file hin thi sao on vn bn c nh du n mt file khc thng tin v b son tho thot khi b son tho

Thc n Edit: cc thao tc lin quan n vic son tho ni dung file Toggle Mark Mark Columns Toggle Ins/overw Copy Move Delete Undo Beginning End F3 S-F3 Ins F5 F6 F8 C-u C-PgUp C-PgDn thc hin nh du mt on vn bn nh du theo ct chuyn i gia hai ch chn/ thc hin sao chp file thc hin di chuyn file xo file tr v trng thi trc khi thc hin mt s thay i di chuyn n u mn hnh di chuyn n cui mn hnh

Thc n Sear/Repl: cc thao tc lin quan n vic tm kim v thay th Search .. Search again Replace ... F7 F17 F4 thc hin tm kim mt xu vn bn tm kim tip tm v thay th xu vn bn

Thc n Command: Cc lnh c th c thc hin trong khi son tho Goto line ... Insert Literal ... Refresh screen Insert Date/time Format paragraph Sort M-l C-q C-l M-p M-t di chuyn tr son tho n mt dng chn vo trc du nhc tr mt k t lm ti li mn hnh chn ngy gi hin ti vo v tr du nhc tr nh dng li on vn bn thc hin sp xp

1 9

Thc n Options: Cc tu chn c th thit lp cho b son tho General ... Save mode ... * Cc phm chc nng F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 hin th trang tr gip ghi ni dung file thc hin vic nh du on vn bn tm v thay th xu vn bn thc hin vic sao chp di chuyn file tm kim xu vn bn xo on vn bn c nh du hin th thanh thc n ngang thot khi b son tho thit lp cc tu chn cho b son tho ghi li mi s thit lp c thay i

1 9

PH LC D. SAMBA
D.1 Ci t Samba
Nu cc dch v chia s file gia cc my Windows vi nhau v gia cc my Linux vi nhau c gii quyt th cn li l vn chia s file gia cc my Linux v Windows li l mt nhu cu quan trng. Samba hin tr thnh cy cu ni gia Linux v Windows. Samba cho php cc my tnh chy Linux c th hot ng v giao tip trn cng mt giao thc mng vi my Windows. Samba server thc hin cc dch v sau: Chia s mt hay nhiu h thng file. Chia s cc my in c ci t c hai pha server v client ca n. H tr cc client duyt Network Neighborhood trong cc my windows. Kim tra xc nhn cc client ng nhp vo vng ca Windows. Cung cp hoc h tr vic phn gii a ch ca server bng WINS (Windows Internet Name Server). d hnh dung hn, ta ly v d mng n gin c dng Samba. Gi s ta c mt cu hnh mng c bn sau: mt my ch Linux c s dng Samba vi tn c t l Toltec, v hai client trn MS Windows, vi tn l Maya v Aztec, c ni vi nhau trong mt mng Lan v tham gia vo nhm lm vic c tn METRAN. Ta cn gi s my ch Toltec cn c mt my in phun tn l lp c ni ti ch, ng thi vic chia s a cng cho php cc my nhn thy nhau. M t mng trn bng hnh v D.1 c biu din di y:

Hnh D.1 Mt mng c nhiu h iu hnh

Cc vai tr ca Samba i vi mng Windows NT (phin bn Samba 2.0.4b.)


Vai Tr 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 C th thc hin c C C C (Samba 2.1 hay mun hn) Khng C C Khng C C Khng 1 9

D.2 Cc thnh phn ca Samba


Samba thc cht cha mt s chng trnh phc v cho nhng mc ch khc nhau nhng c lin quan vi nhau. Ht nhn ca Samba l hai deamon c nhng nhim v sau: smbd Daemon: smbd chu trch nhim iu khin cc ti nguyn c chia s gia my ch Samba v cc my trm ca n. N cung cp cc dch v v file, in, v trnh duyt cho cc my trm SMB thng qua mt hay nhiu mng. smdb x l tt c cc trao i gia my ch Samba v cc client mng ca n. Ngoi ra, deamon ny cn chu trch nhim kim tra xc nhn ngi dng, kho ti nguyn, v chia s d liu thng qua giao thc SMB. nmbd Deamon: nmbd l mt my ch dch v tn n gin bt chc cc chc nng my ch dch v tn, chy vi cc giao thc WINS v NetBIOS. Daemon ny lng nghe cc yu cu ca my ch dch v tn v cung cp cc thng tin thch hp khi c gi ti. N cn cung cp danh sch duyt Network Neighborhood v tham gia vo la chn cc i tng mng trong . B ci t Samba cn c mt tp hp nh cc cng c dng lnh Linux: smbclient: Mt client Linux theo kiu ftp c th dng tin ch ny kt ni vi ti nguyn c Samba chia s. Smbtar: Chng trnh lu tr cc ti nguyn c chia s, tng t nh lnh tar ca Linux. nmblookup: Chng trnh cung cp NetBIOS thng qua vic tm tn bng TCP/IP. smbpasswd: Chng trnh cho php ngi qun tr thay i mt khu m ha ca Samba. testparm: Chng trnh n gin lm cho file cu hnh Samba c hiu lc. testprns: Chng trnh kim tra liu cc my in khc nhau c c deamon smbd nhn ra hay khng. Nu mun xem tng deamon thc hin nhng g, Samba c chng trnh vi tn smbstatus s a tt 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
Vic ci t samba cng kh n gin, ta cn chun b cc package sau: samba-client-xxx.rpm samba-xxx.rpm samba-common-xxx.rpm Trong xxx l s hiu phin bn ca samba. ng nhp vi quyn root v sau ra lnh: #rpm ivh samba-client-xxx.rpm samba-xxx.rpm sambacommon-xxx.rpm Nu ta khng nhn li thng bo li no c th qu trnh ci t hon tt.

1 9

D.3 File cu hnh Samba Nhng tn c bao trong cc ngoc vung dng k hiu cho cc phn ca file cu hnh smb.conf, m t cc chia s hay dch v m Samba cung cp. V d, cc phn test v homes l cc chia s ring r i vi a cng; chng cha cc tu chn c nh x ti cc th mc c th trn server Samba. Phn chia s printers cha cc tu chn nh x ti cc my in khc nhau ca servers. Tt c cc phn c xc nh trong file smb.conf, tr phn [global, s c coi nh cc chia s a cng hoc my in cho nhng dng kt ni vi server Samba.
Cc dng vo cn li l cc tu chn ring c quy nh c th cho s chia s c cp ti. Cc tu chn c tc dng cho ti khi bt u mt phn mi c k hiu trong cp ngoc vung, hoc cho ti im cui ca file smb.conf c thit lp bng cch gn gi tr cho chng. Mi mt tu chn cu hnh u c c php n gin: option = value Cui cng, ta c th dng khong trng d ngn cch chui cc gi tr trong danh sch, hoc c th dng cc du phy, Hai cch trn l tng ng nhau nhng ta ch nn dng mt cch hoc du phy hoc khong trng. Ch vit hoa khng c ngha g i vi file cu hnh Samba, ngoi tr trong cc v tr m h iu hnh c ch ti khng cho php vit, bi v h iu hnh Linux phn bit ch vit thng v vit hoa. Trong trng hp dng vo qu di khng th gi gn trong khng gian m ca s dng lnh cho php, ta c th vit tip dng trong file cu hnh Samba bng cch dng k hiu du gch ngc \, 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 bt k tu chn no ca n vo thi im bt k trong khi cc daemon Samba ang chy. Theo mc nh, Samba kim tra file cu hnh ca mnh c 60 giy mt ln tip nhn c thay i mi. Nu khng mun ch i lu nh vy, bn c th bt cc daemon np li bng cch gi tn hiu SIGHUP ti chng, hoc ch n gin l khi ng li. V d, nu tin trnh smbd c PID l 893, ta c th bt n c li file cu hnh bng lnh sau y: # kill SIGHUP 893 Khng phi tt c cc thay i u c c my client chp nhn ngay. V d, cc ti nhuyn chia s hin thi ang c s dng s khng c ng k cho n khi cc my client ct cc ni kt ri kt ni li ti cc ti nguyn . Thm na, cng s khng c ng k ngay lp tc. iu gip cho cc my client tch cc khng b ngt ni kt mt cch bt ng hoc gp phi cc vn khng c ch i v truy cp ti nguyn khi phin lm vic vn ang c m. Cc bin: Samba c mt tp hp y c bin xc nh cc c trng ca server Samba v ca c my client ni vi n. Mi mt bin c bt u bng du phn trm %, tip theo l mt k t n vit hoa hoc vit thng v ch c th c dng bn v phi ca dng linh tu chn cu hnh theo c php potion = variable nh trong cu li lnh v d sau:

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


2 0

K hiu bin %a c ngha i din cho kin trc ca my tnh client, nh WinNT ch cc my tnh chy trn Windows NT, Win95 cho my Windows 95 hoc 98, hay nh WfWg cho Windows for Worrgroups (Windows 3.11). Theo cch vit trn, Samba s gn ng dn chung ch ti ti nguyn c chia s trong phn [pub] cho cc my client chy trn Windows NT, gn ng dn khc cho cc my Windows 9x, v mt ng dn na cho cc my vi Windows for Worrkgroups. Ni cch khc, cc ng dn m theo mi my client nhn thy ti nhuyn chia s s khc nhau, tu thuc vo kin trc ca client. Bin %a %I %m %M %g %G %u %U %p %P %S %d %h %L %N %v %R %T nh ngha Cc bin ca my client Kin trc ca cc my client(v d, Samba, wfwg, winNT, win95, hoc UNKNOWN). a ch IP ca client(v d, 192.168.220.100). Tn NetBIOS ca client. Tn DNS ca client. Cc bin v ngi dng Nhm chnh ca %u Nhm chnh ca %U Th mc home hin thi ca %u. Tn ngi dng c yu cu trn my client Cc bin v ti nguyn c chia s ng dn cho automounter ti th mc gc ca ti nguyn c chia s, nu th mc khc vi %P Th mc gc hin thi ca ti nguyn c chia s. Tn hin thi ca ti nguyn c chia s. Cc bin ca server nh danh tin trnh (PID) server hin thi. Tn host DNS ca server Samba. Tn host NetBIOS ca server Samba Th mc home ca server Samba, ly t file nh x (map) ca automount. Phin bn Samba. Cc bin khc Mc ca giao thc SMB c tho thun thit lp. Ngy gi hin ti. Danh sch cc bin ca Samba

D.4 Cc phn c bit ca file cu hnh Samba


Phn [global]: Phn [global] xut hin hu nh trong mi file cu hnh Samba, thm ch khi trong khng c dng lnh bt buc no. Mi tu chn c thit lp trong phn ny u c p dng i vi tt c cc ti nguyn chia s khc, v ni dung ca phn ny s c sao chp vo cc phn khc. Nhng cc phn khc, nu cng c cc tu chn ging nh trong phn [global], th trong cc phn , cc tu chn s c xc nh vi cc gi tr mi c ghi ln cc ln cc gi tr c ca [global]. Ta c th cu hnh server

2 0

Samba, u tin ta phi ch n ba tu chn cu hnh c bn xut hin trong phn global ca file cu hnh smb.conf:

[global] Server configuration parameters netbios name = HYDRA server string = Samba %v on (%L) workgroup = SIMPLE
Tu chn netbios name: cho php t tn NetBIOS cho server. V d: netbios name = DHQGHN Gi tr mc nh cho tu chn ny l tn my ca server (phn bn tri cng ca tn DNS y ). V d, tn NetBIOS mc nh ca my hut.edu.vn s l HUT. Thng thng, ngi ta t tn NetBIOS khc vi tn DNS hin thi. Vic thay i tn NetBIOS ca server khng c khuyn khch nu khng c l do chnh ng, nu nh tn khng phi l duy nht v mng LAN c chia ra thnh hai hay nhiu vng DNS. V d, khi mng hut.edu.vn b chia thnh hai vng vi 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 chn server string: Thng s ca server string xc nh ni dung dng ch thch s xut hin cnh tn ca server Samba trong c ca s Network Neighborhood (khi ch Details) ln ca s qun l in ca Microsoft Windows. Bn c th dng cc bin chun cung cp thng tin cho dng m t , v d trn ta s dng hai bin l %v v %L. Ty chn workgroup: Thng s ca tu chn workgroup thit lp nhm lm bic hin thi, ni m server Samba t thng bo cho cc thnh bin ca mng v mnh. Cc clients mun truy cp c ti nguyn c chia s trn server Samba phi cng thuc v mt nhm lm vic NetBIOS. Nn nh rng cc nhm lm vic phi c cc tn nhm NetBIOS thc th, tun theo quy tc t tn NetBIOS. Cu hnh chia s a cng Trong v d phn trc ta nhc n rng do cha c ti nguyn c chia s nn ca s chi tit ca server hydra ang cn trng. By gi ta tip tc lm vic ci file cu hnh Samba v to ra mt a cng c chia s cn rng c tn l [data]. y l cc ng tc cn thm vo t c kt qu va nu:

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


Ti nguyn c chia s SampleDataDrive thng l a cng c Samba chia s v nh x ti th mc /export/samba/data trn server Samba. Ta cho thm mt dng vo c ch thch m t ti nguyn c chia s l Data Drive, cng nh gn cho bn thn ti nguyn mt ci tn SampleDataDrive. Ti nguyn c chia s c thit lp c quyn ghi cho cc ngi dng. Gi tr mc nh ca tu chn ny l ch c. Trong phng n khng cn nc bo mt cht ch nh y, ta t gi tr yes cho tu chn guest ok, cho bt k ai cng c th kt ni c

2 0

ti ti nguyn va c chia s. Trn my UNIX c ci t Samba ta to th mc /export/samba/data vi quyn root bng cc lnh sau: # mkdir /export/samba/data #chmod 777 /export/samba/data By gi, nu ta li kt ni vi server hydra (bng cch kch phm chut vo biu tng ca server trong ca s Network Neighborhood ca Windows), mt th mc c chia s vi tn data xut hin. Tu chn Path (directory) Thng s String (ng dn n th mc) Nh phn (yes/no) String (xu k t) Chc nng t th mc UNIX dng cho chia s a cng hoc cho vic xp hng ch bi my in c chia s. Nu t l yes, s khng dn kim tra xc nhn ngi dng truy cp ti nguyn c chia s ny. t ch thch s xut hin cng ti nguyn c chia s. t tn cho a, theo dng ca DOS. Nu l yes, cho php truy cp ch c ti ti nguyn c chia s. Nu l no, cho php truy cp ch c ti ti nguyn c chia s. Mc nh /tmp Phm vi Share

Guest ok (public)

no

Share

Comment

Khng c Tn ca 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 chn c bn chia s a cng

Cc tu chn v mng ca Samba Tu chn 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) Chc nng Xc nh cc my c th kt ni vi Samba. Xc nh cc my khng th kt ni vi Samba. Nu t l yes, Samba s ch lin kt ti cc giao din xc nh bi tu chn Mc nh Khng c Phm vi Share

Khng c no

Share Global

2 0

socket address

String (a ch IP)

interfaces. t a ch IP nghe, dng cho trng hp c nhiu giao thc o trn servers.

Khng c

Global

Cc tu chn cu hnh mng Ty chn hosts allow: Tu chn ny xc nh cc my c quyn truy cp cc ti nguyn c chia s trn servers Samba, c vit nh danh sch cc my hay a ch IP ca chng, cch nhau bng du phy hoc khong trng. Ta c th t c mt cht t mc bo mt, ch n gin bng cch t a ch mng con LAN ca mnh vo ch gi tr ca tu chn ny. V d: hosts allow = 192.168.200. localhost Ch rng ta t localhost (hoc a ch 127.0.0.1) v tr sau a ch ca mng con. Mt trong s cc li thng thy khi dng tu chn hosts allow l cm lun servers Samba lin h vi chnh n. Chng trnh smbpasswd s cn c kt ni vi servers Samba nh l mt client thay i mt khu m ha ca ngi dng. Thm na, vic duyt ti ch cng i hi c c ng nhp ti ch. Sau y l cc quy tc ca Samba quy nh cho vic dng cc tu chn hosts allow v hosts deny: - Nu khng c tu chn allow hoc deny no c xc nh trong file cu hnh smb.conf Samba s cho php cc kt ni t bt k my no m h thng Unix chp nhn - Nu c cc tu chn allow hoc deny c xc trong phn global ca file cu hnh smb.conf, chng s c p dng cho tt c cc ti nguyn c chia s, thm ch khi mt ti nguyn no c tu chn ghi ln c xc nh. - Nu ch c tu chn allow c xc nh cho mt ti nguyn c chia s, ch c cc my c lit k mi c quyn truy cp ti nguyn . Cc my khc u b cm. - Nu ch c tu chn deny c xc nh cho mt ti nguyn c chia s, mi my khng c trong danh sch u c quyn s dng ti nguyn . - Nu c hai tu chn allow v deny c xc nh, mt my xut hin trong danh sch c php th khng c mt trong danh sch b cm. Nu khng my s b cm truy cp vo ti nguyn c chia s. Ch : Cn thn trnh trng hp ta cho php mt my no , nhng sau y li cm c mng con m my y tham gia. hosts deny: Tu chn hosts deny xc nh cc my khng c quyn truy nhp ti nguyn c chia s, c vit nh danh sch cc tn my hoc a ch IP ca chng, cch nhau bng du phy hay khong trng vi c php ging nh i vi tu chn hosts allow trn. V d, hn ch truy cp ti servers t mt my, tr t vng example.com, ta c th vit: hosts deny = ALL EXCEPT.example.com 2 0

Ging nh hosts allow, khng c gi tr mc nh cho tu chn hosts deny. Nu mun cho php hay cm truy cp ti ti nguyn c chia s c th ta phi qua c hai tu chn hosts allow v hosts deny trong phn global hay nu c dng th phi ghi gi tr mi trong phn cu hnh cho ti nguyn c chia s . interfaces: Tu chn interfaces lit k cc a ch mng m ta mun servers Samba nhn bit v p ng. Tu chn ny rt tin li nu ta mun my tnh tham gia ng thi nhiu mng con. Nu khng c dng Samba tm giao din mng chnh ca servers (thng l card Ethernet u tin) khi khi ng v t cu hnh hot ng ch trong mng con c giao din mng . Ta phi dng tu chn ny bt buc Samba phi thc hin mng con khc na trong mng ca ta. Gi tr ca tu chn l mt hay nhiu b gm cc i a ch IP/ mt n mng, ging 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 dng mt n bt CIDR nh sau:

interfaces = 192.168.220.100/24 192.168.210.30/24


S ca mt n bt ch s u tin c bt trong mt n mng, v d s 24 ngha l 24 bt u tin (trong s tt c 32 bit) s c kch hot, hay ng ngha vi gi tr mt n mng 255.255.255.0. Tng t nh vy, s 16 tng ng vi mt n 255.255.0.0, v 8vi 255.0.0.0. Tuy nhin, tu chn ny c th hot ng khng ng nu ta dng DHCP (phn phi a ch IP ng). Bind interfaces only: Tu chn ny c th c dng bt buc cc tin trnh smbd v nmbd phc v cc yu cu SMB ch cho cc a ch c xc nh bi tu chn interfaces m thi. Tin trnh nmbd bnh thng lin kt giao din (0.0.0.0.) trn cc cng 137 v 138 ti tt c cc a ch, cho php chng nhn cc thng bo phn phi cng cng t khp mi ni. Tuy nhin, nu ta ghi ln gi tr bng:

bind interfaces only = yes


Th ch cc gi i t cc a ch ngun xc thng qua tu chn interfaces mi c chp nhn. Vi smbd, tu chn ny cng bt Samba khng phc v cc yu cu v file ca cc mng con ngoi danh sch ca tu chn interfaces. Nu mun cho php c cc ni kt mng tm thi, nh dng SLIP hoc ppp, ta khng c dng tu chn ny. Ni chung, tu chn ny t c dng, v thng ch c nhng ngi qun tr y kinh nghim mi ti n. Nu t gi tr cho bind intefaces only l yes, ta phi thm a ch ca my ti ch (127.0.0.1) vo danh sch ca interfaces, nu khng smbpasswd s khng th hot ng c. socket address: Tu chn socket address quy nh a ch no trong s c xc nh bi interfaces s ghe tc l ch cc kt ni. Samba theo mc nh chp nhn tt c cc ni kt vi tt c cc a ch. Khi c dng trong file smb.conf, tu chn ny hn ch s a ch m Samba s dng ch cc ni kt. Vi d:

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


Bnh thng, tu chn ny khng c khuyn dng. Nu nh c dng cc mt khu m ho, ta phi thm vo mt dng c ni dung encrypt passwords=yes vo file cu hnh trn. Sau khi son tho ni dung nh trn ca file smb.conf v t n vo ng v tr cn thit, ta khi ng li server Samba v dng cc my client Windows kim tra kt qu. 2 0

Tt nhin cc my client Windows cng phi thuc v nhm SIMPLE trong v d ta vn dng t u chng l cc my phoenix v chimaera. Mi tu chn xut hin trc phn c nh du bng ngoc vung []u tin, tc l bn ngoi phn [lobal] cng c coi l nhng tu chn chung. Phn [mes] Nu mt client no c gng kt ni ti ti nguyn c chia s khng c nu trong file cu hnh smb.conf, Samba s tm ti nguyn c chia s homes trong file cu hnh. Nu phn ny tn ti, tn ca ti nguyn c chia s khng xc nh kia s c coi nh tn ngi dng ca Linux v c yu cu tm trong c s d liu mt khu ca server Samba. Nu nh c tn ngi dng , Samba coi my c ni ti trn l mt ngi dng Linux ang c kt ni ti th mc home ca mnh trong server. V d, gi s mt my client kt ni vi server Samba hydra ln u tin, v c truy cp ti 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 li c phn [homes], v th Samba tm file c s d liu mt khu v tm xem c ti khon ngi dng dung trong h thng hay khng, Sau Samba kim tra my khu c client cung cp v so snh vi mt khu ca ngi dng Linux dung - hoc trong file c s d liu mt khu nu dng mt khu m ho. Nu cc mt khu trng nhau, Samba nhn bit chc l ngi dng dung c quyn v ang mun kt ni ti th mc home ca mnh trong my Linux. Sau Samba s t to ti nguyn c chia s c gi l dung cho ngi dng dung. Ngi ta cng p dng phng php c thc hin vi phn [homes] to ti khon ngi dng mi, km theo mt khu. Phn [printers]: Phn c bit th ba gi l [printers] tng t nh phn [homes]. Nu mt client c kt ni ti ti nguyn c chia s khng c mt trong file cu hnh smb.conf file, v nu tn ca n khng th tm c trong file mt khu, Samba s kim tra xem n c phi s chia s my in cho client . Samba thc hin iu thng qua vic c file d liu my in (thng l /etc/printcap hay /etc/terminfo) xem c tn ca ti nguyn c chia s hay khng. Nu c, Samba to ra ti nguyn c chia s vi tn lin quan ti vic chia s my in. c th in c trong Samba ta phi thm cc tu chn printer driver, printer driver file, v printer driver location vo file cu hnh smb.conf ca Samba. Tu chn chung printer driver file ch n file printers.def phi c t vo phn [global]. Cc tu chn cn li c t vo phn ti nguyn my in c chia s m ta mun cu hnh mt cch t ng cc trnh iu khin my in. Gi tri cho printer driver phi trng vi xu c hin ra trong Printer Winzard trn h thng Windows. Gi tr ca printer driver location l ng dn ca ti nguyn PRINTER$ m ta thit lp, ch khng phi l ng dn UNIX trn server. Do , ta c th dng cc dng m sau y trong file cu 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$
Ging nh i vi phn [home], ta khng cn phi bo tr ti nguyn c chia s cho mi mt may in ca h thng trong file cu hnh smb.conf. Thc vy, Samba lun da vo 2 0

vic ng k my in ca Linux nu ta cn n, v cung cp cc my in ng k cho cc client. Tuy nhin, c mt hn ch nh: nu ti khon ngi dng v my in u c tn l hai, Samba bao gi cng tm ti khon ngi dng trc tin, bt k l client thc ra l cn kt ni vi my in. Cc chi tit v vic thit lp ti nguyn c chia s printers c trnh by trong phn lin quan ti vic in v phn gii tn. Cc tu chn cu hnh: Cc tu chn trong file cu hnh Samba c chia s lm hai loi: global (ton cc) v share (chia s). Mi mt loi quy nh mt tu chn s c xut hin u trong file cu hnh. Global (ton cc): Cc tu chn global phi c mt ch trong phn [global] m thi. y l cc tu chn thng ch ps dng xc nh hot ng ca chnh server Samba. Share: Cc tu chn share c th xut hin trong cc ti nguyn c chia s c th, hoc c trong phn [global]. Nu c mt trong phn [global], chng s xc nh cc gi tr mc nh cho tt c cc ti nguyn c chia s, chng no cha b cc tu chn cng tn ti cc phn ti nguyn c chia s c th ghi nhng gi tr mi.

D.5 Qun l ngi dng trong Samba


Samba c kh nng qun l ngi dng c kh nng truy cp vo my ch Samba. N c kh nng qun l ngi dng kh c lp vi h thng ngi dng h thng. Thng thng cc thng tin v ngi dng s c lu trong file smbpasswd, file ny nm trong th mc /etc/samba. thm mt ngi dng cho samba qun l, ngi dng phi l mt ngi dng trong h thng. Sau , thao tc vi nhng ngi dng ca samba, ta c cng c smbpasswd. smbpasswd [-a][-x][-d][-e][-h][-s] [ tn ngi dng ]

Trong ,
a : tu chn ny cho php ta thm mt ngi dng mi vo trong danh sch ngi dng ca samba. - x : tu chn ny cho php xo b mt ngi dng trong danh sch ngi dng ca samba. - d : tu chn ny cho php ta kho (disable) mt ngi dng trong danh sch ngi dng ca samba. - e : tu chn ny cho php ta m kho (enable) mt ngi dng trong danh sch ngi dng ca samba m ngi dng b kho bng tham s -d. - <tn ngi dng>: tn ca ngi dng ta mun x l. Chng hn, mun thm mt ngi dng vo trong danh sch ngi dng ca samba, ta dng lnh (s dng lnh ny vi quyn root): #smbpasswd a thanhnt Trong ngi dng thanhnt phi l mt ngi dng h thng. Sau khi nh lnh ny, my s hi ta nh vo mt khu cho ngi dng mi ny, v samba cho php ngi dng do n qun l c th c mt khu khc vi mt khu h thng ca ngi dng . -

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

Lu l mt khu s c hi hai ln m bo tnh chnh xc v mt khu s khng c hin th ra mn hnh. Nu thnh cng th ta s nhn c thng bo nh trn. Ta cng c th dng lnh ny thay i mt khu ca mt ngi dng bng lnh (thc hin bng quyn root): #smbpasswd thanhnt Khi n s thng bo cho ta nhp mt khu hai ln ging nh trn. Cn trong trng hp l mt ngi dng bnh thng th mun thay i mt khu samba cho chnh ngi dng ta ch cn nh: #smbpasswd

Old SMB password: New SMB password: Retype new SMB password: Mismatch - password unchanged. Unable to get new password.
Trong trng hp trn, my s yu cu ta nhp mt khu c trc khi nhp mt khu mi, nu c sai st (mt khu c khng ng hoc mt khu mi khng khp nhau) th ta s nhn c thng bo li. Nu mun xo ngi dng ra khi danh sch ngi dng th s dng lnh (vi quyn root): #smbpasswd x thanhnt Cn nu mun mt ngi dng trong danh sch vn tn ti nhng khng c hiu lc, th ta c th kho ngi dng bng lnh: #smbpasswd d thanhnt Khi ngi dng thanhnt tuy vn cn nm trong danh sch nhng khng c samba coi l ngi dng hp l na. Khi mun khi phc ngi dng ny c cc quyn nh ban u th ta c th khi phc bng lnh: #smbpasswd e thanhnt

D.6 Cch s dng Samba t cc my trm


D.6.1 Cch s dng t cc my trm l Linux Samba c cung cp mt cng c nhm s dng cc th mc chia s theo giao thc SMB trong mng LAN, chnh l smbclient. Vi cng c ny ta c th thao tc vi ti nguyn c chia s trn mng, chng hn nh kt ni vo mt th mc chia s trn mt my no thao tc, sao chp file t th mc . smbclient cng ging nh mt chng trnh client ftp. smbclient <tn dch v> [-U <tn ngi dng> ] [ -W <tn min hoc group> ] L [<tn netbios>] Trong : - <tn dch v> : l tn ca dch v mun s dng, c dng //Maychu/dichvu. Maychu l tn netbios ca my ch cung cp dch v, cn dichvu l tn ca dch v mun s dng. Chng hn nh //dulieu/setups, th tn my ch cn truy nhp l dulieu, cn 2 0

setups l tn th mc mun tham chiu n. Ta cng c th s dng a ch IP thay cho tn netbios di dng //192.168.0.12/setups. - U <tn ngi dng> : l tn ngi dng mun s dng ti nguyn . - W <tn min hoc group> : l tn min hoc group m my ch thuc vo. - L <tn netbios> : l tn netbios ca my ch ta mun xem cc dch v m my ch ang cung cp. V d, xem thng tin v cc th mc chia s ca mt my ng thi cng vi cc thng tin v cc my trong min, cc my min khc ta dng lnh: # smbclient -L 10.10.16.5 -U thanhnt -W httt Th my s hi ta mt khu ng vi ngi dng trn, sau khi nh ng mt khu ta s thu c kt 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 dng mt dch v (mt th mc chia s chng hn) ta c th dng lnh nh sau: # smbclient //10.10.16.5/setup -U thanhnt -W httt Trong trng hp ny ta s c my hi mt khu, nu thnh cng th n s cho ta mt phin lm vic vi dch v , c th ta s c mt phin lm vic vi th mc, ta c th sao chp file trn th mc ny vo my hin ti v ngc li.

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 du nhc hin ra, xem cc lnh thao tc, ta c th nh lnh help. Sau khi

kt thc phin lm vic, ta dng lnh quit thot. Kt gn mt th mc chia s vo mt th mc trong h thng file hin ti: Trong trng hp ta khng mun dng cc lnh smbclient cho tng phin lm vic khi m ta s c nhiu thao tc vi th mc c chia s , gii php tt nht l kt gn th mc chia s vo thnh mt th mc trn my cc b. Khi th mc c kt gn s tr thnh mt th mc bnh ng nh cc th mc trn my cc b. Mi vic thao tc s tr nn thun tin hn rt nhiu. lm iu ta dng lnh (vi quyn root):
#smbmount //10.10.16.5/setup /mnt/smb o username=thanhnt hoc #mount t smbfs //10.10.16.5/setup /mnt/smb o username=thanhnt

Khi my s hi mt khu, khi thnh cng th ta s nh x c th mc chia s setup trn my 10.10.16.5 thnh mt th mc /mnt/smb trn my ca mnh. Khi no xong ta c th b kt gn bng lnh:
#smbmount /mnt/smb hoc #umount /mnt/smb D.6.2 Cch s dng t cc my trm l Windows

Ta chn menu start, ta chn run, sau nh vo tn my m ta mun s dng mt dch v no nh trn hnh D.2.

2 1

Hnh D.2 S dng dch v samba t my trm Windows

Sau my s hi ta tn ngi dng v mt khu dng truy cp. Sau khi nhp cc thng tin, nu thnh cng th ta s c mt ca s hin th danh sch cc dch v ca my ch samba cung cp nh hnh D.3.

Hnh D.3 Danh sch cc dch v trn mt samba server

Cho php nh x mt th mc trn mt samba server thnh mt a trm my trm Windows bng cch trn ca s hin danh sch cc ti nguyn trn ta nhy phi chut vo th mc ta mun nh x, sau chn Map network drive nh trn hnh D.4.

2 1

Hnh D.4 To mt nh x a trn my trm Windows Sau my s hi tn a m ta mun t cho mi ny nh hnh D.5:

2 1

Hnh D.5 t tn a cho mt nh x a

2 1

You might also like