Professional Documents
Culture Documents
20 - Giao Trinh He Dieu Hanh Linux Va Unix
20 - Giao Trinh He Dieu Hanh Linux Va Unix
net
I HC QUC GIA H NI
TRNG I HC CNG NGH
=====================================
H QUANG THY
NGUYN TR THNH
Gio trnh:
H NI - 2004
MC LC
LI GII THIU ..................................................................................................... 9
CHNG 1. GII THIU CHUNG V LINUX...................................................... 10
1.1. Gii thiu v UNIX v Linux...................................................................................... 10
1.1.1. Xut x, qu trnh tin ha v mt s c trng ca h iu hnh UNIX ......... 10
1.1.2. Gii thiu s b v Linux................................................................................... 13
1.2. S b v cc thnh phn ca Linux ........................................................................... 17
1.2.1. S b v nhn ..................................................................................................... 18
1.2.2. S b v shell ..................................................................................................... 18
1.3. Gii thiu v s dng lnh trong Linux..................................................................... 20
1.3.1. Cc quy c khi vit lnh................................................................................... 22
1.3.3. Lm n gin thao tc g lnh ........................................................................... 25
1.3.4. Tip ni dng lnh.............................................................................................. 29
1.4. Trang Man ................................................................................................................... 29
CHNG 2. THAO TC VI H THNG ........................................................... 32
2.1. Qu trnh khi ng Linux......................................................................................... 32
2.2. Th tc ng nhp v cc lnh thot khi h thng ................................................ 33
2.2.1. ng nhp........................................................................................................... 33
2.2.2. Ra khi h thng................................................................................................. 36
2.2.3. Khi ng li h thng ....................................................................................... 38
2.2.4. Khi ng vo ch ho ............................................................................. 38
2.3. Lnh thay i mt khu .............................................................................................. 42
2.4. Lnh xem, thit t ngy, gi hin ti v xem lch trn h thng ........................... 45
2.4.1 Lnh xem, thit t ngy, gi .............................................................................. 45
2.4.2. Lnh xem lch .................................................................................................... 47
2.5. Xem thng tin h thng .............................................................................................. 48
2.6. Thay i ni dung du nhc shell .............................................................................. 49
2.7. Lnh gi ngn ng tnh ton s hc .......................................................................... 50
CHNG 3. H THNG FILE ............................................................................. 53
3.1 Tng quan v h thng file........................................................................................... 53
3.1.1. Mt s khi nim ................................................................................................ 53
3.1.2. S b kin trc ni ti ca h thng file............................................................. 57
3.1.3. Mt s thut ton lm vic vi inode ................................................................. 63
3.1.4. H tr nhiu h thng File.................................................................................. 66
3.1.5. Lin kt tng trng (lnh ln) ............................................................................ 71
2
4
5
6
LI GII THIU
Trong hn mi nm tr li y h iu hnh Linux
7
8
Nh cung cp
International Business Machines
Apple Computer
Sequent
Hewlett-Packard
Silicon Graphics
Free SoftWare Foundation
Next
Digital Equipment Corporation
Santa Cruz Operation
Sun Microsystems
Sun Microsystems
Digital Equipment Corporation
Cray
Novell
MicroSoft
Nn pht trin
AT&T System V
AT&T System V
BSD (Berkeley SoftWare Distribution)
BSD
AT&T System V
BSD
BSD
AT&T System V
AT&T System V
BSD UNIX
BSD UNIX
AT&T System V
AT&T System V
AT&T System III-MS
9
S dng ph bin mt dng n gin trnh by ni ti ca File nh mt dng
cc byte cho php d dng khi vit cc chng trnh ng dng truy nhp, thao tc
vi cc d liu trong File,
C kt ni n gin vi thit b ngoi vi: cc file thit b c t sn
trong H thng File to ra mt kt ni n gin gia chng trnh ngi dng vi
cc thit b ngoi vi,
L h iu hnh a ngi dng, a qu trnh, trong mi ngi dng c
th thc hin cc qu trnh ca mnh mt cch c lp.
Mi thao tc vo - ra ca h iu hnh c thc hin trn h thng File:
mi thit b vo ra tng ng vi mt file. Chng trnh ngi dng lm vic vi
file m khng cn quan tm c th tn file c t cho thit b no trong h
thng.
Che khut cu trc my i vi ngi dng, m bo tnh c lp tng i
ca chng trnh i vi d liu v phn cng, to iu kin thun li hn cho
ngi lp trnh khi vit cc chng trnh chy UNIX vi cc iu kin phn cng
hon ton khc bit nhau.
1.1.2. Gii thiu s b v Linux
Linus Tovalds (mt sinh vin Phn lan) a ra nhn (phin bn u tin) cho h iu hnh
Linux vo thng 8 nm 1991 trn c s ci tin mt phin bn UNIX c tn Minix do Gio
s Andrew S. Tanenbaum xy dng v ph bin. Nhn Linux tuy nh song l t ng gi.
Kt hp vi cc thnh phn trong h thng GNU, h iu hnh Linux c hnh thnh.
V cng t thi im , theo t tng GNU, hng nghn, hng vn chuyn gia trn ton
th gii (nhng ngi ny hnh thnh nn cng ng Linux) tham gia vo qu trnh pht
trin Linux v v vy Linux ngy cng p ng nhu cu ca ngi dng.
Di y l mt s mc thi gian quan trng trong qu trnh hnh thnh v pht trin h
iu hnh Linux.
Sau ba nm nhn Linux ra i, n ngy 14-3-1994, h iu hnh Linux phin bn
1.0 c ph bin. Thnh cng ln nht ca Linux 1.0 l n h tr giao thc mng
TCP/IP chun UNIX, snh vi giao thc socket BSD- tng thch cho lp trnh mng.
Trnh iu khin thit b c b sung chy IP trn mt mng Ethernet hoc trn
tuyn n hoc qua modem. H thng file trong Linux 1.0 vt xa h thng file ca
Minix thng thng, ngoi ra h tr iu khin SCSI truy nhp a tc cao. iu
khin b nh o c m rng h tr iu khin trang cho cc file swap v nh x
b nh ca file c quyn (ch c mt nh x b nh ch c c thi hnh trong Linux
1.0).
Vo thng 3-1995, nhn 1.2 c ph bin. iu ng k ca Linux 1.2 so vi
Linux 1.0 ch n h tr mt phm vi rng v phong ph phn cng, bao gm c kin
trc tuyn phn cng PCI mi. Nhn Linux 1.2 l nhn kt thc dng nhn Linux ch h
tr PC.
Mt iu cn lu v cc nh ch s cc dng nhn (h iu hnh) Linux. H thng
ch s c chia thnh mt s mc, chng hn hai mc nh 2.4 hoc ba mc nh 2.2.5.
Trong cch nh ch s nh vy, quy c rng vi cc ch s t mc th hai tr i, nu
l s chn th dng nhn kh n nh v tng i hon thin, cn nu l s l th
dng nhn vn ang c pht trin tip.
1
0
1
1
Cho php ci t Linux cng vi cc h iu hnh khc trn cng mt cng. Linux
c th truy nhp n cc file ca cc h iu hnh cng mt a. Linux cho php chy
m phng cc chng trnh thuc cc h iu hnh khc.
Do gi c chun ca UNIX nn s chuyn i gia Linux v cc h UNIX khc
l d dng.
Linux l mt h iu hnh UNIX tiu biu vi cc c trng l a ngi dng, a
chng trnh v a x l.
Linux c giao din ho (GUI) tha hng t h thng X-Window. Linux h tr
nhiu giao thc mng, bt ngun v pht trin t dng BSD. Thm vo , Linux cn h
tr tnh ton thi gian thc.
Linux kh mnh v chy rt nhanh ngay c khi nhiu qu trnh hoc nhiu ca s.
Linux c ci t trn nhiu chng loi my tnh khc nhau nh PC, Mini v vic
ci t kh thun li. Tuy nhin, hin nay cha xut hin Linux trn my tnh ln
(mainframe).
Linux ngy cng c h tr bi cc phn mm ng dng b sung nh son tho,
qun l mng, qun tr c s d liu, bng tnh ...
Linux h tr tt cho tnh ton song song v my tnh cm (PC-cluster) l mt hng
nghin cu trin khai ng dng nhiu trin vng hin nay.
L mt h iu hnh vi m ngun m, c pht trin qua cng ng ngun m
(bao gm c Free Software Foundation) nn Linux pht trin nhanh. Linux l mt trong
mt s t cc h iu hnh c quan tm nhiu nht trn th gii hin nay.
Linux l mt h iu hnh h tr a ngn ng mt cch ton din nht. Do Linux
cho php h tr cc b m chun t 16 bit tr ln (trong c cc b m ISO10646,
Unicode) cho nn vic bn a ha trn Linux l trit nht trong cc h iu hnh.
Tuy nhin cng tn ti mt s kh khn lm cho Linux cha thc s tr thnh mt h iu
hnh ph dng, di y l mt s kh khn in hnh:
Tuy c cng c h tr ci t, tuy nhin, vic ci t Linux cn tng i phc
tp v kh khn. Kh nng tng thch ca Linux vi mt s loi thit b phn cng cn
thp do cha c cc trnh iu khin cho nhiu thit b,
1
2
1
3
1.2.1. S b v nhn
Nhn (cn c gi l h li) ca Linux, l mt b cc mdun chng trnh c vai tr
iu khin cc thnh phn ca my tnh, phn phi cc ti nguyn cho ngi dng (cc qu
trnh ngi dng). Nhn chnh l cu ni gia chng trnh ng dng vi phn cng.
Ngi dng s dng bn phm g ni dung yu cu ca mnh v yu cu c nhn gi
ti shell: Shell phn tch lnh v gi cc chng trnh tng ng vi lnh thc hin.
Mt trong nhng chc nng quan trng nht ca nhn l gii quyt bi ton lp lch, tc
l h thng cn phn chia CPU cho nhiu qu trnh hin thi cng tn ti. i vi Linux, s
lng qu trnh c th ln ti con s hng nghn. Vi s lng qu trnh ng thi nhiu
nh vy, cc thut ton lp lch cn phi hiu qu: Linux thng lp lch theo ch
Round Robin (RR) thc hin vic lun chuyn CPU theo lng t thi gian.
Thnh phn quan trng th hai trong nhn l h thng cc mun chng trnh (c
gi l li gi h thng) lm vic vi h thng file. Linux c hai cch thc lm vic vi cc
file: lm vic theo byte (k t) v lm vic theo khi. Mt c im ng ch l file trong
Linux c th c nhiu ngi cng truy nhp ti nn cc li gi h thng lm vic vi file
cn m bo vic file c truy nhp theo quyn v c chia x cho ngi dng.
1.2.2. S b v shell
Mt s ni dung chi tit v shell (cn c gi l h v) trong Linux c trnh by
trong chng "Lp trnh trn shell". Nhng ni dung trnh by di y cung cp mt cch
nhn s b v shell v vai tr ca n trong hot ng chung ca h iu hnh.
Ngi dng mong mun my tnh thc hin mt cng vic no th cn g lnh th
hin yu cu ca mnh h thng p ng yu cu . Shell l b dch lnh v hot ng
nh mt kt ni trung gian gia nhn vi ngi dng: Shell nhn dng lnh do ngi dng
a vo; v t dng lnh ni trn, nhn tch ra cc b phn nhn c mt hay mt s
lnh tng ng vi cc on vn bn c trong dng lnh. Mt lnh bao gm tn lnh v
tham s: t u tin l tn lnh, cc t tip theo (nu c) l cc tham s. Tip theo, shell s
dng nhn khi sinh mt qu trnh mi (khi to qu trnh) v sau , shell ch i qu
trnh con ny tin hnh, hon thin v kt thc. Khi shell sn sng tip nhn dng lnh ca
ngi dng, mt du nhc shell (cn gi l du nhc nhp lnh) xut hin trn mn hnh.
Linux c hai loi shell ph bin l: C-shell (du nhc %), Bourne-shell (du nhc $) v
mt s shell pht trin t cc shell ni trn (chng hn, TCshell - tcsh vi du nhc ngm
nh > pht trin t C-shell v GNU Bourne - bash vi du nhc bash # pht trin t
Bourne-shell). Du mi phn bit shell ni trn khng phi hon ton r rng do Linux cho
php ngi dng thay i li du nhc shell nh vic thay gi tr cc bin mi trng PS1
v PS2. Trong ti liu ny, chng ta s dng k hiu "hng ro #" biu th du nhc
shell.
C-shell c tn gi nh vy l do cch vit lnh v chng trnh lnh Linux ta nh
ngn ng C. Bourne-shell mang tn tc gi ca n l Steven Bourne. Mt s lnh trong Cshell (chng hn lnh alias) khng cn c trong Bourne-shell v v vy nhn bit h
thng ang lm vic vi shell no, chng ta g lnh:
# alias
Nu mt danh sch xut hin th shell ang s dng l C-shell; ngc li, nu xut hin
thng bo "Command not found" th shell l Bourne-shell.
Lnh c chia thnh 3 loi lnh:
1
4
Lnh thng trc (c sn ca Linux). Tuyt i a s lnh c gii thiu
trong ti liu ny l lnh thng trc. Chng bao gm cc lnh c cha sn trong
shell v cc lnh thng trc khc.
File chng trnh ngn ng my: chng hn, ngi dng vit trnh trn ngn
ng C qua b dch gcc (bao gm c trnh kt ni link) to ra mt chng trnh
trn ngn ng my.
File chng trnh shell (Shell Scrip).
Khi kt thc mt dng lnh cn g phm ENTER shell phn tch v thc hin lnh.
K hiu "" biu th vic g phm ht dng <Enter>. kt thc mt yu
cu, ngi dng nht thit phi g phm "".
V d, khi ngi dng g lnh xem thng tin v cc file:
# ls -l g
V d, khi gii thiu v ty chn lnh ca lnh tail xem phn cui ni dung ca file,
chng ta thy:
-f, --follow[={tn | c t}]
Nh vy, sau tham s kha --follow, nu xut hin thm du bng "="
th phi c hoc tn hoc c t. y l trng hp cc chn la "loi tr nhau".
Du ba chm ... th hin vic lp li thnh phn c php i ngay trc du
ny, vic lp li c th t khng n nhiu ln (khng k chnh thnh phn c
php ). Cch thc ny thng c dng vi cc tham s nh tn file.
V d, m t lnh chown nh sau:
chown [ty-chn] <ch>[,[nhm]]<file>...
Nh vy trong lnh chown c th khng c hoc c mt s ty chn lnh v c t mt
n nhiu tn file.
Cc b phn trong m t lnh, nu khng nm trong cc cp du [ ], <>, { }
th khi g lnh thc s phi g y ng nh khi m t (ch , quy tc vit tn lnh l
mt trng hp ring ca quy tc ny).
Vic kt hp cc du ngoc vi nhau cho php to ra cch thc s dng quy
tc t hp cc tham s trong lnh. V d, lnh more bnh thng c c php l:
# more <file>
c ngha l thay <file> bng tn file cn xem ni dung, nu kt hp thm du ngoc vung [
v ], tc l c dng sau (chnh l dng tng qut ca lnh more):
# more [<file>]
th <file> ni chung phi c trong lnh more, tuy nhin trong mt s trng hp c th b
qua tham s file.
Lu :
i vi nhiu lnh, cho php ngi dng g tham s kha kt hp tng
ng vi ty_chn trong m t lnh. Tham s kha kt hp c vit theo cch <xu-k-t>, trong xu-k-t gm cc ch ci trong tham s kha. V d,
trong m t lnh in lch cal:
cal [ty-chn] [thng [nm] ]
c ba tham s kha l -m, -j, -y. Khi g lnh c th g mt t hp no t ba
tham s kha ny c tnh hung s dng lnh theo mun. Chng hn,
nu g lnh
cal -mj 3
th lnh cal thc hin theo iu khin ca hai tham s kha -m (chn Th Hai
l ngy u tun, thay v cho ngm nh l Ch Nht) v -j (hin th ngy trong
thng di dng s ngy trong nm k t u nm). V vy, khi vit [ty-chn]
trong m t lnh biu th c vic s dng tng ty chn, nhiu ty chn hoc kt
hp cc tu chn.
Trong mt s lnh, c hai tham s kha cng tng ng vi mt tnh hung
thc hin lnh, trong mt tham s gm mt k t cn tham s kia li l mt t.
Tham s di mt t l tham s chun ca lnh, cn tham s mt k t l cch vit
ngn gn. Tham s chun dng c trong mi Linux v khi g phi c k t
trong t.
1
8
info-dir
mail.rc
mtab
shadowsyslog.conf
temp
initlog.conf
mailcap
mtools.conf
shells
temp
termcap
inittab
minicom.users
services
smb.conf
termcap
lynx.cfg
motd
shadow
sysctl.conf
up2date.conf
shadow-
shells sysctl.conf
initlog.conf inittab
shadowshells
syslog.conf
services
smb.conf
Lu :
Nh vy, Linux (v UNIX ni chung) khng ch s dng hai k t m t
nhm * v ? m cn c cch thc s dng cp k t [ v ].
Cn phn bit cp du [ v ] c s dng khi ngi dng g lnh c
ngha hon ton khc vi ngha ca chng khi c s dng trong m t lnh.
Hn th na, Linux cn cung cp cho ngi dng cch thc s dng phm <TAB>
hon thnh nt tn file (tn th mc) trong lnh. V d, khi chng ta g dng lnh
# ls /u<TAB>local<TAB>b<TAB>
th n cng tng ng nh g dng lnh (v y chnh l ni dung xut hin ti du nhc
shell):
# ls /usr/local/bin
vi iu kin trong th mc /usr ch c th mc local c bt u bi ch "l" v trong th
mc local cng ch c th mc bin c bt u bi ch "b".
Trong trng hp nu nh mt k t cha xc nh, ngi dng cn g thm k t tip
theo trong tn file (tn th mc) v nhn phm <TAB> hon thnh dng lnh.
1.3.4. Tip ni dng lnh
Nh lu trn y, mt dng lnh c th gm mt hoc mt s lnh, mt khc tham
s ca lnh c th l rt di khng th trong khun kh ca mt dng vn bn c. Khi g
lnh, nu dng lnh qu di, Linux cho php ngt dng lnh xung dng di bng cch
thm k t bo hiu chuyn dng "\" ti cui dng; trong trng hp , k t "\" phi l k
t cui cng thuc dng lnh trc.
V d,
# cd vsd\
thumuc
th dng th hai l phn tip theo ca dng th nht v kt hp c hai dng ny thc cht l
mt dng lnh Linux.
2
1
2
2
hboot
htdigest
hoststat
hinotes
hexbin
help
h2xs hcc
htpasswd
host
hipstopgm
hexdump
helpme
halt
hpcdtoppm
hostid
history
hf77
hcp
hash
hpftodit
pwconv
pwd
pwdb_chkpwd
pwunconv
Trong trng hp ny, ngi dng s nhn bit c tn lnh ang cn tm thun tin
hn.
2
3
T
heo
s ny, LILO c ti vo my thc hin m vic u tin l a nhn vo b nh
trong v sau ti chng trnh init thc hin vic khi ng Linux.
Nu ci t nhiu phin bn Linux hay ci Linux cng cc h iu hnh khc (trong cc
trng hp nh th, mi phin bn Linux hoc h iu hnh khc c gn nhn - label
phn bit), th thng bo sau y c LILO a ra:
Nhn
init
LILO boot:
cho php nhp xu l nhn ca mt trong nhng h iu hnh hin c trn my khi
ng n. Ti thi im , ngi dng cn g nhn ca h iu hnh cn khi ng vo, v
d, g
LILO boot: linux
Dng th nht v dng th hai cho bit loi phin bn Linux, phin bn ca nhn v
Chng ta c th thay i cc dng hin th nh trnh by trn y bng cch sa
i file /etc/rc.d/rc.local nh sau:
Thay on chng trnh
echo "" > /etc/issue
echo "$R" >> /etc/issue
echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue
cp -f /etc/issue /etc/issue.net
echo >> /etc/issue
thnh
echo "" > /etc/issue
echo "Thng bo mun hin th" >> /etc/issue
v d sa thnh:
echo "" > /etc/issue
echo "This is my computer" >> /etc/issue
th trn mn hnh ng nhp s c dng sau:
This is my computer
hostname login:
kin trc phn cng c trn my, dng th ba l du nhc ng nhp ngi dng thc
hin vic ng nhp. Ch l cc dng trn y c th thay i cht t ty thuc vo phin
bn Linux.
Ti du nhc ng nhp, hy nhp tn ngi dng (cn gi l tn ng nhp): y l tn
k hiu cung cp cho Linux nhm nhn din mt ngi dng c th. Tn ng nhp ng
vi mi ngi dng trn h thng l duy nht, km theo mt mt khu ng nhp.
May1 login: root
Password:
2
5
Nu ng nhp thnh cng, ngi dng s nhn thy mt s thng tin v h thng, mt
vi tin tc cho ngi dng... Lc , du nhc shell xut hin ngi dng bt u phin
lm vic ca mnh.
May1 login: root
Password:
Last login: Fri Oct 27 14:16:09 on tty2
Root[may1 /root]#
Dy k t trong dng cui cng chnh l du nhc shell. Trong du nhc ny, root l
tn ngi dng ng nhp, may1 l tn my v /root tn th mc hin thi (v y l ngi
dng root). Khi du nhc shell xut hin trn mn hnh th iu c ngha l h iu hnh
sn sng tip nhn mt yu cu mi ca ngi dng.
Du nhc shell c th khc vi trnh by trn y (Mc 2.7 cung cp cch thay i du
nhc shell), nhng c th hiu n l chui k t bt u mt dng c cha tr chut v lun
xut hin mi khi h iu hnh hon thnh mt cng vic no .
2.2.2. Ra khi h thng
kt thc phin lm vic ngi dng cn thc hin th tc ra khi h thng. C rt
nhiu cch cho php thot khi h thng, y chng ta xem xt mt s cch thng dng
nht.
Cch n gin nht m bo thot khi h thng ng n l nhn t hp
phm CTRL+ALT+DEL. Khi , trn mn hnh s hin th mt s thng bo ca h
thng v cui cng l thng bo thot trc khi tt my. Cn ch l: Nu ang lm
vic trong mi trng X Window System, hy nhn t hp phm
CTRL+ALT+BACKSPACE trc ri sau hy nhn CTRL+ALT+DEL.
Cch th hai l s dng lnh shutdown vi c php nh sau:
shutdown [ty-chn] <time> [cnh-bo]
Lnh ny cho php dng tt c cc dch v ang chy trn h thng.
Cc ty-chn ca lnh ny nh sau:
-k : khng thc s shutdown m ch cnh bo.
-r : khi ng li ngay sau khi shutdown.
-h : tt my thc s sau khi shutdown.
-f : khi ng li nhanh v b qua vic kim tra a.
2
6
2
7
Trong Linux c mt s loi giao din ho do mt s t chc vit ra. Hai t chc ni
ting l GNOME (http://www.gnome.org) v KDE (http://www.kde.org) vit ra cc giao
din ho mang tn trng vi t chc l GNOME v KDE.
Cng tu vo vic c ci giao din GNOME hay KDE m khi khi ng vo ch
ho, my tnh c cc giao din tng ng. Trn hnh trn l giao din GNOME m khi
khi ng vo ch ho. Mt khc, cc giao din ny lin tc c pht trin, do
2
9
mi phin bn s c s khc nhau. Trong giao din ng nhp ha, h thng hin th hp
thoi cho php ngi dng nhp vo tn ti khon; sau khi ngi dng nhp tn ti khon
ca mnh, h thng hi tip mt khu. Nu c tn ti khon v mt khu u chnh xc th
ngi dng c php vo h thng v mt giao din lm vic mi s hin ra nh hnh
di.
ngi dng nhp mt khu mi ca mnh vo. Sau khi ngi dng g xong mt khu
mi, h thng cho ra thng bo:
BAD PASSWORD: it is derived from your password entry
Retype new UNIX password:
V sau khi chng ta khng nh li mt khu mi, h thng cho ra thng bo:
Passwd: all authentication tokens updated successfully.
cho bit vic thay i mt khu thnh cng v du nhc shell li hin ra.
Khi siu ngi dng g lnh:
3
1
# passwd -S root
s hin ra thng bo
Changing password for user root
Password set, MD5 encryption
2.4. Lnh xem, thit t ngy, gi hin ti v xem lch trn h thng
2.4.1 Lnh xem, thit t ngy, gi
Lnh date cho php c th xem hoc thit t li ngy gi trn h thng.
C php ca lnh gm hai dng, dng xem thng tin v ngy, gi:
date [ty-chn] [+nh-dng]
v dng thit t li ngy gi cho h thng:
date [ty-chn] [MMDDhhmm[ [CC[YY] ]-ss]]
Cc ty-chn nh sau:
-d, --date=xu-vn-bn : hin th thi gian di dng xu-vn-bn, m khng ly "thi
gian hin ti ca h thng nh theo ngm nh; xu-vn-bn c t trong hai du nhy n
hoc hai du nhy kp.
-f, --file=file-vn-bn : ging nh mt tham s --date nhng ng vi nhiu ngy cn xem:
mi dng ca file-vn-bn c vai tr nh mt xu-vn-bn trong trng hp tham s --date.
-I, --iso-8601[=m-t] : hin th ngy gi theo chun ISO-8601 (v d: 2000-11-8).
-I tng ng vi tham s --iso-8601='date'
Vi --iso-8601: nu m-t l 'date' (hoc khng c) th hin th ngy, nu m-t l
'hours' hin th ngy+gi, nu m-t l 'minutes': ngy+gi+pht; nu m-t l
'seconds': ngy + gi + pht + giy.
-r, --reference= file : hin th thi gian sa i file ln gn y nht.
-R, --rfc-822 : hin th ngy theo RFC-822 (v d: Wed, 8 Nov 2000 09:21:46 -0500).
-s, --set=xu-vn-bn : thit t li thi gian theo kiu xu-vn-bn.
-u, --utc, --universal : hin th hoc thit t thi gian theo UTC (v d: Wed Nov 8 14:29:12
UTC 2000).
--help : hin th thng tin tr gip v thot.
3
2
Trong dng lnh date cho xem thng tin ngy, gi th tham s nh-dng iu khin
cch hin th thng tin kt qu. nh-dng l dy c t mt n nhiu cp gm hai k t,
trong mi cp k t u tin l % cn k t th hai m t nh dng.
Do s lng nh dng l rt nhiu v vy chng ta ch xem xt mt s nh dng in
hnh ( xem y cc nh dng, s dng lnh man date).
Di y l mt s nh dng in hnh:
%% : Hin ra chnh k t %.
%a : Hin ra thng tin tn ngy trong tun vit tt theo ngn ng bn a.
%A : Hin ra thng tin tn ngy trong tun vit y theo ngn ng bn a.
%b : Hin ra thng tin tn thng vit tt theo ngn ng bn a.
%B : Hin ra thng tin tn thng vit y theo ngn ng bn a.
Trong dng lnh date cho php thit t li ngy gi cho h thng th tham s
[MMDDhhmm[ [CC[YY] [.ss]] m t ngy, gi mi cn thit t, trong :
MM:
hai s ch thng,
DD:
hai s ch ngy trong thng,
hh:
hai s ch gi trong ngy,
mm:
hai s ch pht,
CC:
hai s ch th k,
YY:
hai s ch nm trong th k.
Cc dng ngay di y trnh by mt s v d s dng lnh date, mi v d c cho
tng ng vi mt cp hai dng, trong dng trn m t lnh c g cn dng di l
thng bo ca Linux.
# date
Wed Jan 3 23:58:50 ICT 2001
# date -d='01/01/2000'
Sat Jan 1 00:00:00 ICT 2000
# date -iso-8601='seconds'
2000-12-01T00:36:41-0500
# date -d='01/01/2001'
Mon Jan 1 00:00:00 ICT 2001
# date 010323502001.50
Wed Jan 3 23:50:50 ICT 2001
# date +%a%A
Wed Wednesday
# date +%a%A%b%B
Wed Wednesday Jan January
# date +%D%%%j
01/05/01%005
Tu
2
9
16
23
30
We
3
10
17
24
31
Th
4
11
18
25
Fr
5
12
19
26
Sa
6
13
20
27
Khi nhp dng lnh trn, trn mn hnh s hin th lch ca thng 1 nm 2001, mc nh
chn ngy ch nht l ngy bt u ca tun. Di y l v d hin th s ngy trong thng
3 di dng s ngy trong nm 2001.
# cal -j 3 2001
March 2001
Su
Mo
63
70
77
84
64
71
78
85
Tu
We
65
72
79
86
66
73
80
87
Th
60
67
74
81
88
Fr
61
68
75
82
89
Sa
62
69
76
83
90
#
Thng tin hin ra c tt c 6 trng l:
Tn h iu hnh: Linux
Tn my: linuxsrv.linuxvn.net
Tn nhn ca h iu hnh: 2.2.14-5.0
Ngy sn xut: #1 Tue Mar 7 21:07:39 EST 2000
Kiu kin trc b x l: i686
Kiu b x l ca my ch: unknown
V d nu g lnh:
# uname -spr
th mn hnh s hin ra nh sau:
Linux 2.2.14-5.0 unknown
Cp k t iu khin
ngha
3
5
\!
\#
\$
\\
\d
\h
\n
\s
\t
\u
\W
\w
-s, --standard : thc hin php tnh chnh xc theo chun ca ngn ng POSIX bc.
-q, --quiet : khng hin ra li gii thiu v phn mm GNU khi dng bc.
Tham s file l tn file cha chng trnh vit trn ngn ng bc, khi lnh bc thc hin
s t ng chy cc file chng trnh ny (Nu c nhiu tham s th c ngha s chy nhiu
chng trnh lin tip nhau).
Di y l mt v d s dng lnh bc dng n gin nht.
Khi g lnh ti du nhc:
# bc -l
mn hnh xut hin li gii thiu v GNU khi dng bc v ngn ng bc c kch hot
phc v ngi dng.
bc 1.05
Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc.
This is free software with ABSOLUTELY NO WARRANTY.
For details type `warranty'.
5^3
125
12+12+78*7-62/4
554.50000000000000000000
a=4
a^a
256
a*78
312
b=45
a*b
180
a/b
.08888888888888888888
a%b
.00000000000000000040
y * l php nhn, ^ l php tnh lu tha, / l php chia ly thng, % l chia ly phn
d.
Lu :
Ngn ng lp trnh tnh ton bc l mt ngn ng rt mnh c ni dung ht
sc phong ph cho nn trong khun kh ca ti liu ny khng th m t ht cc ni
dung ca ngn ng c. Chng ta cn s dng lnh man bc nhn c
thng tin y v lnh bc v ngn ng tnh ton bc.
y trnh by s b mt s yu t c bn nht ca ngn ng (bt l vit
tt ca biu thc, b l vit tt ca bin):
Cc php tnh: - bt: ly i; ++ b, --b, b ++, b --: php ton tng, gim b; cc
php ton hai ngi cng +, tr -, nhn *, chia /, ly phn d %, ly tha nguyn
3
7
bc ^; gn =; gn sau khi thao tc <thao tc>=; cc php ton so snh <, <=, >,
>=, bng ==, khc != ...
Php so snh cho 1 nu ng, cho 0 nu sai.
Bn bin chun l scale s lng ch s phn thp phn; last gi tr tnh ton
cui cng; ibase c s h m i vi input v obase l c s h m vi output
(ngm nh hai bin ny c gi tr 10).
Cc hm chun sin s (bt); cosin c (bt); arctg a (bt); lgarit t nhin l (bt); m c
s t nhin e (bt); hm Bessel bc nguyn n ca bt l j (n, bt).
3
8
3
9
Nu trong tn th mc/file c cha khong trng, s phi t tn th mc/file
vo trong cp du nhy kp s dng th mc/file . V d, to th mc c tn l
My document chng hn, hy nh dng lnh sau:
# mkdir "My document"
Mt s k t sau khng c s dng trong tn th mc/file: !, *, $, &, # ...
Khi s dng chng trnh mc (Midnight Commander), vic hin th tn file s
b sung mt k t theo ngha: du "*" cho file kh thi trong Linux, du "~" cho file sao
lu, du "." cho file n, du "@" cho file lin kt...
Tp hp tt c cc file c trong h iu hnh c gi l h thng file l mt h thng
thng nht. Bi chnh t cch thc s dng th mc, h thng file c t chc lgic theo
dng hnh cy: H thng file c xut pht t mt th mc gc (c k hiu l "/") v
cho php to ra th mc con trong mt th mc bt k. Thng thng, khi khi to Linux
c ngay h thng file ca n. Hnh 3.1. cho minh ha mt phn trong cy lgic ca h
thng file.
root
peng
bin
etc
usr
home dev
tty00 tty01
xinit
Xclients
Xmodmap
Hnh 3.1. Mt phn cu trc lgic dng cy ca h thng File
4
0
Tn file thng l tham s thc s khi g lnh v cng vic g lnh tr nn rt nng n
i vi ngi dng nu nh trong lnh phi g mt ng dn di theo dng trn (c
bit vi tn gi l ng dn tuyt i). V vy, Linux (cng nh nhiu h iu hnh khc)
s dng khi nim th mc hin thi ca mi ngi dng lm vic trong h thng. Th
mc hin thi l mt th mc trong h thng file m hin thi "ngi dng ang ".
Qua th mc hin thi, Linux cho php ngi dng ch mt file trong lnh ngn gn
hn nhiu. V d, nu th mc hin thi l th mc xinit th ch file ni, ngi dng
ch cn vit Xclients hoc ./Xclients trong k hiu "." ch th mc hin thi.
ng dn c xc nh qua th mc hin thi c gi l ng dn tng i.
Khi mt ngi dng ng nhp vo h thng, Linux lun chuyn ngi dng vo th
mc ring, v ti thi im th mc ring l th mc hin thi ca ngi dng. Th
mc ring ca siu ngi dng l /root, th mc ring ca ngi dng c tn l user1 l
/home/user1 ... Linux cho php dng lnh cd chuyn sang th mc khc (ly th
mc khc lm th mc hin thi). Hai du chm ".." c dng ch th mc ngay trn
th mc hin thi (cha ca th mc hin thi).
Linux cn cho php ghp mt h thng file trn mt thit b nh (a mm, vng a
cng cha c a vo h thng file) thnh mt th mc con trong h thng file ca h
thng bng lnh mount. Cc h thng file c ghp thuc vo cc kiu khc nhau.
Hai mc tip theo (3.1.2 v 3.1.3.) gii thiu nhng ni dung su hn v h thng file
Linux.
3.1.2. S b kin trc ni ti ca h thng file
Trn a t, h thng file c coi l dy tun t cc khi lgic mi khi cha hoc
512B hoc 1024B hoc bi ca 512B l c nh trong mt h thng file. Trong h thng
file, cc khi d liu c a ch ha bng cch nh ch s lin tip, mi a ch c
cha trong 4 byte (32 bit).
Cu trc ni ti ca h thng file bao gm 4 thnh phn k tip nhau: Boot block (dng
khi ng h thng), Siu khi (Super block), Danh sch inode v Vng d liu.
Di y, chng ta xem xt s lc ni dung cc thnh phn cu trc ni ti mt h
thng file.
Siu khi
Siu khi cha nhiu thng tin lin quan n trng thi ca h thng file. Trong siu
khi c cc trng sau y:
Kch thc ca danh sch inode (khi nim inode s c gii thch trong
mc sau): nh kch c vng khng gian trn H thng file qun l cc inode.
Kch thc ca h thng file.
Hai kch thc trn y tnh theo n v dung lng b nh ngoi,
Mt danh sch ch s cc khi ri (thng trc trn siu khi) trong h
thng file.
4
1
Ch s cc khi ri thng trc trn siu khi c dng p ng nhu cu phn phi
mi. Ch rng, danh sch ch s cc khi ri c trn siu khi ch l mt b phn ca tp
tt c cc khi ri c trn h thng file.
Ch s ca khi ri tip theo trong danh sch cc khi ri.
Ch s khi ri tip theo dng h tr vic tm kim tip cc khi ri: bt u tm t
khi c ch s ny tr i. iu c ngha l mi khi c ch s khng ln hn ch s ny
hoc c trong danh sch cc khi ri thng trc hoc c cp pht cho mt file no
.
Nhiu thao tc to file mi, xo file, thay i ni dung file v.v. cp nht cc thng tin ny.
Mt danh sch cc inode ri (thng trc trn siu khi) trong h thng file.
Danh sch ny cha ch s cc inode ri c dng phn phi ngay c cho mt
file mi c khi to. Thng thng, danh sch ny ch cha mt b phn cc inode ri
trn h thng file.
Ch s inode ri tip theo trong danh sch cc inode ri.
Ch s inode ri tip theo nh v vic tm kim tip thm inode ri: bt u tm t
inode c ch s ny tr i. iu c ngha l mi inode c ch s khng ln hn ch s
ny hoc c trong danh sch cc inode ri thng trc hoc c tng ng vi mt file
no .
Hai tham s trn y to thnh cp xc nh c danh sch cc inode ri trn h thng
file cc thao tc to file mi, xo file cp nht thng tin ny.
Cc trng kha (lock) danh sch cc khi ri v danh sch inode ri: Trong
mt s trng hp, chng hn khi h thng ang lm vic thc s vi a t cp
nht cc danh sch ny, h thng khng cho php cp nht ti hai danh sch ni
trn.
C ch dn v vic siu khi c bin i: nh k thi gian siu khi
b nh trong c cp nht li vo siu khi a t v v vy cn c thng tin v
vic siu khi b nh trong khc vi ni dung b nh ngoi: nu hai bn khng
ging nhau th cn phi bin i chng c ng nht.
C ch dn rng h thng file ch c th c (cm ghi): Trong mt s trng
hp, h thng ang cp nht thng tin t b nh ngoi th ch cho php c i vi
h thng file,
S lng tng cng cc khi ri trong h thng file,
S lng tng cng cc inode ri trong h thng file,
Thng tin v thit b,
Kch thc khi (n v phn phi d liu) ca h thng file. Hin ti kch
thc ph bin ca khi l 1KB.
Trong thi gian my hot ng, theo tng giai on, nhn s a siu khi ln a nu
n c bin i ph hp vi d liu trn h thng file.
Mt trong khi nim ct li xut hin trong h thng file l inode. Cc i tng lin
quan n khi nim ny s c trnh by trong cc mc tip theo.
4
2
Inode
Mi khi mt qu trnh khi to mt file mi, nhn h thng s gn cho n mt inode
cha s dng. hiu r hn v inode, chng ta xem xt s lc mi quan h lin quan
gia file d liu v vic lu tr trn vt dn ngoi i vi Linux.
Ni dung ca file c cha trong vng d liu ca h thng file v c phn chia cc
khi d liu (cha ni dung file) v hnh nh phn b ni dung file c trong mt inode
tng ng. Lin kt n tp hp cc khi d liu ny l mt inode, ch thng qua inode mi
c th lm vic vi d liu ti cc khi d liu: Inode cha dng thng tin v tp hp cc
khi d liu ni dung file. C th quan nim rng, t hp gm inode v tp cc khi d liu
nh vy l mt file vt l: inode c thng tin v file vt l, trong c a ch ca cc khi
nh cha ni dung ca file vt l. Thut ng inode l s kt hp ca hai t index vi node
v c s dng ph dng trong Linux.
Cc inode c phn bit nhau theo ch s ca inode: chnh l s th t ca inode
trong danh sch inode trn h thng file. Thng thng, h thng dng 2 bytes lu tr
ch s ca inode. Vi cch lu tr ch s nh th, khng c nhiu hn 65535 inode trong
mt h thng file.
Nh vy, mt file ch c mt inode song mt file li c mt hoc mt s tn file. Ngi
dng tc ng thng qua tn file v tn file li tham chiu n inode (tn file v ch s
inode l hai trng ca mt phn t ca mt th mc). Mt inode c th tng ng vi mt
hoc nhiu tn file, mi tng ng nh vy c gi l mt lin kt. Inode c lu tr ti
vng danh sch cc inode.
Trong qu trnh lm vic, Linux dng mt vng b nh, c gi l bng inode (trong
mt s trng hp, n cn c gi tng minh l bng sao in-core inode) vi chc nng
tng ng vi vng danh sch cc inode c trong h thng file, h tr cho qu trnh truy
nhp d liu trong h thng file. Ni dung ca mt in-core inode khng ch cha cc thng
tin trong inode tng ng m cn c b sung cc thng tin mi gip cho qu trnh x l
inode.
Chng ta xem xt cu trc ni ti ca mt inode thy c s trnh by ni ti ca
mt file. Inode bao gm cc trng thng tin sau y:
Kiu file. Trong Linux phn loi cc kiu file: file thng thng (regular),
th mc, c t k t, c t khi v ng dn FIFO (pipes). Linux quy nh trng
kiu file c gi tr 0 tng ng l inode cha c s dng.
Quyn truy nhp file. Trong Linux, file l mt ti nguyn chung ca h
thng v vy quyn truy nhp file c c bit quan tm trnh nhng trng hp
truy nhp khng hp l. i vi mt inode, c 3 mc quyn truy nhp lin quan n
cc i tng:
mc ch ca file (i tng ny c k hiu l u: t ch user),
mc nhm ngi dng ca ch nhn ca file (i tng ny c k hiu
l g: t ch group),
mc ngi dng khc (i tng ny c k hiu l a: t ch all).
Quyn truy nhp l c, ghi, thc hin hoc mt t hp no t nhm gm 3 quyn
trn. Ch rng, quyn thc hin i vi mt th mc tng ng vi vic cho php tm
mt tn file c trong th mc .
S lng lin kt i vi inode: y chnh l s lng cc tn file trn cc
th mc c lin kt vi inode ny,
4
3
nh danh ch nhn ca inode,
nh danh nhm ch nhn: xc nh tn nhm ngi dng m ch file l
mt thnh vin ca nhm ny,
di ca file tnh theo byte,
Thi gian truy nhp file:
thi gian file c sa i mun nht,
thi gian file c truy nhp mun nht,
thi gian file c khi to,
Bng a ch cha cc a ch khi nh cha ni dung file. Bng ny c 13 phn
t a ch, trong c 10 phn t trc tip, 1 phn t gin tip bc 1, 1 phn t
gin tip bc 2 v mt phn t gin tip bc 3 (chi tit c trong phn sau).
Ni dung ca file thay i khi c thao tc ghi ln n; ni dung ca mt inode thay i
khi ni dung ca file thay i hoc thay i ch hoc thay i quyn hoc thay i s lin
kt.
V d v ni dung mt inode nh sau:
type regular
perms rwxr-xr-x
links 2
owner 41CT
group 41CNTT
size 5703 bytes
accessed Sep 14 1999 7:30 AM
modified Sep 10 1999 1:30 PM
inode Aug 1 1995 10:15 AM
Cc phn t a ch d liu
Bn sao in-core inode cn b sung thm trng trng thi ca in-core inode.
Trng trng thi ca in-core inode c cc thng tin sau:
inode b kho,
mt qu trnh ang ch i khi inode tho kha,
in-core inode khc vi inode do s thay i d liu trong inode,
in-core inode khc vi inode do s thay i d liu trong file,
s lng cc tn file ni vi file ang c m,
s hiu thit b lgic ca h thng file cha file ni trn
ch s inode: dng lin kt vi inode trn a,
cc mc ni ti cc in-core inode khc. Trong b nh trong, cc in-core
inode c lin kt theo mt hng bm v mt danh sch t do. Trong
danh sch hng bm cc in-core inode ha hp theo s hiu thit b lgic
v s hiu inode.
Trong qu trnh h thng lm vic, ny sinh khi nim inode tch cc nu nh c mt
qu trnh ang lm vic vi inode (nh m file).
Mt inode thuc vo danh sch cc inode ri khi khng c file vt l no tng ng vi
inode .
4
4
iget
getblk
S dng namei
open
creat
chdir
chroot
chown
chmod
gn inode
thuc
Vo-ra Cu trc h Qun
tnh file
file
thng file l cy
chown
read
mont
chdir
chmod
write
umount
chown
stat
cseek
stat
creat
link
mknod
unlink link
mknod unlink
mount
umount
Thut ton h thng file mc thp
Namei
iput
Ialloc
ifree
alloc
Thut ton nh v buffer
brelse
Bread
breada
free
bmap
bwrite
4
5
4
6
4
7
H thng file ADFS: ADFS vit tt ca Acorn Disc Filing System l h thng file
chun trn h iu hnh RiscOS. Vi s h tr ny, Linux c th truy cp vo cc phn
vng a nh dng theo h thng file ADFS.
H thng file AFFS: AFFS (The Amiga Fast File System) l mt h thng file ph bin
ca h iu hnh AmigaOS phin bn 1.3 chy trn cc my Amiga.
H thng file CODA: CODA l mt h thng file mng cho php ngi dng c th kt
gn cc h thng file t xa v truy cp chng nh cc h thng file cc b (local).
H thng file DEVPTS: H thng file cho Unix98 PTYs.
H thng file EFS: y l mt dng h thng file s dng cho CDROM.
H thng file EXT2: H thng file EXT2 (The second extended filesystem) l h thng
c dng ch yu trn cc phin bn ca h iu hnh Linux. Chng ta s tr li ngin
cu h thng file ny trong cc phn sau.
H thng file HFS: y l h thng file chy trn cc my Apple Macintosh.
H thng file HPFS: HPFS l h thng file c s dng trong h iu hnh OS/2.
Linux h tr h thng file ny mc ch c (read only).
H thng file ISOFS: y l h thng file c s dng cho cc a CD. H thng
thng dng nht cho cc a CD hin nay l ISO 9660. Vi s h tr ny, h thng
Linux c th truy cp d liu trn cc a CD.
H thng file MINIX: MINIX l h thng file u tin m Linux h tr. H thng file
ny c s dng trong h iu hnh Minix v mt s h thng Linux c.
H thng file MSDOS: Vi s h tr ny, h thng Linux c th truy cp c cc
phn vng ca h iu hnh MSDOS. Linux cng c th s dng kiu MSDOS truy
cp cc phn vng ca Window 95/98 tuy nhin khi , cc u im ca h iu hnh
Window s khng cn gi tr v d nh tn file ch ti a 13 k t (k c m rng).
H thng file NFS: NFS (Network File System) l mt h thng file trn mng h tr
vic truy cp d liu t xa ging nh h thng file CODA. Vi NFS, cc my chy
Linux c th chia s cc phn vng a trn mng s dng nh l cc phn vng cc
b ca chnh my mnh.
H thng file NTFS: Vi s h tr ny, h thng Linux c th truy cp vo cc phn
vng ca h iu hnh Microsoft Window NT.
H thng file PROC: y l mt h thng file c bit c Linux h tr. H thng file
PROC khng chim mt phn vng no ca h thng v cng khng qun l cc d
liu lu tr trn a. PROC hin th ni dung ca chnh nhn h thng. Cc file trong h
thng file PROC lu tr cc thng tin v trng thi hin hnh ca nhn. Thng tin v
mi mt tin trnh ang thc hin trong h thng c lu trong mt th mc mang tn
ng vi ch s process ID ca tin trnh . Ngi dng c th s dng h thng file
PROC ly cc thng tin v nhn cng nh sa i mt s gi tr ca nhn thng qua
sa i ni dung ca cc file trong h thng file ny. Tuy nhin, vic sa i trc tip
nh trn tng i nguy him, d gy v h thng.
H thng file QNX4: y l h thng file c s dng trong h iu hnh QNX 4.
4
8
4
9
H thng file o VFS c thit k cung cp mt giao din thng nht v cc file c
lu tr trn cc thit b. Hnh 3.3 m t mi quan h gia VFS vi cc h thng file thc v
Ext2
Minix
Msdos
Vfat
Buffer cache
Device driver
Physical hardware
Hnh 3.3. H thng file o
VFS
cc thit b lu tr.
VFS c trch nhim cung cp cho chng trnh ngi dng mt giao din nht qun v h
thng file thng qua cc lnh gi h thng (system call). Mi khi c mt yu cu truy cp
file, VFS s da vo cc h thng file thc tm kim file yu cu trn cc thit b vt l.
Vi mi file tm c, n thc hin thao tc m file v cho tng ng file vi mt cu
trc d liu gi l i-node. VFS cung cp rt nhiu lnh gi thao tc vi h thng file
nhng ch yu thuc vo cc loi sau:
Cc thao tc lin quan ti h thng file.
Cc thao tc lin quan ti i-node.
Cc thao tc vi file ang m.
Cc thao tc vi vng m d liu.
3.1.5. Lin kt tng trng (lnh ln)
Trong Linux c hai kiu lin kt l lin kt tng trng (lin kt mm) v lin kt
cng.
5
0
5
1
drwxr-xr-x
Tp hp
quyn truy
nhp
12 root root
S lin kt Ngi
n file
ch file
(th mc)
4096
Ngy gi Tn file
to file
Kiu file
Th mc (directory)
File kiu khi (block-type special file)
File kiu k t (character-type special file)
Lin kt tng trng (symbolic link)
File ng ng (pipe)
Socket
File bnh thng (regular file)
Chn k t tip theo trong chui l quyn truy nhp c chia ra lm 3 nhm tng ng
vi quyn truy nhp ca ngi s hu, nhm s hu v ngi dng khc.
V d, 10 k t u tin trong dng v d ngay trc y s c phn tch thnh:
hiu c chnh xc quyn truy nhp c ngha nh th no i vi h thng my
tnh,
d rwx r-x r-x
phi
nh
rng
Quyn ca
Quyn ca
Quyn ca
Linux Kiu file: th
mc
ngi
ch
nhm
ch
ngi
dng khc
xem
mi
th
u l file. Nu ci t mt ng dng, n cng s c xem nh mi chng trnh khc,
tr mt iu: h thng nhn bit rng mt ng dng l mt chng trnh kh thi, tc l n
c th chy c. Mt bc th gi cho m l mt dng file vn bn bnh thng, nhng
5
2
ngha
Khng cho php mt quyn truy nhp no
Ch c quyn c
Quyn c v thc hin (cho chng trnh v shell script)
Quyn c v ghi
Cho php tt c cc quyn truy nhp (cho chng trnh)
Tuy nhin, i vi th mc th ch c ba loi k hiu ca cc quyn truy nhp l: ---, rx v rwx, v ni dung ca th mc l danh sch ca cc file v cc th mc con c bn
trong th mc . Quyn c mt th mc l c xem ni dung ca th mc v quyn
thc hin i vi mt th mc l quyn tm c file v th mc con c trong th mc.
Nh vy, vi v d ang c xem xt, chng ta nhn c y l mt th mc v
quyn truy nhp n c gii thch nh sau:
d rwx r-x r-x
Kiu file:
th mc
Quyn ca
ngi ch:
c, ghi,
thc hin
Quyn ca
nhm ch:
c, thc
hin
(khng ghi)
Quyn ngi
dng khc:
c, thc hin
(khng ghi)
Gii thch:
S hn ch trng hp v quyn truy nhp th mc c gii thch theo cc lp lun
nh sau:
5
3
Hy hnh dung, gi s ch c quyn c trn th mc, khi s xem c c
nhng file hay th mc no trong th mc nhng li khng th xem c th ni dung
ca mt file hay th mc c trn th mc v khng tm c n.
Hoc gi s c quyn thc hin - quyn ny s cho php tm c file c
trn th mc - nhng li khng c quyn c i vi mt th mc, vy th lm th
no bit c trong th mc c nhng file no.
3.2.2. Cc lnh c bn
a. Thay i quyn s hu file vi lnh chown
thay i quyn s hu i vi mt file, hy s dng lnh chown vi c php nh
sau:
chown [ty-chn] [ch][.nhm] <file ...>
Lnh ny cho php thay ch s hu file. Nu ch c tham s v ch, th ngi dng
ch s c quyn s hu file v nhm s hu khng thay i. Nu theo sau tn ngi ch
l du "." v tn ca mt nhm th nhm s nhm s hu file. Nu ch c du "." v
nhm m khng c tn ngi ch th ch c quyn s hu nhm ca file thay i, lc ny,
lnh chown c tc dng ging nh lnh chgrp (lnh chgrp c trnh by di y).
Cc ty chn ca lnh chown:
-c, --changes : hin th dng thng bo ch vi cc file m lnh lm thay i s hu (s thng
bo hin ra c th t hn trng hp -v, -verbosr).
-f, --silent, --quiet : b qua hu ht cc thng bo li.
-R, --recursive : thc hin i quyn s hu i vi th mc v file theo quy.
-v, --verbose : hin th dng thng bo vi mi file lin quan m chown tc ng ti (c hoc
khng thay i s hu).
--help : a ra trang tr gip v thot.
V d, th mc LinuxVN.com c thng tin v cc quyn truy nhp nh sau:
drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com
5
5
Thao tc thay i
Kiu truy cp
+ (thm quyn)
r=read (quyn c)
- (g b quyn)
C th kt hp cc mc t hp th nht v hp th ba vi mt mc t hp th hai
to ra mt mod.
V d, nu mun thm quyn ghi i vi file test cho tt c ngi dng trong nhm s
hu, hy chn g cho nhm s hu, + cho thm quyn truy nhp, v w cho quyn ghi. Lc
lnh chmod s c dng sau:
chmod g+w test
Cch xc lp tng i trong lnh chmod gn ging nh mt menu c nhiu mc chn
khc nhau, cho php kt hp c c s la chn theo yu cu.
Nu quyt nh g b quyn c v thc hin trn file test cho nhng ngi khng cng
nhm, hy chn o cho ngi dng khc, - g b quyn truy nhp, v r,x cho quyn c
v thc hin. Lnh chmod s l:
chmod o-rx test
Cch xc lp tuyt i
i vi ngi dng hiu s b v biu din s trong h c s 8 th cch xc lp tuyt
i li c a chung hn.
Phn 3.2.1. cho bit biu din quyn truy nhp file thng qua dy gm 9 v tr di
dng rwxrwxrwx, trong tng cm 3 v tr theo th t tng ng vi: ch s hu, nhm
s hu v ngi dng khc. Nh vy thuc tnh quyn truy nhp ca mt file c th biu
din thnh 9 bt nh phn trong bt c gi tr 1 th quyn c xc nh, ngc li th
quyn b tho b. Nh vy, ch s hu tng ng vi 3 bt u tin, nhm s hu tng
ng vi 3 bt gia, ngi dng khc tng ng vi 3 bt cui. Mi cm 3 bt nh vy cho
mt ch s h 8 (nhn gi tr t 0 n 7) v thuc tnh quyn truy nhp tng ng vi 3 ch
s h 8.
V d, cp 3 s h 8 l 755 tng ng vi dng 9 bt 111101101 vi 111 cho ch s
hu, 101 cho nhm s hu, 101 cho ngi dng khc. V d lnh:
chmod 753 memo1
t thuc tnh quyn truy nhp i vi file memo1 l rwxr-xr-x. d xc lp 3 ch s
h 8 p dng cch tnh nh sau:
5
6
Quyn
Ch s h 8
Quyn
Ch s h 8
Ch c
Ch c v ghi
Ch ghi
Ch c v thc hin
Ch thc hin
Khng c quyn no
3.3 Thao tc vi th mc
Nh c gii thiu (mc 3.1.1.), Linux t chc h thng file theo cch s dng cc
th mc. Mc ny bt u bng vic gii thiu mt s th mc chnh v tc dng ca
chng trong h thng Linux. Sau mt s lnh thao tc vi th mc c bn nht c
trnh by.
3.3.1 Mt s th mc c bit
* Th mc gc /
y l th mc gc cha ng tt c cc th mc con c trong h thng.
5
7
* Th mc /root
Th mc /root c th c coi l "th mc ring" ca siu ngi dng. Th mc ny
c s dng lu tr cc file tm thi, nhn Linux v nh khi ng, cc file nh phn
quan trng (nhng file c s dng n trc khi Linux c th gn kt n phn vng
/user), cc file ng nhp quan trng, b m in cho vic in n, hay vng lu tm cho vic
nhn v gi email. N cng c s dng cho cc vng trng tm thi khi thc hin cc
thao tc quan trng, v d nh khi xy dng (build) mt gi RPM t cc file RPM ngun.
* Th mc /bin
Trong Linux, chng trnh c coi l kh thi nu n c th thc hin c. Khi mt
chng trnh c bin dch, n s c dng l file nh phn. Nh vy, chng trnh ng
dng trong Linux l mt file nh phn kh thi.
Chnh v l , nhng nh pht trin Linux quyt nh phi t chc mt th mc
"binaries" lu tr cc chng trnh kh thi c trn h thng, chnh l th mc /bin.
Ban u, th mc /bin (bin l vit tt ca t binary) l ni lu tr cc file nh phn
kh thi. Nhng theo thi gian, ngy cng c nhiu hn cc file kh thi c trong Linux, do
, c thm cc th mc nh /sbin, /usr/bin c s dng lu tr cc file .
* Th mc /dev
Mt phn khng th thiu trong bt k my tnh no l cc trnh iu khin thit b.
Khng c chng, s khng th c c bt k thng tin no trn mn hnh ca (cc thng
tin c c do trnh iu khin thit b hin th a ra). Cng khng th nhp c thng
tin (nhng thng tin do trnh iu khin thit b bn phm c v chuyn ti h thng), v
cng khng th s dng a mm ca (c qun l bi trnh iu khin a mm).
Tt c cc trnh iu khin thit b u c lu tr trong th mc /dev.
* Th mc /etc
Qun tr h thng trong Linux khng phi l n gin, chng hn nh vic qun l ti
khon ngi dng, vn bo mt, trnh iu khin thit b, cu hnh phn cng, v.v..
gim bt phc tp, th mc /etc c thit k lu tr tt c cc thng tin hay cc
file cu hnh h thng.
* Th mc /lib
Linux c mt trung tm lu tr cc th vin hm v th tc, l th mc /lib.
* Th mc /lost+found
Mt file c khi phc sau khi c bt k mt vn hoc gp mt li v ghi a trn
h thng u c lu vo th mc ny.
* Th mc /mnt
Th mc /mnt l ni kt ni cc thit b (v d a cng, a mm...) vo h thng
file chnh nh lnh mount. Thng thng cc th mc con ca /mnt chnh l gc ca cc
h thng file c kt ni: /mnt/floppy: a mm, /mnt/hda1: vng u tin ca a cng
th nht (hda), /mnt/hdb3: vng th ba ca a cng th 2 (hdb) ...
5
8
* Th mc /tmp
Th mc /tmp c rt nhiu chng trnh trong Linux s dng nh mt ni lu tr
cc file tm thi.
V d, nu ang son tho mt file, chng trnh s to ra mt file l bn sao tm thi
(bn nhp) ca file v lu vo trong th mc /tmp. Vic son tho thc hin trc tip
trn file tm thi ny v sau khi son tho xong, file tm thi s c ghi ln file gc.
Cch thc nh vy bo m s an ton i vi file cn son tho.
* Th mc /usr
Thng thng th th mc /usr l trung tm lu tr tt c cc lnh hng n ngi
dng (user-related commands). Tuy nhin, ngy nay tht kh xc nh trong th mc ny
c nhng th g, bi v hu ht cc file nh phn cn cho Linux u c lu tr y,
trong ng ch l th mc con /usr/src bao gm cc th mc con cha cc chng
trnh ngun ca nhn Linux.
* Th mc /home
Th mc ny cha cc th mc c nhn ca ngi dng: mi ngi dng tng ng vi
mt th mc con y, tn ngi dng c ly lm tn ca th mc con.
* Th mc /var
Th mc /var c s dng lu tr cc file cha cc thng tin lun lun thay i,
bao gm b m in, vng lu tm thi cho vic nhn v gi th (mail), cc kha qu trnh,
v.v..
* Th mc /boot
L th mc cha nhn ca h thng (Linux-*.*.), System.map (file nh x n cc
driver np cc h thng file khc), nh (image) ca h thng file dng cho initrd
(ramdisk), trnh iu khin cho cc thit b RAID (mt thit b gm mt mng cc a
cng tng tc v an ton khi ghi d liu), cc bn sao lu boot record ca cc
phn vng a khc. Th mc ny cho php khi ng v np li bt k trnh iu khin
no c yu cu c cc h thng file khc.
* Th mc /proc
y l th mc dnh cho nhn (kernel) ca h iu hnh v thc t y l mt h
thng file c lp do nhn khi to.
* Th mc /misc v th mc /opt
Cho php lu tr mi i tng vo hai th mc ny.
* Th mc /sbin
Th mc lu gi cc file h thng thng t ng chy.
3.3.2 Cc lnh c bn v th mc
* Xc nh th mc hin thi vi lnh pwd
C php lnh:
5
9
pwd
Lnh ny cho bit hin ngi dng ang trong th mc no v hin ra theo dng mt ng dn tuyt i.
V d, g lnh pwd ti du nhc lnh sau khi ngi dng lan va ng nhp th mn
hnh hin th nh sau:
# pwd
/home/lan
#
* Xem thng tin v th mc vi lnh ls
S dng lnh ls v mt s cc ty chn ca n l c th bit c mi thng tin v mt
th mc. C php lnh:
ls [ty-chn] [file]...
Lnh ny a ra danh sch cc file lin quan n tham s file trong lnh. Trng hp
ph bin tham s file l mt th mc, tuy nhin trong mt s trng hp khc, tham s file
xc nh nhm (khi s dng cc m t nhm *, ? v cp [ v ]); nu khng c tham s file,
mc nh danh sch cc file c trong th mc hin thi s c hin th.
Cc ty chn ca lnh:
-a : lit k tt c cc file, bao gm c file n.
-l : a ra thng tin y nht v cc file v th mc.
-s : ch ra kch thc ca file, tnh theo khi (1 khi = 1204 byte).
-F : xc nh kiu file (/ = th mc, * = chng trnh kh thi).
-m : lit k cc file c ngn cch nhau bi du ",".
-C : a ra danh sch cc file v th mc theo dng ct (hai th mc gn nhau c xp vo
mt ct).
-1 : hin th mi file hoc th mc trn mt dng.
-t : sp xp cc file v th mc trong danh sch theo th t v thi gian c sa i gn y
nht.
-x : a ra danh sch cc file v th mc theo dng ct (hai th mc gn nhau c xp trn hai
dng u ca hai ct k nhau).
-r : sp xp danh sch hin th theo th t ngc li.
-R : lit k ln lt cc th mc v ni dung ca cc th mc.
V d, lnh
# ls -l
s hin th danh sch y nht v cc file v th mc c trong th mc hin thi.
total 108
drwxr-xr-x 12 thu root 4096 Oct 23 2000 LinuxVN.com
drwxr-xr-x 2 root root 4096 Oct 31 2000 bin
drwxr-xr-x 2 root root 4096 Dec 11 16:54 boot
drwxr-xr-x 7 root root 36864 Dec 11 16:54 dev
drwxr-xr-x 43 root root 4096 Dec 11 16:55 etc
6
0
Dng u tin "total 108" cho bit tng s khi (1024 byte) trn a lu tr cc file
trong danh sch (14*4+36+16=108).
Mi dng tip theo trnh by thng tin v mi file hay th mc con. Cc thng tin ny
c gii thiu trc y.
Chng hn,
drwxr-xr-x 22
root root
4096
Oct 31 2000
var
Ngy gi
to file
Tn file
initlog.conf inittab
shadowshells
syslog.conf
services
smb.conf
* Lnh to th mc mkdir
Lnh mkdir to mt th mc vi c php:
mkdir [ty-chn] <th-mc>
Lnh ny cho php to mt th mc mi nu th mc cha thc s tn ti. to
mt th mc, cn c t tn v v tr ca n trn h thng file (v tr mc nh l th mc
hin thi). Nu th mc tn ti, h thng s thng bo cho bit.
Cc ty chn:
6
1
-m, --mode=Mod : thit lp quyn truy nhp Mod nh trong lnh chmod nhng khng cho
quyn rwxrwxrwx.
-p, --parents : to cc th mc cn thit m khng thng bo li khi n tn ti.
--verbose : hin th cc thng bo cho mi th mc c to.
--help : a ra trang tr gip v thot.
V d, nu mun to th mc test trong th mc home, hy g lnh sau:
# mkdir /home/test
* Lnh xa b th mc rmdir
Nh bit, lnh mkdir to ra mt th mc mi, v v i ngu th lnh rmdir
c dng xa b mt th mc. C php lnh:
rmdir [ty-chn[ <th-mc>
C th xa b bt k th mc no nu c quyn . Lu rng, th mc ch b xa khi
n "rng", tc l khng tn ti file hay th mc con no trong .
Khng c cch g khi phc li cc th mc b xa, v th hy suy ngh cn thn
trc khi quyt nh xa mt th mc.
Cc ty chn ca lnh:
--ignore-fail-on-non-empty : b qua cc li nu xa mt th mc khng rng.
-p, --parents : xa b mt th mc, sau ln lt xa b tip cc th mc c trn ng dn
cha th mc va xa. V d, dng lnh rmdir -p /a/b/c s tng ng vi ba dng lnh
rmdir /a/b/c, rmdir /a/b, rmdir /a (vi iu kin cc th mc l rng).
--verbose : a ra thng bo khi xa mt th mc.
--help : hin th trang tr gip v thot.
V d:
# rmdir -p /test/test1/test2
rmdir: /: No such file or directory
#
Dng lnh trn s ln lt xa ba th mc test2, test1, test v hin th thng bo trn
mn hnh kt qu ca lnh.
* Lnh i tn th mc mv
C php lnh:
mv <tn-c> <tn-mi>
Lnh ny cho php i tn mt th mc t tn-c thnh tn-mi.
V d, lnh
# mv LinuxVN.com LinuxVN
s i tn th mc LinuxVN.com thnh LinuxVN.
Nu s dng lnh mv i tn mt th mc vi mt ci tn c t cho mt file
th lnh s gp li.
Nu tn mi trng vi tn mt th mc ang tn ti th ni dung ca th mc c i
tn s ghi ln ni dung ca th mc trng tn.
6
2
6
3
Linux t ng to nu file lenhls cha c, trong trng hp ngc li, ni dung file c
s b th ch bi kt qu ca lnh.
# ls -l /bin >/home/thu/lenhls
Nu mun b sung kt qu vo cui file thay v thay th ni dung file, hy s dng du
">>".
V d, lnh
# ls -l /bin >> /home/thu/lenhls
a cc dng danh sch file trong th mc /bin vo cui ni dung ca file
/home/thu/lenhls.
* To file vi lnh cat
Lnh cat tuy n gin nhng rt hu dng trong Linux. Chng ta c th s dng lnh
ny ly thng tin t u vo (bn phm...) ri kt xut ra file hoc cc ngun khc (mn
hnh ...), hay xem ni dung ca mt file ... Phn ny trnh by tc dng ca lnh cat i
vi vic to file. C php lnh:
cat > <file>
Theo ngm nh, lnh ny cho php ly thng tin u vo t bn phm ri xut ra mn
hnh. Son tho ni dung ca mt file bng lnh cat tc l i hng u ra ca lnh t
mn hnh vo mt file. Ngi dng g ni dung ca file ngay ti du nhc mn hnh v g
CTRL+d kt thc vic son tho. Nhc im ca cch to file ny l n khng cho
php sa li, v d nu mun sa mt li chnh t trn mt dng, ch c cch l xa n v
tr ca li v g li ni dung va b xa.
V d. to file newfile trong th mc /home/vd bng lnh cat.
# cat > /home/vd/newfile
This is a example of cat command
6
4
Sau khi son tho xong, g Enter v CTRL+d tr v du nhc lnh, nu khng g
Enter th phi g CTRL+d hai ln. C th s dng lun lnh cat xem ni dung ca file
va son tho:
# cat /home/vd/newfile
This is a example of cat command
#
3.4.3 Cc lnh thao tc trn file
* Sao chp file vi lnh cp
Lnh cp c hai dng nh sau:
cp [ty-chn] <file-ngun> ... <file-ch>
cp [ty-chn] --target-directory=<th-mc> <file-ngun>...
Lnh ny cho php sao file-ngun thnh file-ch hoc sao chp t nhiu file-ngun
vo mt th mc ch (tham s <file-ch> hay <th-mc>). Dng th hai l mt cch vit
khc i th t hai tham s v tr.
Cc ty chn:
-a, --archive : ging nh -dpR (t hp ba tham s -d, -p, -R, nh di y).
-b, --backup[=CONTROL] : to file lu cho mi file ch nu nh n ang tn ti.
-d, --no-dereference : duy tr cc lin kt.
-f, --force : ghi file ch ang tn ti m khng nhc nh.
-i, --interactive : c thng bo nhc nh trc khi ghi .
-l, --link : ch to lin kt gia file-ch t file-ngun m khng sao chp.
-p, --preserve : duy tr cc thuc tnh ca file-ngun sang file-ch.
-r : cho php sao chp mt cch quy file thng thng.
-R : cho php sao chp mt cch quy th mc.
-s, --symbolic-link : to lin kt tng trng thay cho vic sao chp cc file.
-S, --suffix=<hu-t> : b qua cc hu t thng thng (hoc c ch ra).
-u, --update : ch sao chp khi file ngun mi hn file ch hoc khi file ch cha c.
-v, --verbose : a ra thng bo v qu trnh sao chp.
--help : hin th trang tr gip v thot.
File ch c to ra c cng kch thc v cc quyn truy nhp nh file ngun, tuy
nhin file ch c thi gian to lp l thi im thc hin lnh nn cc thuc tnh thi gian
s khc.
V d, lnh
# cp /home/ftp/vd /home/test/vd1
Nu v tr ch, m t y tn file ch th ni dung file ngun s c sao chp
sang file ch. Trong trng hp ch a ra v tr file ch c t trong th mc no th
tn ca file ngun s l tn ca file ch.
# cp /home/ftp/vd /home/test/
6
5
# ls -l
total 8
-rw-r--r-- 1 root ftp 15 Nov 14 11:00 vd
-rw-r--r-- 1 root ftp 12 Nov 14 11:00 vd1
Lu :
i vi nhiu lnh lm vic vi file, khi g lnh c th s dng k hiu m
t nhm xc nh mt nhm file lm cho tng hiu lc ca cc lnh . V d,
lnh:
# cp * bak
thc hin vic sao chp mi file c trong th mc hin thi sang th mc con
ca n c tn l bak.
Dng lnh
# cp /usr/src/linux-2.2.14/include/linux/*.h bak
cho php sao chp mi file vi tn c hai k hiu cui cng l ".h" sang th mc
con bak.
Chnh v l do ni trn, d trong nhiu lnh tuy khng ni n vic s dng k hiu m
t nhm file nhng chng ta c th p dng chng nu iu khng tri vi suy lun
thng thng. Do nhng tnh hung nh th l qu phong ph cho nn khng th gii thiu
ht trong ti liu. Chng ta ch mt gii php l mi khi s dng mt lnh no , nn
th nghim cch thc hiu qu ny.
* i tn file vi lnh mv
C php lnh i tn file:
mv <tn-c> <tn-mi>
Lnh ny cho php i tn file t tn c thnh tn mi.
V d:
# mv vd newfile
Lnh ny s i tn file vd thnh newfile. Trong trng hp file newfile tn ti,
ni dung ca file vd s ghi ln ni dung ca file newfile.
* Xa file vi lnh rm
Lnh rm l lnh rt "nguy him" v trong Linux khng c lnh khi phc li nhng g
xa, v th hy cn trng khi s dng lnh ny. C php lnh:
6
6
libnss_dns-2.1.3.so
libnss_dns.so.1
libnss_dns.so.2
libnss_files-2.1.3.so
libnss_files.so.1
libnss_files.so.2
libnss_hesiod-1.3.so
telex.o
Libnss_dns-2.1.3.so
Libnss_dns.so.1
Libnss_dns.so.2
Libnss_files-2.1.3.so
Libnss_files.so.1
Libnss_files.so.2
Libnss_hesiod-1.3.so
telex.o
Dng lnh
# rm bak/*.h
xa mi file vi tn c hai k hiu cui cng l ".h" trong th mc con bak.
6
7
sau ngi dng g cp phm Ctrl-d kt thc th thy dng thng bo hin ra:
2
9
49
Khi g lnh wc m khng c mt tham s no, mc nh s son tho trc tip ni dung
trn thit b vo chun. Dng CTRL+d kt thc vic son tho, kt qu s hin th ln
mn hnh nh v d trn.
# wc /home/lan/vd/vdcalj /home/lan/vd/vdwc
8
24
32
41
209
250
192
1473
1665
/home/lan/vd/vdcalj
/home/lan/vd/vdwc
total
Lnh trn m s k t, s t, s dng trn mi file c ch ra, v dng cui cng hin
th tng s dng, s t, s k t m c.
Bng cch kt hp lnh wc vi mt s lnh khc, c th c nhiu cch bit c
nhng thng tin cn thit. Chng hn:
kt hp vi lnh ls xc nh s file c trong mt th mc:
# ls | wc -l
37
6
8
dng lnh trn cho bit trong th mc ch ca c 36 file (do dng u tin kt qu thng
bo ca lnh ls khng xc nh mt file).
kt hp vi lnh cat bit s ti khon c nhn c trn my ca ngi
dng:
# cat /etc/passwd | wc -l
324
Lnh trn cho th t sp xp ca cc file theo kch thc trong th mc hin thi.
3.4.4 Cc lnh thao tc theo ni dung file
* S dng lnh file xc nh kiu file
C php lnh file:
7
1
Lnh file cho php xc nh v in ra kiu thng tin cha trong file. Lnh file s ln lt
kim tra t kiu file h thng, kiu file magic (v d file m t thit b) ri n kiu file
vn bn thng thng. Nu file c kim tra tha mn mt trong ba kiu file trn th kiu
file s c in ra theo cc dng c bn sau:
text: dng file vn bn thng thng, ch cha cc m k t ASCII.
executable: dng file nh phn kh thi.
data: thng l dng file cha m nh phn v khng th in ra c.
Mt s tu chn sau y:
-b : cho php ch a ra kiu file m khng a km theo tn file.
-f tn-file : cho php hin th kiu ca cc file c tn trng vi ni dung trn mi dng trong
file tn-file. kim tra trn thit b vo chun, s dng du "-".
-z : xem kiu ca file nn.
V d:
# file file.c file /dev/hda
file.c: C program text
file:
ELF
32-bit
LSB
executable,
1,dynamically linked, not stripped
/dev/hda:
block special
Intel
80386,version
Lnh trn cho xem kiu ca hai file file.c, file v th mc /dev/hda.
Nh rng kt qu ca lnh file khng phi lc no cng chnh xc tuyt i.
* Xem ni dung file vi lnh cat
on trc, chng ta c dp lm quen vi lnh cat thng qua tc dng to file ca
lnh. Phn ny gii thiu tc dng ch yu ca lnh cat: l tc dng xem ni dung ca
mt file. C php lnh:
cat [ty-chn] <tn file>
Cc ty chn:
-A, --show-all : ging nh ty chn -vET.
-b, --number-nonblank : hin th thm s th t trn mi dng (b qua dng trng).
-e : ging nh ty chn -vE.
-E, --show-ends : hin th du "$" ti cui mi dng.
-n, --number : hin th s th t ca mi dng (k c dng trng).
-s : nu trong ni dung file c nhiu dng trng th s loi b bt ch hin th mt dng
trng.
-t : ging nh -vT.
-T, --show-tabs : hin th du TAB di dng ^I.
-v, --show-nonprinting : hin th cc k t khng in ra c ngoi tr LFD v TAB.
--help : hin th trang tr gip v thot.
V d:
7
2
# cat vdcat
chng ta thy xut hin cc dng sau y:
Gnome c hai phng php thot ra ngoi.
c th s dng mc Logout t menu chnh
hoc nt Logout trn Panel chnh thot ra ngoi.
thot bng cch s dng menu chnh, hy m
menu chnh, chn mc Logout y menu.
Khi mt hp thoi Logout s xut hin yu cu
xc nhn l c thc s mun thot hay khng.
hoc nt Logout trn Panel chnh thot ra ngoi.
thot bng cch s dng menu chnh, hy m
menu chnh, chn mc Logout y menu.
7
3
AfterStep-1.8.0
AnotherLevel
ElectricFence
GXedit-1.23
HTML
ImageMagick
LDP
ORBit-0.5.0
SVGATextMode
SysVinit-2.78
WindowMaker
"q" to quit .]
Chc nng
Nhn phm space hin th mn hnh tip theo
Hin th n dng tip theo
Hin th dng tip theo
Hin th danh sch cc phm tt
Cun mn hnh (mc nh l 11 dng)
Thot khi lnh more
B qua n dng (mc nh l 1)
B qua k mn hnh tip theo (mc nh l 1)
Tr li k mn hnh trc (mc nh l 1)
7
4
=
:n
:p
v
CTRL+L
:f
.
7
5
Lnh trong v d trn cho thm s th t ca cc cu trong file vdnl theo dng: nh s
th t tt c cc dng, k c dng trng, cc s th t c cn phi v c s 0 u (lu
rng c dng trong file c hin ra thnh hai dng trn giy).
* Xem qua ni dung file vi lnh head
Cc on trc cho bit cch thc xem ni dung ca mt file nh lnh cat hay more.
Trong Linux cng c cc lnh khc cho nhiu cch thc xem ni dung ca mt file.
Trc ht, chng ta hy lm quen vi lnh head. C php lnh
head [ty-chn] [file]...
Lnh ny mc nh s a ra mn hnh 10 dng u tin ca mi file. Nu c nhiu hn
mt file, th ln lt tn ca file v 10 dng ni dung u tin s c hin th. Nu khng
c tham s file, hoc file l du "-", th ngm nh s c t thit b vo chun.
Cc tu chn:
-c, --bytes=c : hin th c (s nguyn) k t u tin trong ni dung file (c c th nhn gi tr
l b cho 512, k cho 1K, m cho 1 Meg)
-n, --lines=n : hin th n (s nguyn) dng thay cho 10 dng ngm nh.
-q, --quiet, --silent : khng a ra tn file dng u.
-v, --verbose : lun a ra tn file dng u.
--help : hin th trang tr gip v thot.
V d:
# head -6 vdhead1 vdhead2
==> vdhead1 <==
1) New configuration mode
1-1) Directories
Now, everything goes to /GNUstep/Library/AfterStep or
==> vdhead2 <==
7
6
1.7.164 patch 3
$HOME/GNUstep/Library/AfterStep/start/Desktop/Theme/.include
changed from shell script call to perl script call
Lnh ny cho xem qua 6 dng u tin trong ni dung hai file vdhead1 v vdhead2.
* Xem qua ni dung file vi lnh tail
Lnh th hai cho php xem qua ni dung ca file l lnh tail vi c php:
tail [ty-chn] [file]...
Lnh tail ngm nh a ra mn hnh 10 dng cui trong ni dung ca cc file. Nu c
nhiu hn mt file, th ln lt tn ca file v 10 dng cui s c hin th. Nu khng c
tham s file, hoc file l du "-" th ngm nh s c t thit b vo chun.
Cc ty chn:
--retry : c gng m mt file kh truy nhp khi bt u thc hin lnh tail.
-c, --bytes=n : hin th n (s) k t sau cng.
-f, --follow[={name | descritptor}] : sau khi hin ni dung file s hin thng tin v file: -f, -follow, v --follow=descriptor l nh nhau.
-n, --lines=n : hin th n (s) dng cui cng ca file thay cho 10 dng ngm nh.
--max-unchanged-stats=n : hin th ti liu v file (ngm nh n l 5).
--max-consecutive-size-changes=n : hin th ti liu v file (ngm nh n l 200).
--pid=PID : kt hp vi ty chn -f, chm dt sau khi qu trnh c ch s = PID li.
-q, --quiet, --silent : khng a ra tn file dng u trong ni dung c hin th.
-s, --sleep-interval=k : kt hp vi ty chn -f, dng k giy gia cc hot ng.
-v, --verbose : lun hin th tn ca file.
--help : hin th trang tr gip v thot.
V d:
# tail -2 vdtail1 vdtail2
==> vdtail1 <==
Now, everything goes to ~/GNUstep/Library/AfterStep or
/usr/local/share/afterstep !
==> vdtail2 <==
changed from shell script call to perl script call
Lnh trn cho xem hai dng cui ca hai file vdtail1 v vdtail2.
* Tm s khc nhau gia hai file (lnh diff)
Vic tm ra s khc nhau gia hai file i khi l rt cn thit. Linux c mt lnh c tc
dng nh vy, l lnh diff vi c php:
diff [tu-chn] <file1> <file2>
7
7
Trong trng hp n gin, lnh diff s so snh ni dung ca hai file. Nu file1 l
mt th mc cn file2 l mt file bnh thng, diff s so snh file c tn trng vi
file2 trong th mc file1 vi file2.
Nu c file1 v file2 u l th mc, diff s thc hin s so snh ln lt cc file
trong c hai th mc theo th t t a-z (s so snh ny s khng qui nu tu chn -r
hoc --recursive khng c a ra). Tt nhin so snh gia hai th mc khng th chnh
xc nh khi so snh hai file.
Cc tu chn:
-a: xem tt c cc file dng vn bn v so snh theo tng dng.
-b: b qua s thay i v s lng ca k t trng.
-B: b qua mi s thay i m ch chn hoc xo cc dng trng.
--brief: ch thng bo khi c s khc nhau m khng a ra chi tit ni dung khc nhau.
-d: tm ra s khc bit nh (tu chn ny c th lm chm tc lm vic ca lnh diff).
--exclude-from=file: khi so snh th mc, b qua cc file v cc th mc con c tn ph hp
vi mu c trong file.
-i: so snh khng bit ch hoa ch thng.
-r: thc hin so snh qui trn th mc.
-s: thng bo khi hai file l ging nhau.
-y: hin th hai file cnh nhau d phn bit s khc nhau.
3.4.5 Cc lnh tm file
* Tm theo ni dung file bng lnh grep
Lnh grep cng nh lnh ls l hai lnh rt quan trng trong Linux. Lnh ny c hai tc
dng c bn nh sau:
tc dng th nht l lc u ra ca mt lnh khc vi c php l
<lnh> | grep <mu lc>
tc dng th hai, v cng l tc dng c bn c gii thiu trong phn ny,
l tm dng cha mu nh trong file c ch ra.
C php lnh grep:
grep [ty-chn] <mu-lc> [file]
Lnh grep hin th tt c cc dng c cha mu-lc trong file c ch ra (hoc t
thit b vo chun nu khng c file hoc file c dng l du "-")
Cc ty chn:
-G, --basic-regexp : xem mu lc nh mt biu thc thng thng. iu ny l ngm nh.
-E, --extended-regexp : xem mu lc nh mt biu thc m rng.
-F, --fixed-strings : xem mu nh mt danh sch cc xu c nh, c phn ra bi cc dng
mi. Ngoi lnh grep cn c hai lnh l egrep v fgrep. egrep tng t nh lnh grep -E, fgrep
tng t vi lnh grep -F .
Lnh grep cn c cc ty chn sau:
-A NUM, --after-context=NUM : a ra NUM dng ni dung tip theo sau dng c cha
mu.
7
8
7
9
15
16
17
18
Cng c th s dng cc k hiu biu din thng thng (regular - expression) trong
mu lc a ra c nhiu cch tm kim file khc nhau.
Bng di y lit k mt s k hiu hay dng:
K hiu
C
\c
^
$
.
[xy]
[^xy]
c*
ngha
- thay th cho k t c
- hin th c nh l mt k t bnh thng nu c l mt k t iu khin
- bt u mt dng
- kt thc dng
- thay cho mt k t n
- chn mt k t trong tp hp cc k t c a ra
- chn mt k t khng thuc tp hp cc k t c a ra
- thay cho mt mu c hoc khng cha k t c
Ngoi cc ty chn khc nhau, lnh grep cn c hai dng na trn Linux. Hai dng
l egrep - s dng vi cc mu lc phc tp, v fgrep - s dng tm nhiu mu lc
cng mt lc.
Thnh thong mt biu thc n gin khng th xc nh c i tng cn tm, v
d, nh ang cn tm cc dng c mt hoc hai mu lc. Nhng lc , lnh egrep t
ra rt c ch. egrep - expression grep - c rt nhiu cc k hiu biu din mnh hn
grep. Di y l cc k hiu hay dng:
8
0
K hiu
c
\c
^
$
.
[xy]
[^xy]
c*
c+
c?
a|b
(a)
ngha
- thay th cho k t c
- hin th c nh l mt k t bnh thng nu c l mt k t iu khin
- bt u mt dng
- kt thc dng
- thay cho mt k t n
- chn mt k t trong tp hp cc k t c a ra
- chn mt k t khng thuc tp hp cc k t c a ra
- thay cho mt mu c hoc khng cha k t c
- thay cho mt mu c cha mt hoc nhiu hn k t c
- thay cho mt mu khng c hoc ch c cha duy nht mt k t c
- hoc l a hoc l b
- a mt biu thc
Khi g lnh:
# egrep '([^a-zA-Z] | :wi)' /etc/printcap | head
th nhn c thng bo kt qu:
aglw:\
:wi=AG 23 : wk=multiple Apple LaserWrite IINT:
aglw1:\
:wi=AG 23 : wk=Apple LaserWrite IINT:
8
1
aglw2:\
:wi=AG 23 : wk=Apple LaserWrite IINT:
aglw3:\
:wi=AG 23 : wk=Apple LaserWrite IINT:
Cc ton t:
( EXPR ); ! EXPR hoc -not EXPR; EXPR1 -a EXPR2 hoc EXPR1 -and
EXPR2; EXPR1 -o EXPR2 hoc EXPR1 -or EXPR2; v EXPR1, EXPR2
Cc ty chn lnh: tt c cc ty chn ny lun tr v gi tr true v c
t u biu thc
-daystart : o thi gian (-amin, -atime, -cmin, -ctime, -mmin, -mtime).
-depth : thc hin tm kim t ni dung bn trong th mc trc (mc nh vic tm kim c
thc hin bt u ti gc cy th mc c cha file cn tm).
-follow : (ty chn ny ch p dng cho th mc) nu c ty chn ny th cc lin kt tng
trng c trong mt th mc lin kt s c ch ra.
-help, --help : hin th kt qu ca lnh find v thot.
cc test
-amin n : tm file c truy nhp n pht trc.
-atime n : tm file c truy nhp n*24 gi trc.
-cmin n : trng thi ca file c thay i n pht trc y.
-ctime n : trng thi ca file c thay i n*24 gi trc y.
-empty : file rng v hoc l th mc hoc l file bnh thng.
-fstype kiu : file thuc h thng file vi kiu.
-gid n : ch s nhm ca file l n.
-group nhm : file thuc quyn s hu ca nhm.
-links n : file c n lin kt.
-mmin n : d liu ca file c sa ln cui vo n pht trc y.
-mtime n : d liu ca file c sa vo n*24 gi trc y.
-name mu : tm kim file c tn l mu. Trong tn file c th cha c cc k t i din nh
du "*", "?"...
-type kiu : tm cc file thuc kiu vi kiu nhn cc gi tr:
b: c bit theo khi
c: c bit theo k t
d: th mc
p: pipe
f: file bnh thng
l: lin kt tng trng
s: socket
-uid n: ch s ngi s hu file l n.
-user tn-ngi: file c s hu bi ngi dng tn-ngi.
Cc hnh ng
-exec lnh : ty chn ny cho php kt hp lnh find vi mt lnh khc c c thng tin
nhiu hn v cc th mc c cha file cn tm. Ty chn exec phi s dng du {} - n s thay
th cho tn file tng ng, v du '\' ti cui dng lnh, (phi c khong trng gia {} v '\').
Kt thc lnh l du ';'
8
3
leading
from
absolute
path
names
in
the
#
Lnh trn to mt file sao lu ca th mc /usr/src trong th mc /dev/ftape, (dng
thng bo trn cho bit rng tar s chuyn c du / vo trong file sao lu).
Nu vic sao lu khng th thc hin gn vo trong mt bng t, lc hy s dng ty
chn -M:
# tar -cMf /dev/fd0H1440 /usr/src
tar: Removing leading / from absolute
archive
path
names
in
the
8
5
Ch rng phi nh dng a mm trc khi thc hin vic sao lu, c th s dng
mt thit b u cui khc thc hin vic nh dng a khi tar yu cu mt a mm
mi.
Sau khi thc hin vic sao lu, c th kim tra kt qu ca cng vic bng ty chn -compare:
# tar --compare --verbose -f /dev/ftape
usr/src/
usr/src/Linux
usr/src/Linux-1.2.10-includes/
...
#
#
Lu rng, tar khng th thng bo c khi cc thng tin trong inode ca mt file b
thay i, v d nh thay i quyn truy nhp ca file, hay thay i tn file chng hn.
bit c nhng thng tin thay i s cn dng n lnh find v so snh vi trng thi hin
thi ca file h thng vi danh sch cc file c sao lu t trc.
3.5.2 Nn d liu
Vic sao lu rt c ch nhng ng thi n cng chim rt nhiu khng gian cn thit
sao lu. gim khng gian lu tr cn thit, c th thc hin vic nn d liu trc
khi sao lu, sau thc hin vic gii nn (dn) nhn li ni dung trc khi nn.
Trong Linux c kh nhiu cch nn d liu, ti liu ny gii thiu hai phng cch
ph bin l gzip v compress.
8
6
8
7
-n, --no-name : khi nn, ty chn ny s khng lu tr tn file gc v thi gian nn, (tn file
gc s lun c lu nu khi nn tn ca n b ct b). Khi gii nn, ty chn ny s khng
khi phc li tn file gc cng nh thi gian thc hin vic nn. Ty chn ny c ngm
nh.
-N, --name : ty chn ny ngc vi ty chn trn (-n), n hu ch trn h thng c s gii hn
v di tn file hay khi thi im nn b mt sau khi chuyn i file.
-q, --quiet : b qua mi cnh bo.
-r, --recursive : nn th mc.
-S .suf, --suffix .suf : s dng phn m rng .suf thay cho .gz. Bt k phn m rng no cng
c th c a ra, nhng cc phn m rng khc .z v .gz s b ngn chn trnh s ln xn
khi cc file c chuyn n h thng khc.
-t, --test : ty chn ny c s dng kim tra tnh ton vn ca file c nn
-v, --verbose : hin th phn trm thu gn i vi mi file c nn hoc gii nn
-#, --fast, --best : iu chnh tc ca vic nn bng cch s dng du #,
nu -# l -1 hoc --fast th s dng phng thc nn nhanh nht (less
compression),
nu l -9 hoc --best th s dng phng thc nn chm nht (best
compression).
Ngm nh mc nn l -6 (y l phng thc nn theo tc nn cao).
V d:
# ls /home/test
Desktop data dictionary newt-0.50.8 rpm save vd1
# gzip /home/test/vd1
# ls /home/test
Desktop data dictionary newt-0.50.8 rpm save vd1.gz
# zcat /home/test/vd1
PID TTY TIME CMD
973 pts/0 00:00:00 bash
996 pts/0 00:00:00 man
1008 pts/0 00:00:00 sh
1010 pts/0 00:00:00 less
1142 pts/0 00:00:00 cat
1152 pts/0 00:00:00 cat
1181 pts/0 00:00:00 man
1183 pts/0 00:00:00 sh
1185 pts/0 00:00:00 less
#
* Nn, gii nn v xem file vi cc lnh compress, uncompress, zcat
C php cc lnh nh sau:
compress [ty-chn] [<file>]
8
8
8
9
trong trng thi ngi dng ca qu trnh. Chng trnh ngi dng thao tc vi
nhn hoc trc tip hoc gin tip nh gi th vin nh cc li gi h thng.
Mc nhn l mc trng tm nht ca h iu hnh Linux-UNIX. Chy mc nhn
l nhng chng trnh ca h iu hnh thuc h thng con iu khin File (h
thng con lm vic vi File - File Subsystem), h thng con iu khin qu trnh
(Proccess Control System), cc li gi h thng (system calls), cc chng trnh
iu khin thit b (Device Drivers), Cache b m (Buffer cache) v cc chng
trnh iu khin phn cng (Hard Control). Hai thnh phn c bn nht l H thng
iu khin File v H thng con iu khin qu trnh.
Mc ngi dng
Mc
nhn
K tKhiiu khin
thit b
Mc
nhn
Mc phn
cng
PHN CNG
9
1
if (argc != 3)
|
printf(' cn 2 i s i vi chng trnh sao file!');
exit(1)
|
fdold = open (argv[1], O_RDONLY);
/* m file ngun ch c */
if (fdold == -1)
|
printf (' Khng th m file &cs\n',argv[1]);
exit(1);
|
fdnew =creat (argv[2],0666); /*m File ich rw cho mi ngi */
if (fdnew ==-1)
|
printf('Khng th khi to file &cs\n',argv[2];
exit(1);
|
copy(fdold,fdnew);
exit(0);
|
copy (old, new)
int old, new;
|
int count;
while (count = read(old,buffer,sizeof(buffer))>0)
write(buffer,count);
|
Trong chng trnh trn, m lnh (gi l phn text) ca file c sinh ra t cc hm
main v copy. Khi to gi tr ban u cho bin version v dnh vng nh cho bin mng
buffer.
Trong v d trn, cc tham s argc, argv v cc bin fdold, fdnew trong chng trnh
main trong stack khi main c gi (mt ln i vi mi chng trnh), cn cc tham s
old v new v bin count trong hm copy xut hin mi khi copy c gi.
Stack ngi dng
Bin cc b
khng c
a ch frame 2
a ch quay li sau khi
write
Cc tham s
b m
ca write
buffer
mi frame 3
Cc bin cc
count call write ()
b
a ch ca Frame 1
Stack nhn
Frame 3
call Bin cc b
func2()
a ch ca Frame 1
9
3
a ch quay v sau li gi
a ch quay v sau li gi
copy
func2
Cc tham s
old
Tham s ca func2 nhn
ca copy
new frame 2
Frame 2
Bin cc b
fdold call copy ()
call Bin cc b
fdnew
func2()
a ch ca Frame 0
a ch ca Frame 0
a ch quay v sau li gi
a ch quay v sau li gi
main
func1
Tham s ca
argc
Tham s ca func1 nhn
main
Frame 1
argv Frame 1
call main ()
call func1()
Cc stack cho mt qu trnh
Qu trnh trong UNIX c thc hin theo mt trong hai mode: mode nhn hay mode
ngi dng v tng ng vi 2 mode ny, qu trnh s dng stack ring bit i vi mi
mode.
Stack ngi dng cha cc i s, bin cc b, v cc d liu khc i vi vic thc
hin hm trong mode ngi dng. Stach nhn cha cc i s, bin cc b, cc tham s,
cc a ch lin kt v.v. lin quan n thc hin cc hm theo mode nhn.
4.1.4. S b v iu khin qu trnh
Nhn s dng 4 cu trc d liu sau y truy nhp n qu trnh:
Bng cc qu trnh, tng ng vi mi qu trnh ang tn ti trong h thng l mt
thnh phn. Mi thnh phn bao gm mt s trng sau y (mi thnh phn y
chnh l mt PCB):
- Trng thi ca qu trnh,
- Ch s hu ca qu trnh,
- Trng lin quan n trng thi ngng ca qu trnh (theo li gi hm sleep)
- a ch ca vng s dng tng ng vi qu trnh,
- Cc thng tin tng ng c trnh by trong PCB.
Vng s dng (U-area) cha cc thng tin ring, c tc dng khi qu trnh ang thc
hin:
- Ch s thnh phn tng ng vi qu trnh trong bng cc qu trnh: a ch ca
khi PCB tng ng,
- B m thi gian chy mc nhn v mc ngi dng,
- Cc gi tr tr v v m li (nu c) i vi li gi h thng hin ti,
- M t v cc file ang m ng vi qu trnh,
- Tham s lu tr dung lng d liu di chuyn trong vo - ra.
- Th mc hin ti v th mc gc hin ti: mi trng ca qu trnh,
- Cc gii hn kch thc file v qu trnh,
- Cc mc cho php thc hin i vi qu trnh,
- Mt s thng tin khc
Cc bng nh v a ch b nh i vi mi qu trnh,
9
4
Bng cha vng b nh chung: phn hoch b nh, c tnh mi vng theo phn hoch:
cha text, data hoc vng b nh dng chung v.v.
S b v mi lin kt ca cc cu trc d liu trn c m t nh hnh v pha sau.
Nhn x l vi cc li gi h thng nh sau:
- Vi li gi fork: Nhn sao vng a ch ca qu trnh c, cho php cc qu trnh
chia x vng b nh,
- Vi li gi exec: Nhn cp pht cc vng b nh thc cho cc vng text, data v
stack,
- Vi li gi exit: Nhn s gii phng cc vng b nh lin quan n qu trnh.
Bng cc vng
nh cho mt
qu trnh
Bng cc vng nh
(bng cc trang o)
U-area
C
c
cu
tr
c
d
liu
i
u
khi
n
qu
trn
h
4.1.
Hon thin
(9)
Ch i thiu ti
nguyn (4)
Ch i b nh
ngoi (6)
Thc hin mc
nhn (2)
Sn sng thc
hin (3)
i b nh
thc hin (5)
Sn sng sang mc
ngi dng (7)
Qu trnh
pht sinh
(8)
9
5
ngha
(uninterruptible sleep) trng thi ny qu trnh b treo v khng th
chy li n bng mt tn hiu.
(runnable) trng thi sn sng thc hin, tc l qu trnh c th thc
hin c nhng ch n lt thc hin v mt qu trnh khc ang c
CPU.
(sleeping) trng thi tm dng, tc l qu trnh tm dng khng hot
ng (20 giy hoc t hn)
(traced or stopped) trng thi dng, qu trnh c th b treo bi mt
qu trnh ngoi
9
6
W
<
N
L
4.2. Cc lnh c bn
4.2.1. Lnh fg v lnh bg
Linux cho php ngi dng s dng t hp phm CTRL+z dng mt qu trnh v
khi ng li qu trnh bng cch g lnh fg. Lnh fg (foreground) tham chiu n
cc chng trnh m mn hnh cng nh bn phm ang lm vic vi chng.
V d, ngi dng ang xem trang man ca lnh sort, nhn xung cui thy c ty
chn -b, mun th ty chn ny ng thi vn mun xem trang man. Thay cho vic nh
q thot v sau chy li lnh man, cho php ngi dng g CTRL+z tm dng
lnh man v g lnh th ty chn -b. Sau khi th xong, hy g fg tip tc xem trang
man ca lnh sort. Kt qu ca qu trnh trn hin th nh sau:
# man sort | more
SORT(1) FSF SORT(1)
NAME
sort - sort lines of text Files
SYNOPSIS
../src/sort [OPTION] ... [Files]...
DESCRIPTION
Write sorted concatenation of all FILE(s) to standard out-put.
+POS1 [-POS2]
start a key at POS1,end it *before* POS2 obsoles-cent)field numbers and character
offsets are num-bered starting with zero(contrast with the -k option)
-b ignore leading blanks in sort fields or keys
--More-(CTRL+z)
[1]+ Stopped
man sort | more
# ls -s | sort -b | head -4
1 Archives/
1 InfoWorld/
1 Mail/
1 News/
1 OWL/
# fg
man sort | more
--More--
9
7
Trong phn trc, cch thc g phm CTRL+z tm dng mt qu trnh c gii
thiu. Linux cn ngi dng cch thc chy mt chng trnh di ch nn
(background) - s dng lnh bg - trong khi cc chng trnh khc ang chy, v chuyn
mt chng trnh vo trong ch nn - dng k hiu &.
Nu mt qu trnh hot ng m khng a ra thng tin no trn mn hnh v khng
cn nhn bt k thng tin u vo no, th c th s dng lnh bg a n vo trong ch
nn ( ch ny n s tip tc chy cho n khi kt thc). Khi chng trnh cn a
thng tin ra mn hnh hoc nhn thng tin t bn phm, h thng s t ng dng chng
trnh v thng bo cho ngi dng. Cng c th s dng ch s iu khin cng vic (job
control) lm vic vi chng trnh no mun. Khi chy mt chng trnh trong ch
nn, chng trnh c nh s th t (c bao bi du ngoc vung []), theo sau l
ch s ca qu trnh.
Sau c th s dng lnh fg + s th t ca chng trnh a chng trnh
tr li ch ni v tip tc chy.
c mt chng trnh (hoc mt lnh ng) t ng chy trong ch nn, ch cn
thm k hiu '&' vo cui lnh.
Trong mt s h thng, khi qu trnh nn kt thc th h thng s gi thng bo ti
ngi dng, nhng trn hu ht cc h thng, khi qu trnh trn nn hon thnh th h thng
s ch cho n khi ngi dng g phm Enter th mi hin th du nhc lnh mi km theo
thng bo hon thnh qu trnh (thng th mt qu trnh hon thnh sau khong 20 giy).
Nu c chuyn mt chng trnh vo ch nn mc d n c cc thng tin cn xut
hoc nhp t cc thit b vo ra chun th h thng s a ra thng bo li di dng sau:
Stopped (tty input/output) tn chng trnh.
V d, lnh sau y thc hin vic tm kim file thu1 trong ch nn:
# find -name thu1 &
[5] 918
#
Gi s chng trnh cha hon thnh v mun chuyn n ln ch ni, hy g lnh
sau:
# fg 5
find -name thu1
./thu1
chng trnh hon thnh v hin th thng bo rng file thu1 nm th mc gc.
Thng thng s a ra mt thng bo li nu ngi dng c chuyn mt chng trnh
vo ch nn khi m chng trnh cn phi xut hoc nhp thng tin t thit b vo ra
chun. V d, lnh:
# vi &
[6] 920
9
8
#
nhn Enter
#
[6] + Stopped (tty output) vi
#
Lnh trn chy chng trnh vi trong ch nn, tuy nhin lnh gp phi li v y l
chng trnh i hi hin th cc thng tin ra mn hnh (output). Dng thng bo li
Stopped (tty intput) vi cng xy ra khi chng trnh vi cn nhn thng tin.
4.2.2. Hin th cc qu trnh ang chy vi lnh ps
Linux cung cp cho ngi dng hai cch thc nhn bit c nhng chng trnh no
ang chy trong h thng. Cch d hn, l lnh jobs s cho bit cc qu trnh no
dng hoc l c chy trong ch nn.
Cch phc tp hn l s dng lnh ps. Lnh ny cho bit thng tin y nht v cc
qu trnh ang chy trn h thng.
V d:
# ps
PID
7813
7908
#
(PID - ch s ca qu trnh, TTY - tn thit b u cui trn qu trnh c thc hin,
TIME - thi gian chy qu trnh, CMD - lnh khi to qu trnh).
C php lnh ps:
ps [ty-chn]
Lnh ps c mt lng qu phong ph cc ty chn c chia ra lm nhiu loi. Di
y l mt s cc ty chn hay dng. Cc ty chn n gin:
-A, -e : chn hin th tt c cc qu trnh.
-T : chn hin th cc qu trnh trn trm cui ang chy.
-a : chn hin th tt c cc qu trnh trn mt trm cui, bao gm c cc qu trnh ca
nhng ngi dng khc.
-r : ch hin th qu trnh ang c chy.
Chn theo danh sch
-C : chn hin th cc qu trnh theo tn lnh.
-G : hin th cc qu trnh theo ch s nhm ngi dng.
-U : hin th cc qu trnh theo tn hoc ch s ca ngi dng thc s (ngi dng khi ng
qu trnh).
-p : hin th cc qu trnh theo ch s ca qu trnh.
-s : hin th cc qu trnh thuc v mt phin lm vic.
-t : hin th cc qu trnh thuc mt trm cui.
-u : hin th cc qu trnh theo tn v ch s ca ngi dng hiu qu.
9
9
Thit t khun dng c a ra ca cc qu trnh
-f : hin th thng tin v qu trnh vi cc trng sau UID - ch s ngi dng, PID - ch s qu
trnh, PPID - ch s qu trnh khi to ra qu trnh, C - , STIME - thi gian khi to qu trnh,
TTY - tn thit b u cui trn qu trnh c chy, TIME - thi gian thc hin qu
trnh, CMD - lnh khi to qu trnh
-l : hin th y cc thng tin v qu trnh vi cc trng F, S, UID, PID, PPID, C, PRI, NI,
ADDR, SZ, WCHAN, TTY, TIME, CMD
-o xu-chn : hin th cc thng tin v qu trnh theo dng do ngi dng t chn thng qua
xu-chn cc k hiu iu khin hin th c cc dng nh sau:
%C, %cpu
% CPU c s dng cho qu trnh
%mem
% b nh c s dng chy qu trnh
%G
tn nhm ngi dng
%P
ch s ca qu trnh cha khi ng ra qu trnh con
%U
nh danh ngi dng
%c
lnh to ra qu trnh
%p
ch s ca qu trnh
%x
thi gian chy qu trnh
%y
thit b u cui trn qu trnh c thc hin
V d, mun xem cc thng tin nh tn ngi dng, tn nhm, ch s qu trnh, ch s
qu trnh khi to ra qu trnh, tn thit b u cui, thi gian chy qu trnh, lnh khi to
qu trnh, hy g lnh:
# ps -o '%U %G %p %P %y %x %c'
USER GROUP PID PPID TTY TIME COMMAND
root root 1929 1927 pts/1 00:00:00 bash
root root 2279 1929 pts/1 00:00:00 ps
CTRL+c
SIGKILL (kill) tn hiu ny s dng qu trnh ngay lp tc
SIGTERM tn hiu ny yu cu dng qu trnh ngay lp tc,
nhng cho php chng trnh xa cc file tm.
-p : lnh kill s ch a ra ch s ca qu trnh m khng gi mt tn hiu no.
-l : hin th danh sch cc tn hiu m lnh kill c th gi n cc qu trnh (cc tn hiu ny c
trong file /usr/include/Linux/signal.h)
V d,
# ps
9
15
pts/2
pts/2
pts/2
pts/2
pts/2
pts/2
pts/2
pts/2
pts/2
pts/2
pts/2
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
00:00:00
bash
man
more
sh
sh
less
man
sh
gunzip
less
ps
# kill 2277
PID TTY TIME CMD
2240 pts/2 00:00:00
2276 pts/2 00:00:00
2280 pts/2 00:00:00
2281 pts/2 00:00:00
2285 pts/2 00:00:00
2289 pts/2 00:00:00
2291 pts/2 00:00:00
2292 pts/2 00:00:00
2293 pts/2 00:00:00
2298 pts/2 00:00:00
bash
man
sh
sh
less
man
sh
gunzip
less
ps
Cc ty chn:
--help : hin th tr gip v thot
--version : hin th thng tin v phin bn v thot
4.2.5. Xem cy qu trnh vi lnh pstree
bit lnh xem cc qu trnh ang chy trn h thng, tuy nhin trong Linux cn
c mt lnh cho php c th nhn thy mc phn cp ca cc qu trnh, l lnh
pstree. C php lnh:
pstree [ty-chn] [pid | ngi-dng]
Lnh pstree s hin th cc qu trnh ang chy di dng cy qu trnh. Gc ca cy
qu trnh thng l init. Nu a ra tn ca mt ngi dng th cy ca cc qu trnh do
ngi dng s hu s c a ra.
pstree thng gp cc nhnh qu trnh trng nhau vo trong du ngoc vung, v d:
init -+-getty
|-getty
|-getty
|-getty
thnh
init ---4*[getty]
-a : ch ra tham s dng lnh. Nu dng lnh ca mt qu trnh c tro i ra bn ngoi, n
c a vo trong du ngoc n.
-c : khng th thu gn cc cy con ng nht. Mc nh, cc cy con s c thu gn khi c th
-h : hin th qu trnh hin thi v "t tin" ca n vi mu sng trng
-H : ging nh ty chn -h, nhng qu trnh con ca qu trnh hin thi khng c mu sng
trng
-l : hin th dng di.
-n : sp xp cc qu trnh cng mt t tin theo ch s qu trnh thay cho sp xp theo tn
V d,
# pstree
init-+-apmd
|-atd
|-automount
|-crond
|-enlightenment
|-gdm-+-X
| `-gdm---gnome-session
|-gen_util_applet
|-gmc
|-gnome-name-serv
|-gnome-smproxy
|-gnomepager_appl
|-gpm
|-identd---identd---3*[identd]
1
0
|-inetd
|-kflushd
|-klogd
|-kpiod
|-kswapd
|-kupdate
|-lockd---rpciod
|-login---bash---mc-+-bash-+-cat
| | |-passwd
| | `-pstree
| `-cons.saver
|-lpd
|-mdrecoveryd
|-5*[mingetty]
|-panel
|-portmap
|-rpc.statd
|-sendmail
|-syslogd
`-xfs
1
0
1
0
1
0
Hai dng trn s b sung hai nhm ngi dng mi cng danh sch cc thnh vin
trong nhm: nhm installer vi ch s nhm l 102 v cc thnh vin l cc ngi dng
c tn hieu, huy, sang. Tng t l nhm tiengviet vi ch s nhm l 103 v danh
sch cc thnh vin l minh, long, dung. y l hai nhm (102, 103) ngi dng h
thng.
Thm nhm ngi dng mi vi lnh groupadd:
# groupadd -r installer
Lnh trn s cho php to mt nhm ngi dng mi c tn l installer, tuy nhin
cc thnh vin trong nhm s phi b sung bng cch son tho file /etc/group.
5.3.3 Sa i cc thuc tnh ca mt nhm ngi dng (lnh groupmod)
Trong mt s trng hp cn phi thay i mt s thng tin v nhm ngi dng bng
lnh groupmod vi c php nh sau:
groupmod [ty-chn] <tn-nhm>
Thng tin v cc nhm xc nh qua tham s tn-nhm c iu chnh.
Cc ty chn ca lnh:
-g, gid : thay i gi tr ch s ca nhm ngi dng.
-n, group_name : thay i tn nhm ngi dng.
5.3.4 Xa mt nhm ngi dng (lnh groupdel)
Nu khng mun mt nhm no tn ti na th ch vic xa tn nhm trong file
/etc/group. Nhng phi lu rng, ch xa c mt nhm khi khng c ngi dng no
thuc nhm na.
Ngoi ra c th s dng lnh groupdel xa mt nhm ngi dng.
C php lnh:
groupdel <tn-nhm>
1
1
#
Lnh who hin th ba ct thng tin cho tng ngi dng trn h thng. Ct u l tn
ca ngi dng, ct th hai l tn thit b u cui m ngi dng ang s dng, ct th
ba hin th ngy gi ngi dng ng nhp.
Ngoi who, c th s dng thm lnh users xc nh c nhng ngi ng nhp
trn h thng.
1
1
V d:
# users
lan root
#
* Trong trng hp ngi dng khng nh ni tn ng nhp trong mt phin lm vic
(iu ny nghe c v nh hi v l nhng l tnh hung i lc gp phi), hy s dng lnh
whoami v who am i.
C php lnh:
whoami
hoc
who am i
V d:
# whoami
lan
#
# who am i
may9!lan pts/0 Nov 15 06:07
#
Lnh who am i s hin kt qu y hn vi tn my ng nhp, tn ngi dng
ang ng nhp, tn thit b v ngy gi ng nhp.
* C mt cch khc xc nh thng tin ngi dng vi lnh id
C php lnh:
id [ty-chn] [ngi-dng]
Lnh ny s a ra thng tin v ngi dng c xc nh trn dng lnh hoc thng
tin v ngi dng hin thi.
Cc tu chn l:
-g, --group : ch hin th ch s nhm ngi dng.
-u, --user : ch hin th ch s ca ngi dng.
--help : hin th trang tr gip v thot.
V d:
# id
uid=506(lan) gid=503(lan) groups=503(lan)
#
# id -g
503
#
# id -u
506
#
# id root
1
1
uid=0(root)gid=0(root)groups=0(root),1(bin),2(daemon),
3(sys),4(adm),6(disk),10(wheel)
#
5.4.3 Xc nh cc qu trnh ang c tin hnh (lnh w)
Lnh w cho php xc nh c thng tin v cc qu trnh ang c thc hin trn h
thng v nhng ngi dng tin hnh qu trnh .
C php lnh:
w [ngi-dng]
Lnh w a ra thng tin v ngi dng hin thi trn h thng v qu trnh h ang
thc hin. Nu ch ra ngi dng trong lnh th ch hin ra cc qu trnh lin quan n
ngi dng .
V d:
# w
root tty2 - 2:14pm 13:03 9.30s 9.10s /usr/bin/mc -P
lan pts/1 192.168.2.213 3:20pm 0.00s 0.69s 0.10s w
root pts/2 :0 3:33pm 9:32 0.41s 0.29s /usr/bin/mc P
1
1
1
1
Lnh mail ch yu cu ngi gi (hoc ngi nhn) login trong h thng. Vic nhn v
gi th c tin hnh t mt ngi dng. Th gi i cho ngi dng khc, c lu
ti hp th ca h thng.
- Ti thi im login h thng, ngi dng c th thy c c th mi khi trn mn
hnh xut hin dng thng bo "you have mail".
Lnh mail trong UNIX gm 2 chc nng: gi th v qun l th. Tng ng, c hai ch
lm vic vi lnh mail: mode lnh (command mode) qun tr th v mode son
(compose mode) cho php to th.
a/ Mode son
Mode son lm vic trc tip vi mt th v gi ngay cho ngi khc. Mode son thc
cht l s dng lnh mail c tham s:
$mail
tn_ngi_nhn>
V d, $mail user2
Lnh ny cho php son v gi th cho ngi nhn c tn c ch.
Sau khi g lnh, mn hnh b xa v con tr son tho nhp nhy gc trn, tri
ngi dng g ni dung th.
kt thc son th, hy g ctrl-d, mn hnh ca mail bin mt v du mi ca shell li
xut hin.
Ch : Dng sau y c dng gi th son trong ni dung mt file no (ch
du "<" ch dn thit b vo chun l ni dung file thay v cho bn phm):
$mail tn_ngi_nhn < tn_file_ni_dung_th
V d, $ mail user2 < thu1
Ni dung th t File thu1 c gi cho ngi nhn user2, du mi ca shell li hin ra.
Cch lm trn y hay c s dng trong gi / nhn th in t hoc lin kt truyn
thng v cho php tit kim c thi gian kt ni vo h thng, c bit chi ph phi tr
khi kt ni l ng k.
b/ Mode lnh
Nh ni s dng mode lnh ca mail qun l hp th. Vo mail theo mode lnh
khi dng lnh mail khng tham s:
$mail
Sau khi g lnh, mn hnh mail mode lnh c hin ra vi du mi ca mode lnh.
(ph bin l du chm hi "?") Ti y ngi dng s dng cc lnh ca mail qun l h
thng th ca mnh.
Cn tr gip g du chm hi (mn hnh c hai du ??): ? mn hnh hin ra dng sau:
<s>
Hin th s <s>
(du cch)
Hin th ngay pha trc
+
Hin th ngay tip theo
l cmd
thc hin lnh cmd
dq
xa th hin thi v ra khi mail
m user
gi th hin thi cho ngi dng
s tn-file
ghi th hin thi vo file c tn
r [tn-file]
tr li th hin thi (c th t file)
d <s>
xa th s
u
khi phc th hin thi
u <s>
khi phc th s
m <user> ...
chuyn tip th ti cc ngi dng khc
q
ra khi mail
1
1
trong :
<giao din>
tn ca thit b giao tip mng, chng hn eth0 cho card mng u tin, eth1 cho card mng
th hai.
<a ch>
a ch mng s gn cho giao din ny.
up
tu chn ny s kch hot giao din c ch ra.
down
tu chn ny s tt giao din c ch ra.
arp | -arp
cho php hay cm giao thc ARP trn giao din ny.
broadcast <a ch>
xc nh a ch qung b cho giao din ny.
netmask <mt n mng>
xc nh mt n mng cho giao din ny.
xem cu hnh ca my hin ti ta dng lnh
# ifconfig
V v d v kt qu thu c l:
eth0 Link encap:Ethernet HWaddr 00:02:55:07:63:07
inet addr:203.113.130.201 Bcast:203.113.130.223 Mask:255.255.255.224
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3912830 errors:84463 dropped:0 overruns:0 frame:0
TX packets:2402090 errors:0 dropped:0 overruns:0 carrier:0
collisions:84463 txqueuelen:100
RX bytes:2767096664 (2638.9 Mb) TX bytes:1265930467 (1207.2 Mb)
Interrupt:29
1
1
trin ca NIS m c s xut hin khc nhau trong cc phin bn. NIS truyn thng c
xy dng trn th vin libc 4/5. NIS+ l s m rng ca NIS song vn h tr bo mt thng
tin. NYS l mt phin bn chun h tr c NIS v NIS+.
Hot ng ca NIS
NIS lu tr c s d liu v thng tin qun tr mng trong cc file maps. Cc file ny
c t trn mt NIS server trung tm, t cc NIS client c th truy nhp n cc thng
tin thng qua dch v RPC. Cc file maps thng l cc file theo nh dng DMB, mt
dng c s d liu n gin. Cc file maps c to ra t cc file vn bn nh /etc/hosts
hay /etc/passwd. Mi file vn bn ny c th c nhiu file maps khc nhau ty thuc vo
kha ca n. V d nu kha l tn my trm th ta c file hosts.byname, nu kha l a ch
IP th ta c file hosts.byname.
File ch
/etc/hosts
/etc/networks
/etc/passwd
/etc/groups
/etc/services
/etc/rpc
/etc/protocol
/usr/lib/aliases
1
1
#/etc/yp.conf
domainname nis-domain
server lnserver
Dng u tin cho bit my trm ny thuc vo min NIS c tn l nis-domain. Nu
khng c dng lnh ny th ta c th ch ra bng cch nh lnh domainname ti du nhc
dng lnh. Dng th 2 ch ra tn my ch NIS. a ch IP ca tn my ch ny phi xut
hin trong file /etc/hosts. Hoc ta c th s dng a ch IP ngay trn dng ny.
Khi ta s dng my tnh thng xuyn phi thay i min NIS, ta c th ch ra nhiu
min NIS v cc my ch tng ng vi n bng lnh server. File cu hnh di y cho
php thc hin iu :
#yp.conf
server ln-server1 domainname1
server ln-server2 domainname2
Khi mun s dng mt min khc th ta ch cn nh li lnh domainname xc nh
min ta tng ng.
1
1
Sau khi to ra cc file cu hnh c bn, ta nn kim tra xem chng trnh ypbind
hot ng hay cha. Trc ht, khi ng ypbind, sau dng tin ch ypcat ly thng
tin qun l bi NIS server. xem thng tin v a ch IP ca cc trm ta dng lnh:
#ypbind
#ypcat hosts.byname
192.168.50.1 may1
192.168.50.1 may2
....
Nu ta khng nhn c kt qu nh trn hoc ta nhn c mt thng bo li cant
bind to servers domain, c ngha l h thng NIS hot ng cha tt, ta c th kim tra
xem tn min v tn my ch trong file yp.conf chnh xc cha v sau ping my ch.
Nu my ch hot ng ta kim tra xem s hot ng ca ypserv bng lnh rpcinfo:
#rpcinfo u serverhost ypserv
program 10004 version 2 ready and waiting
Nu ta nhn c thng bo nh trn l ypserv ang hot ng tt.
La chn cc file map
Khi s dng NIS ta cn xc nh nhng file cu hnh no ca cc my trm s c
thay th bi NIS. Thng thng NIS c s dng tra cu cc thng tin v my trm v
ti khon ngi dng. Mc d ta s dng NIS nh l mt h qun tr tp trung, h thng
ny vn cho php cc my trm lm vic c quyn t do la chn s dng cc file cu
hnh cc b hoc s dng t NIS server. Th t c ch ra trong file /etc/nsswitch.conf.
V d sau cho bit th t s dng dch v ca cc hm gethostbyname(),
gethostbyaddr() v getservbyname(). Cc dch v c lit k trc s c s dng, nu
khng thnh cng th s dng dch v sau .
#nsswitch.conf
hosts: nis dns files
services files nis
Di y l danh sch cc dch v c th s dng trong file /etc/nsswitch.conf. Cc file,
chng trnh c th c s dng s ph thuc vo tng loi dch v:
nisplus hay nis+: s dng NIS+ server cho min NIS hin thi. Tn ca server c ch
ra trong file /etc/nis.conf.
nis: s dng NIS server cho domain hin thi. Tn ca server c ch ra trong file
/etc/yp.conf. Vi thnh phn hosts, cc file map l hosts.byname v hosts.byaddr s c s
dng.
dns: s dng DNS server, dch v ny c s dng cho mnh thnh phn hosts. Tn
ca my ch c t trong file /etc/resolv.conf.
files: s dng cc file cu hnh cc b, v d: /etc/passwd cho thnh phn passwd.
dbm: tm thng tin trong cc file c s d liu /var/dbm. Tn ca cc file l tn ca cc
file map tng ng ca dch v NIS.
Cc thnh phn c h tr hin thi ca NYS l: hosts, networks, passwd, group,
shadow, services, protocols, rpc, v mt s file khc.
Nu c t kha [NOTFOUND=return] trong cc thnh phn ca file nsswitch.conf, NIS
s thot ra ngay m khng s dng tip cc dch v sau trong trng hp n khng tm thy
thng tin dch v trc . Ch khi no dch v trc b li, NIS mi dng tip dch v
1
2
sau. Trong v d di NIS ch s dng cc file cc b khi khi ng hoc DNS, NIS server
b hng.
#/ect/nsswitch.conf
hosts: nis dns [NOTFOUND=return] files
network: nis [NOTFOUND=return] files
services: file nis
protocol: files nis
rpc: files nis
S dng cc file map passwd v group
Mt trong nhng ng dng chnh ca NIS l ng b thng tin v cc ti khon ca
ngi s dng trn tt c cc my trm trong min NIS. Khi thng tin v ngi dng
trn trm c lit k mt phn nh trong /etc/passwd, phn cn li c lu trong file map
passwd.byname. Vic chn nis trong file /etc/nsswitch.conf cha NIS c th hot
ng.
Khi s dng ti khon ca ngi dng c cung cp bi NIS, trc tin phi m bo
s hiu ca ngi dng trong file passwd phi trng vi s hiu ca ngi dng trn
NIS. Nu s hiu ngi dng, s hiu nhm ca ngi dng khc vi thng tin trong
min NIS, ta cn sa li cho trng nhau.
Trc tin ta thay i s hiu ngi dng (uid) v s hiu nhm (gid) trong file
/etc/passwd v /etc/group trn trm cc b sang cc gi tr mi ca NIS. Sau i quyn
s hu ca tt c cc file bng cch thay i s hiu uid v gid c sang uid v gid mi. Gi
s ngi dng anhnv c s hiu uid l 501, thuc nhm sinhvien c gid l 423, ta sa i
quyn s hu nh sau:
#find / -uid 501 print > /tmp/uid/uid.501
#find / -gid 501 print > /tmp/uid/gid.501
#cat /tmp/uid.501 | xargs chown anhnv
#cat /tmp/gid.501 | xargs chgrp sinhvien
Sau khi thc hin cc cng vic trn s hiu uid v gid ca mt ngi dng trn my
trm s ng nht vi NIS. Bc tip theo l sa i file /etc/nsswitch.conf nh sau:
#/etc/nsswitch.conf
passwd: nis files
group: nis files
File trn quy nh lnh login v cc lnh thuc h ny s truy vn NIS server khi mt
ngi dng mun truy nhp, nu khng tm thy n s tm tip n cc file cc b. Thng
thng ta loi b hu ht ngi dng khi cc file cc b, ch gi li root hoc cc ti
khon chung nh mail, news, cho mt s tc v cn chuyn i s hiu uid sang tn v
ngc li. V d trong chng trnh qun l cng vic cron s dng lnh su tm tr
thnh news. Nu news khng c trong /etc/passwd, chng trnh trn s khng thc hin
c.
Khi ngi dng mun thay i mt khu, h khng th dng lnh passwd nh khi cha
c NIS. Lnh passwd ch c tc dng sa i cc file cu hnh cc b. NIS cung cp mt
cng c l yppasswd, n khng nhng cho php sa i mt khu ngi dng trn NIS m
cn thay i cc thuc tnh khc nh shell Chng trnh ny c thc hin khi khi
ng h thng bng cch chy thm dch v rpc.yppasswd. V thi quen ngi dng c th
1
2
g lnh passwd khi mun thay i mt khu. Gii php y l thay i passwd bng mt
lin kt n yppasswd.
#cd /bin
#mv passwd passwd.old
#ln yppasswd passwd
...
1
2
1
2
Danh sch a ch
cc my trm,
quyn truy nhp ca
cc my trm
Danh sch a ch
cc my trm,
quyn truy nhp
ca cc my trm
/software/project
/software/setup
192.168.0.172(rw)
192.168.0.0/28(ro)
192.168.0.127(ro)
Ngoi ra mun xem trng thi hot ng ca dch v nfs ta c th dng lnh:
#/etc/init.d/nfs status
N s hin th thng tin v trng thi hin ti ca dch v ny ang chy hay
dng li.
rpc.mountd (pid 936) is running...
nfsd (pid 948 947 946 945 944 943 942 941) is running...
rpc.rquotad (pid 931) is running...
6.4.6 Mount t ng qua tp cu hnh
By gi nu ta mun h thng s t ng nh x th mc ny khi my khi ng cho
nhng ngi dng khng c quyn qun tr c th dng c th ta c th s dng cch sa
i ni dung ca file /etc/fstab.
Cng tng t nh lnh mount trn, trong file /etc/fstab cng c cc trng ging nh
ni trn. Mi mt dng trong file ny s c cu trc nh sau:
<tn_my_ch:/ng_dn_n_th_mc_chia_s>
</ng_dn_n_th_mc_cc_b> nfs
tham s nfs ch cho h iu hnh bit kiu file l nfs. V d ta c th thm dng
192.168.0.33:/software/project /mnt/project nfs
vo cui file /etc/fstab.
1
2
Qu trnh B
1
2
M t
nh hng u vo
nh hng u ra
Bt u subshell
Kt thc subshell
K hiu dn
Dng hin k t c bit
Thi hnh lnh chy ch ngm
Bt u khi lnh
Kt thc khi lnh
Th mc home ca ngi dng hin ti
Thay th lnh
Chia ct lnh
Li ch gii
Trch dn mnh
Trch dn yu
Biu thc bin
K t i din cho chui
K t i din cho mt k t
Cc k t c bit ca bash
Du chia ct lnh, ; , cho php thc hin nhng lnh bash phc tp nh trn mt dng.
Nhng quan trng hn, n l kt thc lnh theo l thuyt POSIX.
K t ch gii, # , khin bash b qua mi k t t cho n ht dng. im khQc nhau
gia cc k t trch dn mnh v trch dn yu, v , tng ng l: trch dn mnh bt
bash hiu tt c cc k t theo ngha en; trch dn yu ch bo h cho mt vi k t c
bit ca bash .
<
>
(
)
|
\
&
{
}
~
`
;
#
$
*
?
1
2
Chc nng
Nu bin tn ti v xc nh th tr v gi tr ca n, nu
khng th tr v word
Nu bin tn ti v xc nh th tr v gi tr ca n, nu
khng th gn bin thnh word, sau tr v gi tr ca
n
Nu bin tn ti v xc nh th tr v word, cn khng
th tr v null
Nu bin tn ti v xc nh th tr v gi tr ca n, cn
khng th hin th bash: $var:$message v thot ra khi
lnh hay tp lnh hin thi.
Tr v mt xu con ca var bt u ti offset ca di
length. Nu length b b qua, ton b xu t offset s
c tr v.
Cc ton t string ca bash
Chc nng
Xo b phn khp (match) ngn nht ca pattern trc var
v tr v phn cn li
${var##pattern}
Xo b phn khp (match) di nht ca pattern trc var v
tr v phn cn li
${var%pattern}
Xo b phn khp ngn nht ca pattern cui var v tr
v phn cn li
${var%%pattern}
Xo b phn khp di nht ca pattern cui var v tr v
phn cn li
${var/pattern/string}
Thay phn khp di nht ca pattern trong var bng string.
Ch thay phn khp u tin. Ton t ny ch c trong bash
2.0 hay ln hn.
${var//pattern/string} Thay phn khp di nht ca pattern trong var bng string.
Thay tt c cc phn khp. Ton t ny c trong bash 2.0
hoc ln hn.
Cc ton t bash Pattern-Matching
Thng thng quy tc chun ca cc ton t bash pattern-matching l thao tc vi file
v tn ng dn. V d, gi s ta c mt tn bin shell l mylife c gi tr l
/usr/src/linux/Documentation/ide.txt (ti liu v trnh iu khin a IDE ca nhn). S
dng mu /* v */ ta c th tch c tn th mc v tn file.
#!/bin/bash
############################################
myfile=/usr/src/linux/Documentation/ide.txt
echo ${myfile##*/}= ${myfile##*/}
echo basename $myfile = $(basename $myfile)
echo ${myfile%/*}= ${myfile%/*}
echo dirname $myfile = $(dirname $myfile)
Lnh th 2 xo xu matching */ di nht trong tn file v tr v tn file. Lnh th 4
lm khp tt c mi th sau /, bt u t cui bin, b tn file v tr v ng dn ca
file. Kt qu ca tp lnh ny l:
$ ./pattern.sh
1
3
${myfile##*/} = ide.txt
basename $myfile
= ide.txt
${myfile%/*}
= /usr/src/linux/Documentation
dirname $myfile
= /usr/src/linux/Documentation
minh ho v cc ton t pattern-matching v thay th, lnh thay th mi du hai
chm trong bin mi trng $PATH bng mt dng mi, kt qu hin th ng dn rt d
c (v d ny s sai nu ta khng c bash phin bn 2.0 hoc mi hn):
$ echo e ${PATH//:/\\n}
/usr/local/bin
/bin
/usr/bin
/usr/X11R6/bin
/home/kwall/bin
/home/wall/wp/wpbin
Cc ton t so snh chui
kim tra
str1 = str2
str1 != str2
-n str
-z str
Cc ton t so snh s hc
kim tra
-eq
-ge
-gt
-le
-lt
-ne
iu kin thc
str1 bng str2
str1 khc str2
str c di ln hn 0 (khc null)
str c di bng 0 (null)
Ton t snh chui ca bash
iu kin thc
bng
ln hn hoc bng
ln hn
nh hn hoc bng
nh hn
khc
Cc cch test s nguyn ca bash
1
3
V d:
$ rm myf && echo "File is removed successfully" || echo "File is not removed"
Nu file myf c xa thnh cng (gi tr tr v ca lnh l 0) th lnh "echo File is
removed successfully" s c thc hin, nu khng th lnh "echo File is not removed"
c chy.
Gi s trc khi ta vo trong mt khi m, ta phi thay i mt th mc v copy mt
file. C mt cch thc hin iu ny l s dng cc ton t if lng nhau, nh l on m
sau:
if cd /home/kwall/data
then
if cp datafile datafile.bak
then
# more code here
fi
fi
Tuy nhin, bash cho php ta vit on m ny sc tch hn nhiu nh sau:
if cd /home/kwall/data && cp datafile datafile.bak
then
# more code here
fi
C hai on m u thc hin cng mt chc nng, nhng on th hai ngn hn nhiu,
gn nh v n gin. Mc d if ch kim tra cc m thot, ta c th s dng cu trc []
lnh test kim tra cc iu kin phc tp hn. [condition] tr v gi tr biu th condition
l true hay false. test cng c tc dng tng t.
Mt v d khc v cch s dng cu trc if:
#!/bin/sh
# Script to test if..elif...else
#
if [ $1 -gt 0 ]; then
echo "$1 is positive"
elif [ $1 -lt 0 ]
then
echo "$1 is negative"
elif [ $1 -eq 0 ]
then
echo "$1 is zero"
else
echo "Opps! $1 is not number, give number"
fi
S lng cc php ton iu kin ca bin hin ti khong 35, kh nhiu v hon chnh.
Ta c th kim tra cc thuc tnh file, so snh cc xu v cc biu thc s hc.
Ch : Cc khong trng trc du m ngoc v sau du ng ngoc trong [condition]
l cn phi c. y l iu kin cn thit trong c php shell ca bash.
Bng di l danh sch cc ton t test file ph bin nht (danh sch hon chnh c th
tm thy trong nhng trang manual y v bash).
1
3
Ton t
-d file
-e file
-f file
-r file
-s file
-w file
-x file
-O file
-G file
file1 -nt file2
file1 -ot file2
iu kin true
file tn ti v l mt th mc
file tn ti
file tn ti v l mt file bnh thng(khng l
mt th mc hay mt file c bit)
file cho php c
file tn ti v khc rng
file cho php ghi
file kh thi hoc nu file l mt th mc th
cho php tm kim trn file
file ca ngi dng hin ti
file thuc mt trong cc nhm ngi dng
hin ti l thnh vin
file1 mi hn file2
file1 c hn file2
Cc ton t test file ca bash
V d chng trnh shell cho cc ton t test file trn cc th mc trong bin $PATH. M
cho chng trnh descpath.sh nh sau:
#!/bin/bash
################################
IFS=:
for dir in $PATH;
do
echo $dir
if [ -w $dir ]; then
echo -e "\tYou have write permission in $dir"
else
echo e \tYou dont have write permission in $dir
fi
if [ -0 $dir ]; then
echo -e "\tYou own $dir"
else
echo e \tYou dont own $dir
fi
if [ -G $dir ]; then
echo -e "\tYou are a member of $dir's group"
else
echo -e "\tYou aren't a member of $dir's group"
fi
done
Chng trnh descpath.sh
1
3
Vng lp for (gii thiu trong phn di) s duyt ton b cc ng dn th mc trong
bin PATH sau kim tra cc thuc tnh ca th mc . Kt qu nh sau (kt qu c th
khc nhau trn cc my khc nhau do gi tr ca bin PATH khc nhau):
/usr/local/bin
You dont have write permission in /usr/local/bin
You dont own /usr/local/bin
You arent a member of /usr/local/bins group
/bin
You dont have write permission in /bin
You dont own /bin
You arent a member of /bins group
/usr/bin
You dont have write permission in /usr/bin
You dont own /usr/bin
You arent a member of /usr/bins group
/usr/X11R6/bin
You dont have write permission in /usr/X11R6/bin
You dont own /usr/X11R6/bin
You arent a member of /usr/X11R6/bins group
/home/kwall/bin
You have write permission in /home/kwall/bin
You own /home/kwall/bin
You are a member of /home/kwall/bins group
/home/kwall/wp/wpbin
You have write permission in /home/kwall/wp/wpbin
You own /home/kwall/wp/wpbin
You are a member of /home/kwall/wp/wpbins group
Cc biu thc trong phn iu kin cng c th kt hp vi nhau to thnh cc biu
thc phc tp hn bng cc php ton logic. Di y l mt bng cc biu thc logic
trong shell.
Ton t
! expression
expression1 -a expression2
expression1 -o expression2
ngha
Logical NOT
Logical AND
Logical OR
1
3
do
statements using $value
done
list l mt danh sch cc gi tr, v d nh l tn file. Gi tr l mt thnh vin danh sch
n v statements l cc lnh s dng value. Mt c php khc ca lnh for c dng nh
sau:
for (( expr1; expr2; expr3 ))
do
.....
...
repeat all statements between do and
done until expr2 is TRUE
done
Ta cng c mt cu trc v for nh sau, chng trnh ny cng c cng chc nng nh
chng trnh trn nhng ta ch n s khc bit v c php ca lnh for.
#!/bin/bash
for (( i = 0 ; i <= 5; i++ ))
do
echo "Welcome $i times"
done
$ chmod +x for2
$ ./for2
Welcome 0 times
Welcome 1 times
Welcome 2 times
Welcome 3 times
1
3
Welcome 4 times
Welcome 5 times
Tip theo l mt v d v vng for lng nhau:
#!/bin/bash
for (( i = 1; i <= 5; i++ ))
do
1
3
1
3
do
echo "$n * $i = `expr $i \* $n`"
i=`expr $i + 1`
done
[*)
statements ;;]
esac
expr c em i so snh vi tng pattern, nu n bng nhau th cc lnh tng ng s
c thi hnh. Du ;; l tng ng vi lnh break ca C, to ra iu khin nhy ti dng
u tin ca m esac. Khng nh t kho switch ca C, lnh case ca bash cho php ta
kim tra gi tr ca expr da vo pattern, n c th cha cc k t i din. Cch lm vic
ca cu trc case nh sau: n s khp (match) biu thc expr vi cc mu pattern1,
pattern2,nu c mt mu no khp th khi lnh tng ng vi mu s c thc
thi, sau n thot ra khi lnh case. Nu tt c cc mu u khng khp v ta c s dng
mu * (trong nhnh *)), ta thy y l mu c th khp vi bt k gi tr no (k t i din
l *), nn cc lnh trong nhnh ny s c thc hin.
Cu trc iu khin select (khng c trong cc phin bn bash nh hn 1.14) ch ring
c trong Korn v cc shell bash. Thm vo , n khng c s tng t nh trong cc ngn
ng lp trnh quy c. select cho php ta d dng trong vic xy dng cc menu n gin
v p ng cc chn la ca ngi dng. C php ca n nh sau:
select value [in list]
do
statements that manipulate $value
done
Di y l mt v d v cch s dng lnh select:
#!/bin/bash
# menu.sh Createing simple menus with select
#######################################
IFS=:
PS3=choice?
# clear the screen
clear
1
4
7.2.2.5 Cc hm shell
Cc hm chc nng ca bash l mt cch m rng cc tin ch sn c trong shell, n c cc
im li sau:
Thi hnh nhanh hn do cc hm shell lun thng trc trong b nh.
Cho php vic lp trnh tr nn d dng hn v ta c th t chc chng trnh thnh
cc module.
Ta c th nh ngha cc hm shell s dng theo hai cch:
function
fname
{
commands
}
hoc l
fname()
{
commands
}(
C hai dng u c chp nhn v khng c g khc gia chng. gi mt hm
nh ngha n gin l gi tn hm cng vi cc i s m n cn.
Nu so snh vi C hay Pascal, hm ca bash khng c cht ch, n khng kim tra
li v khng c phng thc tr v i s bng gi tr. Tuy nhin ging nh C v Pascal,
cc bin a phng c th khai bo cc b i vi hm, do trnh c s xung t vi
bin ton cc. thc hin iu ny ta dng t kho local nh trong on m sau:
function
foo
{
local myvar
local yourvar=1
}
Trong v d v cc bin v tr trn ta cng thy c cch s dng hm trong bash.
Cc hm shell gip m ca ta d hiu v d bo dng. S dng cc hm v cc ch thch
ta s rt nhiu cng sc khi ta phi tr li nng cp on m m ta vit t thi gian
rt lu trc .
7.2.3 Cc ton t nh hng vo ra
Ta c bit v cc ton t nh hng vo ra, > v <. Ton t nh hng ra cho
php ta gi kt qu ra ca mt lnh vo mt file. V d nh lnh sau:
$ cat $HOME/.bash_profile > out
N s to mt file tn l out trong th mc hin ti cha cc ni dung ca file
bash_profile, bng cch nh hng u ra ca cat ti file .
Tng t, ta c th cung cp u vo l mt lnh t mt file hoc l lnh s dng ton
t u vo, <. Tac th vit li lnh cat s dng ton t nh hng u vo nh sau:
$ cat < $HOME/.bash_profile > out
1
4
1
4
ls -lL |\
# Liet ke ca cac thong tin cua symbolic link
# Su dung sub-shell de tu giai phong bien
{
sum=0
# Lenh read x y de bo di dong 'total 1234..' cua lenh ls -lL
read x y ; while read mode link user group size month day hour name
do
if [ -d $name ]
then
echo $name $size \($mode\)
1
4
fi
done
}
.S, .s
.o
.a, .so
Kiu
M ngun ngn ng C
M ngun ngn ng C++
M ngun C tin x l
M ngun C++ tin x l
M ngun Hp ng
M i tng bin dch (obj)
M th vin bin dch
Cc phn m rng ca tn file i vi gcc
-c
1
4
-DF00=BAR
-IDIRNAME
-LDIRNAME
-static
-lF00
-g
-ggdb
-O
-ON
-ANSI
-pedantic
-pedantic-erors
-traditional
-w
-Wall
-werror
-MM
-v
1
4
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.
Ch gii
M file c
M file ghi
M file c v ghi
To file nu cha tn ti file
Tht bi nu file c
Khng iu khin tty nu tty m v tin trnh khng iu khin tty
Ct file nu n tn ti
Ni thm v con tr t cui file
Nu mt qu trnh khng th hon thnh m khng c tr, tr v trng
thi trc
Tng t O_NONBLOCK
Thao tc s khng tr v cho n khi d liu c ghi vo a hoc thit
b khc
Cc gi tr c ca hm open()
1
5
#include <sys/types.h>
#include <unistd.h>
off_t lseek(int fildes, off_t offset, int whence);
Ph thuc vo gi tr ca whence, gi tr ca offset l v tr bt u (SEEK_SET), v tr
hin ti (SEEK_CUR), hoc cui file (SEEK_END). Gi tr tr v l kt qu ca offset: bt
u file, hoc mt gi tr ca off_t , gi tr -1 nu c li.
Hm fstat()
Hm fstat () a ra thng tin v file thng qua vic m t cc file, ni kt qu ca struct
stat c ch ra con tr ch n buf().Kt qu tr v gi tr 0 nu thnh cng v nhn gi
tr -1 nu sai ( kim tra li).
#include <sys/stat.h>
#include <unistd.h>
int fstat(int filedes, struct stat *buf);
Sau y l nh ngha ca struct stat:
struct stat
{
dev_t
int_t
mode_t
nlink_t
uid_t
gid_t
dev_t
off_t
unsigned long
unsigned long
time_t
time_t
time_t
};
Hm fchown()
st_dev; / * thit b */
st_ino ;
/* inode */
st_mode;
/* ch bo v */
st_nlink;
/* s lng cc lin kt cng */
st_uid; /* s hiu ca ngi ch */
st_gid; /* s hiu nhm ca ngi ch*/
st_rdev;
/* kiu thit b */
st_size;/* kch thc bytes */
st_blksize;
/* kch thc khi*/
st_blocks;
/* S lng cc khi s dng*/
st_atime;
/* thi gian truy cp cui cng*/
st_mtime;
/* thi gian cp nht cui cng */
st_ctime;
/* thi gian thay i cui cng */
1
5
statbuf;
1
5
Linux thng c t chc di dng tnh (static library), th vin chia s (shared
library) v ng (dynamic library - ging nh DLL trn MS Windows). Th vin
tnh c lin kt c nh vo trong chng trnh trong qu trnh lin kt. Th vin
dng chung c np vo b nh trong khi chng trnh bt u thc hin v cho
php cc ng dng cng chia s loi th vin ny. Th vin lin kt ng c np
vo b nh ch khi no chng trnh gi ti.
7.3.4.1 Th vin lin kt tnh
1
5
/*
* liberr.h
*/
#ifndef _LIBERR_H
#define _LIBERR_H
#include <stdarg.h>
/* in ra mt thng bo li ti vicgi stderr v return hm gi */
void err_quit(const char *fmt, );
/* in ra mt thng ip li cho logfile v tr v hm gi */
void log_ret(char *logfile, const char *fmt, );
/* in ra mt thng ip li cho logfile v thot */
void log_quit( char *logfile, const char *fmt , );
/* in ra mt thng bo li v tr li hm gi */
void err_prn(const char *fmt, va_list ap, char *logfile);
#endif //_LIBERR_H
FILE *pf;
fputs("Testing err_ret()...\n", stdout);
if((pf = fopen("foo", "r")) == NULL)
err_ret("%s %s", "err_ret()", "failed to open foo");
fputs("Testing log_ret()...\n", stdout);
if((pf = fopen("foo", "r")) == NULL);
log_ret("errtest.log", "%s %s", "log_ret()",
"failed to open foo");
#ifndef ERR_QUIT_SKIP
fputs("Testing err_quit()...\n", stdout);
if((pf = fopen("foo", "r")) == NULL)
err_ret("%s %s", "err_quit()", "failed to open foo");
#endif /* ERR_QUIT_SKIP */
#ifndef LOG_QUIT_SKIP
fputs("Testing log_quit()...\n", stdout);
if((pf = fopen("foo", "r")) == NULL)
log_ret("errtest.log", "%s %s", "log_quit()", "failed to open foo");
#endif /* LOG_QUIT_SKIP */
return EXIT_SUCCESS;
}
M ngun file testerr.c
Bin dch chng trnh kim tra, ta s dng dng lnh:
$ gcc -g errtest.c -o errtest -L. -lerr
Tham s -L. ch ra ng dn ti th mc cha file th vin l th mc hin thi, tham
s lerr ch r th vin thch hp m chng ta mun lin kt. Sau khi dch ta c th kim tra
bng cch chy chng trnh.
7.3.4.2 Th vin dng chung
Th vin dng chung c nhiu thun li hn th vin tnh.Th nht, th vin dng
chung tn t ti nguyn h thng, chng s dng t khng gian a v m ngun th vin
dng chung khng bin dch sang m nh phn nhng c lin kt v c dng t ng
mi ln dng. Chng s dng t b nh h thng v nhn chia s b nh cho th vin dng
chung ny v tt c cc chng trnh u s dng chung min b nh ny. Th 2, th vin
dng chung nhanh hn vi chng ch cn np vo mt b nh. L do cui cng l m ngun
trong th vin dng chung d bo tr. Khi cc li c sa hay thm vo cc c tnh,
ngi dng cn s dng th vin nng cp. i vi th vin tnh, mi chng trnh khi s
dng th vin phi bin dch li.
Trnh lin kt (linker)/module ti (loader) ld.so lin kt tn biu tng ti th vin dng
chung mi ln chy. Th vin dng chung c tn c bit (gi l soname), bao gm tn th
vin v phin bn chnh. V d: tn y ca th vin C trong h thng l libc.so.5.4.46,
tn th vin l libc.so, tn phin bn chnh l 5, tn phin bn ph l 4, 46 l mc v (patch
1
5
level). Nh vy, soname th vin C l libc.5. Th vin libc6 c soname l libc.so.6, s thay
i phin bn chnh l s thay i ng k th vin. Phin bn ph v patch level thay i
khi li c sa nhng soname khng thay i v bn mi c s thay khc bit ng k so
vi bn c.
Cc chng trnh ng dng lin kt da vo soname. Tin ch idconfig to mt biu
tng lin kt t th vin chun libc.so.5.4.46 ti soname libc.5 v lu tr thng tin ny
trong /etc/ld.so.cache. Trong lc chy, ld.so c phn lu tr, tm soname thch hp v
np th vin hin tai vo b nh, kt ni hm ng dng gi ti i tng thch hp trong
th vin.
Cc phin bn th vin khc nhau nu:
Cc giao din hm u ra thay i.
Cc giao din hm mi c thm.
Chc nng hot ng thay i so vi c t ban u
Cu trc d liu u ra thay i
Cu trc d liu u ra c thm
duy tr tnh tng thch ca th vin, cn m bo cc yu cu:
Khng thm vo nhng tn hm c hoc thay i hot ng ca n
Ch thm vo cui cu trc d liu c hoc lm cho chng c tnh tu chn hay
c khi to trong th vin
Khng m rng cu trc d liu s dng trong cc mng
Xy dng th vin dng chung hi khc so vi th vin tnh, qu trnh xy dng th
vin dng chung c minh ho di y:
Khi bin dch file i tng, s dng ty chn -fpic ca gcc n s to ra m c lp
v tr (position independence code) t c th lin kt hay s dng bt c ch
no
Khng loi b file i tng v khng s dng cc ty chn fomit frame -pointer
ca gcc, v nu khng s nh hng n qu trnh g ri (debug)
S dng tu chn -shared and soname ca gcc
S dng tu chn Wl ca gcc truyn tham s ti trnh lin kt ld.
Thc hin qu trnh lin kt da vo th vin C, s dng tu chn l ca gcc
Tr li th vin x li li , to th vin dng chung trc ht xy dng file i tng:
$ gcc -fPiC -g -c liberr.c -o liberr.o
Tip theo lin kt th vin:
$ gcc -g -shared -Wl,-soname,liberr.so -o liberr.so.1.0.0 liberr.o -lc
V khng th ci t th vin ny nh th vin h thng trong /usr hay /usr/lib chng ta
cn to 2 kin kt, mt cho soname:
V cho trnh lin kt khi kt ni da vo liberr, s dng lerr:
$ ln -s liberr.so.1.0.0 liberr.so
By gi, d dng th vin dng chung mi chng ta quay li chng trnh kim tra,
chng ta cn hng trnh lin kt ti th vin no s dng v tm n u, v vy chng
ta s s dng tu chn l v L:
$ gcc -g errtest.c -o errtest -L. -lerr
Cui cng chy chong trnh, chng ta cn ch cho ld.so ni tm th vin dng
chung :
$ LD_LIBRARY_PATH=$(pwd) ./errtest
7.3.4.3 S dng i tng dng chung theo cch ng
1
5
1
6
Miu t
Chuyn tn k t vo tn mc ngi dng cho d c.
Khi s dng cc file lu tr (phn m rng l .a), in ra cc
ch s ca module cha hm .
Ch a ra cc hm khng c nh ngha trong file ny, tc
l cc hm c nh ngha mt file khc.
S dng thng tin g ri in ra s dng ni hm c nh
ngha.
Cc tu chn ca lnh nm
Cng c ar
Lnh ar s dng c php sau:
ar {dmpqrtx} [thnh vin] file
Lnh ar to, chnh sa v trch cc file lu tr. N thng c s dng to cc th
vin tnh- nhng file m cha mt hoc nhiu file i tng cha cc chng trnh con
thng c s dng (subrountine) nh dng tin bin dch (precompiled format), lnh
ar cng to v duy tr mt bng m tham chiu qua tn k t ti cc thnh vin m trong
chng c nh ngha. Chi tit ca lnh ny c trnh by trong chng trc.
Cng c idd
Lnh nm lit k cc hm c nh ngha trong mt file i tng, nhng tr khi ta bit
nhng g th vin nh ngha nhng hm no. Lnh idd hu ch hn nhiu. idd lit k cc
th vin c chia s m mt chng trnh yu cu m chy. C php ca n l:
idd [options] file
Lnh idd in ra tn ca th vin chia s m file ny s dng. V d: chng trnh th
client mutt cn 5 th vin chia s, nh c minh ho sau y:
$ idd /usr/bin/mutt
libnsl.so.1 => /lib/libns1.so.1 (0x40019000)
libslang.so.1 => /usr/lib/libslang.so.1 (0x4002e000)
libm.so.6 => /lib/libm/so.6 (0x40072000)
libc.so.6 => /lib/libc.so.6 (0x4008f000)
/lib/id-linux.so.2 => /lib/id-Linux.so.2 (0x4000000)
Tm hiu lnh idconfig
Lnh idconfig s dng c php sau:
ldconfig [tu chn] [libs]
1
6
Cc miu t
n thun ch in ra ni dung ca /etc/ld.so.cache, mt danh
sch hin thi cc th vin c chia s m ld.so bit.
Cp nht /etc/ld.so.cache , lit k s phin bn ca mi th
vin, qut cc th mc v bt k lin kt m c to ra hoc
cp nht.
Cc tu chn ca hm idconfig
1
6
1
6
CH THCH MT S THUT NG
Vn chn thut ng ting Vit cho cc thut ng gc ting Anh lun l vn cn
c tho lun vic chn la nh vy l thch hp. D cho trong ti liu ny, nhiu thut
ng ting Vit c s dng mt cch ph bin nhng ti liu cng lit k vo bng ch
thch di y vi mc ch gip bn c thun tin trong tra cu v lin h. Trong bng
ch thch, mi thut ng ting Vit dng trong ti liu s c km theo thut ng ting
Anh gc v sau c th l mt li ch thch ngn. Bng ch thch l mt c gng nh
nhm h tr s dng ti liu ny hiu qu hn v phm vi s dng ca n gii hn trong ti
liu.
Ting Vit
Ting Anh
File
File
Tn file
Filename
Th mc
Directory
H thng file
File system
Lnh
Command
Tin ch (cn
gi l lnh
thng trc)
Utility
Dng lnh
Command line
ng nhp
Login
Ngi dng
User
Siu ngi
dng (ngi
dng ti
cao/ngi
qun tr)
Superuser
Con tr
cursor
H iu hnh
Operating
System (OS)
1
6
H iu hnh
a chng
trnh
Multiprogramming OS
H iu hnh
a ngi dng
Nhn
Qu trnh
Chng trnh
gii thch lnh
ng nhp
Login
ng xut
Logout
Du nhc shell
K hiu m t wildcards
nhm
Ci t Linux
Installation
Linux
1
6
PH LC A. QU TRNH CI T REDHAT-LINUX
Linux s dng phn cng ca my PC hiu qu hn MS-DOS, Window hay WinNT, v
do kh nng chu cc li do cu hnh sai phn cng s km hn. Chng ta cn lm mt
s vic trc khi bt u ci t gim thiu cc kh nng khng th ci t tip khi gp
phi vn ny.
Trc tin, hy c gng tm cng nhiu cng tt cc ti liu v phn cng my PC m
mnh nh ci, nh mainboard, card ho, mn hnh, modem... v chng ni c th
tm thy v tra cu d dng.
Tip theo, tm hiu thng tin v phn cng my tnh ca v tp hp chng li. Chng ta
c th lm iu ny khi s dng chc nng in cu hnh my ca mt s tin ch nh MSD
trong DOS, hoc System Information trong Windows. Nhng thng tin chnh xc v bn
phm, chut, mn hnh... s gip rt nhiu trong qu trnh cu hnh X sau ny.
Sau , kim tra phn cng my tnh ca tm ra cc vn nu c, bi chng c th
lm qu trnh ci t Linux b treo. Sau y l mt s vn thng gp.
Mt h thng DOS hay Windows c th qun l a IDE v CDROM c khi jumper
master/slave khng c t ng. Trong khi Linux khng gii quyt c vn ny. V
vy nu c nghi ng hy xem li cc jumper ny c t ng cha.
Mt s thit b ngoi vi cn c nhng tin ch t cu hnh cho chng khi my khi
ng. Cc thit b nh card mng, CD-ROM, card m thanh hoc bng t c th gp phi
vn ny. Nu trng hp ny xy ra, c th s dng lnh t cu hnh li ti du nhc
khi ng.
Mt s h iu hnh khc cho php chut dng bus chia s mt IRQ vi cc thit b
khc, trong khi Linux khng h tr iu ny. Nu th lm iu , h thng c th b treo.
Nn lin h vi ngi dng Linux c kinh nghim c gii p nhng vng mc.
Cn tin hnh cng vic chun b thi gian cho vic ci t. Qu trnh ci t c th ko
di mt ting hoc hn vi nhng h thng ch ci Linux, hoc ln ti ba ting vi h thng
cn chy nhiu h iu hnh khc nhau (thng vi nhng h thng ny kh nng b treo
my hoc c li khi ci t s cao hn).
Ph lc ny gii thiu cch ci t hai phin bn RedHat l 6.2 v 7.1 nhm cung cp
tnh a dng khi ci t, to iu kin cho ngi s dng.
1
6
Ta s la chn bn phm tng thch theo cc dng trn, nu khng r bn phm thuc
loi no th nn chn kiu Generic.
Layout: Ngn ng s dng g (khong 24 ngn ng)
Variant: C 2 ch l.
Eliminate Dead Keys (khi chng ta s dng cc k t c bit).
None (kiu mc nh).
Test: chng ta s g cc phm kim tra th.
Chn cu hnh chut
H thng a ra 10 loi chut la chn loi tng thch vi chut ca mnh, nu
khng bit r chut thuc loi no th nn chn kiu Generic. V phi chn ng kiu chut
l PS/2 hay Serial nu khng th s khng s dng c chut.
H thng a ra li gii thiu v bn Red Hat ang ci t.
La chn kiu ci t.
Install (ci mi) gm c cc ch :
GNome Workstation.
KDE Workstation.
Server
Custom
Upgrade (Nng cp)
Tu chn ci t WorkStation
Tu chn ci t Server
Tu chn ci t Custom
i vi kiu Custom h thng s cho php t chn cc thnh phn v cu hnh phn
cng ci t mt cch y nht, tuy nhin cng ri rm v phc tp nht. T bc 7
tr i, ch gii thiu v tu chn ci t ny. Sau y s gii thiu tng qut mt s bc
m qu trnh ny thit t:
To cc phn vng: cn phi ch r Redhat s c ci t vo phn vng no.
Format cc phn vng: Nhng phn vng mi c thm vo s phi c format li
theo nh dng Linux filesystem. Tuy nhin cng c th la chn phn vng no cn phi
format.
La chn v ci t cc gi phn mm i km: Thc hin sau khi phn vng a
cng.
Thit t cu hnh LILO: c th la chn ci t LILO vo Master Boot Record hoc
Sector u tin ca phn vng Root hoc khng la chn ci LILO.
Xc nh cc Partition
u tin cn xc nh cc im kch hot (mount point) cho mt hoc nhiu partition.
Trong bng partition c cc thng tin sau:
Mount Point: Xc nh partition no s c kch hot khi Linux c ci t v chy. Nu
partition tn ti v c nhn l not set th ta xc nh mount point bng cch kch chut vo nt
Edit hoc double - click trn partition.
V h thng khuyn chng ta nn to cc partition theo cch sau:
Mt swap partition (t nht 16MB) - dng h tr b nh o. Nu my chng ta c
16Mb Ram hoc t hn th bt buc chng ta phi to swap partition. Thm ch nu c
nhiu b nh hn, chng ta cng nn to swap partition. Kch thc ti thiu ca swap
partition = max |b nh Ram v 16Mb|.
Mt boot partition (ti a 16Mb) - cha nhn ca HH cng vi cc file trong qu
trnh khi ng.
Mt root partition (t 500Mb - 1Gb) l ni cha th mc gc v tt c cc file (tr cc
file trong boot partition). Vi 500Mb cho php ci theo kiu Workstation v vi 1Gb cho
php ci mi th.
1
7
Device:
Hin tn cc device partition (V d: hda2 i din cho partition th 2 trn cng
primary).
Request: Cho bit khng gian m partition hin c. Nu mun thay i kch thc th chng ta
phi xo partition v to li bng cch dng nt Add.
Actual: Cho bit khng gian m partition ang s dng.
Type: Cho bit kiu ca partition.
V chng ta c th add, edit, v delete cc partition bng cch kch chut vo cc nt
. Chc nng ca tng nt l:
Add: Dng to mt partition mi, gm c cc thng tin sau:
Mount Point: gm c cc kiu
/:
/boot :
/usr :
/home :
/var :
/opt :
/tmp :
/usr/local :
Size (Megs): chn kch thc ca partition.
Grow to fill disk: nu chn th partition ny s s dng ton b vng a trng cn li.
Partition type: gm c cc kiu
Linux Swap: chn kiu ny nu chng ta mun to partition swap.
Linux Native : chn kiu ny nu chng ta mun to partition root.
Linux RAID :
DOS 16-bit < 32 :
DOS 16-bit > 32 :
Edit: Dng thay i mount point ca partition.
Delete: Dng xo partition.
Reset: Khi phc li nhng thay i.
Make RAID Device: S dng Make Raid device ch khi c kinh nghim v RAID.
Drive Summaries: hin th thng tin v cu hnh a.
Chn Partition Format
Gm c cc thng tin:
1
7
1
7
KDE: KDE l mt giao din ha ngi dng c pht trin da trn th vin giao
din ha C++ Qt. Th vin giao din ny h tr UNIX, Windows v c Mac. Do c
pht trin trc GNOME nn KDE c nhiu im tt hn.
Mail/ WWW/ News tools: B cng c dng gi, nhn th tn in t, duyt Web v
c cc bn tin.
Dos/ Windows Connectivity: B gi lp DOS v Windows cho php ngi dng chy
cc ng dng DOS v Windows ngay trong Linux.
Graphic Manupulation: Cc tin ch ha nh Gview, Imgedit... cho php trnh din
v x l cc file hnh nh.
Games: Mt s chng trnh tr chi gii tr trong ch text hoc X Window.
Multimedia Support: Cc chng trnh h tr a phng tin, nh nghe midi, wave,
mp3... iu khin joystick, thu m ...
Dialup WorkStation: Cho php ngi dng s dng modem v quay s s dng
cc dch v qua ng in thoi nh gi nhn mail, web...
News Server: Cung cp dch v my ch news, cho php my tnh tr thnh mt server
bn tin.
NFS Server: My ch h thng file mng NFS (Network File System).
SMB Server: My ch h thng file mng Samba.
IPX/ Netware Connectivity: Gip h thng chy Linux giao tip vi cc my tnh
khc qua mng Netware s dng giao thc IPX.
Anonymous FTP Server: Ci t package ny gip my tnh tr thnh mt my ch
FTP (File Transfer Protocol), c th cung cp dch v truyn file cho cc my khc trong
mng.
Web Server: Ci t package ny gip my tnh tr thnh mt my ch Web, c th
cung cp dch v web cho cc my khc trong mng.
DNS Name Server: Ci t package ny gip my tnh tr thnh mt my ch DNS, c
th cung cp dch v t tn vng cho cc my khc trong mng.
Postgres (SQL) Server: Ci t package ny gip my tnh tr thnh mt my ch
SQL, c th cung cp dch v truy vn d liu cho cc my khc trong mng.
Network Management Workstation: Gip my tnh trm lm vic iu hnh tr thnh
mt my ch SQL, c th cung cp dch v truy vn d liu cho cc my khc trong mng.
TeX Document Formatting: H son tho v nh dng vn bn di dng Tex.
Emacs: H son tho vn bn n gin.
Development: Cc b bin dch, g ri, cng c pht trin phn mm ... di cc ngn
ng nh Perl, C, C++. M ngun ca cc chng trnh trong Linux.
Kernel Development: M ngun nhn Linux v b cng c pht trin dnh cho pht
trin nhn Linux.
1
7
1
7
Linux cng h tr phn ln cho cc cng chun ESDI v MCA (bus c quyn ca
IBM).
Linux cng c th chy trn cc laptop h 386.
C mt cch ci t Linux trn 8086 c bit n di tn gi ELKS (Embeddable
Linux Kernel Subset). y l mt nhn Linux 16 bit c ch yu s dng trong cc h
thng nhng. Thc ra phin bn Linux hin nay khng th chy c y trn 8086 hay
286 bi v nhng b vi x l ny khng h tr cho vic chuyn i tc v cng nh qun l
b nh.
Linux h tr a qu trnh cho cc kin trc Intel MP.
Di y l danh sch cc b VXL m Linux h tr:
Dng 68000 ca Amigas v Ataris hin ang c trin khai nghin cu.
Cc phin bn GNU/Linux cng c th ci t cho cc nn Alpha, Sparc, PowerPC, ARM.
Mt d n v Linux trn PPC cng c tin hnh.
Apple h tr MkLinux trn cc Power Macs da trn OSF ca Mach vi nhn.
Linux cho my 64 bit DEC Alpha/AXP.
ang nghin cu v Linux cho MIPS, bt u i vi R4 trn cc my Deskstation Type.
Hin c 2 bn Linux cho dng my dng h vi x l ARM. Mt l ca vi x l ARM3 trn cc
my Acorn A5000 v n cn bao gm c cc thit b I/O cho 82710. Cn li l cho h vi x l
ARM610 ca my Acorn RISC PC.
Linux cho SPARC ang c tin hnh.
C bn Hardhat cho cc my SGI/Indy.
va mi to lp trong Linux trc khi s dng cc lnh format ca MS-DOS. S dng lnh
sau:
$ dd if=/dev/zero of=/dev/hdXY bs=512 count=1
Vi hdXY l phn vng lin quan, chng hn /dev/hda1 l phn vng u tin trn a
IDE u tin.
Linux c th c v ghi cc file trn cc phn vng FAT ca DOS v OS/2 v cc a
mm bng cch s dng h thng file DOS c tch hp vo nhn hoc cc cng c
mtool. Nhn cng cung cp h tr cho h thng file VFAT ca Windows 9x v Windows
NT. Hin ti cc a phn vng theo NTFS cng ang c nghin cu h tr cng vi
vic h tr nn a nh l mt tnh nng chun.
Linux cng c th truy cp c ti h thng file HPFS ca OS/2 nhng ch ch
read-only. Ngi ta c th thc hin iu ny nh mt la chn khi bin dch nhn.
Linux cng h tr cho vic thao tc trn cc nh dng AFFS (Amiga Fast File System)
t bn 1.3 tr v sau bng cch nh mt la chn lc bin dch hay nh mt m un ring.
Tuy vy, iu ny cng ch dng mc ch c. Cc truy cp a mm th cha c h
tr bi v s khc bit gia cc iu khin a ca PC v Amiga.
i vi cc my chy cc h iu hnh ca Unix nh BSD, System V... th cc nhn
hin ti cng mi ch c th c h thng file UFS trn System V, Xenix, BSD, mt s sn
phm tha k khc nh SunOS, FreeBSD, NetBSD, NeXTStep. H tr UFS cng c coi
nh mt la chn lc bin dch nhn hay nh mt m un.
Linux cho php c/vit trn cc a SMB ca cc nhm Windows v WinNT. C
mt chng trnh tn l Samba cho php truy cp v h thng file mng WfW (min l
dng giao thc TCP/IP) .
i vi cc my Macintosh th c mt tp hp cc chng trnh cp ngi dng
c th c, ghi trn HFS (Macintosh Hierarchical File System).
Cu hi t ra l c th chy mt chng trnh Windows trong Linux hay khng ?
Chng trnh tn WINE ang c pht trin m phng mi trng Windows trong
Linux. Hin ti khi mun dng hai h iu hnh cng lc vi Linux th ta c chng
trnh LILO boot. LILO boot bt buc ta phi la chn h iu hnh vo lc khi ng.
Ngoi ra, cn c mt chng trnh tn LOADLIN l mt chng trnh DOS cho php np
Linux (cng nh bt k h iu hnh khc) khin cho Linux cng tn ti vi DOS.
LOADLIN c bit hu dng khi ta mun ci Linux trn cc a th 3, 4 ca h thng
(hoc khi ta thm mt SCSI vo mt h thng c cha IDE). Trong trng hp ny th
LILO boot s khng c kh nng tm kim v np nhn. Do ta s phi to mt th mc
chng hn C:LINUX, t LOADLIN vo trong cng vi mt bn copy ca nhn v ri
s dng n.
Ch : Cn to t nht mt phn vng Linux di gii hn 1024 cylinder logic.
1
7
1
7
Ch chn-la chn (Insert Select mode): ch ny c khi to khi
chy ch la chn trong ch chn. Khi ch la chn kt thc, vim s tr v
ch chn.
Vic chuyn i gia cc ch trong vim c thc hin nh cc lnh (phm lnh
hoc xu lnh) ca vim v c tp hp trong bng di y. Trong bng ny, ct u tin
l ch ngun, hng u tin l ch ch, giao gia hng v ct cha cc phm lnh
chuyn ch (k hiu *1, *2, *3, *4, *5, *6 l cch vit tt danh sch lnh c gii thch
sau):
Ch cn chuyn ti
Ch hin
thi
Thng
Thng
o
La chn
Chn
Thay th
Dng lnh
Ex
o
v, V,
^V
*2
*5
<Esc>
<Esc>
*3
:vi
La
chn
*4
^G
^O, ^G
-----
-----
Chn
*1
c, C
*6
<Insert>
:start
--
Thay
th
R
Dng
lnh
:, /, ?, !
--<Insert>
:
:
---
---
Ex
Q
------
--
1
7
1
8
1
8
:st [!]
l
h
k
j
0
^
$
<Enter>
+
_
G
G
H
M
gg
n
n
gk
gj
n
n
n
n
W
E
B
ge
>
<
|
|
]]
[[
][
[]
<CTRL-f>
<CTRL-b>
<CTRL-d>
<CTRL-u>
<CTRL-e>
<CTRL-y>
z<Enter>
z.
z-
N
n
n
n
n
n
A
A
i
I
gI
o
O
:r file
:r! lnh
x
X
dd
D hoc d$
xo n k t bn phi du nhc tr
xo n k t bn tri du nhc tr
xo n dng k t dng hin thi
xo t v tr hin thi n ht dng
1
8
dw
dG
d1G
dn$
d
cc
C
cn$
N,m
N
N
N
N
s
S
xo n t k t v tr hin thi
xo t v tr hin thi n cui file
xo ngc t v tr hin thi n u file
xo t dng hin thi n ht dng th n
xo t dng th n n dng th m
xo n dng, k c dng hin thi ri khi to ch chn (Insert)
xo n dng k t v tr hin thi ri khi to ch chn (Insert)
xo t dng hin thi n ht dng th n ri khi to ch chn
(Insert)
xo n k t v chy ch chn (Insert)
xo n dng v chy ch chn (Insert)
u
U
: e!
CTRL-R
r <k t>
R
gUU
guu
n
n
n
CTRL-A
CTRL-X
> [> ...]
gJ
:[n,m] ce [width]
:[n,m] ri [width]
:[n,m] le [width]
:[n,m]s/<mu1>/<mu2>/[g][c]
:[n,m]s[g][c]
&
yw
Y
: [n] co [m]
sao chp n k t
sao chp n dng vn bn, k t dng hin ti, vo b nh m (ging
yy)
sao chp dng th n vo di dng th m
* Dn vn bn:
n
n
n
n
P
P
Gp
gP
: [n] put m
: [n] put! m
Ngoi cc lnh trn, khi s dng vim trong xterm, ngi dng c th s dng chut
thc hin cc thao tc cho vic sao chp vn bn. Vic ny ch thc hin c khi ang
trong ch son tho ca vim. Nhn phm tri chut v ko t im bt u n im kt
thc ca on vn bn cn sao chp. on vn bn s c t ng sao vo b nh m.
Sau di tr son tho n v tr cn dn v nhy nt chut gia, vn bn s c dn vo
v tr mun.
di chuyn vn bn trong vim, cng phi thc hin qua ba bc sau:
Ct on vn bn v dn vo b m
Di chuyn du nhc tr ti v tr mi ca on vn bn
Dn on vn bn vo v tr mi
Di chuyn vn bn ch khc sao chp bc u tin l bc ct on vn bn. hy s
dng cc lnh xo trong vim ct on vn bn. V d, khi dng lnh dd, dng b xo s
c lu vo trong b m, khi c th s dng cc lnh dn dn vn bn vo v tr
mi.
Ngoi ra cn c th s dng mt s lnh sau:
: [n] m [x]
''
'"
[]
[^]
[-]
\p
\s
\e
\t
vim s dng ch lnh Ex thc hin cc vic tm kim v thay th. Tt c cc lnh
trong ch ny c bt u bng du ':'. c th kt hp lnh tm kim v thay thay th
a ra c cc lnh phc tp theo dng tng qut sau:
:<im bt u>,<im kt thc> s/<mu cn thay th>/<mu c thay
th>/[g][c]
V d, lnh sau y:
:1,$s/the/The/g
1
8
CTRL-N
CTRL-P
CTRL-X ...
<Backspace>, CTRL-H
<Del>
CTRL-W
CTRL-U
CTRL-T
CTRL-D
n
n
n
n
B.3.10. Cc lnh lp
n
n
n
lp li n ln thay i cui
ghi cc k t c nhp vo trong thanh ghi |a-z|
thc hin ni dung c trong thanh ghi |a-z| n ln
lp li n ln s thc hin ca lnh @|a-z| trc
thc hin ni dung ca thanh ghi |a-z| nh mt lnh Ex
lp li s thc hin ca lnh :@|a-z| trc
thc hin lnh (mc nh l :p) trn cc dng c cha mu
nm trong khong t dng th n n dng th m
:[n,m]g!/<mu>/[lnh] thc hin lnh (mc nh l :p) trn cc dng khng cha
mu nm trong khong t dng th n n dng th m
:sl [n]
tm dng trong n giy
gs
tip tc dng trong n giy
.
q |a-z|
@|a-z|
@@
:@|a-z|
:@@
:[n,m]g/mu/[lnh]
khi to mt shell
thc hin mt lnh shell trong Vim
1
8
:!!
K
q
CTRL-G
CTRL-G
:f <tn mi>
:ls
:cd
:w <tn file>
:e[n, /mu] <file>
:e[n, /mu]! <file>
:e
:e!
:fin [!] <file>
:e #n
:pw
:conf <lnh trong vim
>
1
8
PH LC C. MIDNIGHT COMMANDER
C.1. Gii thiu v Midnight Commander (MC)
Ngi s dng h iu hnh MS-DOS u bit tnh nng tin ch Norton Commander
(NC) rt mnh trong qun l, iu khin cc thao tc v file, th mc, a cng nh l mi
trng trc quan trong ch vn bn (text). D trong h iu hnh Windows sau ny
c s h tr ca tin ch Explorer nhng khng v th m vai tr ca NC gim i: Nhiu
ngi dng vn thch dng NC trong cc thao tc vi file v th mc. Linux cng c mt
tin ch mang tn Midnight Commander (vit tt l MC) c chc nng v giao din gn
ging vi NC ca MS-DOS v s dng MC trong Linux tng t nh s dng NC trong
MS-DOS.
C.2. Khi ng MC
Lnh khi ng MC:
# mc [Ty-chn]
C mt s tu chn khi dng tin ch ny theo mt s dng thng dng sau:
-a
-b
-c
-d
-P
-v file
-V
C-l
Insert, C-t
ln lt chn file u tin, file gia v file cui trn panel hin th
Tab, C-i
1
9
C-s, M-s
M-t
M-y
M-u
C-\
+
*
M-o
Quick view
Info
Tree
Sort order...
Filter ...
Network link ...
FTP link ...
C-x q
C-x i
Rescan
C-r
qut li
Thc n File cha mt danh sch cc lnh m c th thi hnh trn cc file c
nh du hoc file ti v tr thanh chn. Cc thc n mc con:
User menu
View
View file ...
F2
F3
Filtered view
M-!
Edit
F4
Copy
F5
cHmod
C-x c
Link
Symlink
edit sYimlink
chOwn
C-x l
C-x s
C-x C-s
C-x o
Advanced chown
Rename/Move
Mkdir
Delete
Quick cd
select Group
Unselect group
reverse selecTion
Exit
F6
F7
F8
M-c
M-+
M-
M-*
F10
M-?
C-u
C-o
Compare directories
C-x d
Command history
Directory hotlist
C-\
External panelize
C-x !
hin th th mc di dng cy th mc
tm mt file
thc hin tro i ni dung gia hai panel hin th
a ra lnh shell c thc hin ln cui (ch s dng
trn xterm, trn console SCO v Linux)
thc hin so snh th mc hin ti trn panel chn vi
cc th mc khc
a ra danh sch cc lnh thc hin
thay i th mc hin thi
thc hin mt lnh trong MC v hin th kt qu trn
panel chn (v d: nu mun trn panel chn hin th tt
c cc file lin kt trong th mc hin thi, hy chn mc
thc n ny v nhp lnh
find . -type l -print
1
9
C-\
C-x j
Thc n Options cho php thit lp, hu b mt s tu chn c lin quan n hot
ng ca chng trnh MC.
Configuration ...
Lay-out ...
Confirmation ...
Display bits ...
Learn keys ...
Virtual FS ...
Save setup
* Thanh thc n
Thc n File:
cc thao tc lin quan n file
Open/load
New
Save
Save as ...
C-o
C-n
F2
F12
F15
C-f
F10
m hoc np mt file
to mt file mi
ghi ni dung file c son tho
to mt file khc tn nhng c ni dung trng vi ni dung
file hin thi
chn ni dung mt file vo file hin thi
sao on vn bn c nh du n mt file khc
thng tin v b son tho
thot khi b son tho
Thc n Edit:
cc thao tc lin quan n vic son tho ni dung file
Toggle Mark
Mark Columns
Toggle Ins/overw
Copy
Move
Delete
Undo
Beginning
End
thc hin nh du mt on vn bn
nh du theo ct
chuyn i gia hai ch chn/
thc hin sao chp file
thc hin di chuyn file
xo file
tr v trng thi trc khi thc hin mt s thay i
di chuyn n u mn hnh
di chuyn n cui mn hnh
F3
S-F3
Ins
F5
F6
F8
C-u
C-PgUp
C-PgDn
Thc n Sear/Repl:
cc thao tc lin quan n vic tm kim v thay th
Search ..
Search again
Replace ...
F7
F17
F4
Thc n Command:
Cc lnh c th c thc hin trong khi son tho
Goto line ...
Insert Literal ...
Refresh screen
Insert Date/time
Format paragraph
Sort
M-l
C-q
C-l
M-p
M-t
1
9
Thc n Options:
Cc tu chn c th thit lp cho b son tho
General ...
Save mode ...
1
9
PH LC D. SAMBA
D.1 Ci t Samba
Nu cc dch v chia s file gia cc my Windows vi nhau v gia cc my Linux
vi nhau c gii quyt th cn li l vn chia s file gia cc my Linux v
Windows li l mt nhu cu quan trng. Samba hin tr thnh cy cu ni gia Linux v
Windows. Samba cho php cc my tnh chy Linux c th hot ng v giao tip trn
cng mt giao thc mng vi my Windows. Samba server thc hin cc dch v sau:
Chia s mt hay nhiu h thng file.
Chia s cc my in c ci t c hai pha server v client ca n.
H tr cc client duyt Network Neighborhood trong cc my windows.
Kim tra xc nhn cc client ng nhp vo vng ca Windows.
Cung cp hoc h tr vic phn gii a ch ca server bng WINS (Windows
Internet Name Server).
d hnh dung hn, ta ly v d mng n gin c dng Samba. Gi s ta c mt cu
hnh mng c bn sau: mt my ch Linux c s dng Samba vi tn c t l Toltec, v
hai client trn MS Windows, vi tn l Maya v Aztec, c ni vi nhau trong mt mng
Lan v tham gia vo nhm lm vic c tn METRAN. Ta cn gi s my ch Toltec cn c
mt my in phun tn l lp c ni ti ch, ng thi vic chia s a cng cho php cc
my nhn thy nhau. M t mng trn bng hnh v D.1 c biu din di y:
C th thc hin c
C
C
C (Samba 2.1 hay mun hn)
Khng
C
C
Khng
C
C
Khng
1
9
1
9
[pub]
path = /home/ftp/pub/%a
2
0
K hiu bin %a c ngha i din cho kin trc ca my tnh client, nh WinNT ch
cc my tnh chy trn Windows NT, Win95 cho my Windows 95 hoc 98, hay nh
WfWg cho Windows for Worrgroups (Windows 3.11). Theo cch vit trn, Samba s gn
ng dn chung ch ti ti nguyn c chia s trong phn [pub] cho cc my client chy
trn Windows NT, gn ng dn khc cho cc my Windows 9x, v mt ng dn na
cho cc my vi Windows for Worrkgroups. Ni cch khc, cc ng dn m theo mi
my client nhn thy ti nhuyn chia s s khc nhau, tu thuc vo kin trc ca client.
Bin
%a
%I
%m
%M
%g
%G
%u
%U
%p
%P
%S
%d
%h
%L
%N
%v
%R
%T
nh ngha
Cc bin ca my client
Kin trc ca cc my client(v d, Samba, wfwg, winNT, win95,
hoc UNKNOWN).
a ch IP ca client(v d, 192.168.220.100).
Tn NetBIOS ca client.
Tn DNS ca client.
Cc bin v ngi dng
Nhm chnh ca %u
Nhm chnh ca %U
Th mc home hin thi ca %u.
Tn ngi dng c yu cu trn my client
Cc bin v ti nguyn c chia s
ng dn cho automounter ti th mc gc ca ti nguyn c
chia s, nu th mc khc vi %P
Th mc gc hin thi ca ti nguyn c chia s.
Tn hin thi ca ti nguyn c chia s.
Cc bin ca server
nh danh tin trnh (PID) server hin thi.
Tn host DNS ca server Samba.
Tn host NetBIOS ca server Samba
Th mc home ca server Samba, ly t file nh x (map) ca
automount.
Phin bn Samba.
Cc bin khc
Mc ca giao thc SMB c tho thun thit lp.
Ngy gi hin ti.
Danh sch cc bin ca Samba
2
0
[global]
Server configuration parameters
netbios name = HYDRA
server string = Samba %v on (%L)
workgroup = SIMPLE
Tu chn netbios name: cho php t tn NetBIOS cho server. V d:
netbios name = DHQGHN
Gi tr mc nh cho tu chn ny l tn my ca server (phn bn tri cng ca tn
DNS y ). V d, tn NetBIOS mc nh ca my hut.edu.vn s l HUT. Thng thng,
ngi ta t tn NetBIOS khc vi tn DNS hin thi.
Vic thay i tn NetBIOS ca server khng c khuyn khch nu khng c l do
chnh ng, nu nh tn khng phi l duy nht v mng LAN c chia ra thnh hai
hay nhiu vng DNS. V d, khi mng hut.edu.vn b chia thnh hai vng vi cc server
l hut.lythuyet.edu.vn v hut.thuchanh.edu.vn th tn NetBIOS c l HUT by
gi c th thnh cc tn HUTLYTHUYET v HUTTHUCHANH.
Ty chn server string: Thng s ca server string xc nh ni dung dng ch thch s
xut hin cnh tn ca server Samba trong c ca s Network Neighborhood (khi ch
Details) ln ca s qun l in ca Microsoft Windows. Bn c th dng cc bin chun
cung cp thng tin cho dng m t , v d trn ta s dng hai bin l %v v %L.
Ty chn workgroup: Thng s ca tu chn workgroup thit lp nhm lm bic hin
thi, ni m server Samba t thng bo cho cc thnh bin ca mng v mnh. Cc clients
mun truy cp c ti nguyn c chia s trn server Samba phi cng thuc v mt
nhm lm vic NetBIOS. Nn nh rng cc nhm lm vic phi c cc tn nhm NetBIOS
thc th, tun theo quy tc t tn NetBIOS.
Cu hnh chia s a cng
Trong v d phn trc ta nhc n rng do cha c ti nguyn c chia s nn
ca s chi tit ca server hydra ang cn trng. By gi ta tip tc lm vic ci file cu
hnh Samba v to ra mt a cng c chia s cn rng c tn l [data]. y l cc
ng tc cn thm vo t c kt qu va nu:
SampleDataDrive]
comment=Data Drive
path = /export/samba/data
writable = yes
guest ok = yes
Ti nguyn c chia s SampleDataDrive thng l a cng c Samba chia
s v nh x ti th mc /export/samba/data trn server Samba. Ta cho
thm mt dng vo c ch thch m t ti nguyn c chia s l Data Drive, cng
nh gn cho bn thn ti nguyn mt ci tn SampleDataDrive.
Ti nguyn c chia s c thit lp c quyn ghi cho cc ngi dng. Gi tr mc
nh ca tu chn ny l ch c. Trong phng n khng cn nc bo mt cht ch nh
y, ta t gi tr yes cho tu chn guest ok, cho bt k ai cng c th kt ni c
2
0
Thng s
Chc nng
Path
(directory)
String
(ng dn
n th
mc)
Guest ok
(public)
Nh phn
(yes/no)
Comment
String (xu
k t)
t th mc UNIX dng
cho chia s a cng hoc
cho vic xp hng ch bi
my in c chia s.
Nu t l yes, s khng
dn kim tra xc nhn
ngi dng truy cp ti
nguyn c chia s ny.
t ch thch s xut hin
cng ti nguyn c chia
s.
t tn cho a, theo
dng ca DOS.
volume
String
Read only
Nh phn
(yes/no)
Writeable
(write ok)
nh phn
(yes/no)
Mc nh
Phm vi
/tmp
Share
no
Share
Khng c
Share
Tn ca ti
nguyn
c chia
s
Share
yes
Share
no
Share
Thng s
String (danh
sch tn my)
String (danh
sch tn my)
Nh phn
(yes/no)
Chc nng
Xc nh cc my c th
kt ni vi Samba.
Xc nh cc my khng
th kt ni vi Samba.
Nu t l yes, Samba s
ch lin kt ti cc giao
din xc nh bi tu chn
Mc nh
Phm vi
Khng c
VShare
Khng c
Share
Vno
Global
2
0
socket
address
String (a ch
IP)
interfaces.
t a ch IP nghe,
dng cho trng hp c
nhiu giao thc o trn
servers.
Khng c
Global
[global]
printer driver file = /usr/local/samba/print/printers.def
[hpdeskjet]
path = /var/spool/samba/printers
printable = yes
printer driver = HP DeskJet 560C Printer
printer driver location = \\%L\PRINTER$
Ging nh i vi phn [home], ta khng cn phi bo tr ti nguyn c chia s cho
mi mt may in ca h thng trong file cu hnh smb.conf. Thc vy, Samba lun da vo
2
0
Trong ,
-
a : tu chn ny cho php ta thm mt ngi dng mi vo trong danh sch ngi
dng ca samba.
- x : tu chn ny cho php xo b mt ngi dng trong danh sch ngi dng ca
samba.
- d : tu chn ny cho php ta kho (disable) mt ngi dng trong danh sch
ngi dng ca samba.
- e : tu chn ny cho php ta m kho (enable) mt ngi dng trong danh sch
ngi dng ca samba m ngi dng b kho bng tham s -d.
- <tn ngi dng>: tn ca ngi dng ta mun x l.
Chng hn, mun thm mt ngi dng vo trong danh sch ngi dng ca samba, ta
dng lnh (s dng lnh ny vi quyn root):
#smbpasswd a thanhnt
Trong ngi dng thanhnt phi l mt ngi dng h thng. Sau khi nh lnh ny,
my s hi ta nh vo mt khu cho ngi dng mi ny, v samba cho php ngi dng
do n qun l c th c mt khu khc vi mt khu h thng ca ngi dng .
smb: \>
smb: \> ls
.
..
ee120-ta
fa01
D
D
D
D
0
0
0
0
Tue
Tue
Wed
Fri
Sep
Sep
Aug
Sep
11
11
29
21
12:03:53
12:03:53
09:37:14
09:47:34
2001
2001
2001
2001
2
1
Sau my s hi ta tn ngi dng v mt khu dng truy cp. Sau khi nhp
cc thng tin, nu thnh cng th ta s c mt ca s hin th danh sch cc
dch v ca my ch samba cung cp nh hnh D.3.
2
1
2
1
2
1