You are on page 1of 212

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 6 U
CHNG 1. GII THIU CHUNG V LINUX 7
1.1. Gii thiu v UNIX v Linux 7
1.1.1. Xut x, qu trnh tin ha v mt s c trng ca h iu hnh UNIX 7
1.1.2. Gii thiu s b v Linux 9
1.2. S b v cc thnh phn ca Linux 12
1.2.1. S b v nhn 12
1.2.2. S b v shell 13
1.3. Gii thiu v s dng lnh trong Linux 14
1.3.1. Cc quy c khi vit lnh 16
1.3.3. Lm n gin thao tc g lnh 18
1.3.4. Tip ni dng lnh 20
1.4. Trang Man 21
CHNG 2. THAO TC VI H THNG 23
2.1. Qu trnh khi ng Linux 23
2.2. Th tc ng nhp v cc lnh thot khi h thng 24
2.2.1. ng nhp 24
2.2.2. Ra khi h thng 25
2.2.3. Khi ng li h thng 26
2.2.4. Khi ng vo ch ho 27
2.3. Lnh thay i mt khu 29
2.4. Lnh xem, thit t ngy, gi hin ti v xem lch trn h thng 31
2.4.1 Lnh xem, thit t ngy, gi 31
2.4.2. Lnh xem lch 32
2.5. Xem thng tin h thng 33
2.6. Thay i ni dung du nhc shell 34
2.7. Lnh gi ngn ng tnh ton s hc 35
CHNG 3. H THNG FILE 38
3.1 Tng quan v h thng file 38
3.1.1. Mt s khi nim 38
3.1.2. S b kin trc ni ti ca h thng file 40
3.1.3. Mt s thut ton lm vic vi inode 44
3.1.4. H tr nhiu h thng File 46
3.1.5. Lin kt tng trng (lnh ln) 49
3.2 Quyn truy nhp th mc v file 50
3.2.1 Quyn truy nhp 50
1
3.2.2. Cc lnh c bn 52
3.3 Thao tc vi th mc 56
3.3.1 Mt s th mc c bit 56
3.3.2 Cc lnh c bn v th mc 58
3.4. Cc lnh lm vic vi file 61
3.4.1 Cc kiu file c trong Linux 61
3.4.2. Cc lnh to file 62
3.4.3 Cc lnh thao tc trn file 63
3.4.4 Cc lnh thao tc theo ni dung file 69
3.4.5 Cc lnh tm file 76
3.5 Nn v sao lu cc file 82
3.5.1 Sao lu cc file (lnh tar) 82
3.5.2 Nn d liu 84
CHNG 4. QUN TR QU TRNH 88
4.1 Qu trnh trong UNIX 88
4.1.1. S b v qu trnh 88
4.1.2. S b cu trc iu khin ca UNIX 88
4.1.3. Cc h thng con trong nhn 90
4.1.4. S b v iu khin qu trnh 92
4.1.5. Trng thi v chuyn dch trng thi 93
4.1.6. S ngng hot ng v hot ng tr li ca qu trnh 94
4.1.7. S b v lnh i vi qu trnh 94
4.2. Cc lnh c bn 95
4.2.1. Lnh fg v lnh bg 95
4.2.2. Hin th cc qu trnh ang chy vi lnh ps 97
4.2.3. Hy qu trnh vi lnh kill 98
4.2.4. Cho my ngng hot ng mt thi gian vi lnh sleep 99
4.2.5. Xem cy qu trnh vi lnh pstree 100
4.2.6. Lnh thit t li u tin ca qu trnh nice v lnh renice 101
CHNG 5. QUN L TI KHON NGI DNG 103
5.1 Ti khon ngi dng 103
5.2 Cc lnh c bn qun l ngi dng 103
5.2.1 File /etc/passwd 103
5.2.2 Thm ngi dng vi lnh useradd 104
5.2.3 Thay i thuc tnh ngi dng 106
5.2.4 Xa b mt ngi dng (lnh userdel) 106
5.3 Cc lnh c bn lin quan n nhm ngi dng 107
5.3.1 Nhm ngi dng v file /etc/group 107
2
5.3.2 Thm nhm ngi dng 108
5.3.3 Sa i cc thuc tnh ca mt nhm ngi dng (lnh groupmod) 108
5.3.4 Xa mt nhm ngi dng (lnh groupdel) 108
5.4 Cc lnh c bn khc c lin quan n ngi dng 109
5.4.1 ng nhp vi t cch mt ngi dng khc khi dng lnh su 109
5.4.2 Xc nh ngi dng ang ng nhp (lnh who) 109
5.4.3 Xc nh cc qu trnh ang c tin hnh (lnh w) 111
CHNG 6. TRUYN THNG V MNG UNIX-LINUX 112
6.1. Lnh truyn thng 112
6.1.1. Lnh write 112
6.1.2. Lnh mail 112
6.1.3. Lnh talk 114
6.2 Cu hnh Card giao tip mng 114
6.3. Cc dch v mng 115
6.3.1 H thng tin mng NIS 115
6.4 H thng file trn mng 120
6.4.1 Ci t NFS 120
6.4.2 Khi ng v dng NFS 121
6.4.3 Cu hnh NFS server v Client 121
6.4.4 S dng mount 122
6.4.5 Unmount 122
6.4.6 Mount t ng qua tp cu hnh 123
CHNG 7. LP TRNH SHELL V LP TRNH C TRN LINUX 124
7.1. Cch thc pipes v cc yu t c bn lp trnh trn shell 124
7.1.1. Cch thc pipes 124
7.1.2. Cc yu t c bn lp trnh trong shell 125
7.2. Mt s lnh lp trnh trn shell 128
7.2.1. S dng cc ton t bash 128
7.2.2. iu khin lung 130
7.2.3 Cc ton t nh hng vo ra 140
7.2.4. Hin dng vn bn 141
7.2.5. Lnh read c d liu cho bin ngi dng 142
7.2.6. Lnh set 142
7.2.7. Tnh ton trn cc bin 142
7.2.8. Chng trnh v d 143
7.3. Lp trnh C trn UNIX 144
7.3.1. Trnh bin dch gcc 144
7.3.2. Cng c GNU make 146
3
7.3.3. Lm vic vi file 147
7.3.4. Th vin lin kt 153
7.3.5 Cc cng c cho th vin 160
TI LIU THAM KHO 162
CH THCH MT S THUT NG 163
PH LC A. QU TRNH CI T REDHAT-LINUX 165
AA. Ci t phin bn RedHat 6.2 165
AA.1. To a mm khi ng 165
AA.2. Phn vng li a DOS/Windows hin thi 166
AA.3. Cc bc ci t (bn RedHat 6.2 v khi ng t CD-ROM) 166
AA.4. Cc hn ch v phn cng i vi Linux 173
PH LC B. TRNH SON THO VIM 176
B.1 Khi ng vim 178
B.1.1 M chng trnh son tho vim 178
B.1.2. Tnh nng m nhiu ca s 178
B.1.3. Ghi v thot trong vim 179
B.2. Di chuyn tr son tho trong Vim 180
B.2.1. Di chuyn trong vn bn 180
B.2.2. Di chuyn theo cc i tng vn bn 180
B.2.3. Cun mn hnh 181
B.3. Cc thao tc trong vn bn 181
B.3.1. Cc lnh chn vn bn trong vim 181
B.3.2. Cc lnh xo vn bn trong vim 181
B.3.3. Cc lnh khi phc vn bn trong vim 182
6.3.4. Cc lnh thay th vn bn trong vim 182
B.3.5. Sao chp v di chuyn vn bn trong vim 183
B.3.6. Tm kim v thay th vn bn trong vim 184
B.3.7. nh du trong vim 185
B.3.8. Cc phm s dng trong ch chn 185
B.3.9. Mt s lnh trong ch o 186
B.3.10. Cc lnh lp 186
B.4. Cc lnh khc 186
B.4.1. Cch thc hin cc lnh bn trong Vim 186
B.4.2. Cc lnh lin quan n file 187
4
PH LC C. MIDNIGHT COMMANDER 188
C.1. Gii thiu v Midnight Commander (MC) 188
C.2. Khi ng MC 188
C.3. Giao din ca MC 188
C.4. Dng chut trong MC 189
C.5. Cc thao tc bn phm 189
C.6. Thc n thanh ngang (menu bar) 191
C.7. Cc phm chc nng 193
C.8. B son tho ca Midnight Commander 193
PH LC D. SAMBA 196
D.1 Ci t Samba 196
D.2 Cc thnh phn ca Samba 197
D.3 File cu hnh Samba 198
D.4 Cc phn c bit ca file cu hnh Samba 199
D.5 Qun l ngi dng trong Samba 205
D.6 Cch s dng Samba t cc my trm 206
D.6.1 Cch s dng t cc my trm l Linux 206
D.6.2 Cch s dng t cc my trm l Windows 208
5
LI GII THIU

6
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
7
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 Nh cung cp Nn pht trin
AIX International Business Machines AT&T System V
A/UX Apple Computer AT&T System V
Dynix Sequent BSD (Berkeley SoftWare Distribution)
HP-UX Hewlett-Packard BSD
Irix Silicon Graphics AT&T System V
Linux Free SoftWare Foundation
NextStep Next BSD
OSF/1 Digital Equipment Corporation BSD
SCO UNIX Santa Cruz Operation AT&T System V
Solaris Sun Microsystems AT&T System V
SunOS Sun Microsystems BSD UNIX
Ultrix Digital Equipment Corporation BSD UNIX
Unicos Cray AT&T System V
UnixWare Novell AT&T System V
XENIX MicroSoft 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,
8
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.
9
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.
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
10
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,
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.
11
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.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.
12
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 C-
shell (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:
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.
13
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.
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:
14
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 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.
15
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
.
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".
16
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
, tc l c dng sau (chnh l dng tng qut ca lnh more): [ v ]
# 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.

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.
17
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.
Mt s phm c bit khi g lnh
Khi ngi dng g lnh c th xy ra mt s tnh hung nh sau:
18
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):
info-dir initlog.conf inittab lynx.cfg
mail.rc mailcap minicom.users motd
19
mtab mtools.conf services shadow
shadow- shells smb.conf sysctl.conf
syslog.conf temp termcap up2date.conf
temp termcap
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 shadow- shells sysctl.conf
syslog.conf
Nu ngi dng g [si]* ( ch cc tn c ch ci u l s hoc i, ch dng c hai k
t ) thay th tham s file th xc nh cc tn file sau: [ v ]
info-dir initlog.conf inittab services
shadow shadow- shells smb.conf
sysctl.conf syslog.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.
20
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.
21
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 hboot help hexdump history
hostname htdigest h2xs hcc helpme hf77
hltest hoststat htpasswd halt hcp
helptool hinotes host hpcdtoppm hash
head hexbin hipstopgm hostid 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.

22
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
Nhn init
Theo 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:
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.
23
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
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
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.
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:
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:
24
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.
-F : khi ng li v thc hin vic kim tra a.
25
-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
lm vic th lnh reboot vn c thc hin song h thng i hi vic xc nhn mt khu.
26
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
# of power left. Schedule a shutdown for 2 minutes from now.
# This does, of course, assume you have powerd installed and your
27
# 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
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
28
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 cng 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
thng. Sau , ngi dng mi nht thit cn thay i mt khu bo m vic gi
b mt c nhn tuyt i.
29
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:
# passwd -S root
30
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.
: hin th ngy gi theo chun ISO-8601 (v d: 2000-11-8). -I, --iso-8601[=m-t]
-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.
31
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>]]
32
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 Tu We Th Fr Sa
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
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 Tu We Th Fr Sa
60 61 62
63 64 65 66 67 68 69
70 71 72 73 74 75 76
77 78 79 80 81 82 83
84 85 86 87 88 89 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
33
# uname -a
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:



34
Cp k t iu khin ngha
\! 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 (\)
\d Hin th ngy hin ti
\h Hin th tn my (hostname)
\n K hiu xung dng
\s Hin th tn h shell
\t Hin th gi hin ti
\u Hin th tn ngi dng
\W 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)
\w 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).

35
-w, --warn : khi thc hin php tnh khng tun theo chun POSIX (POSIX l mt chun
trong Linux) th mt cnh bo xut hin.

-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):
36
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
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).
37
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.
38
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
/



root bin etc usr home dev


peng office52 sh date who X11 src bin user1 user2 tty00 tty01


xinit
Xclients Xmodmap
Hnh 3.1. Mt phn cu trc lgic dng cy ca h thng File
39
ng dn ny cho bit Xclients nm trong xinit, xinit nm trong X11, X11
nm trong etc v etc nm trong gc /.
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.
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.
40
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.
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
41
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,
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,
42
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 .
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
43
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
(2
24
+2
16
+ 2
8
+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
S dng namei gn inode thuc
tnh file
Vo-ra
file
Cu trc h
thng file
Qun
l cy
open
creat
dup
pipe
close
open
creat
chdir
chroot
chown
chmod
stat
link
unlink
mknod
mount
umount
creat
mknod
link
unlink
chown
chmod
stat
read
write
cseek
mont
umount
chdir
chown
Thut ton h thng file mc thp
Namei
iget iput Ialloc ifree alloc free bmap
Thut ton nh v buffer
getblk brelse Bread breada bwrite
Hnh 3.2. Tng th v li gi h thng File

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
44
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:
+ 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.
45
- 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.
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.
46
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.
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
47
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).
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
cc thit b lu tr.
Programatic file system interface
System call interface
Virtual File System
Buffer cache
Ext2 Minix Msdos Vfat
Device driver
Physical hardware
Inode cache
Directory
cache
Hnh 3.3. H thng file o VFS
48
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.
"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.
49
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):
drwxr-xr-x 12 root root 4096 Oct 23 2000 LinuxVN.com
S lin kt
n file
(th mc)
Ngi
ch file
Nhm ch
file
Kch thc
file (byte)
Ngy gi
to file
Tn file
Tp hp
quyn truy
nhp
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 Kiu file
d
b
c
l
p
s
-
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)

50
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:
Quyn ca ngi
dng khc
Kiu file: th
mc
Quyn ca
ngi ch
Quyn ca
nhm ch
d rwx r-x r-x
hiu c chnh xc quyn truy nhp c ngha nh th no i vi h thng my
tnh, phi nh rng Linux 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 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 ngha
---
r--
r-x
rw-
rwx
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: ---, r-
x 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.
51
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:

Quyn ngi
dng khc:
c, thc hin
(khng ghi)
Kiu file:
th mc
Quyn ca
ngi ch:
c, ghi,
thc hin
Quyn ca
nhm ch:
c, thc
hin
(khng ghi)
d rwx r-x r-x








Gii thch:
S hn ch trng hp v quyn truy nhp th mc c gii thch theo cc lp lun
nh sau:
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
52
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.
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:
53
-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
Cch xc lp tng i l d nh theo ngha ca ni dung cc mod v ch nhng thay
i thc s mi c biu din trong lnh. Ba hp sau y s gii thch cc ch ci biu
din mod theo cch xc lp tng i.
Quyn truy cp

u=user (ngi s hu)
g=group (nhm s hu)
o=other (ngi khc)
a=all (tt c ngi dng)
Thao tc thay i

+ (thm quyn)
- (g b quyn)
= (xc nhn quyn)
Kiu truy cp

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

C th kt hp cc mc t hp th nht v hp th ba vi mt mc t hp th hai
to ra mt mod.
V d, nu mun thm quyn ghi i vi file test cho tt c ngi dng trong nhm s
hu, hy chn g cho nhm s hu, + cho thm quyn truy nhp, v w cho quyn ghi. Lc
lnh chmod s c dng sau:
chmod g+w test
Cch xc lp tng i trong lnh chmod gn ging nh mt menu c nhiu mc chn
khc nhau, cho php kt hp c c s la chn theo yu cu.
Nu quyt nh g b quyn c v thc hin trn file test cho nhng ngi khng cng
nhm, hy chn o cho ngi dng khc, - g b quyn truy nhp, v r,x cho quyn c
v thc hin. Lnh chmod s l:
chmod o-rx test
Cch xc lp tuyt i
i vi ngi dng hiu s b v biu din s trong h c s 8 th cch xc lp tuyt
i li c a chung hn.
Phn 3.2.1. cho bit biu din quyn truy nhp file thng qua dy gm 9 v tr di
dng rwxrwxrwx, trong tng cm 3 v tr theo th t tng ng vi: ch s hu, nhm
s hu v ngi dng khc. Nh vy thuc tnh quyn truy nhp ca mt file c th biu
54
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:

Quyn Ch s h 8 Quyn Ch s h 8
Ch c 4 Ch c v ghi 6
Ch ghi 2 Ch c v thc hin 5
Ch thc hin 1 Ch ghi v thc hin 3
Khng c quyn no 0 c, ghi v thc hin 7
d. ng nhp vo mt nhm ngi dng mi vi lnh newgrp
Linux cho php mt ngi dng c th l thnh vin ca mt hoc nhiu nhm ngi
dng khc nhau, trong c mt nhm c gi l nhm khi ng. iu ny c m
bo khi thc hin lnh adduser hoc usersdd. Tuy nhin, ti mt thi im, mt ngi
dng thuc vo ch mt nhm. Khi mt ngi dng ng nhp, h thng ngm nh ngi
dng l thnh vin ca nhm khi ng, v c quyn truy nhp i vi nhng file thuc
quyn s hu ca nhm khi ng . Nu mun s dng quyn s hu theo cc nhm
khc i vi nhng file th ngi dng phi chuyn i thnh thnh vin ca mt nhm
nhng nhm c gn vi ngi dng. Lnh newgr cho php ngi dng chuyn sang
nhm ngi dng khc gn vi mnh vi c php:
[nhm] newgrp
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
55
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.
* 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.
56
* 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) ...
* 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.
57
* 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:
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.
58
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
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,







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 initlog.conf inittab services
shadow shadow- shells smb.conf
Kiu file v
quyn truy
nhp
S lin kt
n file
(th mc)
Ngi
ch file
Nhm ch
file
Kch thc
file (byte)
Ngy gi
to file
Tn file

drwxr-xr-x 22 root root 4096 Oct 31 2000 var
59
sysctl.conf syslog.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:
-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>
60
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.

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.
61
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.
* 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.
62
V d. to file newfile trong th mc /home/vd bng lnh cat.
# cat > /home/vd/newfile
This is a example of cat command
#
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).
: to file lu cho mi file ch nu nh n ang tn ti. -b, --backup[=CONTROL]
-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
63
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/
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.
64
* 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:
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
65
xa mi file vi tn c hai k hiu cui cng l ".h" trong th mc con bak.
* 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 41 192 /home/lan/vd/vdcalj
24 209 1473 /home/lan/vd/vdwc
32 250 1665 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
66
37
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.
67
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.
68
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:
69
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, Intel 80386,version
1,dynamically linked, not stripped
/dev/hda: block special
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.
70
V d:
# 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.
71
-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 root root 4096 Oct 31 2000 AfterStep-1.8.0
drwxr-xr-x 2 root root 4096 Oct 31 2000 AnotherLevel
drwxr-xr-x 2 root root 4096 Oct 31 2000 ElectricFence
drwxr-xr-x 2 root root 4096 Oct 31 2000 GXedit-1.23
drwxr-xr-x 3 root root 4096 Oct 31 2000 HTML
drwxr-xr-x 3 root root 4096 Oct 31 2000 ImageMagick
drwxr-xr-x 6 root root 4096 Oct 31 2000 LDP
drwxr-xr-x 3 root root 4096 Oct 31 2000 ORBit-0.5.0
drwxr-xr-x 2 root root 4096 Oct 31 2000 SVGATextMode
drwxr-xr-x 2 root root 4096 Oct 31 2000 SysVinit-2.78
drwxr-xr-x 2 root root 4096 Oct 31 2000 WindowMaker
--More--(9%) [ Press space to continue, "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 Chc nng
[Space]
n
[Enter]
h
d hoc CTRL+D
q hoc CTRL+Q
s
f
b hoc CTRL+B
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)
72
=
: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
73
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 <==
74

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:
[tu-chn] <file1> <file2> diff
75
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.
76
-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
77
15 /dev/hda7: Linux/i386 swap file
16 /dev/hda8: Linux/i386 swap file
17 thutest
18 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 ngha
C
\c
^
$
.
[xy]
[^xy]
# grep - H thutest text
c*
- 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

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

K hiu ngha
c
\c
^
$
.
[xy]
[^xy]
c*
c+
c?
a | b
(a)
- 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:
aglw2:\
:wi=AG 23 : wk=Apple LaserWrite IINT:
aglw3:\
:wi=AG 23 : wk=Apple LaserWrite IINT:
79
Lnh trn cho php tm cc dng c bt u bi (^) mt ch ci khng phn bit ch
hoa ch thng ( ) hoc ( | ) dng c cha mu :wi. [a-zA-Z]
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:
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
80
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 ';'
-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.
81
-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-dev-
info/gnome-dev-info/what.html
./usr/doc/gnome-libs-devel-1.0.55/devel-docs/gnome-dev-
info/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.
Vic sao lu ton b c th c thc hin d dng vi lnh tar vi c php:
tar [ty-chn] [<file>, ...] [<th-mc>, ...]
82
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 leading / from absolute path names in the
archive
#
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 path names in the
archive
Prepare volume #2 for /dev/fd0H1440 and hit return:
#
83
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.
* Nn, gii nn v xem ni dung cc file vi lnh gzip, gunzip v zcat
C php cc lnh ny nh sau:
84
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.
-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.
85
-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:
[ty-chn] [<file>] compress
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
86
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.
87
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)
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.
88
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
Gao din theo cc li gi h thng
H thng con iu khin
File
B truyn
thng lin
qu trnh
B lp lch
H thng
con iu
khin qu
trnh (bao
gm 3 thnh
phn con
bn phi
Thnh phn
iu phi b
nh

Cache b m
K t Khi
iu khin thit b

IU KHIN PHN CNG
PHN CNG
Mc phn
cng
Mc ngi dng
Mc
nhn
Mc
nhn
Cu trc ca Nhn v cc mc qu trnh
89
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;
90
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 Stack nhn
Bin cc b khng c
a ch frame 2
a ch quay li sau khi
write
- Hng tng ca stack
Cc tham s
ca write
b m
buffer
mi


frame 3


Frame 3

Cc bin cc
b
count call write () call
func2()
Bin cc b
a ch ca Frame 1 a ch ca Frame 1
91
a ch quay v sau li gi
copy
a ch quay v sau li gi
func2
Cc tham s
ca copy
old
new

frame 2

Frame 2
Tham s ca func2 nhn
Bin cc b fdold
fdnew
call copy () call
func2()
Bin cc b
a ch ca Frame 0 a ch ca Frame 0
a ch quay v sau li gi
main
a ch quay v sau li gi
func1
Tham s ca
main
argc
argv

Frame 1

Frame 1
Tham s ca func1 nhn
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,
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.
92
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.

U-area
B nh trong (cc trang thc)
Bng cc vng
nh cho mt
qu trnh
Bng cc vng nh
(bng cc trang o)
Cc cu trc d liu iu khin qu trnh
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
nhn (2)
Thc hin mc
ngi dng (1)
Sn sng sang mc
ngi dng (7)
Hon thin
(9)
Ch i thiu ti
nguyn (4)
Sn sng thc
hin (3)
Ch i b nh
ngoi (6)
Qu trnh
pht sinh
(8)
i b nh
thc hin (5)
93

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 ngha
D

R

S

T

Z
(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
94

W
<
N
L
(zombie process) qu trnh kt thc thc hin, nhng n vn c
tham chiu trong h thng
khng c cc trang thng tr
qu trnh c mc u tin cao hn
qu trnh c mc u tin thp hn
c cc trang kha bn trong b nh
4.2. Cc lnh c bn
4.2.1. Lnh fg v lnh bg
Linux cho php ngi dng s dng t hp phm CTRL+z dng mt qu trnh v
khi ng li qu trnh bng cch g lnh fg. Lnh fg (foreground) tham chiu n
cc chng trnh m mn hnh cng nh bn phm ang lm vic vi chng.
V d, ngi dng ang xem trang man ca lnh sort, nhn xung cui thy c ty
chn -b, mun th ty chn ny ng thi vn mun xem trang man. Thay cho vic nh
q thot v sau chy li lnh man, cho php ngi dng g CTRL+z tm dng
lnh man v g lnh th ty chn -b. Sau khi th xong, hy g fg tip tc xem trang
man ca lnh sort. Kt qu ca qu trnh trn hin th nh sau:
# man sort | more
SORT(1) FSF SORT(1)
NAME
sort - sort lines of text Files
SYNOPSIS
../src/sort [OPTION] ... [Files]...
DESCRIPTION
Write sorted concatenation of all FILE(s) to standard out-put.
+POS1 [-POS2]
start a key at POS1,end it *before* POS2 obsoles-cent)field numbers and character
offsets are num-bered starting with zero(contrast with the -k option)
-b ignore leading blanks in sort fields or keys
--More--
(CTRL+z)
[1]+ Stopped man sort | more
# ls -s | sort -b | head -4
1 Archives/
1 InfoWorld/
1 Mail/
1 News/
1 OWL/
# fg
man sort | more
--More--

95
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
[5] trong ch ny, s th t ca chng trnh l , 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
96
#
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 TTY TIME CMD
7813 pts/0 00:00:00 bash
7908 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.
97
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>
[tn hiu] kill -l
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
98
CTRL+c
9 SIGKILL (kill) tn hiu ny s dng qu trnh ngay lp tc
15 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
PID TTY TIME CMD

2240 pts/2 00:00:00 bash
2276 pts/2 00:00:00 man
2277 pts/2 00:00:00 more
2280 pts/2 00:00:00 sh
2281 pts/2 00:00:00 sh
2285 pts/2 00:00:00 less
2289 pts/2 00:00:00 man
2291 pts/2 00:00:00 sh
2292 pts/2 00:00:00 gunzip
2293 pts/2 00:00:00 less
2298 pts/2 00:00:00 ps
# kill 2277

PID TTY TIME CMD
2240 pts/2 00:00:00 bash
2276 pts/2 00:00:00 man
2280 pts/2 00:00:00 sh
2281 pts/2 00:00:00 sh
2285 pts/2 00:00:00 less
2289 pts/2 00:00:00 man
2291 pts/2 00:00:00 sh
2292 pts/2 00:00:00 gunzip
2293 pts/2 00:00:00 less
2298 pts/2 00:00:00 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)
99
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
100
|-identd---identd---3*[identd]
|-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
101
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.
102
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:
103
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
104
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.
105
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:
[-r] <tn-ngi-dng> userdel
106
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)
107
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 :
[ty-chn] <tn-nhm> groupadd
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:
[ty-chn] <tn-nhm> groupmod
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>
108
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:
[ty-chn] who
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.
109
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
110
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
111
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 tn-
login@my.mng.lnh-vc.quc-gia).
112
- 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
113
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

114
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-network-
xxx.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
115
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 File maps tng ng
/etc/hosts hosts.addr Hosts.byname
/etc/networks network.byname network.byaddr
/etc/passwd passwd.byname passwd.byid
/etc/groups Groups.byname group.byid
/etc/services service.byname service.bynumber
/etc/rpc rpc.bynumber rpc.byname
/etc/protocol protocol.byname protocol.bynumber
/usr/lib/aliases 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.
116
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.
117
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
118
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
119
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
...
120
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
121
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 192.168.0.172(rw) 192.168.0.127(ro)
/software/setup 192.168.0.0/28(ro)

Trong , cc tham s c ngha nh sau: tn th mc l ng dn n th mc ta
mun chia s cho cc my khc. Danh sch a ch cc my trm, c th l a ch IP hoc
tn my (c lit k trong file /etc/hosts). Trong trng hp mun lit k danh sch cc
my c a ch gn k nhau trong mt khong no ta c th c cch vit rt gn nh sau:
chng hn ta mun lit k cc a ch ca my trm trong khong t 192.168.0.0 n cc
my trm c a ch 192.168.0.15 ta ch cn vit 192.168.0.0/28. Quyn truy nhp c vit
di dng (rw) ch quyn c v ghi, cn (ro) th cc my trm ch c quyn c trn th
mc , (noaccess) cm cc my trm truy nhp vo cc th mc con ca th mc chia s.
Ch , gia a ch ca my v quyn truy nhp khng c du cch.
6.4.4 S dng mount
c d liu trn cc th mc c chia s ny ta c th dng cch sau: ta
s dng lnh mount, nhng trong trng hp ny ta phi cn quyn qun tr (root).
C php ca lnh s nh sau:
#mount <tn_my_ch:/tn_th_mc_chia_s>
</tn_th_mc_cn_nh_x>
Lu , trc khi ra lnh ny ta phi to ra th mc cn nh x (trong trng hp
n cha tn ti).
V d, nh x th mc /software/project trn mt my ch 192.168.0.33 vo
th mc /mnt/project trn my hin ti ta dng lnh sau:
#mount 192.168.0.33:/software/project /mnt/project
By gi th mc /mnt/project trn my hin ti s bnh ng nh cc th mc
khc trn my. Ta c th sao chp, c cc file trn th mc ny.
6.4.5 Unmount
Sau khi thc hin xong cc thao tc cn thit, ta c th hy b nh x ny bng
lnh umount nh sau:
#umount /mnt/project
Sau lnh ny th ta khng cn c kh nng thao tc vi th mc trn my ch
c na, nu mun ta li phi nh x li.
122
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.

123
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 B Qu trnh A


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 | \
124
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
125
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
{
echo e inside cntparm $# parms: $*
126
}
cntparm $*
cntparm $@
echo e outside cntparm $* parms\n
echo e outside cntparm $# parms\n
Khi chy chng trnh ny ta s thu c kt qu:
$./testparm.sh Kurt Roland Wall
inside cntparm 1 parms: Kurt Roland Wall
inside cntparm 3 parms: Kurt Roland Wall
outside cntparm: Kurt Roland Wall
outside cntparm: Kurt Roland Wall
Trong dng th nht v th 2 ta thy kt qu c s khc nhau, dng th nht bin
$* tr v tham bin v tr di dng mt xu n, v th cntparm bo co mt tham bin
n. Dng th hai gi cntparm, tr v i s dng lnh ca l 3 xu c lp, v th cntparm
bo co ba tham bin.
c. Cc k t c bit trong bash

K t M t
<
>
(
)
|
\
&
{
}
~
`
;
#


$
*
?
nh hng u vo
nh hng u ra
Bt u subshell
Kt thc subshell
K hiu dn
Dng hin k t c bit
Thi hnh lnh chy ch ngm
Bt u khi lnh
Kt thc khi lnh
Th mc home ca ngi dng hin ti
Thay th lnh
Chia ct lnh
Li ch gii
Trch dn mnh
Trch dn yu
Biu thc bin
K t i din cho chui
K t i din cho mt k t
Cc k t c bit ca bash
Du chia ct lnh, ; , cho php thc hin nhng lnh bash phc tp nh trn mt dng.
Nhng quan trng hn, n l kt thc lnh theo l thuyt POSIX.
K t ch gii, # , khin bash b qua mi k t t cho n ht dng. im khc nhau
gia cc k t trch dn mnh v trch dn yu, v , tng ng l: trch dn mnh bt
bash hiu tt c cc k t theo ngha en; trch dn yu ch bo h cho mt vi k t c
bit ca bash .
127
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 Chc nng
${var:- word} Nu bin tn ti v xc nh th tr v gi tr ca n, nu
khng th tr v word
${var:= 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
${var:+ word} Nu bin tn ti v xc nh th tr v word, cn khng
th tr v null
${var:?message} 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.
${var: offset[:length]} 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
128
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 Chc nng
${var#pattern} 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
129
${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 iu kin thc
str1 = str2 str1 bng str2
str1 != str2 str1 khc str2
-n str str c di ln hn 0 (khc null)
-z str str c di bng 0 (null)
Ton t snh chui ca bash
Cc ton t so snh s hc
kim tra iu kin thc
-eq bng
-ge ln hn hoc bng
-gt ln hn
-le nh hn hoc bng
-lt nh hn
-ne 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.
130
select Thi hnh mt hoc nhiu cu lnh da trn mt khong tu chn ca
ngi dng.
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
131
Nu cu lnh command1 chy thnh cng th shell s chy lnh command2 v nu
command1 khng chy thnh cng th command3 c chy.
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.
132
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).
Ton t iu kin true
-d file file tn ti v l mt th mc
-e file file tn ti
-f file file tn ti v l mt file bnh thng(khng l
mt th mc hay mt file c bit)
-r file file cho php c
-s file file tn ti v khc rng
-w file file cho php ghi
-x file file kh thi hoc nu file l mt th mc th
cho php tm kim trn file
-O file file ca ngi dng hin ti
-G file file thuc mt trong cc nhm ngi dng
hin ti l thnh vin
file1 -nt file2 file1 mi hn file2
file1 -ot 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
133
Chng trnh descpath.sh

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 ngha
! expression Logical NOT
expression1 -a expression2 Logical AND
expression1 -o expression2 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
134
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
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
ch ng ta ch n s khc bit v c php ca lnh for. ng trnh trn nh

#!/bin/bash
for (( i = 0 ; i <= 5; i++ ))
do
echo "Welcome $i times"
done
$ chmod +x for2
$ ./for2
Welcome 0 times
135
Welcome 1 times
Welcome 2 times
Welcome 3 times
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++ )) ### Outer for loop ###
do

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
136

7.2.2.3 Cc vng lp khng xc nh: while v until
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
Ch ng 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
137
n=$1
i=1
while [ $i -le 10 ]
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?

138
# clear the screen
clear

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

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 ch ng 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:
140
$ cat < $HOME/.bash_profile > out
Kt qu ca lnh ny vn nh th nhng n cho ta hiu thm v cch s dng nh
hng u vo u ra.
Ton t nh hng u ra, >, s ghi ln bt c file no ang tn ti. i khi iu
ny l khng mong mun, v th bash cung cp ton t ni thm d liu, >>, cho php ni
thm d liu vo cui file. Hay xem lnh thm b danh cdlpu vo cui ca file .bashrc ca
ti:
$echo alias cdlpu=cd $HOME/kwall/projects/lpu >> $HOME/.bashrc
Mt cch s dng nh hng u vo l u vo chun (bn phm). C php ca lnh
ny nh sau:
Command << label
Input
Label
C php ny ni ln rng command c cc input cho n khi n gp label. Di y
l v d v cch s dng cu trc ny:
#!/bin/bash
####################################

USER=anonymous
PASS=kwall@xmission.com

ftp -i -n << END
open ftp.caldera.com
user $USER $PASS
cd /pub
ls
close
END
7.2.4. Hin dng vn bn
Lnh echo hin ra dng vn bn c ghi ngay trong dng lnh c c php:
echo [ty chn] [xu k t]
vi cc ty chn nh sau:
-n : hin xu k t v du nhc trn cng mt dng.
-e : bt kh nng thng dch c cc k t iu khin.
-E : tt kh nng thng dch c cc k t iu khin.
--help : hin h tr v thot. Mt s bn Linux khng h tr tham s ny.
V d, dng lnh echo vi tham s -e
# echo -e th dng lnh echo \n
s thy hin ra chnh dng vn bn lnh:
th dng lnh echo
#
y k t iu khin \n l k t xung dng.
141
7.2.5. Lnh read c d liu cho bin ngi dng
Lnh read c dng read <tn bin>
V d chng trnh shell c tn thu1.arg c ni dung nh sau:
#!/bin/sh
# Chuong trinh hoi ten nguoi va hien lai
echo "Ten anh la gi?"
read name
echo "Xin chao, $name , anh go $# doi so"
echo "$*"
Sau , ta thc hin
$chmod u+x thu1.arg
v $thu1.arg Hoi ten nguoi va hien lai
s thy xut hin
Ten anh la gi? Tran Van An
Xin chao, Tran Van An, anh go 6 doi so
Hoi ten nguoi va hien lai
7.2.6. Lnh set
gn kt qu ra t lnh shell ra cc bin t ng, ta dng lnh set
Dng lnh set set `<lnh>`
Sau lnh ny, kt qu thc hin lnh khng hi ra l mn hnh m gn kt qu tng
ng cho cc bin t ng. Mt cch t ng cc t trong kt qu thc hin lnh s gn
tng ng cho cc bin t ng (t $1 tr i).
Xem xt mt v d sau y (chng trnh thu2.arg) c ni dung:
#!/bin/sh
# Hien thoi diem chay chuong trinh nay
set `date`
echo "Thoi gian: $4 $5"
echo "Thu: $1"
echo "Ngay $3 thang $2 nam $6"
Sau khi i mode ca File chng trnh ny v chy, chng ta nhn c:
Thoi gian: 7:20:15 EST
Thu: Tue
Ngay 20 thang Oct nam 1998
Nh vy,
$# = 6
$* = Tue Oct 20 7:20:15 EST 1998
$1 = Tue $2=Oct $3 = 20 $4 = 7:20:15
$5 = EST $6 = 1998
7.2.7. Tnh ton trn cc bin
Cc tnh ton trong shell c thc hin vi cc i s nguyn. Cc php ton gm c:
cng (+), tr (-), nhn (*), chia (/), mod (%).
Biu thc thc hin theo cc php ton nu.
Tnh ton trn shell c dng:
`expr <biu thc>`
142
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 # Chuyen vao thu muc can list
if test $? -ne 0 # Neu thu muc khong ton tai thi ra khoi CT
then
exit 1
fi

ls -lL |\
# Liet ke ca cac thong tin cua symbolic link
# Su dung sub-shell de tu giai phong bien
{
sum=0
# Lenh read x y de bo di dong 'total 1234..' cua lenh ls -lL
read x y ; while read mode link user group size month day hour name
do
if [ -d $name ]
then
echo $name $size \($mode\)
143
fi
done
}

7.3. Lp trnh C trn UNIX
7.3.1. Trnh bin dch gcc
H iu hnh UNIX lun km theo b dch ngn ng lp trnh C vi tn gi l cc (C
compiler). Trong Linux, b dch c tn l gcc (GNU C Compiler) vi ngn ng lp trnh
khng khc nhiu vi C chun. Ni dung chi tit v cc ngn ng lp trnh trn Linux thuc
phm vi ca cc ti liu khc.
gcc cho ngi lp trnh kim tra trnh bin dch. Qu trnh bin dch bao gm bn giai
on:
Tin x l
Bin dch
Tp hp
Lin kt
Ta c th dng qu trnh sau mt trong nhng giai on kim tra kt qu bin dch
ti giai on y. gcc cng c th chp nhn ngn ng khc ca C, nh ANSI C hay C
truyn thng. Nh ni trn, gcc thch hp bin dch C++ hay Objective-C. Ta c th
kim sot lng cng nh kiu thng tin cn debug, tt nhin l c th nhng trong qu
trnh nh phn ha kt qu v ging nh hu ht cc trnh bin dch, gcc cng thc hin ti
u ha m.
Trc khi bt u i su vo nghin cu gcc, ta xem mt v d sau:
#include<stdio.h>
int main (void)
{
fprintf( stdout, Hello, Linux programming world!\n);
return 0;
}
Mt chng trnh in hnh dng minh ho vic s dng gcc
bin dch v chy chng trnh ny hy g:
$ gcc hello.c o hello
$ ./hello
Hello, Linux programming world!
Dng lnh u tin ch cho gcc phi bin dch v lin kt file ngun hello.c, to
ra tp tin thc thi, bng cch ch nh s dng i s -o hello. Dng lnh th hai
thc hin chng trnh, v kt qu cho ra trn dng th 3.
C nhiu ch m ta khng nhn thy c, gcc trc khi chy hello.c thng qua
b tin x l ca cpp, m rng bt k mt macro no v chn thm vo ni dung
ca nhng file #include. Tip n, n bin dch m ngun tin x l sang m obj .
Cui cng, trnh lin kt, to ra m nh phn cho chng trnh hello.
144
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 d i.

Phn m rng Kiu
.c M ngun ngn ng C
.c, .cpp M ngun ngn ng C++
.i M ngun C tin x l
.ii M ngun C++ tin x l
.S, .s M ngun Hp ng
.o M i tng bin dch (obj)
.a, .so 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.
145
-DF00=BAR nh ngha macro tin x l t tn F00 vi mt gi tr
ca BAR trn dng lnh.
-IDIRNAME 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)
-LDIRNAME 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
-static Lin kt da trn nhng th vin tnh
-lF00 Lin kt da trn libF00
-g Bao gm chun g ri thng tin m nh phn
-ggdb Bao gm tt c thng tin m nh phn m ch c chng
trnh g ri GNU- gdb mi c th hiu c
-O Ti u ho m bin dch
-ON Ch nh mt mc ti u ho m N, 0<=N<=3.
-ANSI 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).
-pedantic Cho ra tt c nhng cnh bo quy nh bi chun
-pedantic-erors Thng bo ra tt c cc li quy nh bi chun
ANSI/ISO ca C.
-traditional H tr cho c php ngn ng C ca Kernighan v
Ritchie (ging nh c php nh ngha hm kiu c).
-w Chn tt c thng ip cnh bo.
-Wall Thng bo ra tt c nhng cnh bo hu ch thng
thng m gcc c th cung cp.
-werror Chuyn i tt c nhng cnh bo sang li m s lm
ngng tin trnh bin dch.
-MM Cho ra mt danh sch s ph thuc tng thch c to.
-v 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.
146
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
147
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 Ch gii
O_RDONLY
O_WRONLY
O_RDWR
O_CREAT
O_EXCL
O_NOCTTY

O_TRUNC
O_APPEND
O_NONBLOCK

O_NODELAY
O_SYNC

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()
148
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()
write() s dng ghi d liu vo file tng ng vi mt m t file. Li gi h thng
#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
149
#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 st_dev; / * thit b */
int_t st_ino ; /* inode */
mode_t st_mode; /* ch bo v */
nlink_t st_nlink; /* s lng cc lin kt cng */
uid_t st_uid; /* s hiu ca ngi ch */
gid_t st_gid; /* s hiu nhm ca ngi ch*/
dev_t st_rdev; /* kiu thit b */
off_t st_size;/* kch thc bytes */
c khi*/ unsigned long st_blksize; /* kch th
unsigned long st_blocks; /* S lng cc khi s dng*/
time_t st_atime; /* thi gian truy cp cui cng*/
time_t st_mtime; /* thi gian cp nht cui cng */
time_t st_ctime; /* thi gian thay i cui cng */
};
Hm fchown()
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
150
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);

151
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);
152
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 ng i 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.

153
/*
* 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;
}
154
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)
{
155
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
156
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 nh ng 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

157
7.3.4.3 S dng i tng dng chung theo cch ng
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.
158
Gii phng i tng chia s
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 ch
ng 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
c kt qu nh sau: Nu thnh cng th ta nhn
couldnt open foobar: No such file or directory

159
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 Miu t
-C| -demangle Chuyn tn k t vo tn mc ngi dng cho d c.
-s|-print-armap
Khi s dng cc file lu tr (phn m rng l .a), in ra cc
ch s ca module cha hm .
-u| -undefined-only
Ch a ra cc hm khng c nh ngha trong file ny, tc
l cc hm c nh ngha mt file khc.
- l | -line-numbers
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]
160
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 Cc miu t
-p
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.
-v
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.
161
TI LIU THAM KHO

162
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
File File
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 file Filename
Tn gi ca file (file thng, th mc, file c
bit ...) c dng xc nh file.
Th mc Directory
Ni cha mt danh sch cc file trong h thng
File, c Linux coi nh mt dng file c bit.
H thng file File system
H thng ton b cc file c trong h iu hnh
Linux (v UNIX ni chung).
Lnh Command
Linux cho php ngi s dng dng lnh trnh
by mt "thao tc" yu cu h thng thc hin.
Tin ch (cn
gi l lnh
thng trc)
Utility
Lnh c sn trong Linux (trong shell hoc c
t ti nhng th mc theo quy nh ca Linux).
Dng lnh Command line
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.
ng nhp Login
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 dng User
Ngi s dng Linux cho cng vic ca mnh.
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
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
H iu hnh Operating
System (OS)
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.
163
H iu hnh
a chng
trnh
Multiprogram-
ming OS
H iu hnh hot ng theo cch thc trong b
nh ng thi c nhiu chng trnh c "bnh
ng" trong phn phi ti nguyn (CPU, b nh).
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).
Nhn Kernel
B phn ct li nht ca Linux, thng trc
thc hin cc chc nng c bn ca h iu hnh
(cn c gi l li)
Qu trnh Process
Mt ln thc hin ca mt chng trnh (Cn
c gi l tin trnh). Mt s h iu hnh gi l
bi ton (task).
Chng trnh
gii thch lnh
Command
Comment
Program
(CCP)
Mt chng trnh thuc h iu hnh c chc
nng tip nhn, phn tch dng lnh ngi dng
lnh c thc hin. Trong Linux l shell, trong
MS-DOS l COMMAND.COM.
ng nhp Login
Th tc m mt ngi dng cn phi thc hin khi
bt u phin lm vic vi Linux. Th tc ny yu
cu ngi dng a vo tn k hiu v mt khu
c ng k trong h thng.
ng xut Logout 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
nhm
wildcards K hiu c dng xc nh mt nhm file (v
d *, ?, [] v [] vi -). Cn c gi l k hiu thay
th.
Ci t Linux Installation
Linux
Qu trnh to ra h iu hnh Linux ln my tnh
s dng


164
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.
165
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 MS-
DOS, 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.
.................
166
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
167
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.
168
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:
169
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.
170
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.
171
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.
172
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.
173
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
174
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.

175
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.
176
Ch chn-la chn (Insert Select mode): ch ny c khi to khi
chy ch la chn trong ch chn. Khi ch la chn kt thc, vim s
tr v ch chn.
Vic chuyn i gia cc ch trong vim c thc hin nh cc lnh (phm lnh
hoc xu lnh) ca vim v c tp hp trong bng di y. Trong bng ny, ct u tin
l ch ngun, hng u tin l ch ch, giao gia hng v ct cha cc phm lnh
chuyn ch (k hiu *1, *2, *3, *4, *5, *6 l cch vit tt danh sch lnh c gii thch
sau):

Ch cn chuyn ti
Ch hin
thi
Thng o
La
chn
Chn
Thay
th
Dng
lnh
Ex
Thng v, V,
^V
*4 *1 R :, /, ?, ! Q
o *2 ^G c, C -- : --
La chn *5 ^O, ^G *6 -- : --
Chn <Esc> -- -- <Insert> -- --
Thay th <Esc> -- -- <Insert> -- --
Dng lnh *3 -- -- :start -- --
Ex :vi -- -- -- -- --

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.
177
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:
tu-chn vim [ ] bt u son tho hay hiu chnh mt file
vim [tu-chn] <danh sch cc file> bt u son tho mt hoc nhiu file
vim - son tho mt file t thit b vo chun [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] t du nhc tr ti dng th n (ngm nh l dng cui)
+ <lnh> thc hin lnh sau khi np file
+/<mu> <file> t du nhc tr ti dng u tin c cha mu trong file
-o[n] m n ca s (ngm nh c mt ca s cho mt file: n=1)
--help 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
~
~
~
vd1 0,0-1 All
~
178
~
~
vd2 0,0-1 All
"vd2" [New File]
Sau y l mt s cc lnh hay dng:

CTRL-W chia ca s hin ti thnh hai phn
:split <file> chia ca s v son tho <file> trn mt phn chia ca ca s
:sf <file> chia ca s, tm file trn ng dn v son tho n
CTRL-W CTRL-^ chia ca s v edit alternate file
CTRL-W n to mt ca s trng mi (ging :new)
CTRL-W q dng vic son tho v ng ca s (ging :q)
CTRL-W o phng to ca s hin hnh trn ton mn hnh
CTRL-W j di chuyn tr son tho xung ca s di
CTRL-W k di chuyn tr son tho ln ca s trn
CTRL-W t di chuyn tr son tho ln nh ca s
CTRL-W b di chuyn tr son tho xung y ca s
CTRL-W p di chuyn tr son tho n ca s c kch hot lc trc
CTRL-W x di chuyn tr son tho n ca s tip theo
CTRL-W = to tt c cc ca s c chiu cao nh nhau
CTRL-W - gim chiu cao ca ca s hin thi
CTRL-W + tng chiu cao ca ca s hin thi
CTRL-W 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 [!] ghi file hin thi.
:[n,m] w <file> ghi ni dung ra <file>, tr khi file thc s tn ti
:[n,m] w! <file> ghi ni dung ra <file>, nu file tn ti th ghi ln
ni dung c
:[n,m] w[!] >> [<file>] chn thm vo <file>, nu khng c file, mc nh l file
hin thi
:[n,m] w !<lnh> thc hin <lnh> trn cc dng t dng th n n dng
th m nh thit b vo chun
:[n,m] up [thi gian] [!] ghi file hin thi nu n c sa i
:q [!] thot khi vim
:wq [!] [<file>] ghi ni dung <file> (mc nh l file hin thi) v thot
khi vim
:x [!] <file> ging :wq nhng ch ghi khi thc s c s thay i trong
ni dung file (ging ZZ)
:st [!] dng vim v khi to mt shell (ging CTRL-Z)
179
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 l di chuyn tr son tho v bn phi n k t
N h di chuyn tr son tho v bn tri n k t
n k di chuyn tr son tho ln n dng
n j di chuyn tr son tho xung n dng
0 di chuyn v u dng
^ di chuyn n t u tin ca dng hin ti
$ di chuyn n cui dng
<Enter> di chuyn n u dng tip theo
n - di chuyn n u dng trc dng hin ti n dng
n + di chuyn n u dng sau dng hin ti n dng
n _ di chuyn n u dng sau dng hin ti n-1 dng
G di chuyn n dng cui cng trong file
n G di chuyn n dng th n trong file (ging :n)
H di chuyn n dng u tin trn mn hnh
M di chuyn n dng gia mn hnh
n gg di chuyn n u dng th n (mc nh l dng u
tin)
n gk di chuyn ln n dng mn hnh
n gj 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 W di chuyn n t tip theo
N E di chuyn n cui ca t th n
N B di chuyn ngc li n t
N ge di chuyn ngc li n t v t du nhc tr ti ch ci cui t
N > di chuyn n n cu tip theo
N < di chuyn ngc li n cu
N | di chuyn n n on tip theo
N | di chuyn ngc li n on
N ]] di chuyn n n phn tip theo v t du nhc tr ti u phn
N [[ di chuyn ngc li n phn v t du nhc tr ti u phn
n ][ di chuyn n n phn tip theo v t du nhc tr ti cui phn
n [] di chuyn ngc li n phn v t du nhc tr ti cui phn
180
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 <CTRL-f> cun ln n mn hnh (mc nh l 1 mn hnh)
N <CTRL-b> cun xung n mn hnh (mc nh l 1 mn hnh)
N <CTRL-d> cun xung n dng (mc nh l 1/2 mn hnh)
N <CTRL-u> cun ln n dng (mc nh l 1/2 mn hnh)
N <CTRL-e> cun xung n dng (mc nh l 1 dng)
N <CTRL-y> cun ln n dng (mc nh l 1 dng)
z<Enter> v li ca s son tho, dng hin ti s l dng trn cng ca
ca s (ging zt)
z. v li ca s son tho, dng hin ti s l dng gia ca ca
s (ging zz)
z- v li ca s son tho, dng hin ti s l dng y ca ca
s (ging zb)
B.3. Cc thao tc trong vn bn
vim c rt nhiu cc lnh h tr thao tc son tho hay hiu chnh mt file. Phn di
y gii thiu chi tit v cc cch thm vn bn, hiu chnh vn bn hay xo mt vn
bn.
Khi son tho vn bn, nhiu dng c th c nhp bng cch s dng phm Enter.
Nu c mt li cn phi sa, c th s dng cc phm mi tn di chuyn tr son tho
trong vn bn v s dng cc phm Backspace hoc Delete hiu chnh.
B.3.1. Cc lnh chn vn bn trong vim

A chn vn bn vo v tr du nhc tr hin thi (n ln)
N A chn vn bn vo cui mt dng (n ln)
n i chn vn bn vo bn tri du nhc tr (n ln)
n
I chn vn bn vo bn tri k t u tin khc trng trn dng hin ti
(n ln)
n gI chn vn bn vo ct u tin (n ln)
n o chn n dng trng vo di dng hin ti
n O chn n dng trng vo trn dng hin ti
:r file chn vo v tr con tr ni dung ca file
:r! lnh 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 x xo n k t bn phi du nhc tr
N X xo n k t bn tri du nhc tr
N dd xo n dng k t dng hin thi
181
D hoc d$ xo t v tr hin thi n ht dng
N dw xo n t k t v tr hin thi
dG xo t v tr hin thi n cui file
d1G xo ngc t v tr hin thi n u file
dn$ xo t dng hin thi n ht dng th n
N,m d xo t dng th n n dng th m
N cc xo n dng, k c dng hin thi ri khi to ch chn (Insert)
N C xo n dng k t v tr hin thi ri khi to ch chn (Insert)
cn$ xo t dng hin thi n ht dng th n ri khi to ch chn
(Insert)
N s xo n k t v chy ch chn (Insert)
N S 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 khi phc li vn bn nh trc khi thc hin n ln thay i
U khi phc li hon ton dng vn bn hin thi nh trc khi thc
hin bt k s hiu chnh no trn dng
: e! hiu chnh li. Lu tr trng thi ca ln ghi trc
N CTRL-R 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> thay th n k t bn phi du tr bi <k
t>
R ghi vn bn bi mt vn bn mi (hay
chuyn sang ch thay th - Replace trong
Vim)
n ~ chuyn n ch hoa thnh ch thng v
ngc li
n gUU chuyn cc k t trn n dng, k t dng
hin ti, t ch thng thnh ch hoa
n guu chuyn cc k t trn n dng, k t dng
hin ti, t ch hoa thnh ch thng
n CTRL-A cng thm n n v vo s hin c
n CTRL-X bt i n n v t s hin c
n > [> ...] 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)
n < [< ...] 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
182
hin ti, x l s du ' < '
n J kt hp n dng, k t dng hin ti, thnh
mt dng
n gJ ging nh J nhng khng chn cc khong
trng
:[n,m] ce [width] cn gia t dng th n n dng th m vi
rng l width, nu khng c width, mc
nh rng l 80
:[n,m] ri [width] cn phi t dng th n n dng th m vi
rng l width, nu khng c width, mc
nh rng l 80
:[n,m] le [width] cn tri t dng th n n dng th m vi
rng l width, nu khng c width, mc
nh rng l 80
:[n,m]s/<mu1>/<mu2>/[g][c] 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
:[n,m]s[g][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 yw sao chp n k t
n Y sao chp n dng vn bn, k t dng hin ti, vo b nh m (ging
yy)
: [n] co [m] sao chp dng th n vo di dng th m
* Dn vn bn:

n P dn on vn bn c sao chp vo bn phi v tr hin thi (n ln)
n P dn n on vn bn c sao chp vo bn tri v tr hin thi (n ln)
n Gp ging nh p, nhng a du nhc tr v sau on vn bn mi dn
n gP ging nh P, nhng a du nhc tr v sau on vn bn mi dn
183
: [n] put m dn m dng vn bn vo sau dng th n (nu khng c n ngm nh
l dng hin ti)
: [n] put! m 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> tm xu t dng hin ti n dng cui trong file
? <xu> tm xu t dng hin ti ngc ln dng u trong file
N tm tip xu c a ra trong lnh / hoc ? (t trn xung di)
N 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
184
\ > thay th cho ch cui ca 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
\p thay th cho mt k t c th in c
\s thay th cho mt k t trng
\e thay th cho phm Esc
\t 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| nh du vn bn ti v tr hin thi vi du l cc ch ci |a-zA-Z|
'|a-z| dch chuyn con tr ti v tr c nh du bi cc ch ci |a-z| trong
phm Vim file hin thi
'|A-Z| dch chuyn con tr ti v tr c nh du bi cc ch ci |A-Z| trong
mt file bt k
:marks hin th cc nh du hin thi
B.3.8. Cc phm s dng trong ch chn

Chuyn i ch
<Insert> chuyn vo ch chn hoc ch thay th
<Esc> thot khi ch chn, tr li ch thng thng
CTRL-C ging nh <Esc>, nhng ???
CTRL-O <lnh> 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
185
CTRL-R <thanh ghi> chn ni dung ca mt thanh ghi
CTRL-N chn t tip theo vo trc du nhc tr
CTRL-P chn t trc vo trc du nhc tr
CTRL-X ... hon thnh t trc du nhc tr theo nhiu cch khc nhau
<Backspace>, CTRL-H xo mt k t trc du nhc tr
<Del> xo mt k t sau du nhc tr
CTRL-W xo t trc du nhc tr
CTRL-U xo tt c cc k t trn dng hin ti
CTRL-T chn mt khong trng trc dng hin thi
CTRL-D xo mt khong trng trc dng hin thi
B.3.9. Mt s lnh trong ch o

v 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
n aw chn nh du n t
n as chn nh du n cu
n ap chn nh du n on
n ab chn nh du n khi
B.3.10. Cc lnh lp

n . lp li n ln thay i cui
q |a-z| ghi cc k t c nhp vo trong thanh ghi |a-z|
n @|a-z| thc hin ni dung c trong thanh ghi |a-z| n ln
n @@ lp li n ln s thc hin ca lnh @|a-z| trc
:@|a-z| thc hin ni dung ca thanh ghi |a-z| nh mt lnh Ex
:@@ lp li s thc hin ca lnh :@|a-z| trc
:[n,m]g/mu/[lnh] 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
n gs tip tc dng trong n giy
B.4. Cc lnh khc
B.4.1. Cch thc hin cc lnh bn trong Vim

:sh khi to mt shell
186
:! <lnh> thc hin mt lnh shell trong Vim
:!! lp li lnh ':! <lnh>' lc trc
K m trang man ca lnh trng vi ni dung t ti du nhc tr
q 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 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)
n CTRL-G 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)
g CTRL-G a ra v tr du nhc tr theo dng: ct/tng s ct,
dng/tng s dng v k t/tng s k t
:f <tn mi> i tn file hin thi thnh tn mi
:ls lit k tt c cc file hin thi ang c s dng trong Vim
(ging :buffer v :files)
:cd a thm ng dn vo tn file
:w <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
:e[n, /mu] <file> son tho file, t dng th n hoc t dng c cha mu, tr
khi c s thay i thc s trong file
:e[n, /mu]! <file> lun son tho file, t dng th n hoc t dng c cha mu,
b qua mi s thay i trong file
:e np li file hin thi, tr khi c s thay i thc s trong file
:e! lun np li file hin thi, b qua mi s thay i thc s
trong file
:fin [!] <file> tm file trn ng dn v son tho
:e #n son tho file th n (ging n CTRL-^)
Cc lnh khc
:pw a ra tn th mc hin thi
:conf <lnh trong vim
>
thc hin lnh trong vim v a ra hp thoi yu cu xc
nhn khi c thao tc i hi s xc nhn

187
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 Khng s dng cc k t ho v cc ng thng khung.
-b Khi ng trong ch mn hnh en trng.
-c Khi ng trong ch mn hnh mu.
-d Khng h tr chut
-P 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.
-v file S dng chc nng View ca MC xem ni dung ca file c ch ra.
-V 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
188
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 ngha l gi phm CTRL trong khi g phm <char>. V d
C -f c ngha l gi CTRL v nhn <f>.
C-<chr1><char2> C ngha l gi phm CTRL trong khi g phm <char1> sau
nh tt c ra v g phm <char2>.
M-<chr> 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>.
S-<chr> C ngha l gi phm SHIFT trong khi g phm <char>.

Sau y l chc nng mt s phm thng dng.
Cc phm thc hin lnh:

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

M-Enter hay C-
Enter
chp tn file v tr thanh sng chn xung dng lnh
M-Tab
hon thnh tn file, lnh, bin, tn ngi dng hoc tn my
gip
C-x t, C-x C-t
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
C-x p, C-x C-p
a tn ng dn hin thi trn panel chn (C-x p) hoc trn
panel kia (C-x C-p) xung dng lnh
M-p, M-n
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
C-a a du nhc tr v u dng
C-e a du nhc tr v cui dng
C-b, Left a du nhc tr di chuyn sang tri mt k t
C-f, Right a du nhc tr di chuyn sang phi mt k t
M-f a du nhc tr n t tip theo
M-b a du nhc tr ngc li mt t
C-h, Space xo k t trc
C-d, Delete xo k t ti v tr du nhc tr
C-@ nh du ct
C-k xo cc k t t v tr du nhc tr n cui dng
M-C-h, M-
Backspace
xo ngc li mt t

Cc phm thao tc trn panel:

Up,Down, PgUp,
PgDown, Home, End
s dng cc phm ny di chuyn trong mt panel
b, C-b, C-h,
Backspace, Delete
di chuyn ngc li mt trang mn hnh
Space di chuyn tip mt trang mn hnh
u, d di chuyn ln/ xung 1/2 trang mn hnh
g, G di chuyn n im u hoc cui ca mt mn hnh
Tab, C-i
hon i panel hin hnh. Thanh sng chn s chuyn t panel c
sang panel hin hnh
Insert, C-t 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
190

C-s, M-s
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
M-t chuyn i kiu hin th thng tin v file hoc th mc
C-\ 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
M-o
mt panel s hin th ni dung th mc hin thi hoc th mc cha
ca th mc hin thi ca panel kia
M-y di chuyn n th mc lc trc c s dng
M-u di chuyn n th mc tip theo c s dng
C.6. Thc n thanh ngang (menu bar)
Thc n thanh ngang trong Midnight Commander c hin th dng u tin trn
mn hnh. Mi khi nhn <F9> hoc kch chut ti dng du tin trn mn hnh thc n
ngang s c kch hot. Thc n ngang ca MC c nm mc Left, File, Command,
Option v Right.
Thc n Left v Right gip ta thit lp cng nh thay i kiu hin th ca hai panel
left v right. Cc thc n mc con ca chng gm:

Listing Mode ...
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;
Quick view C-x q xem nhanh ni dung ca mt file
Info C-x i xem cc thng tin v mt th mc hoc file
Tree hin th di dng cy th mc
Sort order...
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
Filter ... thc hin vic lc file theo tn
Network link ... thc hin lin kt n mt my tnh
FTP link ... thc hin vic ly cc file trn cc my t xa
191
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 F2 thc n dnh cho ngi dng
View F3 xem ni dung ca file hin thi
View file ... m v xem ni dung ca mt file bt k
Filtered view M-!
thc hin mt lnh lc vi tham s l tn file v hin th
ni dung ca file
Edit F4
son tho file hin thi vi trnh son tho mc nh trn
h thng
Copy F5 thc hin copy
cHmod C-x c
thay i quyn truy nhp i vi mt th mc hay mt
file
Link C-x l to mt lin kt cng n file hin thi
Symlink C-x s to mt lin kt tng trng n file hin thi
edit sYimlink C-x C-s hiu chnh li mt lin kt tng trng
chOwn C-x o thay i quyn s hu i vi th mc hay file
Advanced chown
thay i quyn s hu cng nh quyn truy nhp ca file
hay th mc
Rename/Move F6 thc hin vic i tn hay di chuyn i vi mt file
Mkdir F7 to mt th mc
Delete F8 xo mt hoc nhiu file
Quick cd M-c chuyn nhanh n mt th mc
select Group M-+ thc hin vic chn mt nhm cc file
Unselect group M- ngc vi lnh trn
reverse selecTion M-* chn cc file trong th mc hin thi
Exit F10 thot khi MC

Thc n Command cng cha mt danh sch cc lnh.

Directory tree hin th th mc di dng cy th mc
Find file M-? tm mt file
Swap panels C-u thc hin tro i ni dung gia hai panel hin th
Switch panels on/of C-o
a ra lnh shell c thc hin ln cui (ch s dng
trn xterm, trn console SCO v Linux)
Compare directories C-x d
thc hin so snh th mc hin ti trn panel chn vi
cc th mc khc
Command history a ra danh sch cc lnh thc hin
Directory hotlist C-\ thay i th mc hin thi
External panelize C-x !
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
192
s thy kt qu tht tuyt vi)
Show directory size hin th kch thc ca th mc
Command history hin th danh sch cc lnh thc hin
Directory hotlist C-\ chuyn nhanh n mt th mc
Background C-x j thc hin mt s lnh lin quan n cc qu trnh nn
Extension file edit
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 ... thit lp cc tu chn cu hnh cho MC
Lay-out ... xc lp cch hin th ca MC trn mn hnh
Confirmation ... thit lp cc hp thoi xc nhn khi thc hin mt thao tc no
Display bits ... thit lp cch hin th ca cc k t
Learn keys ... xc nh cc phm khng c kch hot
Virtual FS ... thit lp h thng file o
Save setup 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 hin th trang tr gip
F2 a ra thc n ngi dng
F3 xem ni dung mt file
F4 son tho ni dung mt file
F5 thc hin sao chp file
F6 thc hin di chuyn hoc i tn file
F7 to th mc mi
F8 xo th mc hoc file
F9 a tr son tho ln thanh thc n nm ngang
F10 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:
193
* Thanh thc n
Thc n File:
cc thao tc lin quan n file

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

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

Search .. F7 thc hin tm kim mt xu vn bn
Search again F17 tm kim tip
Replace ... F4 tm v thay th xu vn bn
Thc n Command:
Cc lnh c th c thc hin trong khi son tho

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

General ... thit lp cc tu chn cho b son tho
Save mode ... ghi li mi s thit lp c thay i
* Cc phm chc nng

F1 hin th trang tr gip
F2 ghi ni dung file
F3 thc hin vic nh du on vn bn
F4 tm v thay th xu vn bn
F5 thc hin vic sao chp
F6 di chuyn file
F7 tm kim xu vn bn
F8 xo on vn bn c nh du
F9 hin th thanh thc n ngang
F10 thot khi b son tho

195
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 C th thc hin c
File Server C
Printer Server C
Primary Domain Controller C (Samba 2.1 hay mun hn)
Backup Domain Controller Khng
Window 95/98 Authentication C
Local Master Browser C
Local Backup Browser Khng
Domain Master Browser C
Primary WINS Server C
Secondary WINS Server Khng
196
D.2 Cc thnh phn ca Samba
Samba thc cht cha mt s chng trnh phc v cho nhng mc ch khc nhau nh-
ng 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 samba-
common-xxx.rpm

Nu ta khng nhn li thng bo li no c th qu trnh ci t hon tt.
197
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
198
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 nh ngha
Cc bin ca my client
%a Kin trc ca cc my client(v d, Samba, wfwg, winNT, win95,
hoc UNKNOWN).
%I a ch IP ca client(v d, 192.168.220.100).
%m Tn NetBIOS ca client.
%M Tn DNS ca client.
Cc bin v ngi dng
%g Nhm chnh ca %u
%G Nhm chnh ca %U
%u Th mc home hin thi ca %u.
%U Tn ngi dng c yu cu trn my client
Cc bin v ti nguyn c chia s
%p ng dn cho automounter ti th mc gc ca ti nguyn c
chia s, nu th mc khc vi %P
%P Th mc gc hin thi ca ti nguyn c chia s.
%S Tn hin thi ca ti nguyn c chia s.
Cc bin ca server
%d nh danh tin trnh (PID) server hin thi.
%h Tn host DNS ca server Samba.
%L Tn host NetBIOS ca server Samba
%N Th mc home ca server Samba, ly t file nh x (map) ca
automount.
%v Phin bn Samba.
Cc bin khc
%R Mc ca giao thc SMB c tho thun thit lp.
%T 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
199
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
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:
200
# 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 Mc nh Phm vi

Path
(directory)
String
(ng dn
n th
mc)
t th mc UNIX dng
cho chia s a cng hoc
cho vic xp hng ch bi
my in c chia s.
/tmp Share

Guest ok
(public)
Nh phn
(yes/no)
Nu t l yes, s khng
dn kim tra xc nhn
ngi dng truy cp ti
nguyn c chia s ny.
no
Share

Comment
String (xu
k t)
t ch thch s xut hin
cng ti nguyn c chia
s.
Khng c Share

volume

String
t tn cho a, theo
dng ca DOS.
Tn ca ti
nguyn
c chia
s
Share
Read only
Nh phn
(yes/no)
Nu l yes, cho php truy
cp ch c ti ti nguyn
c chia s.
yes
Share
Writeable
(write ok)
nh phn
(yes/no)
Nu l no, cho php truy
cp ch c ti ti nguyn
c chia s.
no

Share
Cc tu chn c bn chia s a cng
Cc tu chn v mng ca Samba

Tu chn Thng s Chc nng Mc nh Phm vi
hosts
allow
(allow
hosts)
String (danh
sch tn my)
Xc nh cc my c th
kt ni vi Samba.
Khng c Share
Hosts deny
(deny
hosts)
String (danh
sch tn my)
Xc nh cc my khng
th kt ni vi Samba. Khng c Share
Bind
interfaces
only
Nh phn
(yes/no)
Nu t l yes, Samba s
ch lin kt ti cc giao
din xc nh bi tu chn
interfaces.
no Global
socket String (a ch t a ch IP nghe, Khng c Global
201
address IP) dng cho trng hp c
nhiu giao thc o trn
servers.
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
202
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 (th-
ng 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 8-
vi 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.
203
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
204
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.
205
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
206
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]
207
smb: \>
smb: \> ls
. D 0 Tue Sep 11 12:03:53 2001
.. D 0 Tue Sep 11 12:03:53 2001
ee120-ta D 0 Wed Aug 29 09:37:14 2001
fa01 D 0 Fri Sep 21 09:47:34 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.
208

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

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:


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

You might also like