You are on page 1of 93

B GIAO THNG VN TI

TRNG I HC HNG HI
B MN: K THUT MY TNH
KHOA: CNG NGH THNG TIN

BI GING
H IU HNH M NGUN M

TN HC PHN
: H IU HNH M NGUN M
M HC PHN
: 17308
TRNH O TO : I HC CHNH QUY
DNG CHO SV NGNH : CNG NGH THNG TIN

HI PHNG - 2010

MC LC
Chng 1. GII THIU CHUNG V LINUX ................................................................................ 6
1.1. Gii thiu chung .................................................................................................................... 6
1.1.1. Tng quan v Linux ........................................................................................................ 6
1.1.2. Vn bn quyn ............................................................................................................ 6
1.1.3. Cc thnh phn tch hp H iu hnh Linux ................................................................. 7
1.1.4. Mt s c im chnh ca Linux ................................................................................... 7
1.2. Cc thnh phn c bn ca Linux .......................................................................................... 8
1.2.1. Nhn h thng (kernel) ................................................................................................... 8
1.2.2. H v (shell) .................................................................................................................... 9
1.3. S dng lnh trong Linux ...................................................................................................... 9
1.3.1. Dng tng qut ca lnh Linux ..................................................................................... 10
1.3.2. Cc k hiu i din ...................................................................................................... 11
1.3.3. Tr gip lnh ................................................................................................................. 11
Chng 2. THAO TC VI H THNG..................................................................................... 12
2.1. Tin trnh khi ng Linux .................................................................................................. 12
2.2. Th tc ng nhp v cc lnh thot khi h thng ............................................................ 12
2.2.1. ng nhp ..................................................................................................................... 12
2.2.2. Ra khi h thng ........................................................................................................... 12
2.2.3. Khi ng li h thng .................................................................................................. 13
2.2.4. Khi ng vo ch ho ....................................................................................... 13
2.3. Mt s lin quan n h thng ............................................................................................. 15
2.3.1. Lnh thay i mt khu ................................................................................................. 15
2.3.2. Lnh xem, thit lp ngy, gi........................................................................................ 15
2.3.3. Lnh kim tra nhng ai ang s sng h thng ............................................................ 15
2.3.4. Thay i ni dung du nhc shell ................................................................................. 15
2.3.5. Lnh gi ngn ng tnh ton s hc .............................................................................. 16
Chng 3. H THNG FILE ........................................................................................................ 17
3.1 Tng quan v h thng file ................................................................................................... 17
3.1.1. Mt s khi nim........................................................................................................... 17
3.1.2. S b kin trc ni ti ca h thng file ....................................................................... 18
3.1.3. H tr nhiu h thng File ............................................................................................ 20
3.1.4. Lin kt tng trng (lnh ln) ....................................................................................... 21
3.2 Quyn truy nhp th mc v file .......................................................................................... 22
3.2.1 Quyn truy nhp ............................................................................................................. 22
3.2.2. Cc lnh c bn ............................................................................................................. 23
3.3 Thao tc vi th mc ............................................................................................................ 25
3.3.1 Mt s th mc c bit ................................................................................................. 25
3.3.2 Cc lnh c bn v th mc ........................................................................................... 26
3.4. Cc lnh lm vic vi file .................................................................................................... 28
3.4.1 Cc kiu file c trong Linux .......................................................................................... 28
3.4.2. Cc lnh to file ............................................................................................................ 29
-1-

3.4.3 Cc lnh thao tc trn file .............................................................................................. 30


3.4.4 Cc lnh thao tc theo ni dung file ............................................................................... 32
3.4.5 Cc lnh tm file ............................................................................................................. 35
3.5 Nn v sao lu cc file .......................................................................................................... 37
3.5.1 Sao lu cc file (lnh tar) ............................................................................................... 37
3.5.2 Nn d liu ..................................................................................................................... 38
CHNG 4. QUN TR H THNG V NGI DNG ........................................................ 41
4.1. Qun tr ngi dng ............................................................................................................. 41
4.1.1. Ti khon ngi dng ................................................................................................... 41
4.1.2. Cc lnh c bn qun l ngi dng ............................................................................. 41
4.2. Cc lnh c bn lin quan n nhm ngi dng................................................................ 44
4.2.1. Nhm ngi dng v file /etc/group ............................................................................. 45
4.2.2. Cc lnh c bn khc c lin quan n ngi dng ...................................................... 46
4.3. Qun tr h thng ................................................................................................................. 47
4.3.1. Qun l tin trnh .......................................................................................................... 47
4.3.2 Qun tr phn mm ......................................................................................................... 51
4.3.3. Qun tr h thng Linux ................................................................................................ 51
Chng 5. TRUYN THNG V MNG UNIX-LINUX .......................................................... 53
5.1. Lnh truyn thng ................................................................................................................ 53
5.1.1. Lnh write ..................................................................................................................... 53
5.1.2. Lnh mail ...................................................................................................................... 53
5.1.3. Lnh talk ....................................................................................................................... 54
5.2 Cu hnh Card giao tip mng .............................................................................................. 54
5.3. Cc dch v mng ................................................................................................................ 55
5.3.1 H thng tin mng NIS .................................................................................................. 55
5.3.2. Ci t v cu hnh cho my ch NIS ........................................................................... 56
5.3.3. Ci t cc my trm NIS ............................................................................................. 56
5.3.4. La chn cc file map ................................................................................................... 57
5.3.5. S dng cc file map passwd v group ......................................................................... 58
5.4 H thng file trn mng ........................................................................................................ 59
5.4.1 Ci t NFS .................................................................................................................... 59
5.4.2 Khi ng v dng NFS ................................................................................................ 59
5.4.3 Cu hnh NFS server v Client ...................................................................................... 60
5.4.4 S dng mount ............................................................................................................... 60
5.4.5 Unmount......................................................................................................................... 61
5.4.6 Mount t ng qua tp cu hnh .................................................................................... 61
Chng 6. LP TRNH SHELL V LP TRNH C TRN LINUX ........................................... 62
6.1. Cch thc pipes v cc yu t c bn lp trnh trn shell .................................................... 62
6.1.1. Cch thc pipes ............................................................................................................. 62
6.1.2. Cc yu t c bn lp trnh trong shell ..................................................................... 62
6.2. Mt s lnh lp trnh trn shell ............................................................................................ 65
6.2.1. S dng cc ton t bash .............................................................................................. 65
6.2.2. iu khin lung ........................................................................................................... 67
-2-

6.2.3 Cc hm shell ................................................................................................................. 75


6.2.4. Cc ton t nh hng vo ra ...................................................................................... 75
6.2.5. Hin dng vn bn ........................................................................................................ 76
6.2.5. Lnh read c d liu cho bin ngi dng.................................................................. 76
6.2.6. Lnh set ......................................................................................................................... 77
6.2.7. Tnh ton trn cc bin .................................................................................................. 77
6.2.8. Chng trnh v d ........................................................................................................ 77
6.3. Lp trnh C trn UNIX ......................................................................................................... 78
6.3.1. Trnh bin dch gcc ....................................................................................................... 78
6.3.2. Cng c GNU make ...................................................................................................... 80
6.3.3. Lm vic vi file ........................................................................................................... 81
6.3.4. Th vin lin kt ........................................................................................................... 83
6.3.5 Cc cng c cho th vin ............................................................................................... 89

-3-

YU CU V NI DUNG CHI TIT


Tn hc phn: H iu hnh m ngun m
B mn ph trch ging dy: K thut my tnh
M hc phn: 17303
TS tit
60

L thuyt
30

Thc hnh/Xemina
30

T hc
0

Loi hc phn: 2
Khoa ph trch: CNTT
Tng s TC: 3
Bi tp ln
0

n mn hc
0

iu kin tin quyt:


Sinh vin phi hc xong cc hc phn sau mi c ng k hc phn ny:
Kin trc my tnh, Nguyn l h iu hnh
Mc tiu ca hc phn:
- Nm bt c v h iu hnh m ngun m.
Ni dung ch yu
- Cc kin thc c bn v h iu hnh Linux.
Ni dung chi tit ca hc phn:

TN CHNG MC
Chng 1: Gii thiu Unix Linux
1.1. Gii thiu chung
1.2. Cc thnh phn c bn ca Linux
1.3. S dng lnh trong Linux
Chng 2. Thao tc vi h thng
2.1. Tin trnh khi ng Linux
2.2. Th tc ng nhp v cc lnh thot khi h thng
2.3. Mt s lin quan n h thng
Chng 3. Qun tr h thng v ngi dng
3.1 Qun l ngi dng
3.2 Qun l nhm cc vn lin quan
3.3 Qun tr h thng
Chng 4. H thng file
4.1. Tng quan v h thng file
4.2. Quyn truy nhp th mc v file
4.3. Thao tc vi th mc
4.4. Cc lnh lm vic vi file
4.5 Nn v sao lu cc file
Chng 5. Truyn thng v mng

PHN PHI S TIT


TS
LT
BT
TH
2
2
0,5
0,5
1
10
3
6
0.5
1
1
8
4
4
1
1
2
12
7
4
0,5
0,5
1
1

KT

1
8

-4-

5.1. Lnh truyn thng


5.2 Cu hnh Card giao tip mng
5.3. Cc dch v mng
5.4 H thng file trn mng
Chng 6: Lp trnh shell v lp trnh C trn Linux
6.1. Cch thc pipes v cc yu t c bn lp trnh trn
shell
6.2. Mt s lnh lp trnh trn shell
6.3. Lp trnh C trn Linux

20

1
1
1
1
7
2
2
1

12

Nhim v ca sinh vin :


Tham d cc bui thuyt trnh ca gio vin, t hc, t lm bi tp do gio vin giao,
tham d cc bui thc hnh, cc bi kim tra nh k v cui k, hon thnh bi tp ln theo
yu cu.
Ti liu hc tp :
- Richard Petersen - Linux: The Complete Reference, Sixth Edition Nh xut bn
McGraw-Hill Osborne Media ,2007.
- Michael Rash - Linux Firewalls: Attack Detection and Response with iptables, psad,
and fwsnort Nh xut bn No Starch Press ,2007
- Christopher Negus - Linux Bible Nh xut bn Wiley, 2007
- Andrew Hudson v Paul Hudson Fedora 7 UNLEASHED, 2007
Hnh thc v tiu chun nh gi sinh vin:
- nh gi da trn tnh hnh tham d bui hc trn lp, cc bui thc hnh, im
kim tra thng xuyn v im kt thc hc phn.
- Hnh thc thi cui k : thi vit.
Thang im: Thang im ch A, B, C, D, F
im nh gi hc phn Z = 0.3X + 0.7Y.
Bi ging ny l ti liu chnh thc v thng nht ca B mn K thut my tnh, Khoa
Cng ngh Thng tin v c dng ging dy cho sinh vin.
Ngy ph duyt: 15 / 6 / 2010
Trng B mn: ThS. Ng Quc Vinh

-5-

Chng 1. GII THIU CHUNG V LINUX


1.1. Gii thiu chung
1.1.1. Tng quan 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 tin trnh pht trin
Linux v v vy Linux ngy cng p ng nhu cu ca ngi dng.
Nm 1991, Linus Torvald vit thm phin bn nhn v0.01 (kernel) u tin ca Linux
a ln cc BBS, nhm ngi dng mi ngi cng s dng v pht trin.
Nm 1994, h iu hnh Linux phin bn 1.0 c chnh thc pht hnh v ngy cng
nhn c s quan tm ca ngi dng.
Nm 1995, nhn 1.2 c ph bin. Phin bn ny h tr mt phm vi rng v
phong ph phn cng, bao gm c kin trc tuyn phn cng PCI mi
Nm 1996, nhn Linux 2.0 c ph bin. Phn bn ny 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.
Nm 1999, phin bn nhn v2.2 mang nhiu c tnh u vit v gip cho Linux bt u
tr thnh i th cnh tranh ng k ca MS Windows trn mi trng server.
Nm 2000 phin bn nhn v2.4 h tr nhiu thit b mi (a x l ti 32 chip, USB,
RAM trn 2GB...) bt u t chn vo th trng my ch cao cp.
Cc phin bn ca Linux c xc nh bi h thng ch s theo mt s mc (hai hoc
ba mc). Trong quy c rng vi cc ch s t mc th hai tr i, nu l s chn th
dng nhn kh n nh v tng i hon thin, cn nu l s l th dng nhn vn
ang c pht trin tip.
1.1.2. Vn bn quyn
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
-6-

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.
1.1.3. 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
BSDca 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
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 khc phc c s khc bit rt ln gia cc thnh
phn h thng.
1.1.4. 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 tin 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.
-7-

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.
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.
1.2. Cc thnh phn c bn 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 tin 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. Nhn h thng (kernel)
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 tin
trnh ngi dng). Nhn chnh l cu ni gia chng trnh ng dng vi phn cng. Ngi
dng s dng bn phm g ni dung yu cu ca mnh v yu cu c nhn gi ti shell:
Shell phn tch lnh v gi cc chng trnh tng ng vi lnh thc hin.
Mt trong nhng chc nng quan trng nht ca nhn l gii quyt bi ton lp lch, tc
l h thng cn phn chia CPU cho nhiu tin trnh hin thi cng tn ti. i vi Linux, s
lng tin trnh c th ln ti con s hng nghn. Vi s lng tin 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.
-8-

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. H v (shell)
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 tin trnh mi (khi to tin trnh) v sau , shell ch i tin 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 Bourneshell). 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.
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. 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.
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.
-9-

1.3.1. Dng tng qut ca lnh Linux


C php lnh: # <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 gi 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 "--". Mt lnh c th c mt s hoc rt nhiu tham s kha.
V d, khi ngi dng g lnh xem thng tin v cc file:
# ls -l
Trong lnh ny:
ls : l tn lnh thc hin vic a danh sch cc tn file/ th mc con trong mt
th mc,
-l : l tham s kha, cho bit yu cu xem y thng tin v cc i tng hin
ra. Ch , trong tham s kha ch ci (ch "l") phi i ngay sau du tr "-".
Ch :
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:
o Cc tn lnh l ch thng,
o Mt s tham s khi biu din bi ch thng hoc ch hoa s c ngha
hon ton khc nhau).
o Tn cc bin mi trng cng thng dng ch hoa.
Linux phn bit siu ngi dng (superuser hoc root) vi ngi dng thng
thng. Trong tp hp lnh ca Linux, c mt s lnh cng nh mt s tham s
kha m ch siu ngi dng mi c php s 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 "|".
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.
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 vdu
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.

- 10 -

1.3.2. Cc k hiu i din


Khi chng ta s dng cc cu lnh v file v th mc, chng ta c th s dng cc k t
c bit c gi l cc k t i din xc nh tn file, tn th mc.:
K t
ngha
*
Tng ng vi th t bt k ca mt hay nhiu k t
?
Tng ng vi mt k t bt k
[]
Tng ng vi mt trong nhng k t trong ngoc hoc gii hn
V d:
Jo*
: Cc file bt u vi Jo
Jo*y
: Cc file bt u vi Jo v kt thc vi y
Ut*l*s.c
: Cc file bt u vi Ut, cha mt k t l v kt thc vi s.c
?.h
: Cc file bt u vi mt k t n, theo sau bi .h
Doc[0-9].txt : Cc file c tn Doc0.txt, Doc1.txt .Doc9.txt
Doc0[A-Z].txt : Cc file c tn Doc0A.txt, Doc0B.txt Doc0Z.txt
Cc k hiu lin quan n c php cu lnh c s dng bi phn ln cc cu lnh.
Chng cung cp mt cch thun tin v ng nht xc nh cc mu ph hp. Chng tng
t vi cc k t i din, nhng chng mnh hn rt nhiu. Chng cung cp mt phm vi
rng cc mu la chn.
K t
ngha
.
Tng ng vi mt k t n bt k ngoi tr dng mi
*
Tng ng vi khng hoc nhiu hn cc k t ng trc
^
Tng ng vi bt u ca mt dng
$
Tng ng vi kt thc mt dng
\<
Tng ng vi bt u mt t
\>
Tng ng vi kt thc mt t
[]
Tng ng vi mt trong cc k t bn trong hoc mt dy cc
k t
[^]
Tng ng vi cc k t bt k khng nm trong ngoc
\
Ly k hiu theo sau du gch ngc
1.3.3. Tr gip lnh
Do 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. tr
gip cch s dng cc cu lnh, Linux cho php ngi dng s dng cch thc gi trang Man
c c cc thng tin y gii thiu ni dung cc lnh.
C php lnh: # man <tn-lnh>
CU HI V BI TP
1. Tm hiu v cc phin bn pht trin ca Linux.
2. Trnh by nguyn tc thc hin lnh trn Linux
3. Thc hin ci t h iu hnh Linux c th trn my tnh
4. Nghin cu cc thao tc giao tip vi Linux; so snh cc thao tc vi h iu hnh
Windows.

- 11 -

Chng 2. THAO TC VI H THNG


2.1. Tin trnh khi ng 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 tin
trnh ci t Linux. Trong tnh hung n gin nht, Linux c khi ng t a cng hay
a mm khi ng.
Tin trnh khi ng Linux c th c m t theo s sau:
LILO

Kernel

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). Khi ta nhp nhn ca mt trong nhng h iu hnh hin c trn my trn dng
thng bo LILO boot:
V d:
LILO boot: linux
Sau khi Linux c chn khi ng, trnh init thc hin, chng ta s thy mt
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. 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 khi ng xong, trn mn hnh xut hin du nhc ng nhp.
Ti du nhc ng nhp, ta nhp tn ng nhp, km theo mt mt khu ng nhp.
May1 login: root
Password:
Sau khi ng nhp thnh cng, du nhc shell xut hin (#) mi ngi dng thc hin
cc thao tc tip theo.
Last login: Fri Oct 27 14:16:09 on tty2
Root[may1 /root]#
2.2.2. 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.

- 12 -

Dng t hp phm Ctrl + Alt + Del:


y l cch n gin nht m bo thot khi h iu hnh Linux. Nu ang lm
vic trong mi trng X Window, cn nhn t hp phm Ctrl+Alt+BackSpace trc.
Dng lnh shutdown:
shutdown [ty-chn] <time> [cnh-bo]
Lnh ny cho php dng tt c cc dch v ang chy trn h thng.
Cc ty chn:
-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.
-c : B qua khng chy lnh shutdown.
-t s -giy : Ch khong thi gian s-giy
Hai tham s v tr cn li:
time : t thi im shutdown.
cnh-bo : Cnh bo n tt c ngi dng trn h thng.
Dng lnh halt:
halt [ty-chn]
Lnh ny tt hn my.
Cc tu chn:
-w : khng thc s tt my nhng vn ghi cc thng tin ln file /var/log/wtmp
-d : khng ghi thng tin ln file /var/log/wtmp.
-n: c ngha tng t nh d 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.
Ch :
Trc khi thc hin tt my, cn phi lu li d liu trc trnh b mt
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, khi cn thit c th khi
ng li h thng nh lnh reboot.
C php lnh: 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.
Cc ty chn ca lnh reboot (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.
#
- 13 -

# 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)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)
#
id:3:initdefault:
# 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
# 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
khi 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:
- 14 -

2.3. Mt s lin quan n h thng


2.3.1. Lnh thay i mt khu
C php lnh: passwd [ty-chn] [tn-ngi-dng]
Cc ty chn:
-k : i hi phi g li mt khu c trc khi thay i mt khu mi.
-f : Khng cn kim tra mt khu c. (Ch supervisor mi c quyn)
-l : Kha mt ti khon ngi dng. (Ch supervisor mi c quyn)
-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 mt ti khon. (Ch supervisor mi c quyn)
-d : Xa b mt khu ca ngi dng. (Ch supervisor mi c quyn)
-S : hin th thng tin ngn gn v trng thi mt khu ca ngi dng c
a ra. (Ch supervisor mi c quyn)
Nu tn-ngi-dng khng c trong lnh th ngm nh l chnh ngi dng g lnh
ny.
2.3.2. Lnh xem, thit lp ngy, gi
Lnh xem, thit lp ngy
C php lnh: date [-ty_chn] [ngy gi]
Lnh xem, thit lp gi
C php lnh: time [-ty_chn] [+nh-dng]
Lnh xem lch
C php lnh: cal [ty-chn] [<thng> [<nm>]]
2.3.3. Lnh kim tra nhng ai ang s sng h thng
C php lnh: who
kim tra nh danh ca ngi ang s dng hin thi, dng lnh: who am i
2.3.4. 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 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.
Cp k t iu khin
ngha
\!
Hin th th t ca lnh trong lch s
\#
Hin th th t ca lnh
\$
Hin th du $. i vi superuser th hin th du #
- 15 -

Cp k t iu khin
\\
\d
\h
\n
\s
\t
\u
\W
\w

ngha
Hin th du s (\)
Hin th ngy hin ti
Hin th tn my (hostname)
K hiu xung dng
Hin th tn h shell
Hin th gi hin ti
Hin th tn ngi dng
Hin th tn thc s ca th mc hin thi
Hin th tn y ca th mc hin thi

2.3.5. 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 [ty-chn] [file...]
Cc tu chn:
-l, --mathlib : php tnh theo chun th vin ton hc
-w, --warn : thc hin php tnh khng tun theo chun POSIX
-s, --standard : php tnh chnh xc theo chun ca ngn ng POSIX
-q, --quiet : khng hin ra li gii thiu v phn mm GNU
CU HI V BI TP
1. Thc hin cc thao tc ng nhp, thot khi h thng trn h iu hnh Linux
2. Thc hin cc thao tc lin quan n h thng Linux
3. Thc hin cc thao tc s dng lnh bc tnh ton mt bi ton s hc n gin.

- 16 -

Chng 3. H THNG FILE


3.1 Tng quan v h thng file
3.1.1. Mt s khi nim
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. 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 cc file theo tn gi ca file (tn file) v mt s thuc tnh lin
quan n file.
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 (th mc cha cc file). Cc th mc cng c h iu hnh qun
l trn thit b lu tr 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. Nu trong tn file c nhiu du chm "." th xu
con ca tn file t du chm cui cng c gi l phn m rng ca tn file
C phn bit ch hoa v ch thng i vi tn th mc/file
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 .
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. H thng file c cu trc hnh cy, c xut pht t mt th mc gc (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.
/(root)

sbin

sbin

usr

bin

dev

lib

var

man

etc

home

User01

User02

ch mt file hay mt th mc, chng ta cn a ra mt ng dn. V d xc nh


file user01, chng ta vit nh sau: /home/user01
ng dn file xc nh t th mc gc c bit vi tn gi l ng dn tuyt i
s rt kh khn cho ngi dng khi thc hin g lnh. V vy, Linux (cng nh nhiu h iu
hnh khc) s dng khi nim th mc hin thi (l mt th mc trong h thng file m hin
thi "ngi dng ang ") ca mi ngi dng lm vic trong h thng. Qua th mc hin
thi, Linux cho php ngi dng ch mt file trong lnh ngn gn hn nhiu.
ng dn c xc nh qua th mc hin thi c gi l ng dn tng i.
- 17 -

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 user01 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.
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.
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 (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 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.
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.
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.
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,
- 18 -

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.
Inode
Mi khi mt tin trnh khi to mt file mi, nhn h thng s gn cho n mt inode
cha s dng. hiu r hn v inode, chng ta xem xt s lc mi quan h lin quan gia
file d liu v vic lu tr trn vt dn ngoi i vi Linux.
Ni dung ca file c cha trong vng d liu ca h thng file v c phn chia cc
khi d liu (cha ni dung file) v hnh nh phn b ni dung file c trong mt inode tng
ng. Lin kt n tp hp cc khi d liu ny l mt inode, ch thng qua inode mi c th
lm vic vi d liu ti cc khi d liu: Inode cha dng thng tin v tp hp cc khi d
liu ni dung file. C th quan nim rng, t hp gm inode v tp cc khi d liu nh vy l
mt file vt l: inode c thng tin v file vt l, trong c a ch ca cc khi nh cha ni
dung ca file vt l. Thut ng inode l s kt hp ca hai t index vi node v c s dng
ph dng trong Linux.
Cc inode c phn bit nhau theo ch s ca inode: chnh l s th t ca inode
trong danh sch inode trn h thng file. Thng thng, h thng dng 2 bytes lu tr ch
s ca inode. Vi cch lu tr ch s nh th, khng c nhiu hn 65535 inode trong mt h
thng file.
Nh vy, mt file ch c mt inode song mt file li c mt hoc mt s tn file. Ngi
dng tc ng thng qua tn file v tn file li tham chiu n inode (tn file v ch s inode
l hai trng ca mt phn t ca mt th mc). Mt inode c th tng ng vi mt hoc
nhiu tn file, mi tng ng nh vy c gi l mt lin kt. Inode c lu tr ti vng
danh sch cc inode.
Trong tin 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 tin 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 tin trnh x l inode.
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:
o Mc ch ca file (k hiu l u),
o Mc nhm ngi dng ca ch nhn ca file (k hiu l g),
o Mc ngi dng khc (k hiu l a).
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:
o Thi gian file c sa i mun nht,
- 19 -

o Thi gian file c truy nhp mun nht,


o Thi gian file c khi to,
Bng cha a ch khi d liu ca File trong UNIX
Bng cha a ch khi d liu ca file gm 13 phn t vi 10 phn t trc tip v 3
phn t gin tip: Mi phn t c di 4 bytes, cha mt s hiu ca mt khi nh trn a.
Mi phn t trc tip tr ti 1 khi d liu thc s cha ni dung file. Phn t gin tip bc 1
(single indirect) tr ti 1 khi nh ngoi. Khc vi phn t trc tip, khi nh ngoi ny
khng dng cha d liu ca file m li cha danh sch ch s cc khi nh ngoi v chnh
cc khi nh ngoi ny mi thc s cha ni dung file. Nh vy, nu khi c di 1KB v
mt ch s khi ngoi c di 4 bytes th a ch gin tip cho php nh v khng gian trn
a lu tr d liu ca file ti 256KB (Khng gian b nh ngoi trong vng d liu phi dng
ti l 257KB). Tng t i vi cc phn t gin tip mc cao hn.
C ch qun l a ch file nh trn cho thy c s phn bit gia file nh vi file ln.
File nh c di b hn v theo cch t chc nh trn, phng php truy nhp s cho php
tc nhanh hn, n gin hn do ch phi lm vic vi cc phn t trc tip. Khi x l,
thut ton c File tin hnh theo cc cch khc nhau i vi cc phn t trc tip v gin
tip.
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. 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 nh:
H thng file 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.
H thng file EFS: L mt dng h thng file s dng cho CDROM.
H thng file EXT2: (The second extended file system) l h thng c dng
ch yu trn cc phin bn ca h iu hnh Linux.
H thng file HFS: L h thng file chy trn cc my Apple Macintosh.
H thng file HPFS: L h thng file c s dng trong h iu hnh OS/2.
Linux h tr h thng file ny mc ch c.
H thng file ISOFS: 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.
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: (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 ROMFS: L cc h thng file ch c (read only) c s dng ch
yu cho vic khi to a o (ramdisk) trong tin trnh khi ng a ci t.
- 20 -

H thng file SMB: (Server Mesage Block) l mt giao thc ca Windows dng
chia s file gia cc h iu hnh Windows 95/98, Windows NT v OS/2 Lan
Manager. Vi s h tr SMB, h iu hnh Linux c th chia s cng nh truy
cp cc file nm trn cc phn vng ca mt my chy cc h iu hnh k trn.
H thng file VFAT: 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. 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.4. 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.
C php lnh: 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:
-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 (ch dnh cho ngi dng
c quyn qun tr h thng; Mt s phin bn khng c ty chn ny).
- 21 -

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

Tp hp S lin kt Ngi Nhm ch


Kch thc Ngy gi Tn file
quyn truy n file
ch file
file
file
to file
nhp
(th mc)
Trong , dy 10 k t u tin m t kiu file v quyn truy nhp i vi tp tin ,
chng 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.
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.
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).
Ch ci biu din
d
b
c

Kiu file
Th mc (directory)
File kiu khi (block-type special file)
File kiu k t (character-type special file)

l
Lin kt tng trng (symbolic link)
p
File ng ng (pipe)
s
Socket
File bnh thng (regular file)
Chn k t tip theo trong chui l quyn truy nhp c chia ra lm 3 nhm tng ng
vi quyn truy nhp ca ngi s hu, nhm s hu v ngi dng khc.
C ba loi quyn truy nhp chnh i vi th mc/file, l: c (read -r), ghi (write
-w) v thc hin (execute -x).
- 22 -

Ch ci biu din
--r-r-x

Kiu file
Khng cho php mt quyn truy nhp no
Ch c quyn c
Quyn c v thc hin (cho chng trnh v shell script)

rwQuyn c v ghi
rwx
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.
3.2.2. Cc lnh c bn
3.2.2.1. Thay i quyn s hu file
C php lnh: chown [ty-chn] [ch][.nhm] <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
Cc ty chn:
-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.
3.2.2.2. Thay i quyn s hu nhm
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.
C php lnh: 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: (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.
- 23 -

3.2.2.3. Thay i quyn truy cp file


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 (-c,--changes; -f, --silent, --quiet; -v, --verbose; -R, --recursive; --help) c
ngha tng t cc tu chn tng ng ca cc lnh chown, chgrp:
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.
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 (c)
w=write (ghi)
x=execute (thc hin)

V d: chmod g+w 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.
Ta bit quyn truy nhp file xc nh thng qua dy gm 9 v tr di dng
rwxrwxrwx, Nh vy thuc tnh quyn truy nhp ca mt file c th biu din thnh 9 bt nh
phn trong bt c gi tr 1 th quyn c xc nh, ngc li th quyn b tho b.
Nh vy, ch s hu tng ng vi 3 bt u tin, nhm s hu tng ng vi 3 bt gia,
ngi dng khc tng ng vi 3 bt cui. Mi cm 3 bt nh vy cho mt ch s h 8 (nhn
gi tr t 0 n 7) v thuc tnh quyn truy nhp tng ng vi 3 ch s h 8.
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
3.2.2.4. ng nhp vo mt nhm ngi dng mi
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
- 24 -

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 lnh:
newgrp [nhm]
Trong nhm l mt tn nhm ngi dng tn ti trong h thng.
3.3 Thao tc vi th mc
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, cng khng
th nhp c thng tin, v cng khng th s dng a mm ca.
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,... gim
bt phc tp, th mc /etc c thit k lu tr tt c cc thng tin hay cc file cu
hnh h thng.
* Th mc /lib
Linux c mt trung tm lu tr cc th vin hm v th tc, l th mc /lib.
* Th mc /lost+found
Mt file c khi phc sau khi c bt k mt vn hoc gp mt li v ghi a trn
h thng u c lu vo th mc ny.
* Th mc /mnt
Th mc /mnt l ni kt ni cc thit b (v d a cng, a mm...) vo h thng
file chnh nh lnh mount. Thng thng cc th mc con ca /mnt chnh l gc ca cc h
thng file c kt ni: /mnt/floppy: a mm, /mnt/hda1: vng u tin ca a cng th
nht (hda), /mnt/hdb3: vng th ba ca a cng th 2 (hdb)...
- 25 -

* Th mc /tmp
Th mc /tmp c rt nhiu chng trnh trong Linux s dng nh mt ni lu tr
cc file tm thi.
* 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 tin trnh,...
* Th mc /boot
L th mc cha nhn ca h thng (Linux-*.*.), System.map (file nh x n cc
driver np cc h thng file khc), nh (image) ca h thng file dng cho initrd
(ramdisk), trnh iu khin cho cc thit b RAID (mt thit b gm mt mng cc a cng
tng tc v an ton khi ghi d liu), cc bn sao lu boot record ca cc phn vng
a khc. Th mc ny cho php khi ng v np li bt k trnh iu khin no c yu
cu c cc h thng file khc.
* Th mc /proc
y l th mc dnh cho nhn (kernel) ca h iu hnh v thc t y l mt h thng
file c lp do nhn khi to.
* Th mc /misc v th mc /opt
Cho php lu tr mi i tng vo hai th mc ny.
* Th mc /sbin
Th mc lu gi cc file h thng thng t ng chy.
3.3.2 Cc lnh c bn v th mc
* Xc nh th mc hin thi
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.
* Xem thng tin v 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:
-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 ",".
- 26 -

-C : a ra danh sch cc file v th mc theo dng ct (hai th mc gn nhau


c xp vo mt ct).
-1 : hin th mi file hoc th mc trn mt dng.
-t : sp xp cc file v th mc trong danh sch theo th t v thi gian c sa
i gn y nht.
-x : a ra danh sch cc file v th mc theo dng ct (hai th mc gn nhau
c xp trn hai dng u ca hai ct k nhau).
-r : sp xp danh sch hin th theo th t ngc li.
-R : lit k ln lt cc th mc v ni dung ca cc th mc.
V d, lnh: # ls -l
s hin th danh sch y nht v cc file v th mc c trong th mc hin thi.
total 108
drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com
drwxr-xr-x 2 root root 4096 Oct 31 2000 bin
drwxr-xr-x 2 root root 4096 Dec 11 16:54 boot
drwxr-xr-x 7 root root 36864 Dec 11 16:54 dev
drwxr-xr-x 43 root root 4096 Dec 11 16:55 etc
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.
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
shadowshells
smb.conf
sysctl.conf
syslog.conf
* Lnh to th mc
C php lnh: 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.
- 27 -

--verbose : hin th cc thng bo cho mi th mc c to.


--help : a ra trang tr gip v thot.
V d: # mkdir /home/test
* Lnh xa b th mc
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 ch trc khi quyt
nh xa mt th mc.
Cc ty chn:
--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
* Lnh i tn th mc
C php lnh: mv <tn-c> <tn-mi>
Lnh ny cho php i tn mt th mc t tn-c thnh tn-mi.
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
Trong Linux c rt nhiu file khc nhau, 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...
- 28 -

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

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:
3.4.3 Cc lnh thao tc trn file
* Sao chp file
Lnh cp c hai dng nh sau:
cp [ty-chn] <file-ngun>... <file-ch>
cp [ty-chn] --target-directory=<th-mc> <file-ngun>...
Lnh ny cho php sao file-ngun thnh file-ch hoc sao chp t nhiu file-ngun
vo mt th mc ch (tham s <file-ch> hay <th-mc>). Dng th hai l mt cch vit
khc i th t hai tham s v tr.
Cc ty chn:
-a, --archive : ging nh -dpR (t hp ba tham s -d, -p, -R, nh di y).
-b, --backup[=CONTROL] : to file lu cho mi file ch nu nh n ang tn
ti.
-d, --no-dereference : duy tr cc lin kt.
-f, --force : ghi file ch ang tn ti m khng nhc nh.
-i, --interactive : c thng bo nhc nh trc khi ghi .
-l, --link : ch to lin kt gia file-ch t file-ngun m khng sao chp.
-p, --preserve : duy tr cc thuc tnh ca file-ngun sang file-ch.
-r : cho php sao chp mt cch quy file thng thng.
-R : cho php sao chp mt cch quy th mc.
-s, --symbolic-link : to lin kt tng trng thay cho vic sao chp cc file.
-S, --suffix=<hu-t> : b qua cc hu t thng thng (hoc c ch ra).
-u, --update : ch sao chp khi file ngun mi hn file ch hoc khi file ch
cha c.
-v, --verbose : a ra thng bo v tin 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.
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.
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.
V d sao chp nhiu file cng mt lc vo mt th mc.
# cp vd vd1 newdir
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 .
* i tn file
C php lnh: mv <tn-c> <tn-mi>
Lnh ny cho php i tn file t tn c thnh tn mi.
V d: # mv vd newfile
Trong trng hp file newfile tn ti, ni dung ca file vd s ghi ln ni dung ca
file newfile.
- 30 -

* Xa file
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 tin 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).
* Lnh m t v dng trong 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.
* Lnh loi b nhng dng khng quan trng
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.

- 31 -

* Sp xp ni dung file
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
3.4.4 Cc lnh thao tc theo ni dung file
* Xc nh kiu file
C php lnh: 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.
Cc tu chn:
-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.
* Xem ni dung file
phn 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).
- 32 -

-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.
* Xem ni dung cc file ln
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.
-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.
* Xem qua ni dung file
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.
- 33 -

* Xem qua ni dung file


C php lnh: 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 tin 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.
* Thm s th t ca cc dng trong file
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:
o a : nh s tt c cc dng k c dng trng;
o t : ch nh s cc dng khng trng;
o 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.
- 34 -

--help : hin th trang tr gip v thot.


* Tm s khc nhau gia hai file
C php lnh: diff [tu-chn] <file1> <file2>
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
Lnh grep cng nh lnh ls l hai lnh rt quan trng trong Linux. Lnh ny c hai tc
dng c bn nh sau:
Lc u ra ca mt lnh:
<lnh> | grep <mu lc>
Tm dng cha mu nh trong file c ch ra:
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.
-B NUM, --before-context=NUM : a ra NUM dng ni dung trc dng c
cha mu.
- 35 -

-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.
* Tm theo cc c tnh ca file
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 lnh: 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
Cc ty chn lnh: tt c cc ty chn ny lun tr v gi tr true v c t
u biu thc
o -daystart : o thi gian (-amin, -atime, -cmin, -ctime, -mmin, -mtime).
o -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).
- 36 -

o -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.
o -help, --help : hin th kt qu ca lnh find v thot.
Cc test
o -amin n : tm file c truy nhp n pht trc.
o -atime n : tm file c truy nhp n*24 gi trc.
o -cmin n : trng thi ca file c thay i n pht trc y.
o -ctime n : trng thi ca file c thay i n*24 gi trc y.
o -empty : file rng v hoc l th mc hoc l file bnh thng.
o -fstype kiu : file thuc h thng file vi kiu.
o -gid n : ch s nhm ca file l n.
o -group nhm : file thuc quyn s hu ca nhm.
o -links n : file c n lin kt.
o -mmin n : d liu ca file c sa ln cui vo n pht trc y.
o -mtime n : d liu ca file c sa vo n*24 gi trc y.
o -name mu : tm kim file c tn l mu. Trong tn file c th cha c cc k
t i din nh
o du "*", "?"...
o -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
o -uid n: ch s ngi s hu file l n.
o -user tn-ngi: file c s hu bi ngi dng tn-ngi.
Cc hnh ng
o -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
o th cho tn file tng ng, v du '\' ti cui dng lnh, (phi c khong trng
gia {} v '\'). Kt thc lnh l du ';'
o -fprint file : hin th y tn file vo trong file. Nu file khng tn ti th
s c to ra, nu
o tn ti th s b thay th ni dung.
o -print : hin th y tn file trn thit b ra chun.
o -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).
3.5 Nn v sao lu cc file
3.5.1 Sao lu cc file (lnh tar)
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.
- 37 -

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.
C php lnh: tar [ty-chn] [<file>,...] [<th-mc>,...]
Lnh (chng trnh) tar c thit k to lp mt file lu tr duy nht. Vi tar, c
th kt hp nhiu file thnh mt file duy nht c kch thc ln hn, iu ny s gip cho vic
di chuyn file hoc sao lu bng t tr nn d dng hn nhiu.
Cc ty 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.
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 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:
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.
- 38 -

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:
o compressed size: kch thc ca file nn
o uncompressed size: kch thc ca file c gii nn
o ratio: t l nn (0.0% nu khng bit)
o uncompressed_name: tn ca file c gii nn
Nu kt hp vi ty chn --verbose, cc thng tin sau s c hin th:
o method: phng thc nn
o crc: CRC 32-bit cho d liu c gii nn
o 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.
-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 #,
- 39 -

o Nu -# l -1 hoc --fast th s dng phng thc nn nhanh nht (less


compression),
o Nu l -9 hoc --best th s dng phng thc nn chm nht (best
compression).
o Ngm nh mc nn l -6 (y l phng thc nn theo tc nn cao).
* Nn, gii nn v xem file vi cc lnh compress, uncompress, zcat
C php cc lnh:
compress [ty-chn] [<file>]
uncompress [ty-chn] [<file>]
zcat [ty-chn] [<file>]
Lnh compress lm gim kch thc ca file v khi s dng lnh ny, file gc s b
thay th bi file nn vi phn m rng l .Z, cc thng tin khc lin quan n file khng thay
i. Nu khng c tn file no c ch ra, thng tin t thit b vo chun s c nn v gi
ra thit b ra chun. Lnh compress ch s dng cho cc file thng thng. Trong mt vi
trng hp, n s b qua lin kt tng trng. Nu mt file c nhiu lin kt cng, compress
b qua vic nn file tr khi c ty chn -f. Cc ty chn:
-f : nu ty chn ny khng c a ra v compress chy trong ch nn
trc, ngi dng s c nhc khi cc file thc s tn ti v c th b ghi .
Cc file c nn c th c khi phc li nh vic s dng lnh uncompress.
-c : ty chn ny s thc hin vic nn hoc gii nn ri a ra thit b ra chun,
khng c file no b thay i.
Lnh zcat tng ng vi uncompress -c. zcat thc hin vic gii nn hoc l cc file
c lit k trong dng lnh hoc t thit b vo chun a ra d liu c gii nn trn
thit b ra chun.
-r : nu ty chn ny c a ra, compress s thc hin vic nn cc th mc.
-v : hin th t l gim kch thc cho mi file c nn.
CU HI V BI tP
1. Trnh by c trng ca h qun l file.
2. Trnh by khi nim v cu trc siu khi
3. Trnh by khi nim v cu trc inode
4. Trnh by tn v tc dng ca cc th mc c bit trong Linux
5. Thc hnh cc lnh lin quan n h thng file

- 40 -

CHNG 4. QUN TR H THNG V NGI DNG


4.1. Qun tr ngi dng
4.1.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.
4.1.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).
4.1.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:
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)
- 41 -

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.
4.1.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:
-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
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:
- 42 -

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
# 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:
# 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.
4.1.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:
-c, comment : son tho trng thng tin v ngi dng.
-d, home_dir : to th mc ng nhp cho ngi dng.

- 43 -

-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.
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
4.1.2.4 Xa b mt ngi dng
xa b mt (ti khon) ngi dng, trc ht phi xa b mi th c lin quan n
ngi dng.
C php lnh: userdel [-r] <tn-ngi-dng>
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 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.
4.2. 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.
- 44 -

4.2.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)
4.2.1.2. Thm nhm ngi dng
Cho php hiu chnh thng tin trong file /etc/group bng bt k trnh son tho vn bn
no c trn h thng ca thm nhm ngi dng, nhng cch nhanh nht l s dng lnh
groupadd.
C php lnh : groupadd [ty-chn] <tn-nhm>
Cc tu chn:
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.
4.2.1.2. Sa i cc thuc tnh ca mt nhm ngi dng
C php lnh: groupmod [ty-chn] <tn-nhm>
Thng tin v cc nhm xc nh qua tham s tn-nhm c iu chnh.
Cc ty chn:
-g, gid : thay i gi tr ch s ca nhm ngi dng.
- 45 -

-n, group_name : thay i tn nhm ngi dng.


4.2.1.3. Xa mt nhm ngi dng
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.
C php lnh: groupdel <tn-nhm>
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.
4.2.2. 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.
4.2.2.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 .
4.2.2.2. Xc nh ngi dng ang ng nhp
* Xc nh hin ti c nhng ai ang ng nhp trn h thng.
C php lnh: who [ty-chn]
Cc tu chn:
-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.
V d: # users

- 46 -

* 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
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.
* Xc nh thng tin ngi dng
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:
-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.
4.2.2.3. Xc nh cc qu trnh ang c tin hnh
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 .
4.3. Qun tr h thng
4.3.1. Qun l tin trnh
4.3.1.1. Gii thiu chung
Linux l h iu hnh a ngi s dng, a tin trnh. Vic iu khin tin trnh ang
hot ng rt quan trng trong qun tr h thng Linux.
Tin trnh l on chng trnh n chy trn khng gian a ch o ca n.
Cn phn bit tin trnh vi lnh v mt dng shell c th sinh ra nhiu tin trnh.
C ba loi tin trnh chnh trn Linux:
Tin trnh i thoi (interarctive process): L tin trnh khi ng v qun l bi
shell, k c tin trnh foreground hoc background.
Tin trnh batch (batch process): Tin trnh khng gn lin n terminal v c
nm trong hng i sn sng thc hin.
Tin trnh n trn b nh (Daemon process): L cc tin trnh chy di nn
(background). Cc tin trnh ny thng c khi ng t u. y l cc
chng trnh sau khi c gi ln b nh, i th ng cc yu cu ca chng
trnh khch (client).
4.3.1.2. iu khin v gim st cc tin trnh
Nh cp trc y, cc tin trnh thng trc thng c bt u bng tin trnh
init khi khi ng. Chng ta c th iu khin tin trnh no chy ngay khi khi ng bng
cch cu hnh li cc file cu hnh v kch bn ca init. Ngoi tr cc tin trnh thng trc,
cc loi tin trnh khc m chng ta s chy c gi l cc tin trnh ca ngi s dng hay
cc tin trnh tng tc. Chng ta phi chy mt tin trnh tng tc thng qua mt shell. Mi
mt shell chun cung cp mt dng lnh khi ngi s dng vo tn ca mt chng trnh. Khi
ngi s dng vo tn chng trnh hp l trn dng lnh, shell s t to mt bn copy nh
- 47 -

mt tin trnh mi v thay th tin trnh mi vi chng trnh c t tn trn dng lnh.
Ni mt cch khc shell s chy chng trnh c t tn nh mt tin trnh khc. ly
thng tin v tt c cc tin trnh ang chy trn h thng ca chng ta, chng ta cn chy tin
ch c tn l ps
4.3.1.3. Cc lnh x l tin trnh
* Lnh fg v lnh bg
Trong phn trc, cch thc g phm CTRL+z tm dng mt tin 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 tin 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 tin
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 tin trnh nn kt thc th h thng s gi thng bo ti
ngi dng, nhng trn hu ht cc h thng, khi tin 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 tin trnh (thng th mt tin trnh hon thnh sau khong 20 giy).
* Hin th cc tin trnh ang chy
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 tin 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
tin 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
#
Trong :
PID - ch s ca tin trnh,
TTY - tn thit b u cui trn tin trnh c thc hin,
TIME - thi gian chy tin trnh,
CMD - lnh khi to tin trnh
C php lnh: 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:
- 48 -

-A, -e : chn hin th tt c cc tin trnh.


-T : chn hin th cc tin trnh trn trm cui ang chy.
-a : chn hin th tt c cc tin trnh trn mt trm cui, bao gm c cc tin
trnh ca nhng ngi dng khc.
-r : ch hin th tin trnh ang c chy.
Chn theo danh sch
-C : chn hin th cc tin trnh theo tn lnh.
-G : hin th cc tin trnh theo ch s nhm ngi dng.
-U : hin th cc tin trnh theo tn hoc ch s ca ngi dng thc s (ngi
dng khi ng tin trnh).
-p : hin th cc tin trnh theo ch s ca tin trnh.
-s : hin th cc tin trnh thuc v mt phin lm vic.
-t : hin th cc tin trnh thuc mt trm cui.
-u : hin th cc tin trnh theo tn v ch s ca ngi dng hiu qu.
Thit t khun dng c a ra ca cc tin trnh
-f : hin th thng tin v tin trnh vi cc trng sau UID - ch s ngi dng,
PID - ch s tin trnh, PPID - ch s tin trnh khi to ra tin trnh, C - , STIME
- thi gian khi to tin trnh, TTY - tn thit b u cui trn tin trnh c
chy, TIME - thi gian thc hin tin trnh, CMD - lnh khi to tin trnh
-l : hin th y cc thng tin v tin 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 tin 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 tin trnh
%mem
% b nh c s dng chy tin trnh
%G
tn nhm ngi dng
%P
ch s ca tin trnh cha khi ng ra tin trnh con
%U
nh danh ngi dng
%c
lnh to ra tin trnh
%p
ch s ca tin trnh
%x
thi gian chy tin trnh
%y
thit b u cui trn tin trnh c thc hin
* Hy tin trnh
Trong mt s trng hp, s dng lnh kill hy b mt tin trnh. iu quan trng
nht khi s dng lnh kill l phi xc nh c ch s ca tin trnh m chng ta mun hy.
C php lnh:
kill [ty-chn] <ch-s-ca-tin-trnh>
kill -l [tn hiu]
Lnh kill s gi mt tn hiu n tin 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:
o SIGHUP (hang up) y l tn hiu c gi n tt c cc qu trnh ang
chy trc khi logout khi h thng
o SIGINT
(interrupt) y l tn hiu c gi khi nhn Ctrl+C
o SIGK
(kill) tn hiu ny s dng tin trnh ngay lp
o SIGT
tn hiu ny yu cu dng tin trnh ngay lp tc, nhng cho
php chng trnh xa cc file tm
-p : lnh kill s ch a ra ch s ca tin trnh m khng gi mt tn hiu no.
- 49 -

-l : hin th danh sch cc tn hiu m lnh kill c th gi n cc tin trnh (cc


tn hiu ny c trong file /usr/include/Linux/signal.h)
* Cho my ngng hot ng mt thi gian
Nu mun cho my ngh mt thi gian m khng mun tt v ngi khi ng li th cn
dng lnh sleep.
C php lnh: 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)
Cc ty chn:
--help : hin th tr gip v thot
--version : hin th thng tin v phin bn v thot
* Xem cy tin trnh
bit lnh xem cc tin 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 tin trnh ang chy di dng cy tin trnh. Gc ca cy
tin trnh thng l init. Nu a ra tn ca mt ngi dng th cy ca cc tin trnh do
ngi dng s hu s c a ra. pstree thng gp cc nhnh tin trnh trng nhau vo
trong du ngoc vung,
v d:
nit -+-getty
|-getty
|-getty
|-getty
thnh
init ---4*[getty]
Cc ty chn:
-a : ch ra tham s dng lnh. Nu dng lnh ca mt tin 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 tin trnh hin thi v "t tin" ca n vi mu sng trng
-H : ging nh ty chn -h, nhng tin trnh con ca tin trnh hin thi khng
c mu sng trng
-l : hin th dng di.
-n : sp xp cc tin trnh cng mt t tin theo ch s tin trnh thay cho sp xp
theo tn
* Lnh thit t li u tin ca tin trnh
Ngoi cc lnh xem v hy b tin trnh, trong Linux cn c hai lnh lin quan n
u tin ca tin 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
- 50 -

--help : hin th trang tr gip v thot


- thay i u tin ca mt tin 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 tin trnh ang chy.
-g : thay i quyn u tin theo nhm ngi dng
-p : thay i quyn u tin theo ch s ca tin trnh
-u : thay i quyn u tin theo tn ngi dng
4.3.2 Qun tr phn mm
Linux pht trin h thng qun tr phn mm c giao din thn thin v hiu qu l
RPM (Redhad Package Manager). RPM l chng trnh qun l cc package, n t ng lm
cc qu trnh nh ci t, nng cp, xa v bo tr phn mm trong Linux.
Lnh rpm c rt nhiu tham s. kim tra mt cch nhanh chng danh sch cc phn
mm c trong h thng, ta dng:
rpm qa
qa c ngha l query all packet.
ci t mt phn mm, ta dng lnh
rpm ivh <phn_mm>
xa mt phn mm, ta dng lnh
rpm --erase <phn_mm>
Ngoi ra Linux cn dng tin ch kpacket trong mi trng KDE gip ta qun l cc
kpacket mt cch c hiu qu trn giao din ha.
4.3.3. Qun tr h thng Linux
* H thng /proc
Th mc /proc rt quan trng, ng vai tr sng cn i vi Linux. y l th mc o,
n cha thng tin ca h thng, cc tin trnh, cc tham s h thng theo thi gian thc. Cc
thng tin cha trong n c to ra mt cch ng da trn cc qu trnh startup v shutdown
ca h thng.
* Cc lnh bo tr khc:
Lnh free: Hin th tng dung lng b nh chnh v swap ang c dng v cn
trng cng nh share memory v buffers c dng bi kernel.
Lnh df: Hin th dung lng a cn trng trn h thng file. n v l 1K block, vi
512B cho 1 blick.
Lnh sudo: Cho php qun tr h thng nng cp quyn truy xut n mt tp lnh qun
tr h thng cho mt vi user thng.
* H thng log file:
var/log/message: Cho bit cc s kin din ra trong h thng bao gm cc hnh ng
start, stop cc tin trnh, user login logout, cc li h thng
var/log/sercure: Lu gi thng tin thng k login, logout v cc ipadress truy cp vo
h thng.
var/log/boot: Lu cc thng tin khi h thng mi khi ng.
dmesg: Hin th cc thng tin ca phn cng khi h thng boot ln
dmesg |more

- 51 -

CU HI V BI TP
1. Trnh by cu trc thng tin lu tr v ti khon ngi ca mt dng trong trong file
/etc/passwd
2. Trnh by cu trc thng tin lu tr v nhm ti khon ngi dng trong trong file
/etc/group
3. Thc hnh cc lnh lin quan n qun l nhm, qun l ti khon ngi dng.

- 52 -

Chng 5. TRUYN THNG V MNG UNIX-LINUX


5.1. Lnh truyn thng
5.1.1. Lnh write
Lnh write c dng trao i gia nhng ngi hin ang cng lm vic trong h
thng.
C php lnh:
$write <tn ngi dng> [<tn trm cui>]
V d cn gi thng bo n ngi dng 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)
5.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.lnhvc.quc-gia).
- 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.
- 53 -

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
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
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
Thc hin cc lnh theo ch dn trn y qun tr c hp th ca c nhn.
5.1.3. Lnh talk
Trong Linux cho php s dng lnh talk thay th cho lnh write.
5.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> ]
- 54 -

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
Mun ch xem cc thng tin v mt card mng no thi ta dng lnh:
# ifconfig eth0
Mun kch hot mt card mng ta dng lnh
# ifconfig eth0 up
Mun tt mt card mng ta dng lnh
# ifconfig eth0 down
Mun t li a ch cho mt card mng ta dng lnh:
# ifconfig eth0 203.162.9.154 netmask 255.255.255.248
Ngoi ra nu my tnh c ci giao din GNOME cng cc package qun l mng ca
GNOME th ta c th s dng lnh c giao din ho gip cho vic cu hnh cc tham s
card mng d dng hn. c cng c ny ta phi ci t package redhat-config-networkxxx.rpm trong xxx l s hiu phin bn ca chng trnh.
Trong giao din ho GNOME ta nh lnh redhat-config-network, mt hp thoi s
hin ln cho php ta thay i cc tham s cho tng card mng c ci trn my.
5.3. Cc dch v mng
5.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 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.
- 55 -

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
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.
5.3.2. 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.
5.3.3. 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
- 56 -

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

/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 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
5.3.5. 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
- 58 -

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

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.
5.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
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 Danh sch a ch cc my
trm, quyn truy nhp ca trm, quyn truy nhp ca
cc my trm
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.
5.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:
- 60 -

#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.
5.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.
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...
5.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.
CU HI V BI TP
1. Trnh by cc lnh cu hnh card giao tip mng trn Linux
2. Trnh by quy trnh ci t v cu hnh cho my ch NIC.
3. Trnh by quy trnh ci t v cu hnh cc my trm NIC
4. Thc hnh cc thao tc lin quan n h thng mng trn Linux

- 61 -

Chng 6. LP TRNH SHELL V LP TRNH C TRN LINUX


6.1. Cch thc pipes v cc yu t c bn lp trnh trn shell
6.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 tin trnh. ng dn c t chc theo kiu cu trc d
liu dng xp hng "vo trc ra trc" FIFO "First In First Out".
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 tin 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
tin trnh B).
Trong chng trnh, c th dng ng dn lm file vo chun cho cc lnh c tip theo.
V d: ls -L | \
th k hiu "\" ch ra rng ng dn c dng nh file vo chun.
6.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.
* 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),
- 62 -

- 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.
* 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
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.
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=""
- 63 -

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: $*
}
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.
7.1.2.3. 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 t
~
`
;
#

M t
Th mc home ca user hin ti
Thay th lnh
Chia ct lnh
Li ch gii
- 64 -

K t
M t
K t
M t
|
K hiu dn

Trch dn mnh
\
Dng hin k t c bit

Trch dn yu
&
Thi hnh lnh chy ch ngm
$
Biu thc bin
{
Bt u khi lnh
*
K t i din cho chui
}
Kt thc khi lnh
?
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 .
6.2. Mt s lnh lp trnh trn shell
6.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:
- 65 -

$unset status
$echo ${status:-undefined}
undefined
$echo ${status:=undefined}
undefined
$echo ${status:+undefined}
undefined
$unset status
$echo ${status:?Dohhh\! undefined}
bash:status Dohhh! Undefined
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)

- 66 -

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
${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
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)
Cc ton t so snh s hc
-eq :
bng
-ge :
ln hn hoc bng
-gt :
ln hn
-le :
nh hn hoc bng
-lt :
nh hn
-ne :
khc
6.2.2. iu khin lung
Cc cu trc iu khin lung ca bash, n bao gm:
if Thi hnh mt hoc nhiu cu lnh nu c iu kin l true hoc false.
for Thi hnh mt hoc nhiu cu lnh trong mt s c nh ln.
while Thi hnh mt hoc nhiu cu lnh trong khi mt iu kin no l true
hoc false.
until Thi hnh mt hoc nhiu cu lnh cho n khi mt iu kin no
tr thnh true hoc false.
case Thi hnh mt hoc nhiu cu lnh ph thuc vo gi tr ca bin.
select Thi hnh mt hoc nhiu cu lnh da trn mt khong tu chn ca
ngi dng.
* 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
- 67 -

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

C hai on m u thc hin cng mt chc nng, nhng on th hai ngn hn nhiu,
gn nh v n gin. Mc d if ch kim tra cc m thot, ta c th s dng cu trc [] lnh
test kim tra cc iu kin phc tp hn. [condition] tr v gi tr biu th condition l true
hay false. test cng c tc dng tng t.
Mt v d khc v cch s dng cu trc if:
#!/bin/sh
# Script to test if..elif...else
#
if [ $1 -gt 0 ]; then echo "$1 is positive"
elif [ $1 -lt 0 ]
then
echo "$1 is negative"
elif [ $1 -eq 0 ]
then
echo "$1 is zero"
else
echo "Opps! $1 is not number, give number"
fi
S lng cc php ton iu kin ca bin hin ti khong 35, kh nhiu v hon chnh.
Ta c th kim tra cc thuc tnh file, so snh cc xu v cc biu thc s hc.
Ch : Cc khong trng trc du m ngoc v sau du ng ngoc trong [condition]
l cn phi c. y l iu kin cn thit trong c php shell ca bash.
Danh sch cc ton t test file ph bin nht:
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
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"
- 69 -

else
echo e \tYou dont have write permission in $dir
fi
if [ -0 $dir ]; then
echo -e "\tYou own $dir"
else
echo e \tYou dont own $dir
fi
if [ -G $dir ]; then
echo -e "\tYou are a member of $dir's group"
else
echo -e "\tYou aren't a member of $dir's group"
fi
done Chng trnh descpath.sh
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.
Ton t
ngha
! expression
Logical NOT
expression1 -a expression2
Logical AND
expression1 -o expression2
Logical OR
* 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
- 70 -

nht nh bi v n khng t ng tng hay gim con m vng lp nh l C, Pascal, hay


Basic. Tuy nhin vng lp for l cng c lp thng xuyn c s dng bi v n iu khin
gn gng trn cc danh sch, nh l cc tham s dng lnh v cc danh sch cc file trong th
mc.
C php y ca for l:
for value in list
do
done
statements using $value
list l mt danh sch cc gi tr, v d nh l tn file. Gi tr l mt thnh vin danh sch
n v statements l cc lnh s dng value. Mt c php khc ca lnh for c dng nh sau:
for (( expr1; expr2; expr3 ))
do
....
repeat all statements between do and done until expr2 is TRUE
done
Linux khng c tin ch i tn hay copy cc nhm ca file. Trong MS-DOS nu ta
c 17 file c phn m rng a*.doc, ta c th s dng lnh COPY copy *.doc thnh file
*.txt. Lnh DOS nh sau:
C:\ cp doc\*.doc doc\*.txt
s dng vng lp for ca bash b p nhng thiu st ny. on m di y c th
c chuyn thnh chng trnh shell thc hin ng nh nhng g ta mun:
for docfile in doc/*.doc do
cp $docfile ${docfile%.doc}.txt
done
S dng mt trong cc ton t pattern-matching ca bash, on m ny lm vic copy
cc file c phn m rng l *.doc bng cch thay th .doc cui ca tn file bng .txt.
Mt v d khc v vng for n gin nh sau:
#!/bin/bash
for i in 1 2 3 4 5
do
echo "Welcome $i times"
done
Ta cng c mt cu trc v for nh sau, chng trnh ny cng c cng chc nng nh
chng trnh trn nhng ta ch n s khc bit v c php ca lnh for.
#!/bin/bash
for (( i = 0 ; i <= 5; i++ ))
do
echo "Welcome $i times"
done
$ chmod +x for2
$ ./for2
Welcome 0 times
Welcome 1 times Welcome 2 times Welcome 3 times
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 ###
- 71 -

do
for (( j = 1 ; j <= 5; j++ )) ### Inner for loop ###
do
echo -n "$i "
done
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
* 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.
- 72 -

V d, ta mun copy 150 bn ca mt file, th vng lp while l mt la chn gii


quyt bi ton ny.
#!/bin/sh
#
declare -i idx idx=1
while [ $idx != 150]
do
cp somefile somefile.$idx idx=$idx+1
done
Chng trnh ny gii thiu cch s dng tnh ton s nguyn ca bash. Cu lnh
declare khi to mt bin, idx, nh ngha l mt s nguyn. Mi ln lp idx tng ln, n s
c kim tra thot khi vng lp. Vng lp until tuy cng c kh nng ging while nhng
khng c dng nhiu v rt kh vit v chy chm.
Mt v d na v cch s dng vng lp while c minh ha trong chng trnh in bn
nhn ca mt s:
#!/bin/sh
#Script to test while statement
#
if [ $# -eq 0 ]
then
echo "Error - Number missing form command line argument"
echo "Syntax : $0 number"
echo " Use to print multiplication table for given number"
exit 1
fi
n=$1
i=1
while [ $i -le 10 ]
do
echo "$n * $i = `expr $i \* $n`"
i=`expr $i + 1`
done
* 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 ;;

[*)
esac
statements ;;]
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 *)),
- 73 -

ta thy y l mu c th khp vi bt k gi tr no (k t i din l *), nn cc lnh trong


nhnh ny s c thc hin.
Cu trc iu khin select (khng c trong cc phin bn bash nh hn 1.14) ch ring
c trong Korn v cc shell bash. Thm vo , n khng c s tng t nh trong cc ngn
ng lp trnh quy c. select cho php ta d dng trong vic xy dng cc menu n gin v
p ng cc chn la ca ngi dng. C php ca n nh sau:
select value [in list]
do
statements that manipulate $value
done
Di y l mt v d v cch s dng lnh select:
#!/bin/bash
# menu.sh Createing simple menus with select
#######################################
IFS=: PS3=choice?
# clear the screen clear
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
- 74 -

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

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.
V d
#!/bin/bash
####################################
USER=anonymous
PASS=kwall@xmission.com
ftp -i -n << END open ftp.caldera.com user $USER $PASS cd /pub
ls close END
6.2.5. Hin dng vn bn
Lnh echo hin ra dng vn bn c ghi ngay trong dng lnh c
C php lnh:
echo [ty chn] [xu k t]
Cc ty chn:
-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.
6.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
$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
- 76 -

6.2.6. Lnh set


gn kt qu ra t lnh shell ra cc bin t ng, ta dng lnh set
Dng lnh:
set
`<lnh>`
Sau lnh ny, kt qu thc hin lnh khng hin ln 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
6.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>`
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
6.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
- 77 -

if 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\)
fi
done
}
6.3. Lp trnh C trn UNIX
6.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. gcc cho ngi lp trnh kim tra trnh bin dch. Tin trnh
bin dch bao gm bn giai on:
Tin x l
Bin dch
Tp hp
Lin kt
Ta c th dng tin 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 tin 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.
- 78 -

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

-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.
6.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 tin 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.
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
- 80 -

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).
6.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 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
M file c
O_WRONLY
M file ghi
O_RDWR
M file c v ghi
O_CREAT
To file nu cha tn ti file
O_EXCL
Tht bi nu file c
O_NOCTTY
Khng iu khin tty nu tty m v tin trnh
khng iu khin tty
O_TRUNC
Ct file nu n tn ti
- 81 -

C
Ch gii
O_APPEND
Ni thm v con tr t cui file
O_NONBLOCK Nu mt tin trnh khng th hon thnh m khng
c tr, tr v trng thi trc
O_NODELAY
Tng t O_NONBLOCK
O_SYNC
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()
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 tin trnh ng file lm cho b m lin kt bng 0 th file s b xo.
Nu y l m t file cui cng lin kt n mt file c m th bn ghi bng file m c
gii phng. Nu khng phi l mt file bnh thng th cc hiu ng khng mong mun c th
xy ra.
Hm read()
Li gi h thng read() s dng c d liu t file tng ng vi mt m t file.
#include <unistd.h>
ssize_t read(int fd, void *buf, size_t count);
i s u tin l m t file m c tr v t li gi open() trc . i s th hai l
mt con tr ti b m sao chp d liu v i s th ba l s byte s c c. read() tr
v s byte c c hoc -1 nu c li xy ra.
Hm write()
Li gi h thng write() s dng ghi d liu vo file tng ng vi mt m t file.
#include <unistd.h>
ssize_t write(int fd, const void *buf, size_t count);
i s u tin l s m t file c tr v t li gi open() trc . i s th hai l
con tr ti b m ( sao chp d liu, c dung lng ln cha d liu) v i s th
ba xc nh s byte s c ghi. write() tr v s byte c hoc -1 nu c li xy ra
Hm ftruncate()
Li gi h thng ftruncate() ct file tham chiu bi m t file fd vi di c xc
nh bi tham s length
#include <unistd.h>
int ftruncate(int fd, size_t length);
Tr v gi tr 0 nu thnh cng v -1 nu c li xy ra.
Hm lseek()
Hm lseek() t v tr c v ghi hin ti trong file c tham chiu bi m t file files
ti v tr offset
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fildes, off_t offset, int whence);
- 82 -

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 */
unsigned long st_blksize;
/* kch thc khi*/
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
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);
6.3.4. Th vin lin kt
Phn ny s gii thiu cch to ra v s dng th vin (cc module chng trnh
c vit v c ti s dng nhiu ln). Th vin gc ca C/C++ trn Linux chnh l glibc,
th vin ny cung cp cho ngi dng rt nhiu li gi h thng. Cc th vin trn Linux
thng c t chc di dng tnh (static library), th vin chia s (shared library) v ng
- 83 -

(dynamic library - ging nh DLL trn MS Windows). Th vin tnh c lin kt c nh


vo trong chng trnh trong tin 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.
* 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 tin 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 tin 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.
M ngun cho file liberr.h
/*
* 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 file liberr.c
#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,...)
- 84 -

{
va_list ap;
va_start(ap, fmt); err_prn(fmt,ap, logfile); va_end(ap);
return;
}
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;
}
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
/*
* M ngun file testerr.c
*/
#include <stdio.h>
#include <stdlib.h>
#include "liberr.h"
#define ERR_QUIT_SKIP 1
#define LOG_QUIT_SKIP 1
int main(void)
{
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
- 85 -

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;
}
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.
* 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 level).
Nh vy, soname th vin C l libc.5. Th vin libc6 c soname l libc.so.6, s thay i
phin bn chnh l s thay i ng k th vin. Phin bn ph v patch level thay i khi li
c sa nhng soname khng thay i v bn mi c s thay khc bit ng k so vi bn
c.
Cc chng trnh ng dng lin kt da vo soname. Tin ch idconfig to mt biu
tng lin kt t th vin chun libc.so.5.4.46 ti soname libc.5 v lu tr thng tin ny trong
/etc/ld.so.cache. Trong lc chy, ld.so c phn lu tr, tm soname thch hp v np th vin
hin tai vo b nh, kt ni hm ng dng gi ti i tng thch hp trong th vin.
Cc phin bn th vin khc nhau nu:
Cc giao din hm u ra thay i.
Cc giao din hm mi c thm.
Chc nng hot ng thay i so vi c t ban u
Cu trc d liu u ra thay i
Cu trc d liu u ra c thm
duy tr tnh tng thch ca th vin, cn m bo cc yu cu:
Khng thm vo nhng tn hm c hoc thay i hot ng ca n
Ch thm vo cui cu trc d liu c hoc lm cho chng c tnh tu chn
hay c khi to trong th vin
Khng m rng cu trc d liu s dng trong cc mng
- 86 -

Xy dng th vin dng chung hi khc so vi th vin tnh, tin 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 tin 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 tin 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
* 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);
- 87 -

dlopen() truy cp i tng chia s bng filename v bng c. Filename c th l ng


dn y , tn file rt gn hay NULL. Nu l NULL dlopen() m chng trnh ang chy,
l chng trnh ca bn, nu filename l ng dn dlopen() m file , nu l tn rt gn
dlopen() s tm trong v tr sau tm file:
$LD_ELF_LiBRARY_PATH,
$LD_LIBRARY_PATH, /etc/ld.so.cache, /usr/lib, v /lib.
C c th l RTLD_LAZY, c ngha l cc k hiu (symbol) hay tn hm t i tng
truy cp s c tm mi khi chng c gi, hoc c c th l RTLD_NOW, c ngha tt c
k hiu t i tng truy cp s c tm trc khi hm dlopen() tr v. dlopen() tr iu
khin ti i tng truy nhp nu n tm thy t filename hay tr v gi tr NULL nu khng
tm thy.
S dng i tng chia s
Trc khi c th s dng m ngun trong th vin ta phi bit ang tm ci g v tm
u. Hm dlsym() s gip iu :
void *dlsym(void *handle, char *symbol);
dlsym() tm k hiu hay tn hm trong truy cp v tr li con tr kiu void ti i tng
hay NULL nu khng thnh cng.
Kim tra li
Hm dlerror() s gip ta kim tra li khi s dng i tng truy cp ng:
const char *dlerror(void);
Nu mt trong cc hm li, dlerror() tr v thng bo chi tit li v gn gi tr NULL
cho phn b li.
Gii phng i tng chia s
bo v ti nguyn h thng c bit b nh, khi ta s dng xong module trong mt
i tng chia s, th gii phng chng. Hm dlclose() s ng i tng chia s:
int dlclose(void *handle);
S dng giao din dl
minh ho cch s dng dl,chng ta quay li th vin x l li, s dng mt chng
trnh khc nh sau:
/*
* M ngun chng trnh 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) {
- 88 -

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

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]
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.
CU HI V BI TP
1. Trnh by cc yu t c bn trong lp trnh shell
2. Trnh by ngha, chc nng v tc dng ca trnh bin dch gcc.
3. Thc hnh cc lnh trong lp trnh shell
4. Thc hnh cc lnh trong lp trnh C

- 90 -

THI THAM KHO


1:
Cu 1: Trnh by khi nim v cu trc siu khi
Cu 2: Trong th mc ngi dng /home/tuanpv c cc th mc con l vanban, bangtinh.
Hy vit cc lnh ca Linux :
1. To ti th mc vanban mt th mc con c tn l hopdong. Sao chp cc tp tin c 2
k t phn tn l HD trong th mc vanban vo th mc va to
2. Lit k cc tp tin c phn tn bt u bi k t M trong th mc bangtinh ln mn
hnh (cho hin cc tp tin c thuc tnh n nu c)
3. Xc lp quyn ch c cho cc tp trong th mc bangtinh.
4. Xo tt c cc tp tin 2 k t nh thuc phn tn trong th mc vanban.
Cu 3: Lp chng trnh lit k tn v sao chp cc tp tin trong th mc /home/user1/vidu1
sang th mc /home/user2/vidu
2:
Cu 1: Trnh by khi nim v cu trc inode
Cu 2: Trong th mc ngi dng /home/minhnd c cc th mc con l musics, games. Hy
vit cc lnh ca Linux :
1. Xo i cc tp tin c phn m rng l mp3 trong th mc musics; Xo th mc
lines trong th mc games
2. To ra ti th mc ngi dng mt th mc con c tn temp, trong th mc ny to
hai th mc con ngang cp c tn vidu1 v vidu2.
3. Lit k cc tin trnh ang chy trong h thng.
4. Nn th mc games thnh tp tin luugames.tar
Cu 3: Lp chng trnh c v hin th ni dung ca 1 file khng cu trc
3:
Cu 1: Trnh by tn v tc dng ca cc th mc c bit trong Linux
Cu 2: Trong th mc ngi dng /home/cuongpv c cc th mc con l tailieu, tapchi. Hy
vit cc lnh ca Linux :
1. Ni ni dung cc tp sach1, sach2 trong th mc tailieu thnh tp tapsach t to th
mc ngi dng.
2. Lit k cc tp tin trong th mc tapchi (k c tp tin c thuc tnh n)
3. Nn cc tp tin trong th mc tailieu thnh tp luutl.zip t ti th mc ngi dng.
4. Xa cc tp tin c k t h ca phn tn trong th mc tailieu
Cu 3: Cho hai vector m chiu a = (a1, a2, a3,..., am) v b = (b1, b2, b3,..., bm). Hy lp chng
trnh tnh tch v hng ca a v b theo cng thc a.b = a1.b1 + a2.b2 + ... + am.bm.
4:
Cu 1: Trnh by cu trc thng tin lu tr v ti khon ngi ca mt dng trong trong file
/etc/passwd
Cu 2: Trong th mc ngi dng /home/dungnv c cc th mc con l vanhoc v kythuat.
Hy vit cc lnh ca Linux :
1. Tm tp tin c cha ni dung l Happy Birthday
2. Thit lp quyn truy cp th mc kythuat cho tt c cc ngi dng.
- 91 -

3. To mt th mc c tn l nghethuat trong th mc ngi dng, sau chp tt c cc


tp c k t 01 cui phn tn trong th mc vanhoc vo th mc va to.
4. Lit k cu hnh ca my hin ti
Cu 3: Cho s n, Hy lp chng trnh thc hin tnh gi tr ca hm cos(x) theo cng
thc: Cos(x) = 1- x2/2! + x4/4! - x6/6! + ... (-1)nx2x/(2n)!
5:
Cu 1: Trnh by cc yu t c bn trong lp trnh shell
Cu 2: Trong th mc ngi dng /home/thanghv c cc th mc con l congvan, quyetdinh.
Hy vit cc lnh ca Linux :
1. To ra ti th mc ngi dung mt th mc con c tn l saoluu,
2. Sao chp tt c cc tp ti th mc quyetdinh vo th mc va to
3. Thit lp quyn truy cp th mc congvan cho nhm ngi dng hanhchinh
4. Xa cc tp c hai k t u phn tn l GM trong th mc congvan
Cu 3: Cho s thc a. Hy lp s thut ton thc hin tm s t nhin n nh nht
sao cho 1+1/2 + 1/3 + ... + 1/n > a

- 92 -

You might also like