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

2


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

4


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

5


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

6


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

7


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

8


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,

9



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

shadow-

shells 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:
LILO

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:

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

We

65
72
79
86

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

peng

bin

etc

usr

home dev

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

iget
getblk

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

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

Tp hp
quyn truy
nhp

12 root root

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

4096

Oct 23 2000 LinuxVN.com

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
mc
ngi
ch
nhm
ch
ngi
dng khc
xem
mi
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

Kiu truy cp

+ (thm quyn)

r=read (quyn c)

- (g b quyn)

w=write (quyn ghi)

= (xc nhn quyn)

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 s h 8

Quyn

Ch s h 8

Ch c

Ch c v ghi

Ch ghi

Ch c v thc hin

Ch thc hin

Ch ghi v thc hin

Khng c quyn no

c, ghi v thc hin

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

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

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

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

Dng lnh
# rm bak/*.h
xa mi file vi tn c hai k hiu cui cng l ".h" trong th mc con bak.

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
Th vin mu

Mc ngi dng
Mc
nhn

Gao din theo cc li gi h thng

H thng con iu khin qu


trnh (bao gm 3 thnh phn
con bn phiB truyn
thng lin qu trnhB
lp lchThnh phn iu
phi b nh

H thng con iu khin


File
Cache b m

K tKhiiu 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

Bng cc vng nh
(bng cc trang o)

U-area

B nh trong (cc trang thc)

C
c
cu
tr
c
d
liu
i
u
khi
n
qu
trn
h
4.1.

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)

Ch i thiu ti
nguyn (4)

Ch i b nh
ngoi (6)

Thc hin mc
nhn (2)

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

Sn sng sang mc
ngi dng (7)

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

(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

W
<
N
L

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

/software/project
/software/setup

192.168.0.172(rw)
192.168.0.0/28(ro)

192.168.0.127(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 khQc 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 khiQn \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. MRt 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

# Chuyen vao thu muc can list


# Neu thu muc khong ton tai thi ra khoi CT

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

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 Q 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 trSnh 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

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

Kiu

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

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.

7.3.2. Cng c GNU make

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

Ting Anh

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).

File

File

Tn file

Filename

Th mc

Directory

H thng file

File system

Lnh

Command

Tin ch (cn
gi l lnh
thng trc)

Utility

Dng lnh

Command line

ng nhp

Login

Ngi dng

User

Siu ngi
dng (ngi
dng ti
cao/ngi
qun tr)

Superuser

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.

Con tr

cursor

H iu hnh

Operating
System (OS)

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.

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.

1
6

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).

H iu hnh
a chng
trnh

Multiprogramming OS

H iu hnh
a ngi dng

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)

Nhn
Qu trnh
Chng trnh
gii thch lnh

ng nhp

Login

ng xut

Logout

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.

Du nhc shell

Cn gi l du nhc dng lnh

K hiu m t wildcards
nhm

K hiu c dng xc nh mt nhm file (v


d *, ?, [] v [] vi -). Cn c gi l k hiu thay
th.

Ci t Linux

Qu trnh to ra h iu hnh Linux ln my tnh


s dng

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

Thng
o
La chn
Chn
Thay th
Dng lnh
Ex

o
v, V,
^V

*2
*5
<Esc>
<Esc>
*3
:vi

La
chn
*4
^G

^O, ^G
-----

-----

Chn
*1
c, C
*6
<Insert>
:start
--

Thay
th
R

Dng
lnh
:, /, ?, !

--<Insert>

:
:
---

---

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

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

:st [!]

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

n
n

gk
gj

n
n
n
n

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

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.
z-

cun 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

N
n
n
n
n
n

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

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

dw
dG
d1G
dn$
d
cc
C
cn$

N,m
N
N
N
N

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

gUU

guu

n
n
n

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

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]

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

* 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

: [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

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

.
q |a-z|
@|a-z|
@@
:@|a-z|
:@@
:[n,m]g/mu/[lnh]

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

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

C-l

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

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

s dng cc phm ny di chuyn trong mt panel


di chuyn ngc li mt trang mn hnh

Insert, C-t

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

M-g, M-h, M-j

ln lt chn file u tin, file gia v file cui trn panel hin th

Tab, C-i

1
9

C-s, M-s

M-t

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

M-y

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

M-u

di chuyn n th mc tip theo c s dng

C-\
+

*
M-o

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:

Listing Mode ...

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

C-x q
C-x i

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

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 ...

F2
F3

Filtered view

M-!

Edit

F4

Copy

F5

cHmod

C-x c

Link
Symlink
edit sYimlink
chOwn

C-x l
C-x s
C-x C-s
C-x o

Advanced chown
Rename/Move
Mkdir
Delete
Quick cd
select Group
Unselect group
reverse selecTion
Exit

F6
F7
F8
M-c
M-+
M-
M-*
F10

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

M-?
C-u

Switch panels on/of

C-o

Compare directories

C-x d

Command history
Directory hotlist

C-\

External panelize

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

C-\
C-x j

Extension file edit

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 ...

C-o
C-n
F2
F12

Insert file ...


Copy to file ...
About ..
Quit

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

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

F3
S-F3
Ins
F5
F6
F8
C-u
C-PgUp
C-PgDn

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 ...

thit lp cc tu chn cho b son tho


ghi li mi s thit lp c thay i

* 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

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:V
# 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

Thng s

Chc nng


Path
(directory)

String
(ng dn
n th
mc)


Guest ok
(public)

Nh phn
(yes/no)


Comment

String (xu
k t)

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.


volume

String

Read only

Nh phn
(yes/no)

Writeable
(write ok)

nh phn
(yes/no)

Mc nh

Phm vi

/tmp

Share

no

Share

Khng c

Share

Tn ca ti
nguyn
c chia
s

Share

yes

Share

no

Share

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.

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

Phm vi

Khng c

VShare

Khng c

Share

Vno

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