You are on page 1of 79

C bn v chng ch LPI

Ti liu v chng ch LPI c bin son da trn h thng ti liu ca IBM


Phin bn 1.0.0, Ngy 29 thng 10 nm 2004
Bin son: Thnh vin VnOSS
ii

Bn quyn 2004-2006 thuc v Cng ng ngun m Vit Nam - VNOSS v nhng ngi
ng gp cho ti liu C bn v chng ch LPI - All rights reserved.
y l mt ti liu min ph. Bn hon ton c th phn phi li ti liu cho nhng ngi s
dng khc, hoc c th chnh sa cho ph hp nhng phi tun theo nhng yu cu trong giy php
bn quyn GNU (General Public License ca Free Software Foundation; phin bn 2 hay cc phin
bn khc).
Ti liu ny c pht hnh n tay cc bn vi hy vng rng n s tr nn hu ch, nhng n
KHNG KM THEO BT K S BO M NO, ngay c nhng m bo ngm hiu v vic
thng mi ho hay phi ph hp vi mt mc ch c th no (vn ny bn c th tham kho
giy php GNU General Public License bit thm chi tit). Thng thng, bn s nhn c mt
bn sao ca giy php GNU General Public License km theo ti liu ny; nu cha c, bn c th
vit th n a ch sau Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
c mt bn giy php.
Mc lc

1 Trc khi bt u 1
1.1 V ti liu ny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 V tc gi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1

2 C bn v Linux 3
2.1 Gii thiu v bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.1 H v (shell) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.1.2 C phi bn ang chy bash khng? . . . . . . . . . . . . . . . . . 3
2.1.3 V bash . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.4 S dng cd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.5 ng dn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.6 ng dn tuyt i . . . . . . . . . . . . . . . . . . . . . . . . . 4
2.1.7 S dng .. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.1.8 V d ng dn tng i . . . . . . . . . . . . . . . . . . . . . . 6
2.1.9 Th cn . l g? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.10 cd v th mc nh . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1.11 Th mc nh ca nhng ngi dng khc . . . . . . . . . . . . . . 7
2.2 S dng cc cu lnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.1 Gii thiu ls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.2 Lit k chi tit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.2.3 Xem th mc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.2.4 lit k inode v lit k qui (recursive) . . . . . . . . . . . . . . 8
2.2.5 Inode l g? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.2.6 mkdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.7 mkdir -p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
2.2.8 touch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.9 echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.10 echo v s chuyn hng . . . . . . . . . . . . . . . . . . . . . . . 11
2.2.11 cat v cp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.12 mv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.3 To lin kt v xa tp tin . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.1 Lin kt cng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.2 Lin kt tng trng . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.3 Su hn v lin kt tng trng . . . . . . . . . . . . . . . . . . . 14
2.3.4 rm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.5 rmdir . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.6 rm v th mc . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
iv MC LC

2.4 S dng cc k t i din (wildcard) . . . . . . . . . . . . . . . . . . . . 17


2.4.1 Gii thiu v k t i din . . . . . . . . . . . . . . . . . . . . . 17
2.4.2 Hiu v khng tng ng . . . . . . . . . . . . . . . . . . . . . . . 18
2.4.3 C php i din: * . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.4 C php i din: ? . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.5 C php i din: [] . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.4.6 C php i din: [!] . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.4.7 Su hn v c php i din . . . . . . . . . . . . . . . . . . . . . 20
2.4.8 Ngoc n "gp" ngoc kp . . . . . . . . . . . . . . . . . . . . . 20
2.5 Tng kt v cc ngun tham kho . . . . . . . . . . . . . . . . . . . . . . 21
2.5.1 Tng kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.2 Cc ngun tham kho . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.3 kin c gi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.5.4 Thay cho li kt cun 1 . . . . . . . . . . . . . . . . . . . . . . . 21

3 C bn v qun tr Linux 23
3.1 Biu thc chnh quy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.1 Biu thc chnh quy l g? . . . . . . . . . . . . . . . . . . . . . . 23
3.1.2 So snh vi k t i din (glob) . . . . . . . . . . . . . . . . . . . 23
3.1.3 Chui con n gin . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.1.4 Hiu v chui con n gin . . . . . . . . . . . . . . . . . . . . . 24
3.1.5 K t mta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.6 S dng [] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.1.7 S dng [] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.8 C php khc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.9 K t mta "*" . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.1.10 u v cui dng . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.1.11 Regex cho c dng . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.2 FHS v tm tp tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.1 FHS - Tiu chun h thng tp tin dng cy . . . . . . . . . . . . . 27
3.2.2 Hai cp bc FHS c lp . . . . . . . . . . . . . . . . . . . . . . . 27
3.2.3 H thng bc hai ti /usr . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.4 Tm tp tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.5 ng dn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.6 Sa i PATH . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
3.2.7 Tt c v "which" . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.8 "which -a" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.9 whereis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
3.2.10 find . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.11 find v k t i din . . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.12 L i kiu ch vi find . . . . . . . . . . . . . . . . . . . . . . . . 30
3.2.13 find v biu thc chnh quy . . . . . . . . . . . . . . . . . . . . . 31
3.2.14 find v kiu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.15 find v mtimes . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
3.2.16 Ty chn -daystart . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.17 Ty chn -size . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3.2.18 Gia cng tp tin tm thy . . . . . . . . . . . . . . . . . . . . . . . 32
MC LC v

3.2.19 locate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.20 S dng updatedb . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2.21 slocate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3 Qun l tin trnh . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.1 Khi ng xeyes . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.2 Dng mt tin trnh . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.3.3 fg v bg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.4 S dng "&" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.5 Nhiu tin trnh nn sau . . . . . . . . . . . . . . . . . . . . . . . 35
3.3.6 Gii thiu tn hiu . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.7 SIGTERM v SIGINT . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.8 "Dit tn gc" . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.3.9 nohup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.10 S dng ps lit k tin trnh . . . . . . . . . . . . . . . . . . . . . 37
3.3.11 Hin th cy v rng . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3.12 Ty chn "u" v "l" . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.13 S dng "top" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.14 nice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.3.15 renice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4 Gia cng vn bn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.1 n li chuyn hng . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.2 Mt v d ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.3 ng gii nn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.4 Mt ng di hn . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.4.5 Gi lc gia cng vn bn bt u . . . . . . . . . . . . . . . . . . 41
3.4.6 cat, sort, v uniq . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.7 wc, head, v tail . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.4.8 tac, expand, v unexpand . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.9 cut, nl, v pr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.10 tr, awk, v sed . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
3.4.11 od, split, v fmt . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.12 Paste, join, v tee . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.4.13 Gi lc kt thc! Chuyn hng . . . . . . . . . . . . . . . . . . . 43
3.4.14 S dng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5 Mun nhn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.1 Lm quen vi "uname" . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.2 Thm v u ra uname . . . . . . . . . . . . . . . . . . . . . . . . 44
3.5.3 Bn pht hnh nhn . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.4 Nhn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.5 Gii thiu mun nhn . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.6 Bn tm tt mun nhn . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.7 lsmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.5.8 Lit k mun . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.9 Mun third-party . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.10 depmod . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.5.11 Lm th no ly mun . . . . . . . . . . . . . . . . . . . . . . 46
3.5.12 S dng depmod . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
vi MC LC

3.5.13 nh v mun nhn . . . . . . . . . . . . . . . . . . . . . . . . . 47


3.5.14 insmod v modprobe . . . . . . . . . . . . . . . . . . . . . . . . . 47
3.5.15 Thc thi rmmod v modprobe . . . . . . . . . . . . . . . . . . . . 48
3.5.16 Ti khn: modinfo v modules.conf . . . . . . . . . . . . . . . . . 48
3.5.17 modules.conf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6 Tng kt v cc ngun tham kho . . . . . . . . . . . . . . . . . . . . . . 48
3.6.1 Tng kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.6.2 Tham kho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
3.6.3 kin c gi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.6.4 Thay cho li kt . . . . . . . . . . . . . . . . . . . . . . . . . . . 50

4 Qun tr h thng Linux 51

5 Qun tr h thng linux nng cao 52


5.1 H thng tp tin, phn vng, v cc thit b khi . . . . . . . . . . . . . . 52
5.1.1 Gii thiu v thit b khi . . . . . . . . . . . . . . . . . . . . . . 52
5.1.2 Cc lp tru tng . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.3 Phn vng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.1.4 Gii thiu v cng c fdisk . . . . . . . . . . . . . . . . . . . . . . 53
5.1.5 S dng fdisk . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.1.6 Thit b khi v tng quan v vic chia phn vng . . . . . . . . . 54
5.1.7 Loi phn vng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.1.8 S dng fdisk thit lp cc phn vng . . . . . . . . . . . . . . 54
5.1.9 a cng sau khi c phn vng s th no . . . . . . . . . . . . 54
5.2 Khi ng h thng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.1 About this sectin . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
5.2.2 Bng ghi khi ng chnh - MBR . . . . . . . . . . . . . . . . . . 57
5.2.3 Qa trnh khi ng ca ht nhn . . . . . . . . . . . . . . . . . . 58
5.2.4 Chng trnh /sbin/init . . . . . . . . . . . . . . . . . . . . . . . . 58
5.2.5 Digging in: LILO . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.6 Digging in: GRUB . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.7 Thng tin dmesg . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.8 Thng tin trong /var/log/messages . . . . . . . . . . . . . . . . . . 59
5.2.9 Cc thng tin khc . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.10 Cp thnc tin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.11 Single-user mode . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.12 Understanding single-user mode . . . . . . . . . . . . . . . . . . . 59
5.2.13 Cc cp thc thi - Runlevels . . . . . . . . . . . . . . . . . . . . . 59
5.2.14 Cng c telinit . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.15 Runlevel etiquette . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.16 "Now" v halt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.2.17 Cp thc thi ngm nh . . . . . . . . . . . . . . . . . . . . . . 59
5.2.18 Tham kho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
5.3 Cp php s dng h thng tp tin. . . . . . . . . . . . . . . . . . . . . . . 60
5.3.1 Gii thiu v cp php . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.2 H tr ca ht nhn . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.3 H tr ca h thng tp tin . . . . . . . . . . . . . . . . . . . . . . 60
5.3.4 Cu hnh h thng giy php . . . . . . . . . . . . . . . . . . . . . 60
MC LC vii

5.3.5 Lnh "quota" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60


5.3.6 Viewing quota . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.7 edquota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.8 Understanding edquota . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.9 Making changes . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.10 Copying quotas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.11 Group restrictions . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.12 The repquota command . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.13 Repquota options . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.14 Monitoring quotas . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.3.15 Modifying the grace period . . . . . . . . . . . . . . . . . . . . . 60
5.3.16 Kim tra qouta khi khi ng . . . . . . . . . . . . . . . . . . . . 60
5.4 Gii thiu v syslogd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.1 c thng tin nht k . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.2 Tailing log files . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.3 Grepping logs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
5.4.4 Ghi nh bo mt . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.4.5 Ch nng cao - klogd . . . . . . . . . . . . . . . . . . . . . . . 62
5.4.6 Ch nng cao - cc chng trnh ghi nht k khc . . . . . . . . 62
5.5 Tm lc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6 Tham kho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

6 Bin dch m ngun v qun l gi phn mm trong linux 65

7 Cu hnh v bin dch ht nhn 66


7.1 Gii thiu h ht nhn Linux . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.1 Ht nhn l ... Linux . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.2 Giao tip vi phn cng . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.3 iu qun CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.4 iu qun vo ra I/O . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.5 Trung tm ca h thng mng . . . . . . . . . . . . . . . . . . . . 67
7.1.6 n li v qu trnh khi ng linux . . . . . . . . . . . . . . . . . 67
7.1.7 Gii thiu v m un . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.8 V tr ca tp tin m un . . . . . . . . . . . . . . . . . . . . . . . 67
7.1.9 Modules not for every process! . . . . . . . . . . . . . . . . . . 67
7.2 Ti m ngun ca ht nhn . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2.1 Kernel version history . . . . . . . . . . . . . . . . . . . . . . . . 67
7.2.2 Getting new kernel sources . . . . . . . . . . . . . . . . . . . . . . 67
7.2.3 Unpacking the kernel . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3 Cu hnh ht nhn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.1 Lets talk configuration . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.2 The new way to configure . . . . . . . . . . . . . . . . . . . . . . 67
7.3.3 Cc mo khi cu hnh . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.4 Code maturity level options . . . . . . . . . . . . . . . . . . . . . 67
7.3.5 Modules and CPU-related options . . . . . . . . . . . . . . . . . . 67
7.3.6 General and parallel port options . . . . . . . . . . . . . . . . . . 67
7.3.7 RAID and LVM . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.8 H thng mng v cc thit b lin quan . . . . . . . . . . . . . . . 67
viii MC LC

7.3.9 IDE support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67


7.3.10 SCSI support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.11 Miscellaneous character devices . . . . . . . . . . . . . . . . . . . 67
7.3.12 File systems and console drivers . . . . . . . . . . . . . . . . . . . 67
7.3.13 Bin dch v ci t ht nhn . . . . . . . . . . . . . . . . . . . . . 67
7.3.14 make dep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.15 make bzImage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.3.16 bin dch m un . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4 Cu hnh khi ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4.1 Gii thiu v Lilo . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.4.2 Cu hnh Lilo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.5 Thit b PCI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.5.1 Thit b PCI 101 . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.5.2 Cc ka cnh ca thit b PCI . . . . . . . . . . . . . . . . . . . . 67
7.5.3 PCI device resources . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6 Linux USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.1 Introducing Linux USB . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.2 Enabling USB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.3 UHCI, OHCI, EHCI oh my! . . . . . . . . . . . . . . . . . . . . 67
7.6.4 The last few steps . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.6.5 Mounting usbdevfs . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.7 Tm lc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.7.1 Tm lc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7.7.2 Ti nguyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

8 H thng mng 68

9 USB bo mt h v v chia s tp tin 69


Chng 1

Trc khi bt u

1.1 V ti liu ny
Cho mng n vi "Linux nhng iu c bn," cun th nht trong bn cun sch hng
dn gip bn chun b cho bi thi 101 ca LPI (Linux Professional Institute). Trong cun
sch hng dn ny, chng ti s gii thiu vi bn bash (v, shell, tiu chun ca Linux),
ch cho bn cch s dng thnh tho cc cu lnh c bn ca Linux nh ls, cp v mv, gii
thch v inode, lin kt "cng" v lin kt "tng trng" (hard link v symbolic links) v
nhiu th khc. Khi kt thc cun sch hng dn ny bn s c kin thc vng vng v
nhng iu c bn khi s dng Linux, v thm ch cn sn sng bt u hc c bn v
nhim v qun tr mng Linux. Khi kt thc chui sch hng dn ny (tm cun tt c),
bn s c kin thc cn thit tr thnh Qun tr vin h thng Linux v sn sng t ti
chng ch LPIC bc I ca Linux Professional Institute nu bn d nh nh vy.

Cun sch hng dn ny (Phn I) ni ring l l tng vi nhng "ngi mi" vi


Linux, hoc vi nhng ngi mun xem li hoc ci tin s hiu bit ca mnh v nhng
khi nim c bn ca Linux nh sao chp (copying) v di chuyn (moving) tp tin, to
ng dn "cng" v "tng trng", v s dng cc cu lnh "ch bin" vn bn c bn
song song vi "bng chuyn" (pipeline) v "chuyn hng" (redirection). Dc theo cun
hng dn ny, chng ti s chia s vi cc bn nhng li gi , li mch nc v mnh li
gi cho cun hng dn thm phong ph ("ngon n") v c tnh thc dng, thm ch cho
c nhng ai c kinh nghim s dng Linux ng k. Vi nhng "ngi bt u", nhiu ti
liu ca cun hng dn ny s mi, nhng vi nhng ngi s dng Linux kinh nghim c
th tm thy cun hng dn ny nh mt cch tuyt vi "lm bo thm" k nng Linux
c bn.

Vi nhng ai qua pht hnh (release) 1 ca cun hng dn ny vi mc ch khc


hn l chun b thi LPI, bn c kh nng khng cn pht hnh 2. Tuy nhin, nu bn c d
tnh vt qua k thi LPI, bn nn lu c bn chnh sa ny.

1.2 V tc gi
C tr ti Albuquerque, New Mexico, Daniel Robbins l kin trc trng ca Gentoo Linux,
mt bn phn phi Linux cao cp. Tc gi cn vit cc bi bo, sch hng dn, nhng li
mch nc cho IBM developerWorks v Intel Developer Services v l tc gi ng gp
2 Trc khi bt u

ca vi cun sch, gm c Samba Unleashed v SuSE Linux Unleashed. Daniel thch th


s dng thi gian vi v, Mary, v con gi, Hadassah. Bn c th lin h vi Daniel qua ti
drobbins@gentoo.org.

Vi nhng cu hi k thut v ni dung ca cun hng dn ny, lin h vi tc gi,


Daniel Robbins, ti drobbins@gentoo.org.
Chng 2

C bn v Linux

2.1 Gii thiu v bash


2.1.1 H v (shell)
Nu bn tng s dng h iu hnh Linux, th bit rng sau khi ng nhp xong, chng
ta s c n cho bi du nhc nh sau:

Du nhc bn thy trn my ca mnh c th trng khc mt cht. N c th cha tn


my, tn ca th mc hin thi, hoc c hai. Tuy nhin, bt k l giu nhc ca bn trng
nh th no, chc chn n cha k hiu ni trn1 . Chng trnh, m in du nhc ni trn
ra gi, l "h v" (shell). V rt c th h v shell ca bn l bash - mt h v shell thng
dng trong th gii h iu hnh chim cnh ct.

2.1.2 C phi bn ang chy bash khng?


Bn mun bit mnh ang chy bash hay khng bng hy g:

$ echo $SHELL
/bin/bash

Nu dng trn cho ra mt thng bo li hoc kt qu khng ging vi v d, th tc l


bn ang chy mt h v shell khc. Trong trng hp , phn ln v d ca cun hng
dn ny vn c th c p dng. Nhng chng ti khuyn bn nn dng bash, v rt c li
v nht l nu bn c mc ch tr thi LPI 101. (Cun hng dn th hai, v qun tr c bn,
chng ti s hng dn cch thay i h v shell cho ngi dng bng cu lnh chsh.2 )
1
tr khi bn ng nhp vi quyn ngi dng root. Nu bn khng bit ngi dng root l g hy c tm
bit nh th ;). Chng ti s ni n vn ny cc phn tip theo
2
nu bn l ngi thch khm ph th hy th lm quen vi cu lnh trn ngay by gi! C php ca n
cng khng qu phc tp so vi cc cu lnh khc ca Linux. T khm ph lun l mt cch hc tt trong mi
lnh vc! Chng ti rt khuyn khch bn
4 C bn v Linux

2.1.3 V bash
Bash l t vit tt ca "Bourne-again shell"3 . Bash l h v shell theo mc nh trn hu
ht cc h thng Linux. Cng vic ca h v shell l tun theo cc cu lnh ca ngi
dng. Nh c h v shell bn c th tc ng qua li vi h iu hnh. Khi lm xong cc
cng vic cn thit, c th ch th cho h v shell thot ra (exit) hay ng xut (logout).
Ti thi im ny bn s c a tr li du nhc ng nhp4 .
Nhn tin, bn c th ng xut bng cch g control-D ti du nhc ni trn.

2.1.4 S dng cd
Nh bn bit v c th s bit :), nhn chm chm vo du nhc bash khng phi l iu
thch th nht trn th gian. V vy, hy th s dng bash "i do" mt vng, quanh h
thng tp tin. Ti du nhc, g cu lnh sau (khng g du $5 :

$ cd /

Chng ta va yu cu chuyn sang lm vic ti bash th mc /. / cn c ngi dng


Linux bit n di ci tn root6 . Trn h thng Linux tt c cc th mc to thnh mt
cy th mc, v / l th mc cao nht ca cy ny, hay l gc r (root) ca n. cd thit lp
th mc m bn ang lm vic vi n, cn gi l "th mc hin thi".
bit th mc hin thi ca bash, hy g:

$ pwd

2.1.5 ng dn
Trong v d pha trn, i s / cho cd gi l ng dn (path). i s cho cd bit ni chng
ta mun chuyn n. Trong trng hp ny, i s / l ng dn tuyt i, c ngha l n
ch r mt v tr trong cy th mc i vi th mc gc (root).

2.1.6 ng dn tuyt i
Di y l mt s ng dn tuyt i khc:

/dev
/usr
/usr/bin
/usr/local/bin
3
ngi dch: Bourne-again shell l mt cch chi ch ting Anh. "Bourne" c ging nh borne (sinh ra,
ra).
4
thng c dng login:
5
Trong cc v d $ u dng ch ch du nhc ca ngi dng, n khng phi l thnh phn ca mt
cu lnh
6
Xin hy nh ci tn ny!!! V tip theo chng ti s gi nh vy trong sut cun sch ny
2.1 Gii thiu v bash 5

Nh bn thy, mi ng dn tuyt i c mt im chung - bt u vi /. Vi ng


dn /usr/local/bin, ta mun cd chuyn vo th mc /, sau th mc usr di n, v sau
local v cui cng l bin. ng dn tuyt i lun lun c nhn ra bi s c mt ca /
u.
C th bn on ra rng nu c tuyt i th phi c tng i. Vng ng l c
ng dn tng i. Bash, cd, v cc cu lnh khc lun lun bin dch nhng ng dn
ny tng i vi th mc hin thi7 . ng dn tng i khng bao gi bt u vi mt
/. V th, nu chng ta ang trong th mc /usr.

$ cd /usr

Th c th dng ng dn tng i chuyn ti th mc /usr/local/bin:

$ cd local/bin
$ pwd
/usr/local/bin

2.1.7 S dng ..
ng dn tng i c th cha mt hay nhiu th mc "..". Th mc .. l th mc c
bit ch ti th mc "b"8 . Tip tc v d trn:

$ pwd
/usr/local/bin
$ cd ..
$ pwd
/usr/local

Bn thy khng, th mc hin thi ca chng ta by gi l /usr/local. Chng ta "quay


ngc tr li" mt th mc v pha th mc root, nu so vi th mc hin thi lc u
(/usr/local/bin).
Thm vo , chng ta c th thm .. vo ng dn tng i c, i ti mt th
mc nm "k bn"9 th mc hin thi, v d:

$ pwd
/usr/local
$ cd ../share
$ pwd
/usr/share
7
hy ch s khc nhau gia hai cch bin dch
8
thng gi l th mc m hn
9
gi nm na l "hng xm"
6 C bn v Linux

2.1.8 V d ng dn tng i
ng dn tng i c th kh phc tp. Sau y l mt s v d, chng ti khng cho
bit cc th mc thu c. Hy th t hnh dung xem bn s i ti u sau khi g nhng
cu lnh sau:

$ cd /bin
$ cd ../usr/share/zoneinfo

$ cd /usr/X11R6/bin
$ cd ../lib/X11

$ cd /usr/bin
$ cd ../bin/../bin

By gi, hy g chng v xem bn hnh dung c ng khng :)

2.1.9 Th cn . l g?
Trc khi kt thc bi ging ca chng ta v cd, c mt vi iu chng ti mun cp
n. u tin, c mt th mc c bit khc gi l ., c ngha "th mc hin thi". Th
mc ny thng khng s dng nh i s cho cu lnh cd, m thng c s dng
thc thi mt s chng trnh trong th mc hin thi. V d:

$ ./chuongtrinh

Tp tin thc thi chuongtrinh nm ti th mc hin thi s c chy.

2.1.10 cd v th mc nh
By gi, chng ta mun chuyn ti th mc nh (home directory), ta g:

$ cd

Khng c i s , cd s chyn ti th mc nh ca ngi dng. Th mc nh s l /root


cho ngi dng cao cp (superuser) v in hnh l /home/username cho ngi dng bnh
thng. Nhng nu mun ch r mt tp tin trong th mc nh th sao? V d chng ta mun
dng tp tin lm i s cho cu lnh chuongtrinh. Nu tp tin "tr ng" trong th mc nh,
c th g10 :

$ ./chuongtrinh /home/teppi82/tepcuatoi.txt
10
trong v d ny ngi dng c tn l teppi82
2.2 S dng cc cu lnh 7

Tuy nhin, vic s dng ng dn tuyt i nh vy khng phi lc no cng tin li,
bn c l chng ta s phi g rt nhiu k t khng? Hy thng cc ngn tay ca
mnh!! Rt may, ta c th s dng k t (du ng) lm cng vic tng t:

$ ./chuongtrinh ~/tepcuatoi.txt

Bn thy khng, nhanh hn rt nhiu v rt tin li!

2.1.11 Th mc nh ca nhng ngi dng khc


Bash s khai trin k t ng mt mnh ch th mc nh ca bn, nhng cng c th
s dng k t ny ch th mc nh ca nhng ngi dng khc11 . V d, nu chng ta
mun ch n tp tin girls.txt trong th mc nh ca James, ta g:

$ ./chuongtrinh ~james/girls.txt

2.2 S dng cc cu lnh


2.2.1 Gii thiu ls
By gi, chng ta s xem xt qua cu lnh ls. Rt c th ls l cu lnh quen thuc ca bn,
v bn bit rng nu ch g cu lnh ny (khng c tham s) th ni dung ca th mc hin
thi s c lit k:

$ cd /usr
$ ls
bin doc games include info lib local sbin share src X11R6

Khi ty chn -a c ch r, bn s "nhn thy" tt c mi tp tin ca mt th mc, bao


gm c cc tp tin n (hidden files), nhng tp tin m tn bt u vi .. Trong v d sau, bn
s thy trong u ra ca ls -a c c cc th mc lin kt c bit . v .. :

$ ls -a
. .. bin doc games include info lib local sbin share src X11R6

2.2.2 Lit k chi tit


Linux12 cho php ch r mt hay nhiu tp tin hay th mc trn dng lnh ls. Nu bn ch
r mt tp tin, th ls s ch hin u ra tp tin m thi. Nu bn ch r mt th mc, th
ls s hin th ni dung ca th mc, tc l cc tp tin v th mc con ca n. Cu lnh ls
c ty chn -l rt thun tin khi cn xem cc thng tin nh quyn hn (permissions), quyn
s hu (ownership), thi gian sa i (modification time), v kch thc (size) ca cc mc.
Trong v d di y, chng ta s dng ty chn -l lit k chi tit th mc /usr:
11
tt nhin nu h c trong h thng
12
hay ni ng hn l bash
8 C bn v Linux

$ ls -l /usr
total 122
drwxr-xr-x 2 root root 53104 2004-08-29 02:17 bin
drwxr-xr-x 2 root root 2336 2004-06-22 19:51 doc
drwxr-xr-x 2 root root 3088 2004-06-01 15:44 games
drwxr-xr-x 46 root root 5528 2004-06-13 16:33 include
lrwxrwxrwx 1 root root 10 2004-05-31 22:29 info -> share/info
drwxr-xr-x 138 root root 43384 2004-08-29 00:28 lib
drwxrwsr-x 11 root staff 272 2004-06-05 04:06 local
drwxr-xr-x 2 root root 6760 2004-08-29 00:28 sbin
drwxr-xr-x 236 root root 6360 2004-06-22 19:31 share
drwxrwsr-x 5 teppi82 src 136 2004-08-28 21:58 src
drwxr-xr-x 6 root root 144 2004-05-31 22:53 X11R6

Ct th nht trong bng trn l thng tin v quyn hn cho tng mc trong danh sch13 .
Chng ti s gii thch mt cch c th cch dch thng tin ny trong cc phn tip theo.
Ct tip theo hin th s lin kt (links) cho mi mc , chng ta cng tm thi dng li
nhng s tr li sau. Ct th ba v ct th t cho bit, tng ng, ch s hu (owner) v
nhm s hu (group). Ct th nm lit k kch thc ca mc. Ct th su l "thi gian
sa i gn nht" ("last modified" time) hay cn gi tt l "mtime" ca mc. Ct cui
cng l tn gi ca chng. Hy tp info! Nu tp tin l lin kt tng trng (symbolic
link), bn s thy du -> v ng dn ti ni m lin kt ch n. Trong v d trn info l
mt trng hp nh vy.

2.2.3 Xem th mc
i khi bn ch mun xem thng tin ca th mc, m khng quan tm ti ni dung ca n
bn trong. Cho nhng trng hp ny, chng ta cn ch r ty chn -d, "ra lnh" cho ls
ch hin th thng tin ca th mc quan tm:

$ ls -dl /usr /usr/bin /usr/X11R6/bin ../share


drwxr-xr-x 241 root root 6488 2004-09-02 18:21 ../share
drwxr-xr-x 12 root root 312 2004-05-31 22:29 /usr
drwxr-xr-x 2 root root 53208 2004-09-02 18:21 /usr/bin
drwxr-xr-x 2 root root 3984 2004-06-22 19:30 /usr/X11R6/bin

2.2.4 lit k inode v lit k qui (recursive)


Nh vy l c th s dng ty chn -d ch xem thng tin ca th mc. Nhng ng thi
chng ta cng c th dng ty chn -R thc hin iu ngc li, tc l khng ch xem
ni dung ca th mc, m cn xem tt c cc tp v th mc bn trong ca th mc
(Xem ton b14 )! Chng ti khng a ra v d no cho ty chn ny (v danh sch thu c
thng rt di), tuy nhin bn nn th mt vi ln cu lnh ls -R v ls -Rl bit chng lm
vic nh th no.
13
Bn nn bit r (readable) - c th c, w (writable) - c th vit, x (executable) - c th thc thi, du gch
ngang (-) cho bit khng c mt trong ba quyn hn ni trn, nh th s d nh hn. Bn s hi vy hai ch
ci d v l y l g? d v l y khng lin quan g n quyn hn, m l ch vit tt ch phn loi ca mc,
c th l d (directory) - th mc, l (link) - lin kt. Tm bit vy , nh th ti nay bn s ng ngon hn
14
Ni nm na l xem tt tn tt
2.2 S dng cc cu lnh 9

V cui cng vng rt may l cui cng, ty chn -i ca ls s dng hin th s inode
ca cc i tng15 trong h thng tp tin:

$ ls -i /usr
685 bin 917 include 9352 local 920 src
915 doc 918 info 706 sbin 12522 X11R6
916 games 919 lib 708 share

2.2.5 Inode l g?
Mi i tng trn mt h thng tp tin c xc nh bi mt ch mc (index) duy nht,
gi l ch mc inode. Ci ny nghe c v tm thng, nhng rt cn am hiu inode c
th nm c thc cht ca nhiu thao tc vi h thng tp tin. Trong v d ny chng ta s
xem xt cc lin kt . v .. m xut hin trong mi th mc. bit thc cht th mc .. l
g, u tin chng ta xem ch mc inode ca /usr/local:

$ ls -id /usr/local
9352 /usr/local

Th mc /usr/local c ch mc inode l 9352. Cn by gi, hy xem ch mc inode ca


mbox/usr/local/bin/..:

$ ls -id /usr/local/bin/..
9352 /usr/local/bin/..

i! Cng l 9352.
Nh bn thy y, /usr/local/bin/.. c cng ch mc inode vi /usr/local! Nh vy chng
ta hiu thc cht .. cng l mt mc trn h thng tp tin m c cng inode vi th mc m.
y l mt khm ph gy sc! Trc y, chng ta cho rng /usr/local l th mc. By gi,
chng ta khm ph ra inode 9352 trn thc t mi l th mc, v tm thy hai mc (cn gi
l "lin kt") ch ti inode ny. l /usr/local v /usr/local/bin/.., chng u l lin kt ti
inode 9352. Mc d inode 9352 ch tn ti mt ni trn a, nhng cho php nhiu mc
c th lin kt ti n. Inode 9352 l i tng tht s nm trn a.
Trong khi thc hnh, nu mun chng ta c th thy tng s ln m inode 9352 c
lin kt n, dng cu lnh ls -dl:

$ ls -dl /usr/local
drwxrwsr-x 11 root staff 272 2004-06-05 04:06 /usr/local

Chng ti mun bn ch vo ct th hai t bn tri. Vng vi nhng ci u nhanh


nhy nh ca cc bn, th thy rng th mc /usr/local (hay ni ng hn l inode 9352)
c lin kt n mi mt ln. C tht s nhiu nh vy khng? nh tan mi hoi
nghi di y l cc mc khc nhau, lin kt n inode ny trn h iu hnh ca ti:
15
object
10 C bn v Linux

/usr/local
/usr/local/.
/usr/local/bin/..
/usr/local/games/..
/usr/local/lib/..
/usr/local/sbin/..
/usr/local/share/..
/usr/local/src/..
/usr/local/j2sdk1.4.2/..
/usr/local/man/..
/usr/local/include/..

2.2.6 mkdir
Cn by gi sau khi c mt ci nhn khi qut v th mc, chng ta xem xt nhanh cu
lnh mkdir, lnh s dng to mt (cc) th mc mi. V d di y to 3 th mc mi,
co, ca, ro, tt c di /tmp:

$ cd /tmp
$ mkdir co ca ro

Theo mc nh, cu lnh mkdir khng to th mc m; tt c ng dn t thnh phn


u tin n thnh phn gn cui cng phi tn ti. gii thch r vn ny chng ti
xin ly v d sau: trong th mc nh cn to th mc project/vnoss/docs v cc th mc
project, project/vnoss cha c sn. Th g:

$ mkdir project/vnoss/docs
mkdir: cannot create directory project/vnoss/docs: No such file or directory

i! Li thiu th mc m! Chng ta cn a ra ba cu lnh mkdir ring bit nh sau:

$ mkdir project
$ mkdir project/vnoss
$ mkdir project/vnoss/docs

2.2.7 mkdir -p
S dng 3 cu lnh ring bit nh trn tht l bt tin v mt thi gian. Rt may, ty chn
-p ca mkdir xa b s bt tin ny16 . Lnh mkdir vi ty chn -p s to tt c cc th mc
m nu chng khng ti ti, nh y:
16
Trong th gii Linux bn s thy c rt nhiu cng c nh vy, ch cn b cht t thi gian tm hiu th
cc cng vic hng ngy s tr nn n gin v tn t sc lc cng nh tr c. Ngoi ra rt c th n cn em
li cho bn s sng khoi
2.2 S dng cc cu lnh 11

$ mkdir -p project2/vnoss/docs

Ni chung, s n gin lun p mt. hc thm v cu lnh mkdir, g man mkdir v


c trang hng dn s dng17 (man page). Bn cng c th c trang HDSD ca tt c
cc cu lnh ni n (v d, man ls), tr cd, v cd l lnh ni tr (built-in) trong bash18 .

2.2.8 touch
By gi, chng ta s xem xt nhanh cc cu lnh cp v mv. Chng c s dng sao
chp, i tn, v di chuyn tp tin (th mc). bt u, chng ta s dng cu lnh touch
to mt tp tin trong /tmp:

$ cd /tmp
$ touch saochepem

Cu lnh touch cp nht "mtime"19 ca mt tp tin nu tp tin c trn h thng


(ct th su trong kt qu ca ls -l). Nu tp tin khng tn ti, th mt tp tin mi, trng
rng s c to ra. By gi chng ta c tp tin /tmp/saochepem vi kch thc bng
khng.

2.2.9 echo
Hy thm vo tp tin ny mt s d liu. Trn h thng Linux c rt nhiu cch lm vic
ny, tuy nhin ti thi im ny chng ta s dng cu lnh echo. Lnh ny ly i s v theo
mc nh in chng u ra tiu chun20 (standard output). u tin, hy th dng echo nh
sau:

$ echo "tepdautien"
tepdautien

2.2.10 echo v s chuyn hng


By gi, vn cu lnh echo ni trn nhng vi s chuyn hng u ra (output redirection):

$ echo "tepdautien" > saochepem

Khi c du ln hn theo sau l tn tp tin, h v shell s vit u ra ca echo vo tp tin


, tc l saochepem. Tp tin ny s c to ra nu cha c, hoc ni dung c s b
vit ln. Sau , nu kim tra tp tin bng ls -l, chng ta c th thy saochepem "di" 11
byte. l v n cha t tepdautien v k t dng mi:
17
xin vit tt l HDSD
18
trong trng hp ny m HDSD ca bash (man bash) ri tm n mc con cd trong mc ln SHELL
BUILTIN COMMAND
19
thi gian sa i cui cng
20
thng thng l mn hnh
12 C bn v Linux

$ ls -l saochepem
-rw-r--r-- 1 teppi82 thang 11 2004-09-02 18:56 saochepem

2.2.11 cat v cp
hin th ni dung tp tin trn thit b u cui21 (terminal), c th s dng cu lnh cat:

$ cat saochepem
tepdautien

By gi khi c tp tin thc hnh, chng ta c th s dng "cu thn ch" cp to


tp tin embansao t tp tin gc saochepem:

$ cp saochepem embansao

Nu dng ls -i nghin cu, chng ta thy y l nhng tp tin ring r tht s: ch


mc inode ca chng khc nhau!

$ ls -i saochepem embansao
471627 embansao 471620 saochepem

2.2.12 mv
Lnh mv li l mt cu thn ch khc. Ln ny dng i tn "embansao" thnh "em-
bichuyen". Bn s thy, trong v d di, ch mc inode khng thay i; tuy nhin, tn tp
tin ch n inode th s khc.

$ mv embansao embichuyen
$ ls -i embichuyen
471627 embichuyen

S inode ca tp tin b chuyn vn nh c, v tp tin thu c nm trn cng h thng


tp tin nh tp tin ngun ( khng cn na). Chng ta s c ci nhn gn hn v h thng
tp tin ti Phn 3 ca cun sch ny.
Chng ti mun nhn vic ni v mv, xem mt cch s dng khc ca cu lnh
ny. mv, ngoi vic i tn tp tin, cn cho php di chuyn mt hay nhiu tp tin ti v tr
khc trong h thng. V d, chuyn /var/tmp/teptin.txt ti /home/teppi82 (tp tin nh ca
teppi82) g22 :

$ mv /var/tmp/teptin.txt /home/teppi82
21
chng ti s dng t terminal thay th cho thut ng ny
22
bn cn to teptin.txt trc, dng lnh touch
2.3 To lin kt v xa tp tin 13

Sau khi g cu lnh ny, teptin.txt s c chuyn n v tr mi /home/teppi82/teptin.txt.


V nu /home/teppi82 nm trn h thng tp tin khc23 vi /var/tmp, th cu lnh mv s sao
chp teptin.txt ti h thng tp tin mi v xa ci trn h thng c. Rt c th bn on
ra rng, khi di chuyn teptin.txt gia cc h thng tp tin, teptin.txt ti v tr mi s c ch
mc inode mi. l v mi h thng tp tin c mt b cc ch mc inode c lp.
mv cng l mt cng c kh mnh, chng ta c th s dng cu lnh ny di chuyn
nhiu tp tin ti mt th mc ch. V d, di chuyn teptin1.txt v baibao3.txt ti
/home/teppi82, chng ta g:

$ mv /var/tmp/teptin1.txt /var/tmp/baibao3.txt /home/teppi82

2.3 To lin kt v xa tp tin


2.3.1 Lin kt cng
Nu bn cn nh th chng ta cp n thut ng "lin kt", khi ni n quan h gia
tn hai th mc v inode ca chng. Thc t l c hai kiu lin kt trn Linux. Kiu m
chng ta ni n gi l lin kt cng. S lin kt cng ca mi inode l khng gii hn,
v inode s vn cn trn h thng tp tin cho n khi tt c lin kt cng ca n b xa ht.
Khi lin kt cng cui cng b xa, v khng c chng trnh no m tp tin , Linux s
t ng xa tp tin. Nu bn mun to lin kt cng mi, hy tham kho cu lnh ln:

$ cd /tmp
$ touch lienketdau
$ ln lienketdau lienkethai
$ ls -i lienketdau lienkethai
10662 lienketdau 10662 lienkethai

Chng ta thy, lin kt cng lm vic trn cp ch mc inode ch ti mt tp tin


ni ring. Trn h iu hnh Linux, lin kt cng c mt vi hn ch. Th nht, bn ch c
th to lin kt cng ti tp tin, to lin kt cng ti th mc l khng th. iu ny ng;
ch c . v .. l cc lin kt cng ti th mc do h thng to ra. Nhng ngi dng (d
l "root") khng c quyn to mt ci cho ring mnh. Hn ch th hai ca lin kt cng l
chng khng th lin kt "xuyn" h thng tp tin. C ngha l khng th to mt lin kt
cng t /usr/bin/bash ti /bin/bash nu cc th mc / v /usr nm trn hai h thng tp tin
ring bit.

2.3.2 Lin kt tng trng


Rt c th v cc l do trn, lin kt tng trng(hay symlink) c s dng thng xuyn
hn lin kt cng. Lin kt tng trng l mt loi tp tin c bit, m ch ti tp tin khc
bng tn ch khng ch trc tip ti inode. Lin kt tng trng khng ngn nga vic xa
b tp tin m n ch ti: nu tp tin ch b xa b, th lin kt tng trng s khng c gi
tr s dng, hay n cch khc l b hng.
23
trong a s cc trng hp l mt phn vng khc trn a cng
14 C bn v Linux

Vic to lin kt tng trng cng khng c g phc tp, ch cn a ty chn -s vo


lnh ln:

$ ln -s lienkethai lienketba
$ ls -l lienketdau lienkethai lienketba
lrwxrwxrwx 1 teppi82 thang 10 2004-09-02 23:04 lienketba -> lienkethai
-rw-r--r-- 2 teppi82 thang 0 2004-09-02 19:19 lienketdau
-rw-r--r-- 2 teppi82 thang 0 2004-09-02 19:19 lienkethai

Trong u ra ca ls -l, c th phn bit lin kt tng trng vi cc tp tin thng thng
bng 3 cch. Th nht, ct u tin ca lin kt tng trng cha k t l (link). Th hai,
kch thc ca tp tin lin kt tng trng l s k t ca tn tp tin ch (lienkethai, trong
trng hp ny). Th ba, ct cui cng hin th tn tp tin ch c du mi tn -> pha
trc.

2.3.3 Su hn v lin kt tng trng


Lin kt tng trng ni chung linh hot hn lin kt cng. Chng ta c th to lin kt
tng trng ti bt k i tng no ca h thng tp tin, bao gm c th mc. V bi v
lin kt tng lm vic trn c s ng dn, ch khng phi inode, vic to lin kt tng
trng ti i tng trn h thng tp tin khc l hon ton c th. Tuy nhin, cng c th
thc t ny li lm cho vic hiu lin kt tng trng thm phc tp.
Xem xt thm trng hp chng ta mun to mt lin kt trong /tmp m ch n
/usr/local/bin. Cn g nh sau:

$ ln -s /usr/local/bin bin1
$ ls -l bin1
lrwxrwxrwx 1 teppi82 thang

Hay mt cch tng ng:

$ ln -s ../usr/local/bin bin2
$ ls -l bin2
lrwxrwxrwx 1 teppi82 thang 16 2004-09-02 23:05 bin2 -> ../usr/local/bin

Nh bn c th thy, c hai lin kt tng trng cng ch ti mt th mc. Tuy nhin,


nu lin kt tng trng th hai ca chng ta b chuyn ti mt th mc khc, n s b "v"
v ng dn dng to lin kt ny l tng i:

$ mkdir thumucmoi
$ mv bin2 thumucmoi
$ cd thumucmoi
$ cd bin2
bash: cd: bin2: No such file or director
2.3 To lin kt v xa tp tin 15

Ni c th hn, th mc /tmp/usr/local/bin trn thc t khng tn ti. Nhng v ng


dn l tng i nn sau khi di chuyn bin2, thay v ch ti /usr/local/bin s ch ti th mc
khng tn ti ni trn. V vy, chng ta khng th dng cd chuyn ti th mc bin2;
ni cch khc, lin kt bin2 b v.
V l do ny, i lc nn trnh vic to lin kt tng trng vi ng dn tng i.
Tuy nhin, c nhiu trng hp lin kt tng trng vi ng dn tng i li thun tin.
V d khi bn mun to tn th hai cho mt chng trnh trong /usr/bin:

# ls -l /usr/bin/unicode_start
-rwxr-xr-x 1 root root 1061 2004-04-22 22:30 /usr/bin/unicode_start

Nu l ngi dng "root"24 , bn c th to mt tn tng ng cho "unicode_start", v


d "u_s". Trong v d ny, du nhc bash cha "#" l du hiu ca ngi dng root. y
cn quyn root v ngi dng bnh thng khng th to tp tin trong /usr/bin/. Vic to mt
tn tng ng cho unicode_start khng c g phc tp:

# cd /usr/bin
# ln -s /usr/bin/unicode_start u_s
# ls -l unicode_start
-rwxr-xr-x 1 root root 1061 2004-04-22 22:30 unicode_start
# ls -l u_s
lrwxrwxrwx 1 root root 22 2004-09-02 23:14 u_s -> /usr/bin/unicode_start

y, to ra lin kt tng trng u_s ch ti tp tin /usr/bin/unicode_start. Hy th


g u_s bn s thy kt qu thu c!
Tuy nhin, gii php ny s to ra vn nu chng ta chuyn c hai tp /usr/bin/unicode_start
v /usr/bin/u_s ti mt th mc khc, v d /usr/local/bin:

# mv /usr/bin/unicode_start /usr/bin/u_s /usr/local/bin


# ls -l /usr/local/bin/unicode_start
-rwxr-xr-x 1 root root 1061 2004-04-22 22:30 /usr/local/bin/unicode_start
# ls -l /usr/local/bin/u_s
lrwxrwxrwx 1 root root 22 2004-09-02 23:14 /usr/local/bin/u_s -> /usr/bin/unicode

V chng ta s dng ng dn tuyt i trong khi to lin kt tng trng ni trn,


nn u_s s vn ch ti /usr/bin/unicode_start. Trong khi /usr/bin/unicode_start khng cn
tn ti na v b chuyn.
C ngha l by gi u_s tr thnh mt lin kt b v. C ng dn tuyt i v ng
dn tng i trong lin kt tng trng u c mt mnh ring ca mnh, v bn c th
chn mt loi ng dn thch hp vi nhu cu ca mnh. Thng th c ng dn tng
i v ng dn tuyt i u lm vic tt. Trong v d sau, lin kt s lm vic thm ch
sau khi di chuyn c hai tp tin25 :

# cd /usr/bin
# ln -s unicode_start u_s
24
ngi c quyn ghi vo th mc /usr/bin theo mc nh
25
chng ti ngm hiu l bn t cc tp tin unicode_start v u_s v li ch c ca n
16 C bn v Linux

# ls -l u_s
lrwxrwxrwx 1 root root 13 2004-09-02 23:27 u_s -> unicode_start
# mv unicode_start u_s /usr/local/bin
# ls -l /usr/local/bin/unicode_start
-rwxr-xr-x 1 root staff 1061 2004-09-02 23:29 /usr/local/bin/unicode_start
# ls -l /usr/local/u_s
lrwxrwxrwx 1 root root 13 2004-09-02 23:27 /usr/local/bin/u_s -> unicode_start

By gi, chng ta c th chy chng trnh unicode_start bng cch g mt lnh ngn
hn /usr/local/bin/u_s. Ln ny /usr/local/bin/u_s ch ti chng trnh unicode_start trong
cng th mc vi n.

2.3.4 rm
Xin chc mng, hn mt na chng ng qua, v cc bn bit cch s dng cp, mv,
v ln, gi l thi gian hc cch xa i tng. Thng thng, vic ny c thc hin bi
cu lnh rm. xa mt (cc) tp tin no hy ch r chng trn dng lnh:

$ cd /tmp
$ touch tep1 tep2
$ ls -l tep1 tep2
-rw-r--r-- 1 teppi82 thang 0 2004-09-04 17:53 tep1
-rw-r--r-- 1 teppi82 thang 0 2004-09-04 17:53 tep2
$ rm tep1 tep2
$ ls -l tep1 tep2
ls: tep1: No such file or directory
ls: tep2: No such file or directory

Ch rng di Linux, mt khi tp tin b xo, n "ra i" mi mi hay ni ng hn


l vic khi phc li tp tin xa khng n gin cht no. V l do ny, nhiu nh qun
tr mi vo ngh thng s dng ty chn -i khi xa tp tin. Vi ty chn -i rm xa cc tp
tin trong ch "hi thoi vi ngi dng" (interactive mode), tc l, c hi kin ngi
dng trc khi thc s xa tp tin. V d:

$ rm -i tep1 tep2
rm: remove regular empty file tep1? y
rm: remove regular empty file tep2? y

Cu lnh rm hi c "thc s" mun xa tp tin ch r (tep1 v tep2) hay khng.


xa chng, hy g "y" v Enter. Nu g "n", tp tin s khng b xa. Hoc, nu thao tc
sai, c th g Control-C hy b ton b lnh rm -i, v nhng g lm c th gy thit
hi ln cho h iu hnh.
Nu bn vn mun s dng cu lnh rm, th s rt c ch nu thm dng sau vo tp tin
/.bashrc. Sau khi thm xong, hy nh ng xut v ng nhp li26 . Sau ny, mi khi bn
g rm, h v bash s t ng bin i n thnh cu lnh rm -i. V nh th, rm s lun lun
lm vic trong ch "hi thoi vi ngi dng":
26
nu chy /.bashrc th khng phi ng xut/nhp
2.4 S dng cc k t i din (wildcard) 17

alias rm="rm -i"

Hy to cc alias khc cho cc cu lnh ni n! V d mv, cp,... Rt c th sau mt


thi gian bn s thy chn ngn vi ch hi thoi ny, v n gy phin phc, nht l khi
xa nhiu tp tin mt lc. Ch cn xa dng ni trn i hoc thm vo u dng k t #,
ch hi thoi s t ng bin mt.

2.3.5 rmdir
xa th mc, bn c hai la chn. La chn th nht: xa tt c cc vt th bn trong
th mc v cui cng s dng rmdir xa bn thn th mc nh v d sau:

$ mkdir thumuccuatoi
$ touch thumuccuatoi/tep1
$ rm thumuccuatoi/tep1
$ rmdir thumuccuatoi

Phng php ny thng c m ch l cch xa th mc cho "tr cn b sa". Tt c


nhng ngi dng v qun tr c kinh nghim dng dng lnh thun tin hn nhiu - rm -rf.
S ni n dng lnh ny ngay phn sau.

2.3.6 rm v th mc
Cch tt nht xa mt th mc l s dng cu lnh rm vi ty chn bt buc xa ton
b (recursive force). Vi ty chn ny, rm xa th mc ch ra, cng nh tt c i tng
cha trong th mc :

$ rm -rf thumuccuatoi

Ni chung, s dng dng lnh rm -rf l phng php c a chung hn. Cn rt cn


thn khi s dng rm -rf. Nh ngi ta thng ni bt k huy chng no cng c hai mt,
sc mnh ca dng lnh ny c th em n c iu c li v tai ha. V nn nh ng bao
gi th rm -rf /!

2.4 S dng cc k t i din (wildcard)


2.4.1 Gii thiu v k t i din
Trong qu trnh lm quen cng nh s dng Linux lm vic t ngy ny qua ngy khc,
chc chn c nhiu ln bn mun thc hin mt thao tc no (v d xa rm) trn nhiu
i tng cng mt lc. Trong nhng trng hp ny, g nhiu tp tin trn mt dng lnh
thng thng gy vng v khng c p mt:

$ rm tep1 tep2 tep3 tep4 tep5 tep6 tep7 tep8


18 C bn v Linux

gii quyt vn ny, chng ta c th li dng s h tr k t i din c sn trn


Linux. S h tr ny, cn gi l "globbing" (v l do lch s), cho php ngi dng ch r
nhiu tp tin mt lc, dng mt mu i din27 no . Bash v cc cu lnh Linux khc s
bin dch mu ny, v tm trn h thng28 tt c cc tp tin tng ng n. Nh vy, nu c
cc tp tin tep1, tep2,...i tep8 trong th mc hin thi, bn c th xa nhng tp ny m ch
cn g:

rm tep[1-8]

Hoc nu bn mun xa tt c cc tp tin m bt u bng tep cng nh tp tin no c


tn tep, hy g:

$ rm tep*

K t i din * tng ng bt k k t hay chui k t no, v thm th "khng c k


t" cng tng ng. Tt nhin, c th s dng i din "ton cu" (glob wildcards) xa
tp tin mt cch n gin hn, nh chng ta s thy trong cc phn tip theo.

2.4.2 Hiu v khng tng ng


Nu mun lit k tt c i tng ca h thng tp tin trong /etc bt u bng g cng nh
mi tp tin c tn l g, bn cn g:

$ ls -d /etc/g*
/etc/gaim /etc/gnome /etc/group- /etc/gtk
/etc/gateways /etc/gnome-vfs-2.0 /etc/group.org /etc/gtk-2.0
/etc/gconf /etc/gnome-vfs-mime-magic /etc/gs-gpl
/etc/gdm /etc/groff /etc/gshadow
/etc/gimp /etc/group /etc/gshadow-

By gi, iu g s xy ra nu bn dng mt mu m khng c i tng no tng ng?


Khng c cch kim ra no tt hn l mt v d: chng ta th lit k tt c cc tp tin trong
/usr/bin bt u bng asdf v kt thc bng jkl,, gm c tp tin c th c l asdfjkl:

$ ls -d /usr/bin/asdf*jkl
ls: /usr/bin/asdf*jkl: No such file or directory

l ci xy ra! Thng th, khi chng ta ch r mt mu, mu tng ng mt hay


nhiu tp tin trn h thng, v bash thay th mu bi mt danh sch cc vt th tm thy,
cch nhau bi khong trng. Tuy nhin, khi mu khng a ra khng c mt i tng no
ph hp, th bash coi k t i din nh mt k t bnh thng. Kt qu l ls khng th tm
thy tp tin /usr/bin/asdf*jkl, v a ra thng bo li. Quy lut y l mu ton cu ch
c khai trin nu c i tng tng ng trong h thng tp tin. Trong trng hp ngc
li chng c a nguyn vn vo cu lnh29 .
27
wildcard pattern
28
ni chnh xc hn l trong ng dn ch ra trong dng lnh
29
trong trng hp ny /usr/bin/asdf*jkl s c a vo cu lnh ls
2.4 S dng cc k t i din (wildcard) 19

2.4.3 C php i din: *


By gi, khi thy c ch lm vic ca globbing trong cc trng hp khc nhau, chng
ta c th xem xt n c php ca n. trn c mt vi v d vi *. y chng ta tip
tc tm hiu su hn v k t ny. Xin c nhc li * s tng ng khng hoc nhiu k
t. N c ngha "bt k th g c th vo y, gm c khng c g". Tt hn ht chng ta
xem xt cc v d sau, hy vng chng s gip bn hiu r hn nhng iu chng ti mun
ni:

/etc/g* tng ng tt c tp tin trong /etc m bt u bng g, hoc mt tp tin hay th


mc c tn g.

/tmp/my*l tng ng tt c tp tin trong /tmp m bt u bng my v kt thc bng l,


bao gm c tp tin myl

2.4.4 C php i din: ?


Khc vi *, ? ph hp bt k k t n no. V d:

tepcuatoi? tng ng bt k tp tin no m tn ca n l tepcuatoi theo sau l mt k


t n30 .

/tmp/note?txt tng ng c /tmp/notes.txt v emph/tmp/notes_txt, tt nhin nu chng


tn ti.

2.4.5 C php i din: []


C php i din ny ging mt ? ch cng ch tng ng vi mt k t n, nhng c
trng hn, ri bn s thy ti sao li c trng hn. s dng c php ny, t cc k t
m bn mun tm tng ng vo trong []. Biu thc thu c s tm s tng ng vi mi
k t nm trong du ngoc vung ny. Bn c th s dng - ch r mt chui k t lin
tip, v thm ch lin hp cc chui ny. Ph! Tt hn ht l xem xt cc v d. Hy c k
cc v d sau v ng no mt cht, nht nh bn s nm chc vn :

tepcuatoi[12] s tng ng tepcuatoi1 v tepcuatoi2. Cng nh * c php i din s


c khai trin nu t nht mt trong nhng tp tin ny tn ti trong th mc hin
thi.

[Cc]hange[Ll]og s tng ng Changelog, ChangeLog, changeLog, v changelog.

By gi th chc bn r s c trng ca c php ny. Ngoi ra, c php ny lm


phong ph thm s tng ng:

ls /etc/[0-9]* s lit k tt c cc tp tin trong /etc bt u bng mt ch s.

ls /tmp/[A-Za-z]* s lit k tt c cc tp tin trong /tmp bt u bng mt ch ci hoa


hay ch ci thng.
30
v d tepcuatoi1 tepcuatoi2 tepcuatoia tepcuatoix ...
20 C bn v Linux

2.4.6 C php i din: [!]


Cu trc [!] ging vi cu trc [], nhng n s tng ng bt k k t no, m khng c
lit k gia [! v ]. V d:

rm tepcuatoi[!9] s xa tt c cc tp tin c tn tepcuatoi cng vi mt k t n,


ngoi tr tepcuatoi9.

2.4.7 Su hn v c php i din


y l mt s iu cn khi s dng cc c php i din. u tin, bash "i x" cc
k t i din, ?, [, ], v *, mt cch c bit, bn cn rt cn thn khi g trong i s ca
mt cu lnh nhng k t ny. V d, nu mun to mt tp tin c cha dng [fo]*, th cu
lnh sau s khng lm ci bn mun:

$ echo [fo]* > /tmp/teptinmoi.txt

V mu [fo]* tng ng (hoc khng tng ng) vi (cc) tp tin no trong th mc


hin thi, nn bn s thy tn ca chng, nu c, trong /tmp/teptinmoi.txt, ch khng phi
l dng [fo]* nh bn mong i. Gii php? Mt cch gii quyt l a cc k t vo
du ngoc n, chng (du ngoc) ngn chn khng cho bash thc hin s khai trin trn
k t:

$ echo [fo]* > /tmp/teptinmoi.txt

S dng cch ny, tp tin mi ca bn s cha dng ch [fo]* nh mong mun. Mt gii
php khc: s dng k t thot (escape character) gch ngc. Khi bash coi [, ], v * l
cc k t thng ch khng phi k t i din:

echo \[fo\]\* > /tmp/teptinmoi.txt

C hai cch (ngoc n v k t thot) c cng mt tc dng. Nhn khi ang ni v


k t gch ngc, gi l thi im tt ni rng, nu mun dng \ nh mt k t bnh
thng, cn hoc a n vo ngoc n, hoc g \\, 31 . Kt qa l bash s khai trin hai
biu thc thnh \.

2.4.8 Ngoc n "gp" ngoc kp


Ch rng ngoc kp c tc dng tng t nh ngoc n, nhng vn cho php bash thc
hin mt s khai trin gii hn no . V d, k t thot gch ngc trong mt vi trng
hp vn c tc dng d nm trong ngoc kp. Hy th echo "\"! Bi vy, ngoc n l
tt nht khi bn thc s mun a nguyn vn i s cho cc cu lnh. thm thng tin
v s khai trin globbing, g man 7 glob. Xem thm thng tin v trch dn (quote), bng cc
du ngoc, g man 8 glob ri c phn QUOTING. Nu bn c d nh tr thi LPI, coi nh
y l bi tp v nh.
31
ngoc n hay k t gch ngc s l du thot cho \
2.5 Tng kt v cc ngun tham kho 21

2.5 Tng kt v cc ngun tham kho


2.5.1 Tng kt
u tin xin chc mng: bn ti im cui cun n tp Linux - nhng iu c bn ca
chng ti! Rt hy vng n gip bn nm chc nhng kin thc s ng nht v Linux. Cc
ch bn hc cun ny, bao gm c s v bash, nhng cu lnh Linux c bn, lin
kt, v i din, l nn mng cho cun hng dn tip theo, qun tr c s, trong chng
ti s a cc ch nh biu thc chnh quy (regular expression), quyn s hu, quyn
hn, qun l ti khon ngi dng, v nhiu ch khc na.
Tip tc cun hng dn ny, bn s sm chun b t ti chng ch LPIC bc 1 t Linux
Professional Institute. Ni n chng ch LPIC, nu y l ci bn quan tm, th chng ti
khuyn bn nn u t thi gian hc cc cc ti liu tham kho ngay sau y. Chng ti
la chn cn thn b sung thm cho cun hng dn ny.

2.5.2 Cc ngun tham kho


Trong cc bi bo "Bash qua v d" ("Bash by example") trn developerWorks, Daniel cho
bn bit cch s dng cu trc lp trnh bash vit script ca mnh. Ba bi bo ny, v
nht l phn 1 v phn 2, l cn thit cho k thi LPIC bc 1:

Bash qua v d, Phn 1: Lp trnh c s trong h v Bourne-again shell

Bash qua v d, Phn 2: Lp trnh bash nng cao

Bash qua v d, Phn 3: Khm ph h thng ebuild

Nu bn l ngi dng Linux mi hay trung bnh, bn tht s khng th khng xem
Nhng cu hi k thut thng t - dnh cho ngi dng Linux (Technical FAQ for Linux
users). FAQ ny l danh sch 50 trang, i su v nhng cu hi m ngi dng Linux thng
t ra, vi cc cu tr li chi tit. Bn thn FAQ ny dng PDF (Acrobat).
Nu bn cm thy khng quen thuc lm vi trnh son tho vi, hy xem cun hng
dn vi v lng (Intro to vi). Cun hng dn ny l kha m u cp tc v trnh son tho
mnh ny. Coi nh y l ti liu phi c thm nu bn khng bit cch s dng vi.

2.5.3 kin c gi
Hy cho chng ti bit cun hng dn ny c gip ch cho bn khng. V chng ti c th
lm n tt hn nh th no. ng thi, chng ti cng mun nghe v nhng ch khc
m bn c th mun xem trong d n ti liu hng dn ca developerWorks
t cu hi v ni dung ca cun hng dn th nht ny, lin h tc gi, Daniel
Robbins, ti drobbins@gentoo.org.

2.5.4 Thay cho li kt cun 1


Cun hng dn ny c vit hon ton trn XML, s dng chng trnh to sch hng
dn Toot-O-Matic ca developerWorks32 . Cng c m ngun m Toot-O-Matic mt XSLT
32
ngi dch: bn dch c vit trn m TEX s dng trnh son tho gedit
22 C bn v Linux

stylesheet v vi chc nng XSLT m rng bin i tp XML thnh cc trang HTML, mt
tp zip, nh tiu JPEG v hai tp PDF. Kh nng xut ra c dng vn bn v dng nh
nguyn t mt tp ngun n cho thy kh nng v s linh hot ca XML. (XML ng thi
tit kim rt nhiu thi gian v sc lc ca nhm chng ti).
Bn c th ly m ngun ca cng c Toot-O-Matic ti
http://www6.software.ibm.com/dl/devworks/dw-tootomatic-p/. Cun
hng dn Xy dng hng dn vi Toot-O-Matic (Bulding tutorials with the Toot-O-Matic)
cho thy cch s dng Toot-O-Matic to hng dn ca chnh bn. developerWorks cn
lm ch mt din n dnh cho Toot-O-Matic, ti a ch: http://www-105.ibm.com/developerworks/xml_df.nsf
late?OpenForm&RestrictToCategory=11. Chng ti rt mun bit bn ngh g v cng c
ny.
Chng 3

C bn v qun tr Linux

3.1 Biu thc chnh quy


3.1.1 Biu thc chnh quy l g?
Mt biu thc chnh quy, regular expression, (hay cn gi l mt "regex" hay "regexp") l
mt c php c bit c s dng m t cc mu vn bn. Trn h thng Linux, biu
thc chnh quy thng dng tm mt mu vn bn no , cng nh thao tc tm v thay
th trong vn bn

3.1.2 So snh vi k t i din (glob)


Khi xem xt biu thc chnh quy, bn c th thy rng c php biu thc chnh quy trng
ging vi c php ca "globbing" m chng ta xt n ti Phn 1. Tuy nhin, ng
iu ny lm bn ngu mui, s ging nhau ca chng ch l v bn ngoi. Biu thc chnh
quy v mu k t i din, trong khi nhn c v ging nhau, l nhng con th d khc nhau.

3.1.3 Chui con n gin


Vi ch trn, hy xem xt nhng iu c bn nht ca biu thc chnh quy, chui con n
gin (simple substring). Chng ta s s dng grep, cu lnh qut ni dung ca mt tp cho
mt biu thc chnh quy ni ring. grep in ra mi dng m tng ng vi biu thc chnh
quy, v l i mi dng khc:

$ grep bash /etc/passwd


operator:x:11:0:operator:/root:/bin/bash
root:x:0:0::/root:/bin/bash
ftp:x:40:1::/home/ftp:/bin/bash

trn, tham s u tin cho grep l regex; th hai l tn tp tin. grep c tng dng
trong /etc/passwd v p dng simple substring regex bash ti n (dng), tm s tng
ng. Nu c tng ng, grep in c dng ; nu khng, dng s b b qua.
24 C bn v qun tr Linux

3.1.4 Hiu v chui con n gin


Ni chung, nu bn ang tm mt chui con, bn c th ch cn vn bn nguyn dng khng
cn thm cc k t "c bit". Bn cn phi lm mt ci g c bit khi chui con ca
bn cha mt +, ., *, [, ],, trong trng hp ny nhng k t trn phi a vo
ngoc kp v t sau gch ngc (\). Di y l mt vi v d chui con n gin:

/tmp (qut tm dng vn bn /tmp)

"$\backslash$[box$\backslash$]" (qut tm dng vn bn [box])

"$\backslash$*funny$\backslash$*" (qut tm dng vn bn *funny*)

"ld$\backslash$.so" (qut tm dng vn bn ld.so)

3.1.5 K t mta
Vi biu thc chnh quy, sau y bn c th thc hin nhng tm kim phc tp hn v d
nu trn li dng k t mta1 . Mt trong s cc k t mta l . (du chm cu), m tng
ng bt k k t n no:

$ grep dev.hda /etc/fstab


/dev/hda3 / reiserfs noatime,ro 1 1
/dev/hda1 /boot reiserfs noauto,noatime,notail 1 2
/dev/hda2 swap swap sw 0 0
#/dev/hda4 /mnt/extra reiserfs noatime,rw 1 1

Trong v d ny vn bn dev.hda khng c trn bt k dng no trong /etc/fstab. Tuy


nhin, grep khng qut tm chui vn bn dev.hda, m tm mu dev.hda. Nh rng .
s tng ng bt k k t n no. Nh bn c th thy, k t mta . c chc nng tng
ng vi k t ? trong "glob".

3.1.6 S dng []
Nu chng ta mun tm tng ng mt k t c bit hn ., chng ta c th s dng [ v ]
(du ngoc vung) ch r mt t hp cc k t cn tm tng ng:

$ grep dev.hda[12] /etc/fstab


/dev/hda1 /boot reiserfs noauto,noatime,notail 1 2
/dev/hda2 swap swap sw 0 0

Nh bn c th thy, tnh nng ny ni ring trng vi [] trong s m rng "glob". Nhc


li ln na, y l mt trong nhng rc ri khi hc regex c php l ging nhau nhng
khng ng nht vi s m rng "glob", thng lm regex ri rm khi hc.
1
K t mta l k t dng m t cc k t khc - ngi dch
3.1 Biu thc chnh quy 25

3.1.7 S dng []
Bn c th o ngc ngha ca du ngoc vung bng cch t mt \^{} ngay sau [.
Trong trng hp ny, du ngoc n s tm tng ng bt k k t no m khng c lit
k trong chng. Nhc li ln na, ch rng chng ta dng [\^{}] vi biu thc chnh
quy, nhng [!] vi "glob":

$ grep dev.hda[^{}12] /etc/fstab


/dev/hda3 / reiserfs noatime,ro 1 1
#/dev/hda4 /mnt/extra reiserfs noatime,rw 1 1

3.1.8 C php khc


Cn bit rng c php bn trong ngoc vung khc c bn vi nhng phn khc ca biu
thc chnh quy. V d, nu bn t mt . bn trong ngoc vung, n cho php ngoc vung
tm tng ng mt k t thng ., ging nh 1 v 2 trong v d trn. so snh, mt k t .
ngoi ngoc vung c bin dch nh mt k t mta tr khi t sau mt $\backslash$.
Chng ta c th li dng iu ny in ra danh sch tt c nhng dng trong /etc/fstab m
cha dng vn bn dev.hda bng cch g:

$ grep dev[.]hda /etc/fstab

Mt cch tng t, c th g:

$ grep "dev\.hda" /etc/fstab}

C th khng biu thc chnh quy no tm thy tng ng trong /etc/fstab ca bn.

3.1.9 K t mta "*"


Mt vi k t mta t chng khng tng ng vi bt k th g, nhng thay i ngha ca
k t ng trc. Mt k t mta nh vy l * (du sao), m c s dng tm tng ng
khng (0) hay nhiu ln lp li ca k t ng trc. Lu iu c ngha rng * c mt
ngha khc trong regex so vi trong glob. y l mt s v d, v cn quan tm ti nhng
trng hp c bit khi regex khc vi glob:

ab*c tng ng abbbbc nhng khng tng ng abqc (Nu l glob, n s tng
ng c hai chui bn c th on ra ti sao khng?)

ab*c tng ng abc nhng khng tng ng abbqbbc (nhc li, nu mt glob, n
s tng ng c hai)

ab*c tng ng ac nhng khng tng ng cba (nu mt glob, n s khng tng
ng c ac v ba|)

b[cq]*e tng ng bqe v be (nu mt glob, n s tng ng bqe nhng be th


khng)
26 C bn v qun tr Linux

b[cq]*e tng ng bccqqe nhng khng tng ng bccc (nu mt glob, n cng
tng ng ci th nht, nhng ci th hai th khng)

b[cq]*e tng ng bqqcce nhng khng tng ng cqe (nu mt glob, n cng
tng ng ci th nht, nhng ci th hai th khng)

b[cq]*e tng ng bbbeee (vi glob th khng)

.* s tng ng bt k chui no. (nu mt glob, n s tng ng bt k chui no


bt u vi .)

foo.* s tng ng bt k chui no m bt u vi foo (nu mt glob, n s tng


ng bt k chui no bt u vi bn k t vn bn foo..)

By gi, cho s xem li nhanh: dng ac tng ng regex ab*c v du sao cho php
biu thc ng trc (c) xut hin khng ln. Nhc li, cn ch rng k t mta regex *
c bin dch mt cch khc c bn vi k t * ca glob.

3.1.10 u v cui dng


Hai k t mta cui cng chng ta cp chi tit y l \^{} v \$, m s dng tm
tng ng u v cui mt dng. S dng \^{} ti u regex ca bn, bn c th khin
mu "th neo" ti u dng. Trong v d di y, chng ta s dng regex \^{}\# tm
bt k dng no bt u vi k t \#:

$ grep ^{}# /etc/fstab


# /etc/fstab: static file system information.
#

3.1.11 Regex cho c dng


\^{} v \$ c th phi hp tng ng mt dng trn vn. V d, regex ti y s tng
ng mt dng m bt u vi k t \# v kt thc bng k t ., vi bt k s k t khc
gia chng:

$ grep ^{}#.*\.$ /etc/fstab


# /etc/fstab: static file system information.

Trong v d trn, chng ta bao quanh biu thc chnh quy dng ngoc n ngn nga
vic shell bin dch \$}. Khng c ngoc n, \verb$| s bin mt khi regex
trc khi grep c c hi thy n.
3.2 FHS v tm tp tin 27

3.2 FHS v tm tp tin


3.2.1 FHS - Tiu chun h thng tp tin dng cy
Tiu Chun H Thng Tp Tin Dng Cy (Filesystem Hierarchy Standard) l mt ti liu
ch r cch sp t cc th mc trn mt h thng Linux. FHS c t ra cung cp mt
cch sp t chung lm n gin vic pht trin cc phn mm /textitkhng ph thuc bn
phn phi. FHS nh r cy th mc sau (ly thng t ti liu FHS ra):

/ (th mc gc, root)

/boot (cc tp tin tnh ca trnh khi ng)

/dev (tp thit b)

/etc (cu hnh h thng ca host)

/lib (cc th vin chia s ct yu v mun nhn)

/mnt (im gn cho cc h thng tp tin tm thi)

/opt (cc gi chng trnh thm vo, add-on)

/sbin (tp tin nh nguyn ct yu)

/tmp (tp tin tm thi)

/usr (cy th mc ph)

/var (d liu ng - bin thin)

3.2.2 Hai cp bc FHS c lp


FHS t c s xc nh s sp t th mc da trn tng, c hai cp bc tp tin c lp:
c th chia s vi khng th chia s, v tnh vi ng. D liu chia s c th chia s gia
cc my; d liu khng chia s l ca ring mt h thng (v d cc tp tin cu hnh). D
liu ng c th thay i; d liu tnh khng thay i (tr khi ci t v bo tr).
Bng sau y tng kt bn kh nng kt hp, vi v d cc th mc ri vo cc hng
mc ny. Xin nhc li, bng ny ly trc tip t ti liu FHS:

+---------+----------------------+--------------------+
| | chia s | khng chia s |
+---------+----------------------+--------------------+
| Tnh | /usr | /etc |
| | /opt | /boot |
+---------+----------------------+--------------------+
| ng | /var/mail | /var/run |
| | /var/spool/news | /var/lock |
+---------+----------------------+--------------------+
28 C bn v qun tr Linux

3.2.3 H thng bc hai ti /usr


Di /usr bn s tm thy mt h thng bc hai m c v rt ging h thng tp tin gc
(root). Khng nht thit phi tn ti /usr khi my khi ng, v th n c th c chia s
trong mt mng (c th chia s), hay gn (mount) t mt CD-ROM (tnh). Thng thng
trnh ci t Linux khng chia s /usr, nhng tm hiu mt c ch ca s khc nhau gia h
thng chnh ti th mc gc v h thng bc hai ti /usr l c gi tr ln.
y l tt c nhng g chng ta s ni v FHS. Ti liu d c, v vy bn nn
xem n. Bn s hiu nhiu v h thng tp tin Linux nu bn c n. Tm ti liu ti
http://www.pathname.com/fhs/.

3.2.4 Tm tp tin
H thng Linux thng cha hng trm nghn tp tin. C th bn hiu bit khng bao
gi mt du mt tp no trong chng, nhng bn thnh thong bn s cn gip tm kim.
C mt vi cng c khc nhau trn LInux tm tp tin. S gii thiu ny gip bn chn
ng cng c.

3.2.5 ng dn
Khi bn chy mt chng trnh ti dng lnh, bash thc cht tm chng trnh bn yu cu
trong cc th mc ca mt danh sch. V d, khi bn g ls, bash theo bn cht khng
bit rng chng trnh ls nm trong /usr/bin. Thay vo , bash xem bin mi trng
PATH, m l mt danh sch th mc, phn cch nhau bi du hai chm. Chng ta c th
kim tra gi tr ca PATH:

$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin

Nhn c gi tr ny ca PATH (ca bn c th khc), bash u tin s kim tra


/usr/local/bin, sau /usr/bin tm chng trnh ls. Rt c th, ls nm ti /usr/bin,
nu vy bash s dng vic tm kim ti .

3.2.6 Sa i PATH
Bn c th thm ng dn vo PATH ti dng lnh:

$ PATH=$PATH:~/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin:/home/agriffis/bin

ng thi bn c th xa b mt phn t t PATH, mc d khng d dng nh trn v


bn khng th dng \$PATH c trc. Cch tt nht l g li PATH mi m bn mun:
3.2 FHS v tm tp tin 29

$ PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:~/bin
$ echo $PATH
/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/agriffis/bin

cc qu trnh m bn s chy t shell ny c th s dng PATH ca bn, xut n


dng cu lnh export:

$ export PATH

3.2.7 Tt c v "which"
Bn c th kim tra chng trnh c trong PATH khng bng which. V d, y chng ta
thy h iu hnh Linux khng c (ni chung) sense:

$ which sense
which: no sense in (/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/X11R6/bin)

Trong v d ny, nh v ls thnh cng:

$ which ls
/usr/bin/ls

3.2.8 "which -a"


Cui cng, bn cn bit c (flag) -a, m khin which a ra tt c trng hp chng
trnh trong PATH:

$ which -a ls
/usr/bin/ls
/bin/ls

3.2.9 whereis
Nu bn thch th vi vic tm nhiu thng tin hn l v tr ngho nn ca chng trnh, bn
nn th whereis:

$ whereis ls
ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz

y chng ta thy ls xut hin ti hai v tr,/bin v /usr/bin. Thm vo , c


mt trang hng dn s dng (man) ti /usr/share/man. Bn s thy trang man ny
nu g man ls.
Chng trnh whereis ng thi c kh nng tm ngun, ch r ng dn tm kim
khc, v tm kim nhng mc t dng. Xem trang man ca whereis bit thm thng
tin.
30 C bn v qun tr Linux

3.2.10 find
Cu lnh find l cng c thun tin khc. Vi find bn khng b hn ch; bn c th tm
bt k tp no bn mun, s dng mun mu mun v ca cc tiu chun tm kim. V d,
tm mt tp c tn README, bt u trong /usr/share/doc:

$ find /usr/share/doc -name README


/usr/share/doc/ion-20010523/README
/usr/share/doc/bind-9.1.3-r6/dhcp-dynamic-dns-examples/README
/usr/share/doc/sane-1.0.5/README

3.2.11 find v k t i din


Bn c th s dng k t i din "glob" trong i s cho -name, t trong ngoc kp hoc
dng k t thot - gch ngc (nh vy chng s a vo find nguyn vn m khng b
khai trin bi bash). V d, chng ta mun tm tp tin README c phn m rng:

$ find /usr/share/doc -name README\*


/usr/share/doc/iproute2-2.4.7/README.gz
/usr/share/doc/iproute2-2.4.7/README.iproute2+tc.gz
/usr/share/doc/iproute2-2.4.7/README.decnet.gz
/usr/share/doc/iproute2-2.4.7/examples/diffserv/README.gz
/usr/share/doc/pilot-link-0.9.6-r2/README.gz
/usr/share/doc/gnome-pilot-conduits-0.8/README.gz
/usr/share/doc/gimp-1.2.2/README.i18n.gz
/usr/share/doc/gimp-1.2.2/README.win32.gz
/usr/share/doc/gimp-1.2.2/README.gz
/usr/share/doc/gimp-1.2.2/README.perl.gz
[578 dng b ct i]

3.2.12 L i kiu ch vi find


Tt nhin, c th bn mun b qua kiu ch khi tm kim:

$ find /usr/share/doc -name [Rr][Ee][Aa][Dd][Mm][Ee]*

Hay n gin hn:

$ find /usr/share/doc -iname readme\*

Nh bn thy, bn c th dng -iname vic tm kim khng nhy cm vi kiu


ch.
3.2 FHS v tm tp tin 31

3.2.13 find v biu thc chnh quy


Nu dng tho biu thc chnh quy, bn c th dng ty chn -regex gii hn d liu
ra. Tng t nh ty chn -iname, c ty chn tng ng l -iregex cho php l i
kiu ch trong mu. V d:

$ find /etc -iregex .*xt.*


/etc/X11/xkb/types/extra
/etc/X11/xkb/semantics/xtest
/etc/X11/xkb/compat/xtest
/etc/X11/app-defaults/XTerm
/etc/X11/app-defaults/XTerm-color

Ch rng khng ging nh nhiu chng trnh, find yu cu regex ch r ng dn


y , m khng phi ch c mt phn. V l do ny, ch r u v ui .* l cn thit; ch
dng regex xt s khng .

3.2.14 find v kiu


Ty chn -type cho php tm vt th h thng tp tin ca mt kiu no . Cc argumen
c th a vo -type l b (block device - thit b khi), c (character device - thit b k
t), d (directory - th mc), p (named pipe - "ng"), f (regular file - tp tin thng), l
(symbolic link - lin kt tng trng), v s (socket). V d, tm lin kt tng trng trong
/usr/bin m cha chui vim:

$ find /usr/bin -name *vim* -type l


/usr/bin/rvim
/usr/bin/vimdiff
/usr/bin/gvimdiff

3.2.15 find v mtimes


Ty chn -mtime cho php bn chn tp da trn thi gian sa i cui cng. Argumen
cho mtime l mt k hn ca 24 gi, v c ch khi s dng vi du cng (c ngha "sau")
hay du tr (c ngha "trc"). V d, xem xt bi cnh sau:

$ ls -l ?
-rw------- 1 root root 0 Jan 7 18:00 a
rw------- 1 root root 0 Jan 6 18:00 b
-rw------- 1 root root 0 Jan 5 18:00 c
-rw------- 1 root root 0 Jan 4 18:00 d
$ date
Mon May 7 18:14:52 EST 2003

Bn c th tm tp tin c to ra trong 24 gi trc:


32 C bn v qun tr Linux

$ find . -name \? -mtime -1


./a

Hay c th tm tp tin c to ra trong 24 gi hin thi:

\$ find . -name \? -mtime +0


./b
./c
./d

3.2.16 Ty chn -daystart


Nu bn ch r ty chn -daystart, th thi gian s tnh t lc ngy bt u ch khng
phi l 24 gi trc. V d, y l nhng tp tin c to ra hm qua v ngy hm kia:

$ find . -name \? -daystart -mtime +0 -mtime -3


./b
./c
$ ls -l b c
-rw------- 1 root root 0 May 6 18:00 b
-rw------- 1 root root 0 May 5 18:00 c

3.2.17 Ty chn -size


Ty chn -size cho php bn tm tp tin da trn kch thc. Theo mc nh, argumen
cho -size l mt khi 512 byte, nhng c th n gin ha bng thm hu t. Hu t c
th dng l b (block - khi 512 byte), c (character - byte), k (kilbyte), v w (word - t 2
byte). Thm vo , bn c th t du cng ("ln hn") hay du tr ("nh hn").
V d, tm tp tin thng trong /usr/bin m nh hn 50 byte:

$ find /usr/bin -type f -size -50c


/usr/bin/krdb
/usr/bin/run-nautilus
/usr/bin/sgmlwhich
/usr/bin/muttbug

3.2.18 Gia cng tp tin tm thy


C th bn t hi rng bn c th lm g vi tt c nhng tp tin m bn tm thy! find c
kh nng thc hin trn nhng tp tin ny dng ty chn -exec. Ty chn ny chp nhn
mt dng lnh nh l argumen thc hin, kt thc vi ;, v s thay bt k s c mt no
ca \{\} vi tn tp. Th d sau s gip hiu r hn:
3.2 FHS v tm tp tin 33

$ find /usr/bin -type f -size -50c -exec ls -l \{\} ;


-rwxr-xr-x 1 root root 27 Oct 28 07:13 /usr/bin/krdb
-rwxr-xr-x 1 root root 35 Nov 28 18:26 /usr/bin/run-nautilus
-rwxr-xr-x 1 root root 25 Oct 21 17:51 /usr/bin/sgmlwhich
-rwxr-xr-x 1 root root 26 Sep 26 08:00 /usr/bin/muttbug

Nh bn c th thy, find l mt cu lnh mnh. N trng thnh trong nhng nm


pht trin ca UNIX v Linux. C nhiu ty chn c ch khc. C th hc trong trang man
ca find.

3.2.19 locate
Chng ta va xem xong which, whereis v find. C th bn nhn ra rng find
cn mt cht thi gian khi thi hnh, v n cn c tng th mc ang tm. Cu lnh locate
c th tng tc da trn c s d liu ngoi m to ra bi updatedb (chng ta s
cp mc ti).

Cu lnh locate tm bt k phn no ca tn, khng ch tn y ca tp tin. V d:

$ locate bin/ls
/var/ftp/bin/ls
/bin/ls
/sbin/lsmod
/sbin/lspci
/usr/bin/lsattr
/usr/bin/lspgpot
/usr/sbin/lsof

3.2.20 S dng updatedb


Hu ht h thng Linux c mt "cng vic cron" cp nht c s d liu nh k. Nu
locate ca bn tr li li nh sau, th cn chy updatedb vi quyn root to c s
d liu tm kim:

$ locate bin/ls
locate: /var/spool/locate/locatedb: No such file or directory
$ su
Password:
# updatedb

Cu lnh updatedb c th chy kh lu.


34 C bn v qun tr Linux

3.2.21 slocate
Trn nhiu bn phn phi Linux, cu lnh locate c thay th bi slocate. Thng
c mt lin kt tng trng n "locate" v th bn khng cn nh l c g. slocate c
hiu l "secure locate" - locate an ton. N ghi thng tin quyn trong c s d liu v th
ngi s dng bnh thng khng th nhn vo th mc m h khng c quyn c. Thng
tin s dng cho slocate l ging vi cho locate, mc d d liu ra c th khc ph
thuc vo ngi dng chy cu lnh.

3.3 Qun l tin trnh


3.3.1 Khi ng xeyes
hc v qun l tin trnh, u tin chng ta cn khi ng mt chng trnh. Cn chc
l X ang chy v thc hin cu lnh sau:

$ xeyes -center red

Bn s thy mt ca s xeyes hin ln, v cu mt nhn theo tr chut quanh mn


hnh. ng thi khng cn du nhc trong thit b u cui.

3.3.2 Dng mt tin trnh


ly li du nhc, cn g Control-C (thng vit l Ctrl-C hay C):

^C
$

Ly li du nhc bash mi, nhng ca s xeyes bit mt. Trn thc t, tin trnh b
dit. Thay v dit vi Control-C, ch dng n vi Control-Z:

$ xeyes -center red


^Z
[1]+ Stopped xeyes -center red
$

Ln ny bn ly li du nhc bash mi, v ca s xeyes vn cn. Nu bn th mt


cht vi n, bn s thy cu mt khng c ng. Nu ca s xeyes b che khut bi ca s
khc v sau b che i, th s khng cn thy i mt. Tin trnh khng lm bt k ci g.
Trn thc t, n b "dng" ("Stopped").
3.3 Qun l tin trnh 35

3.3.3 fg v bg
mt tin trnh c "khai thng" ("un-stopped") v chy tr li, c th a n ra mt
trc (foreground) vi fg gn trong bash:

$ fg
xeyes -center red
$

By gi tip tc tin trnh trong nn sau (background) vi bg gn trong bash:

$ bg
[1]+ xeyes -center red &
$

Tuyt! Tin trnh xeyes tip tc chy trong nn sau, v chng ta c mt du nhc bash
mi lm vic.

3.3.4 S dng "&"


Nu mun chy xeyes trong nn sau ngay t u (thay v s dng Control-Z v bg), ch cn
thm k hiu "&" v cui dng lnh xeyes:

$ xeyes -center blue &


[2] 16224

3.3.5 Nhiu tin trnh nn sau


By gi c c xeyes v xanh da tri chy trong nn sau. C th lit k cc cng vic
ny vi jobs gn trong bash:

$ jobs -l
[1]- 16217 Running xeyes -center red &
[2]+ 16224 Running xeyes -center blue &

S trong ct bn tri l s ca cng vic m bash nh cho chng khi va mi chy.


Cng vic th 2 c mt + (cng) ch n l "cng vic hin thi", m nu g fb s a
n ra mt trc. C th a mt cng vic ra nn trc nu ch r s ca n; v d, fg 1
s a xeyes ra nn trc. Ct tip theo l id ca tin trnh hay pid, bao gm trong
danh sch ca ty chn -l. Cui cng c hai cng vic hin thi "ang chy" ("Running"),
v dng lnh ca chng lit k bn phi.
36 C bn v qun tr Linux

3.3.6 Gii thiu tn hiu


dit, dng hay tip tc tin trnh, Linux s dng mt hnh thc thng tin c bit, gi
l "tn hiu" ("signal"). Bng vic gi tn hiu ti mt tin trnh, gn c th kt thc, dng,
hay lm nhng th khc. y l nhng g xy ra khi g Control-C, Control-Z, hay s dng
bg, fg s dng bash gi tn hiu ring ti tin trnh. Nhng tn hiu ny c th gi
qua cu lnh kill, ch r pid (id tin trnh) trn dng lnh:

$ kill -s SIGSTOP 16224


$ jobs -l
[1]- 16217 Running xeyes -center red &
[2]+ 16224 Stopped (signal) xeyes -center blue

Nh bn thy, kill khng nht nh "git" mt tin trnh, mc d c th. S dng


ty chn "-s", kill c th gi bt k tn hiu no ti mt tin trnh. Linux dit, dng, hay
tip tc tin trnh khi gi cc tn hiu SIGINT, SIGSTOP, hay SIGCONT tng ng. C th
gi cc tn hiu khc na; mt vi trong s chng bin dch ph thuc vo ng dng. C th
bit mt tin trnh chp nhn tn hiu g ti phn SIGNALS trang man ca n.

3.3.7 SIGTERM v SIGINT


Nu mun dit mt tin trnh, c th c vi ty chn. Theo mc nh, kill gi tn hiu
SIGTERM, m khng ng nht vi SIGINT hay Control-C, nhng thng c cng kt
qu:

$ kill 16217
$ jobs -l
[1]- 16217 Terminated xeyes -center red
[2]+ 16224 Stopped (signal) xeyes -center blue

3.3.8 "Dit tn gc"


Tin trnh c th l i c SIGTERM v SIGINT, hoc mt trong chng hoc chng dng,
hoc vo "th b". Trong nhng trng hp ny cn gii php mnh, tn hiu SIGKILL.
Mt tin trnh khng th l i SIGKILL:

$ kill 16224
$ jobs -l
[2]+ 16224 Stopped (signal) xeyes -center blue
$ kill -s SIGKILL
\$ jobs -l
[2]+ 16224 Interrupt xeyes -center blue
3.3 Qun l tin trnh 37

3.3.9 nohup
Thit b u cui m t chy mt cng vic gi l thit b u cui iu khin. Mt s
v shell s gi tn hiu SIGHUP ti cc cng vic nn sau khi bn ng xut2 , khin chng
ngng hot ng. bo v tin trnh khi hnh ng ny, s dng nohup khi khi ng:

$ nohup make &


$ exit

3.3.10 S dng ps lit k tin trnh


Cu lnh jobs va dng ch lit k tin trnh khi ng t bash hin thi. xem tt c
tin trnh trn h thng, s dng ps vi ty chn a v x cng nhau:

$ ps ax
PID TTY STAT TIME COMMAND
1? S 0:04 init [3]
2? SW 0:11 [keventd]
3? SWN 0:13 [ksoftirqd_CPU0]
4? SW 2:33 [kswapd]
5? SW 0:00 [bdflush]

Ch lit k vi ci u tin v thng l mt danh sch rt di. Danh sch cho bn mt


"nh chp nhanh" nhng g m my ang lm, nhng c rt nhiu thng tin phn tch.
Nu b qua ax, s ch thy tin trnh m bn s hu, v c mt thit b u cui iu khin.
Cu lnh ps x s cho thy tt c tin trnh ca bn, d c hay khng thit b u cui iu
khin. Nu s dng ps a, s nhn mt sch tin trnh ca tt c ngi dng m gn ti mt
thit b u cui.

3.3.11 Hin th cy v rng


C th lit k thng tin khc v tng tin trnh. Ty chn --forest cho php d dng thy
h thng cp bc, m cho bit quan h gia cc tin trnh. Khi mt tin trnh chy mt tin
trnh mi, tin trnh mi gi l "con". Trong danh sch --forest, "b m" xut hin bn
tri, v "con" nh mt nhnh cy bn phi

$ ps x --forest
PID TTY STAT TIME COMMAND
927 pts/1 S 0:00 bash
6690 pts/1 S 0:00 \_ bash
26909 pts/1 R 0:00 \_ ps x --forest
19930 pts/4 S 0:01 bash
25740 pts/4 S 0:04 \_ vi processes.txt
2
ngi dch: v d xterm
38 C bn v qun tr Linux

3.3.12 Ty chn "u" v "l"


Ty chn "u" hay "l" c th thm vo bt k kt hp no vi "a" v "x" bao hm thng
tin v tng tin trnh:

$ ps au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
agriffis 403 0.0 0.0 2484 72 tty1 S 2001 0:00 -bash
chouser 404 0.0 0.0 2508 92 tty2 S 2001 0:00 -bash
root 408 0.0 0.0 1308 248 tty6 S 2001 0:00 /sbin/agetty 3
agriffis 434 0.0 0.0 1008 4 tty1 S 2001 0:00 /bin/sh /usr/X
chouser 927 0.0 0.0 2540 96 pts/1 S 2001 0:00 bash

$ ps al
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
100 1001 403 1 9 0 2484 72 wait4 S tty1 0:00 -bash
100 1000 404 1 9 0 2508 92 wait4 S tty2 0:00 -bash
000 0 408 1 9 0 1308 248 read_c S tty6 0:00 /sbin/ag
000 1001 434 403 9 0 1008 4 wait4 S tty1 0:00 /bin/sh
000 1000 927 652 9 0 2540 96 wait4 S pts/1 0:00 bash

3.3.13 S dng "top"


Nu chy ps vi ln xem c g thay i, th ci bn cn c th l top. top hin th mt
danh sch tin trnh m c cp nht lin tc, cng vi mt vi thng tin tm tt c ch:

$ top
10:02pm up 19 days, 6:24, 8 users, load average: 0.04, 0.05, 0.00
75 processes: 74 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 1.3\% user, 2.5\% system, 0.0\% nice, 96.0\% idle
Mem: 256020K av, 226580K used, 29440K free, 0K shrd, 3804K buff
Swap: 136544K av, 80256K used, 56288K free 101760K cached
PID USER PRI NI SIZE RSS SHARE STAT LIB \%CPU \%MEM TIME COMMAND
628 root 16 0 213M 31M 2304 S 0 1.9 12.5 91:43 X
26934 chouser 17 0 1272 1272 1076 R 0 1.1 0.4 0:00 top
652 chouser 11 0 12016 8840 1604 S 0 0.5 3.4 3:52 gnome-termin
641 chouser 9 0 2936 2808 1416 S 0 0.1 1.0 2:13 sawfish

3.3.14 nice
Mi tin trnh c mt thit lp quyn u tin m Linux dng xc nh chia s bao nhiu
thi gian b x l trung tm (CPU). C th t quyn u tin ca mt tin trnh bng chy
n vi cu lnh nice:

$ nice -n 10 oggenc /tmp/song.wav

V thit lp quyn u tin gi l nice, nn d nh rng mt gi tr cao hn s tt (nice)


cho cc tin trnh khc, cho php chng quyn u tin ti CPU. Theo mc nh, cc tin
trnh bt u vi gi tr 0, v th gi tr 10 bn trn c ngha oggenc sn lng dnh CPU
3.4 Gia cng vn bn 39

cho cc tin trnh khc. Ni chung, iu ny c ngha rng oggenc s cho php cc tin
trnh khc chy vi tc bnh thng, bt chp oggenc cn CPU nh th no. Bn c th
thy cp bc nice ny di ct NI trong danh sch ps v top trn.

3.3.15 renice
Cu lnh nice ch c th thay i quyn u tin ca mt tin trnh khi bt u chy. Nu
mun thay i thit lp nice ca mt tin trnh ang chy, dng renice:

$ ps l 641
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
000 1000 641 1 9 0 5876 2808 do_sel S ? 2:14 sawfish
$ renice 10 641
641: old priority 0, new priority 10
$ ps l 641
F UID PID PPID PRI NI VSZ RSS WCHAN STAT TTY TIME COMMAND
000 1000 641 1 9 10 5876 2808 do_sel S ? 2:14 sawfish

3.4 Gia cng vn bn


3.4.1 n li chuyn hng
Trong phn u ca sri sch hng dn ny, chng ta xem mt v d s dng >
chuyn hng d liu ra ca mt cu lnh vo mt tp, ging nh sau:

$ echo "firstfile" > copyme

Ngoi vic chuyn d liu ra vo mt tp, chng ta c th li dng mt tnh nng mng
ca v shell, gi l ng (pipe). S dng ng, c th truyn u ra ca mt cu lnh ti
u vo ca cu lnh khc. Xem xt v d sau:

$ echo "hi there" | wc


1 2 9

K t | dng kt ni u ra ca cu lnh bn tri ti u vo ca cu lnh bn phi.


Trong v d trn, cu lnh echo in ra dng hi there vi mt k t xung dng. D liu
ra thng thng xut hin trn thit b u cui, nhng ng chuyn n vo cu lnh wc,
m hin th s dng, s t, v s k t trong u vo ca n.

3.4.2 Mt v d ng
y l mt v d n gin khc:

$ ls -s | sort -n
40 C bn v qun tr Linux

Trong trng hp ny, ls -s thng in ra danh sch ca th mc hin thi trn thit
b u cui, vi kch thc mi tp u. Nhng thay v nh th chng ta dn u ra vo
sort -n, m sp xp u ra theo s. y l mt cch c ch tm tp tin ln trong th
mc nh ca bn!
Cc v d sau c phc tp hn, nhng chng cho thy sc mnh ca vic s dng tho
ng. Chng ti s s dng mt vi cu lnh m cha cp n, nhng ng n lm
bn chm li. Tp trung ch hiu cch ng lm vic, bn c th dng chng trong tc v
Linux hng ngy.

3.4.3 ng gii nn
Thng thng gii nn v bung ra mt tp, c th lm nh sau:

$ bzip2 -d linux-2.4.16.tar.bz2
$ tar xvf linux-2.4.16.tar

Mt km ca phng php ny l i hi phi to ra mt tp tin khng b nn trn a.


V tar c kh nng c trc tip t u vo ca n (thay v ch ra mt tp), ta c th cho
ra mt kt qu tng t s dng ng:

$ bzip2 -dc linux-2.4.16.tar.bz2 | tar xvf -

h! "Qu bng" nn c bung ra m khng cn thit mt tp tin trung gian.

3.4.4 Mt ng di hn
y l mt v d khc:

$ cat myfile.txt | sort | uniq | wc -l

Chng ta dng cat cung cp ni dung ca myfile.txt cho cu lnh sort. Khi
sort nhn c u vo, n sp xp mt dng vo theo th t bng ch ci, v gi u ra
ti uniq. uniq xa b mi dng trng nhau (nhn tin, n yu cu u vo phi c sp
xp) gi d liu ra lc ti wc -l. Chng ta thy cu lnh wc trn, nhng khng c
ty chn no. Khi a ty chn -l n ch in ra s dng ca u vo, thay v in c s t v
k t. Bn s thy rng ng ny s in ra s cc dng "c mt khng hai" (khng c bn sao)
trong mt tp vn bn. Th to ra vi tp th nghim vi trnh son tho a thch v dng
ng ny xem kt qu thu c.
3.4 Gia cng vn bn 41

3.4.5 Gi lc gia cng vn bn bt u


By gi chng ta bt tay vo cuc tham quan gi lc cc cu lnh gia cng vn bn Linux c
bn. V chng ti cp rt nhiu vn trong cun hng dn ny, nn khng c ch
a v d cho mi cu lnh. Thay vo , khuyn khch c trang man ca ca chng (v
d, bng g man echo) hc cu lnh v cc ty chn lm vic nh th no bng cch th
vi tng ci. Nh thnh lut, cc cu lnh ny in kt qu ca bt k gia cng vn bn no
ra thit b u cui m khng thay i tp tin. Sau khi kt thc cuc du ngon ny, chng ta
s nhn gn hn v chuyn hng u ra v u vo. Vng, c mt m sng cui ng
ngm :)

echo

echo in argumen ra thit b u cui. S dng ty chn -e nu bn mun gn chui


thot gch ngc; v d echo -e "foo$\backslash$nfoo" s in foo, sau l mt
dng mi, v foo na. S dng ty chn -n echo b i du dng mi m thm vo u
ra theo mc nh.3

3.4.6 cat, sort, v uniq


cat
cat in ni dung ca tp tin nh argumen ra thit b u cui. C ch khi l cu lnh u
tin ca ng, v d, +cat foo.txt \ blah+|
sort
sort s in ra ni dung ca tp tin theo th t bng ch ci. Tt nhin, sort chp nhn
u vo t ng. G man sort t lm quen vi ty chn iu khin s sp xp
uniq
uniq ly mt tp tin hoc dng d liu -sp-xp (qua ng) v xa b nhng dng lp
li.

3.4.7 wc, head, v tail


wc
wc in ra s dng, t, v byte trong mt tp tin hay trong dng d liu vo (t mt ng).
G man wc bit cch chnh quy d liu m c hin th.
head
head in ra mi dng u tin ca mt tp tin hay dng d liu. S dng ty chn -n
ch r bao nhiu dng s hin th.
tail
tail in ra mi dng cui cng ca mt tp tin hay dng d liu. S dng ty chn
-n ch r bao nhiu dng s hin th.

3
ngi dch: th echo chao | wc -c v echo -n chao | wc -c s thy r tc dng ca ty chn -n
42 C bn v qun tr Linux

3.4.8 tac, expand, v unexpand


tac
tac ging nh cat, nhng in tt c mi dng theo th t ngc li; ni cch khc,
dng cui cng c in u tin.4

expand expand bin i tab thnh khong trng. Dng ty chn -t ch r s k

t ca tab (tapstop)

unexpand unexpand bin bi khong trng thnh tab. Dng ty chn -t ch r

s k t ca tab (tapstop)

3.4.9 cut, nl, v pr


cut
cut s dng trch ra mt vng k t gii hn t tng dng ca mt tp tin hay dng
d liu vo.
nl
nl thm s th t ca dng vo u ra. C ch cho in n.
pr
pr dng chia tp thnh nhiu trang ca u ra; thng dng cho in.

3.4.10 tr, awk, v sed


tr
tr l cng c chuyn i k t; dng chuyn i k t no trong u vo thnh
k t khc trong u ra.
sed
sed l trnh son tho nh hng dng (stream-oriented) mnh. C th hc thm v
sed trong cc bi bo sau ca IBM developerWorks:
Sed qua v d, Phn 1
Sed qua v d, Phn 2
Sed qua v d, Phn 3
Nu bn d nh tr thi LPI, bn cn c hai bi bo u tin ca sri ny.
awk
awk l ngn ng gia cng vn bn nh hng dng (line-oriented). C th hc thm v
awk trong nhng bi bo sau ca IBM developerWorks:
Awk qua v d, Phn 1
Awk qua v d, Phn 2
Awk qua v d, Phn 3
4
ngi dch: th t ch ci trong hai t cat v tac
3.4 Gia cng vn bn 43

3.4.11 od, split, v fmt


od
od c ch nh thay i u vo thnh dng h tm (octal) hay mi su (hex).
split
split l cu lnh dng chia mt tp tin ln thnh nhiu tp tin nh hn.
fmt
fmt s nh dng li cc on vn vic chuyn dng c thc hin l trang. Ngy
nay khng cn hu dng v kh nng ny c a vo hu ht cc trnh son tho,
nhng vn nn bit.

3.4.12 Paste, join, v tee


paste
paste dng hai hay nhiu tp tin nh l u vo, ni tng dng lin tip t cc tp u
vo, v in ra cc dng kt qu. C ch to bng hay ct vn bn.
join
join tng t paste, nhng dng mt trng5 , field, (theo mc nh l trng u tin)
trong mi dng u vo ni dng.
tee
tee s in u ra ti c tp tin v mn hnh. iu ny c li khi bn mun to log, v
ng thi mun xem n trn mn hnh.

3.4.13 Gi lc kt thc! Chuyn hng


Tng t nh dng > trn dng lnh bash, bn c th dng < a mt tp tin vo mt
cu lnh. Vi rt nhiu cu lnh, bn c th n gin l ch r tn tp tin trn dng lnh, tuy
nhin mt s cu lnh ch lm vic t u vo tiu chun (standard input).
bash v cc v shell khc h tr khi nim "tp tin y". iu ny cho php bn ch r
u vo cho mt cu lnh, ri kt thc cu lnh vi mt gi tr no . V d l cch minh
ha tt nht:

$ sort <<END
apple
cranberry
banana
END
apple
banana
cranberry

Trong v d trn, ta g cc t apple, cranberry v banana, theo sau bi


"END" thng bo kt thc vic nhp vo. Chng trnh sort sau tr li nhng t
trong th t bng ch ci.
5
trng thng l cm k t m kt thc bi du trng
44 C bn v qun tr Linux

3.4.14 S dng
C th bn cho rng >> c g ging vi <<, nhng khng phi vy. N n gin l vit
thm d liu ra vo mt tp, m khng ghi nh l >. V d:

$ echo Hi > myfile


$ echo there. > myfile
$ cat myfile
there.

A l hp! Chng ta mt phn "Hi"! Th m chng ta mun nh sau:

$ echo Hi > myfile


$ echo there. >> myfile
$ cat myfile
Hi
there.

tt hn rt nhiu!

3.5 Mun nhn


3.5.1 Lm quen vi "uname"
Cu lnh uname cho bit nhiu thng tin th v v h thng. y l ci thu c trn trm
lm vic ca ti khi g "uname -a" m ni "uname" in ra tt c thng tin ca n lun mt
ln:

$ uname -a
Linux inventor 2.4.20-gaming-r1 #1 Fri Apr 11 18:33:35 MDT 2003 i686 AMD

3.5.2 Thm v u ra uname


By gi, hy xem thng tin m "uname" cung cp, dng bng:

info. option arg example


kernel name -s "Linux"
hostname -n "inventor"
kernel release -r "2.4.20-gaming-r1"
kernel version -v "#1 Fri Apr 11 18:33:35 MDT 2003"
machine -m "i686"
processor -p "AMD Athlon(tm) XP 2100+"
hardware platform -i "AuthenticAMD"
operating system -o "GNU/Linux"

Tht l hp dn! Cu lnh "uname -a" ca bn in ra g?


3.5 Mun nhn 45

3.5.3 Bn pht hnh nhn


y l mt mo k diu. u tin, g "uname -r" uname in ra bn pht hnh ca nhn
Linux m ang chy.
By gi, xem trong th mc /lib/modules v a l hp! nh cuc l bn s tm thy mt
th mc vi tn nh vy! OK, khng qu k diu, nhng by gi l thi im tt ni v
s quan trng ca cc th mc trong /lib/modules v gii thch mun nhn l g.

3.5.4 Nhn
Nhn l tri tim ca Linux l mu m (code) m truy cp thng ti phn cng v h tr
mt giao din chung cc chng trnh c c th thc thi c. Nh c nhn, trnh son
tho ca bn khng cn quan tm vit ti mt a SCSI hay IDE hay thm ch l mt a
RAM. N ch ghi ti mt h thng tp tin, v nhn lo phn cn li.

3.5.5 Gii thiu mun nhn


Vy, mun nhn l g? Chng l nhng phn ca nhn m ghi dng c bit trn a.
Trn cu lnh ca bn, chng c th c nap vo nhn ang chy v cung cp nhng tnh
nng b tr.
V mun nhn c np theo nhu cu, c th to mt nhn h tr nhiu tnh nng b
tr m thng thng khng mun c. Nhng mt khi quen, mun nhn rt d s dng
v c th np, thng l t ng, h tr h thng tp tin hay thit b phn cng m t khi
s dng.

3.5.6 Bn tm tt mun nhn


Ni tm li, mun nhn cho php thm vo nhn ang chy mt s kh nng da trn c
s nhu cu. Khng c mun nhn, phi bin dch mt nhn mi v khi ng li h tr
mt ci g mi.

3.5.7 lsmod
xem mun c np, s dng cu lnh "lsmod":

# lsmod
Module Size Used by Tainted: PF
vmnet 20520 5
vmmon 22484 11
nvidia 1547648 10
mousedev 3860 2
hid 16772 0 (unused)
usbmouse 1848 0 (unused)
input 3136 0 [mousedev hid usbmouse]
usb-ohci 15976 0 (unused)
ehci-hcd 13288 0 (unused)
emu10k1 64264 2
46 C bn v qun tr Linux

ac97_codec 9000 0 [emu10k1]


sound 51508 0 [emu10k1]
usbcore 55168 1 [hid usbmouse usb-ohci ehci-hcd]

3.5.8 Lit k mun


Nh bn c th thy, h thng ca ti c vi mun c np. Mun vmnet v vmmon
cung cp chc nng cn thit cho chng trnh VMWare, m cho php chy mt my tnh
o (virtual PC). Mun "nvidia" ly t NVIDIA corporation v cho php s dng cc mn
hnh 3D hiu sut cao di Linux m tn dng ht tnh nng ca n.
Sau l chui mun dng h tr thit b vo USB: "mousedev", "hid", "usbmouse",
"input", "usb-ohci", ehci-hcd" v "usbcore". Thng cu hnh nhn h tr USB dng
mun. V sao? V thit b USB l "cm v chy". Nu h tr USB trong mun, th c th
mua mt thit b USB mi, cm vo v h thng t ng np mun thch hp c th
dng thit b . y l cch thun tin.

3.5.9 Mun third-party


Ba mun "emu10k1", "ac97_codec" v "sound" h tr cc m thanh SoundBlaster Audigy.
Cn ch rng mt vi mun nhn ly t m ngun nhn. V d, tt c mun USD
ni n u bin dch t m ngun nhn Linux. Tuy nhin, cc mun nvidia, emu10k1
v mun VMWare ly t nhng ngun khc. y li l mt li ch chnh khc ca mun
nhn - cho php "cng ty th ba" cung cp chc nng cn thit cho nhn v cho php nhng
chc nng ny "gn vo" nhn ang chy. Khi ng li l khng cn thit.

3.5.10 depmod
Trong th mc /lib/modules/2.4.20-gaming-r1/ c mt s tp tin m tn bt u vi "mod-
ules.":

$ ls /lib/modules/2.4.20-gaming-r1/modules.*
/lib/modules/2.4.20-gaming-r1/modules.dep
/lib/modules/2.4.20-gaming-r1/modules.generic_string
/lib/modules/2.4.20-gaming-r1/modules.ieee1394map
/lib/modules/2.4.20-gaming-r1/modules.isapnpmap
/lib/modules/2.4.20-gaming-r1/modules.parportmap
/lib/modules/2.4.20-gaming-r1/modules.pcimap
/lib/modules/2.4.20-gaming-r1/modules.pnpbiosmap
/lib/modules/2.4.20-gaming-r1/modules.usbmap

Nhng tp tin ny cha nhiu thng tin v s ph thuc. Trong c thng tin v s
ph thuc ca mun - mt vi mun ch np khi cc mun khc c np.

3.5.11 Lm th no ly mun
Mt vi mun nhn c thit k lm vic vi thit b phn cng ring, v d mun
"emu10k1" l cho cc SoundBlaster Audigy. i vi loi mun ny, cc tp tin mun
3.5 Mun nhn 47

ng thi ghi PCI ID6 v cc du nhn dng tng t ca thit b phn cng m chng h
tr. Thng tin ny c th s dng bi mt vi th nh script cho vic cm nng ("hotplug"),
m s xem n cc cun hng dn tip theo, t ng nhn ra v t ng np mun
thch hp h tr phn cng .

3.5.12 S dng depmod


Nu bn ci thm mt mun mi, thng tin v s ph thuc tr thnh li thi. cp
nht, g "depmod -a". depmod s qut tt c mun trong cc th mc ca /lib/modules v
lm mi thng tin v s ph thuc. N qut tp tin mun v tm ci gi l "biu tng"
("symbols") trong cc mun :

# depmod -a

3.5.13 nh v mun nhn


Vy, mun nhn nhn nh th no? Vi nhn 2.4, chng thng l nhng tp tin trong
/lib/modules m kt thc vi ".o". xem tt c mun c trong /lib/modules, g:

# find /lib/modules -name *.o


/lib/modules/2.4.20-gaming-r1/misc/vmmon.o
/lib/modules/2.4.20-gaming-r1/misc/vmnet.o
/lib/modules/2.4.20-gaming-r1/video/nvidia.o
/lib/modules/2.4.20-gaming-r1/kernel/fs/fat/fat.o
/lib/modules/2.4.20-gaming-r1/kernel/fs/vfat/vfat.o
/lib/modules/2.4.20-gaming-r1/kernel/fs/minix/minix.o
[listing "snipped" for brevity]

3.5.14 insmod v modprobe


Vy, lm th no np mun vo nhn ang chy? Cch th nht l s dng cu lnh
"insmod" v a y ng dn ti mun mun np:

# insmod /lib/modules/2.4.20-gaming-r1/kernel/fs/fat/fat.o
# lsmod | grep fat
fat 29272 0 (unused)

Tuy nhin, thng dng cu lnh "modprobe" np mun. Mt mt tt ca "mod-


probe" l n t ng np cc mun l thuc. ng thi, khng cn phi ch r ng dn
ti mun mun np, v khng phi ch r ui ".o"
6
identification
48 C bn v qun tr Linux

3.5.15 Thc thi rmmod v modprobe


Hy th hu np mun "fat.o" v np li dng "modprobe":

# rmmod fat
# lsmod | grep fat
# modprobe fat
# lsmod | grep fat
fat 29272 0 (unused)

Nh bn thy, cu lnh "rmmod" lm vic tng t nh modprobe, nhng c tc dng


ngc li, n hy np mun m bn ch ra.

3.5.16 Ti khn: modinfo v modules.conf


C th dng cu lnh "modinfo" bit nhiu iu th v v mun a thch:

# modinfo fat
filename: /lib/modules/2.4.20-gaming-r1/kernel/fs/fat/fat.o
description: <none>
author: <none>
license: "GPL"

V c bit ch n tp tin /etc/modules.conf. Tp tin ny cha thng tin cu hnh


cho modprob. Tp tin cho php tinh chnh hot ng ca modprobe, ni modprobe np
mun trc/sau khi np nhng mun khc, chy script trc/sau khi np mun, v nhiu
na.

3.5.17 modules.conf
C php v chc nng ca modules.conf kh phc tp. Chng ta s khng i vo c
php ngay by gi (g man modules.conf xem chi tit), nhng y l mt vi iu
bn *nn* bit v tp tin ny.

Nhiu bn phn phi to tp tin ny mt cch t ng t cc tp tin trong th mc khc,


nh /etc/modules.d/. V d, Gentoo Linux c th mc /etc/modules.d/. Nu
chy cu lnh update-modules, th tt c cc tp tin trong s c kt ni vo nhau
v cho ra /etc/modules.conf mi. V th, thay i tp tin trong /etc/modules.d/
v chy update-modules nu bn dng Gentoo. Nu bn s dng Debian, cc bc s
tng t, tr th mc l /etc/modutils.

3.6 Tng kt v cc ngun tham kho


3.6.1 Tng kt
Xin chc mng: bn ti im cui cun hng dn qun tr Linux c s ca chng ti! Ti
hy vng n gip bn nm chc kin thc Linux c bn. Cun hng dn tip theo s cp
3.6 Tng kt v cc ngun tham kho 49

qun tr nng cao, trong chng ti cp cc ch nh quyn truy cp, v m hnh


quyn s hu, qun l ti khon ngi dng, to v gn kt h thng tp tin, v nhiu na.
V nh, tip tc sri sch hng dn, bn s sm chun b t c chng ch LPIC cp
bc I t Linux Professional Institude.

3.6.2 Tham kho


cp n chng ch LPIC, nu y l ci bn quan tm, th chng ti khuyn bn hc cc
ngun tham kho sau, m c la chn cn thn b sung thm cho kin thc trong
cun hng dn ny:
C mt s ngun tham kho tt v biu thc chnh quy trn mng. y l mt cp m
chng ti tm thy:

Biu thc chnh quy - Ti liu Tra cu

Biu thc chnh quy - S gii thch

Ngoi ra cn c v FHS ti http://www.pathname.com/fhs/


Trong bi bo nhiu k "Bash qua v d" ("Bash by example") trn developerWorks,
Daniel ch bn cch s dng cu trc lp trnh bash vit script ca mnh. Chui ny
(Phn 1 v 2 ni ring) l s chun b tt cho k thi LPIC bc 1:

Bash qua v d, Phn 1: Lp trnh c s trong h v Bourne-again shell

Bash qua v d, Phn 2: Lp trnh bash c s nng cao

Bash qua v d, Phn 3: Khm ph h thng ebuild

C th hc thm v sed trong cc bi bo sau ca IBM developerWorks:


Sed qua v d, Phn 1
Sed qua v d, Phn 2
Sed qua v d, Phn 3
Nu bn d nh tr thi LPI, bn cn c hai bi bo u tin ca sri ny.

C th hc thm v awk trong nhng bi bo sau ca IBM developerWorks:


Awk qua v d, Phn 1
Awk qua v d, Phn 2
Awk qua v d, Phn 3
Chng ti xin khuyn khch xem Nhng cu hi chuyn mn thng t cho ngi dng
Linux (Technical FAQ for Linux users), danh sch 50 trang i su v nhng cu hi Linux
thng t, vi cc cu tr li chi tit. Bn thn FAQ ny dng PDF (Acrobat).
Nu bn khng quen thuc lm vi trnh son tho vi, hy xem cun hng dn Vi -
hng dn hc qua phng php ti khn. Cun hng dn ny kha m u cp tc v
trnh son tho mnh ny. Coi nh y l ti liu phi c thm nu bn khng bit cch s
dng vi.
50 C bn v qun tr Linux

3.6.3 kin c gi
Xin hy cho chng ti bit cun hng dn ny c gip ch cho bn khng v chng ti c
th lm n tt hn nh th no. ng thi, chng ti cng mun nghe v nhng ch khc
m bn c th mun xem trong hng dn ca developerWorks
hi v ni dung ca cun hng dn ny, lin h vi cc tc gi:

Daniel Robbins, ti drobbins@gentoo.org.

Chris Houser, ti chouser@gentoo.org.

Aron Griffis, ti agriffis@gentoo.org.

3.6.4 Thay cho li kt


Cun hng dn ny c vit hon ton trn XML, s dng chng trnh to sch hng
dn Toot-O-Matic ca developerWorks7 . Cng c m ngun m Toot-O-Matic mt XSLT
stylesheet v vi chc nng XSLT m rng bin i tp XML thnh cc trang HTML, mt
tp zip, nh tiu JPEG v hai tp PDF. Kh nng xut ra c dng vn bn v dng nh
nguyn t mt tp ngun n cho thy kh nng v s linh hot ca XML. (XML ng thi
tit kim rt nhiu thi gian v sc lc ca nhm chng ti).
Bn c th ly m ngun ca cng c Toot-O-Matic ti
http://www6.software.ibm.com/dl/devworks/dw-tootomatic-p/. Cun
hng dn Xy dng hng dn vi Toot-O-Matic (Bulding tutorials with the Toot-O-Matic)
cho thy cch s dng Toot-O-Matic to hng dn ca chnh bn. developerWorks cn
lm ch mt din n dnh cho Toot-O-Matic, ti a ch: http://www-105.ibm.com/developerworks/xml_df.nsf
late?OpenForm&RestrictToCategory=11. Chng ti rt mun bit bn ngh g v cng c
ny.

7
ngi dch: bn dch c vit trn m TEX s dng trnh son tho gedit
Chng 4

Qun tr h thng Linux


Chng 5

Qun tr h thng linux nng cao

5.1 H thng tp tin, phn vng, v cc thit b khi


5.1.1 Gii thiu v thit b khi
Trong phn ny, chng ta s xem xt ti cch thc qun l cng ca Linux, bao gm h
thng tp tin, cc phn vng, v cc thit b khi. Sau khi bn quen vi cc tc v vo
ra d liu ca cng cng nh l h thng tp tin, chnh ta s tin hnh qu trnh thit lp
phn vng v h thng tp tin trong Linux.
khi u, phn nh ny s gii thiu ti bn khi nim "thit b khi". Thit b khi
c bit n nhiu nht trong mi trng Linux c l l thit b cng IDE u tin trong
h thng.

/dev/hda

Nu h thng ca bn s dng SCSI, khi cng u tin s l

/dev/sda

5.1.2 Cc lp tru tng


Thit b khi em ti cho ngi dng mt giao din giao tc vi cng, Cc chng trnh
ngi dng c th s dng cng m khng cn bn tm ti thit b l IDE hay SCSI. Cc
chng trnh ny n gin ch cn nh a ch thit b lu tr nh l mt nhm cc khi
lin tc truy cp ngu nhin 512 byte The block devices above represent an abstract interface
to the disk. User programs can use these block devices to interact with your disk without
worrying about whether your drivers are IDE, SCSI, or something else. The program can
simply address the storage on the disk as a bunch of contiguous, randomly-accessible 512-
byte blocks.

5.1.3 Phn vng


Trong mi trng Linux, xy dng mt h thng tp tin, chng ta s dng mt lnh
chuyn dng l mkfs ( thc cht l mt h lnh mke2fs, mkreiserfs,...vv) vi tham s u
vo l mt thit b khi.
5.1 H thng tp tin, phn vng, v cc thit b khi 53

Mc d l v mt l thuyt, chng ta c th s dng thit b khi tng th (dng ch


ton b cng) nh /dev/hda hoc /dev/sda xy dng mt h thng tp tin, Tuy nhin,
trong thc t s dng, cch lm ny gn nh khng c dng. Thay vo , Thit b khi
tng th s c chia thnh cc thit b khi nh hn, d qun l hn v c gi l cc
phn vng. Phn vng c to ra bng cch s dng cng c fdisk, fdisk c s dng
to, sa cha bng phn vng nm trn a cng, Bng phn vng ny c dng xc
nh cc thc chia mt thit b khi tng th thnh cc phn vng.

5.1.4 Gii thiu v cng c fdisk


Chng ta c th thao tc vi bng phn vng cng bng cc chy lnh fdisk vi tham s
u vo l thit b khi tng th.
Ghi nh: ngoi fdisk, trong mi trng linux cn c mt s cng c cho php chnh sa
bng phn vng nh: cfdisk, parted, partimage.

# fdisk /dev/hda

hoc

# fdisk /dev/sda

Quan trng: Bn khng nn lu hoc thay i bng phn vng nu trong mt phn vng c
cha cc thng tin quan trng. Bn ch nn lm khi bn bit r mnh ang lm g

5.1.5 S dng fdisk


Sau khi gi cng c fdisk, bn s c chuyn ti mt du nhc dng lnh nh sau:

Command (m for help):

nhn p in ra cu hnh phn vng hin ti ca bn, di y l mt v d:

Command (m for help): p

Disk /dev/hda: 40.0 GB, 40007761920 bytes


255 heads, 63 sectors/track, 4864 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot Start End Blocks Id System


/dev/hda1 * 1 898 7213153+ 7 HPFS/NTFS
/dev/hda2 899 924 208845 83 Linux
/dev/hda3 925 1541 4956052+ a9 NetBSD
/dev/hda4 1542 4864 26691997+ 5 Extended
/dev/hda5 1542 1627 690763+ 82 Linux swap
/dev/hda6 1628 2272 5180931 83 Linux
/dev/hda7 2273 2688 3341488+ 83 Linux
54 Qun tr h thng linux nng cao

/dev/hda8 3590 4864 10241406 7 HPFS/NTFS


/dev/hda9 2689 3589 7237251 83 Linux

Command (m for help):

Nh bn thy, trong cng ny c cha 7 h thng tp tin Linux (cc phn vng c gi
tr trong ct System l Linux) v mt phn vng trao i (swap partition - "Linux swap").

5.1.6 Thit b khi v tng quan v vic chia phn vng


Chng ta hy lu ti vic t tn cho cc phn vng (cc thit b khi con) ct bn tri,
bt u bng /dev/hda1 v kt thc l /dev/hda9. Vo thi k u khi mi xut hin my
PC, cc phn mm chia phn vng ch cho php ti a c 4 phn vng trn mt a cng
(gi l cc phn vng nguyn thu). iu gy ra rt nhiu hn ch i vi s pht trin
nhanh trng ca my PC, v l do m mt s m rng c tin hnh cho php to ra
nhiu hn 4 phn vng
nding partition block devices on the left side, starting with /dev/hda1 and going up to
/dev/hda9. In the early days of the PC, partitioning software only allowed a maximum of four
partitions (called primary partitions). This was too limiting, so a workaround called extended
partitioning was created. An extended partition is very similar to a primary partition, and
counts towards the primary partition limit of four. However, extended partitions can hold any
number of so-called logical partitions inside them, providing an effective means of working
around the four partition limit.
Cc phn vng t hda5 tr ln gi l phn vng lun l. cc phn vng c nh s t
1 ti 4 c dng cho cc phn vng nguyn thu v phn vng m rng.
Trong v dng ca chng ta hda3 l phn vng nguyn thu. hda4 l phn vng m rng
cha cc phn vng lun l t hda5 cho ti hda9. chng ta s khng bao gi thc s s dng
phn vng hda4 lu tr trc tip bt c h thng tp tin no. Lc phn vng m rng
/dev/hda4 ch n thun ng vai tr m mt phn vng cha cc phn vng lun l.

5.1.7 Loi phn vng


Cng cn phi lu ti trng "Id" ca phn vng, trng cn c gi l loi phn
vng, bt c khi no bn to mi mt phn vng, bn cn m bo rng loi phn vng
c thit lp chnh xc. H thng tp tin ca Linux c m loi phn vng (Id) l 83 v 82
l m loi phn vng ca phn vng tro i dng cho linux. Bn c th thit lp loi phn
vng cho mt phn vng bng cch s dng lnh t trong du nhc dng lnh ca fdisk.
gi tr ny c s dng bi ht nhn linux t ng tm h thng tp tin cng nh l kch
hot phn vng tro i trong khi khi ng.

5.1.8 S dng fdisk thit lp cc phn vng


5.1.9 a cng sau khi c phn vng s th no
Trc khi tin hnh to cc phn vng trn cng, chng ta cn xc nh b cc ca a
sau khi c phn vng, di y l mt v d v b cc cng sau khi phn vng:
5.1 H thng tp tin, phn vng, v cc thit b khi 55

Disk /dev/hda: 30.0 GB, 30005821440 bytes


240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System


/dev/hda1 * 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
/dev/hda3 82 3876 28690200 83 Linux

Command (m for help):

Ch gii v cc phn vng ca mt a cng


Khi u
Zapping existing partitions page 14 of 46
To phn vng khi ng

Command (m for help): n


Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +100M

Now, when you type p, you should see the following partition printout:

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes


240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System


/dev/hda1 1 14 105808+ 83 Linux

To phn vng tro i

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes


240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System


/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap

To phn vng gc
56 Qun tr h thng linux nng cao

Command (m for help): p

Disk /dev/hda: 30.0 GB, 30005821440 bytes


240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes

Device Boot Start End Blocks Id System


/dev/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap
/dev/hda3 82 3876 28690200 83 Linux

Thit lp kh nng khi ng cho phn vng


Ti nguyn v phn vng a cng
For more information on partitioning, take a look at the following partitioning tips:
* Partition planning tips http://www-106.ibm.com/developerworks/linux/library/l-partitiontip.html
* Partitioning in action: consolidating data http://www-106.ibm.com/developerworks/linux/library/l-
partplan4.html * Partitioning in action: moving /home http://www-106.ibm.com/developerworks/linux/library/l
partplan.html
Xy dng h thng tp tin
H thng tp tin ext2 H thng tp tin ext3 H thng tp tin ReiserFS H thng tp tin
XFS H thng tp tin JFS Khuyn ngh v h thng tp tin

# mke2fs -j /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3

To khng gian trao i Cng c mkswap c s dng khi to phn vng tro i:

# mkswap /dev/hda2

Khng ging nh h thng tp tin gc, phn vng tro i khng th gt kt c, thay
vo chng ta s dng lnh swapon kch hot:

# swapon /dev/hdc6

Creating ext2, ext3, and ReiserFS filesystems


You can use the mke2fs command to create ext2 filesystems:

# mke2fs /dev/hda1

Nu mun s dng h thng tp tin ext3, bn c thm vo tham s la chn -j to h


thng tp tin ext3

# mke2fs -j /dev/hda3
5.2 Khi ng h thng 57

thit lp h thng tp tin ReiserFS chng ta s dng lnh mkreiserfs:

# mkreiserfs /dev/hda3

Thit lp h thng tp tin XFS v JFS thit lp h thng tp tin XFS, chng ta s dng
lnh mkfs.xfs:

# mkfs.xfs /dev/hda3

thit lp h thng tp tin JFS, chng ta s dng lnh mkfs.jfs:

# mkfs.jfs /dev/hda3

Gn kt h thng tp tin

# mount /dev/hda3 /mnt

# mkdir /mnt/boot
# mount /dev/hda1 /mnt/boot

Cc Even more mounting stuff page 33 of 46


Mount options page 34 of 46
Gii thiu v fstab
Tho gn kt h thng tp tin
Gii thiu v
Cc vn vi fsck
The ext2 filesystem
The ext3 filesystem
The ReiserFS filesystem
The XFS filesystem
The JFS filesystem
VFAT

5.2 Khi ng h thng


5.2.1 About this sectin
5.2.2 Bng ghi khi ng chnh - MBR
+----------------+
| MBR |
+----------------+
| Phn vng 1: |
| phn vng gc |
58 Qun tr h thng linux nng cao

| (/) bao gm |
| ht nhn v |
| h thng. |
+----------------+
| Phn vng 2: |
| Linux swap |
+----------------+
| Phn vng 3: |
| Windows 3.0 |
| (last booted |
| in 1992) |
+----------------+

5.2.3 Qa trnh khi ng ca ht nhn

5.2.4 Chng trnh /sbin/init

$ ps --pid 1
PID TTY TIME CMD
1 ? 00:00:04 init.system
5.2 Khi ng h thng 59

5.2.5 Digging in: LILO

S dng LILO

An important LILO gotcha

5.2.6 Digging in: GRUB

S dng GRUB

5.2.7 Thng tin dmesg

5.2.8 Thng tin trong /var/log/messages

5.2.9 Cc thng tin khc

5.2.10 Cp thnc tin

5.2.11 Single-user mode

5.2.12 Understanding single-user mode

5.2.13 Cc cp thc thi - Runlevels

5.2.14 Cng c telinit

5.2.15 Runlevel etiquette

5.2.16 "Now" v halt

5.2.17 Cp thc thi ngm nh

5.2.18 Tham kho

Additional information related to this section can be found at:


* Sysvinit docs at Red Hat * Linux System Administrators Guide section on init
60 Qun tr h thng linux nng cao

5.3 Cp php s dng h thng tp tin.


5.3.1 Gii thiu v cp php
5.3.2 H tr ca ht nhn
5.3.3 H tr ca h thng tp tin
5.3.4 Cu hnh h thng giy php
5.3.5 Lnh "quota"
5.3.6 Viewing quota
5.3.7 edquota
5.3.8 Understanding edquota
5.3.9 Making changes
5.3.10 Copying quotas
5.3.11 Group restrictions
5.3.12 The repquota command
5.3.13 Repquota options
5.3.14 Monitoring quotas
5.3.15 Modifying the grace period
5.3.16 Kim tra qouta khi khi ng

5.4 Gii thiu v syslogd


5.4.1 c thng tin nht k
5.4.2 Tailing log files
5.4.3 Grepping logs
Another useful technique is to search a log file using the grep utility, described in Part 2 of
this tutorial series. In the above case, we might use grep to find where "named" behavior
has changed:
Log overview page 5 of 12
The following summarizes the log files typically found in /var/log and maintained by
syslog:
* messages: Informational and error messages from general system programs and dae-
mons. * secure : Authentication messages and errors, kept separate from "messages" for
5.4 Gii thiu v syslogd 61

extra security. * maillog: Mail-related messages and errors. * cron: Cron-related messages
and errors. * spooler: UUCP and news-related messages and errors.
Tp tin cu hnh syslog.conf
As a matter of fact, now would be a good time to investigate the syslog configuration
file, /etc/syslog.conf. (Note: If you dont have syslog.conf, keep reading for the sake of
information, but you may be using an alternative syslog daemon.) Browsing that file, we
see there are entries for each of the common log files mentioned above, plus possibly some
other entries. The file has the format facility.priority action, where those fields are defined
as follows:
facility Specifies the subsystem that produced the message. The valid keywords for fa-
cility are auth, authpriv, cron, daemon, kern, lpr, mail, news, syslog, user, uucp and local0
through local7.
priority Specifies the minimum severity of the message, meaning that messages of this
priority and higher will be matched by this rule. The valid keywords for priority are debug,
info, notice, warning, err, crit, alert, and emerg.
action The action field should be either a filename, tty (such as /dev/console), remote
machine prefixed by @ , comma-separated list of users, or * to send the message to every-
body logged on. The most common action is a simple filename.
Reloading and additional information page 8 of 12
Hopefully this overview of the configuration file helps you to get a feel for the strength
of the syslog system. You should read the syslog.conf(5) man-page for more information
prior to making changes. Additionally the syslogd(8) man-page supplies lots more detailed
information.
Note that you need to inform the syslog daemon of changes to the configuration file
before they are put into effect. Sending it a SIGHUP is the right method, and you can use
the killall command to do this easily:

5.4.4 Ghi nh bo mt
You should beware that the log files written to by syslogd will be created by the program if
they dont exist. Regardless of your current umask setting, the files will be created world-
readable. If youre concerned about the security, you should chmod the files to be read-write
by root only. Additionally, the logrotate program (described below) can be configured to
create new log files with the appropriate permissions. The syslog daemon always preserves
the current attributes of an existing log file, so you dont need to worry about it once the
file is created.
Tin ch logrotate
The log files in /var/log will grow over time, and potentially could fill the filesystem.
It is advisable to employ a program such as logrotate to manage the automatic archiving of
the logs. The logrotate program usually runs as a daily cron job, and can be configured to
rotate, compress, remove, or mail the log files.
For example, a default configuration of logrotate might rotate the logs weekly, keeping 4
weeks worth of backlogs (by appending a sequence number to the filename), and compress
the backlogs to save space. Additionally, the program can be configured to deliver a SIGHUP
to syslogd so that the daemon will notice the now-empty log files and append to them
appropriately.
62 Qun tr h thng linux nng cao

For more information on logrotate, see the logrotate(8) man page, which contains a
description of the program and the syntax of the configuration file.

5.4.5 Ch nng cao - klogd


Before moving away from syslog, Id like to note a couple of advanced topics for ambitious
readers. These tips may save you some grief when trying to understand syslog-related topics.
First, the syslog daemon is actually part of the sysklogd package, which contains a
second daemon called klogd. Its klogds job to receive information and error messages
from the kernel, and pass them on to syslogd for categorization and logging. The messages
received by klogd are exactly the same as those you can retrieve using the dmesg command.
The difference is that dmesg prints the current contents of a ring buffer in the kernel,
whereas klogd is passing the messages to syslogd so that they wont be lost when the ring
wraps around.

5.4.6 Ch nng cao - cc chng trnh ghi nht k khc


Second, there are alternatives to the standard sysklogd package. The alternatives attempt to
be more efficient, easier to configure, and possibly more featureful than sysklogd. Syslog-ng
and Metalog seem to be some of the more popular alternatives; you might investigate them
if you find sysklogd doesnt provide the level of power you need.
Third, you can log messages in your scripts using the logger command. See the logger(1)
man page for more information.

5.5 Tm lc
Congratulations, youve reached the end of this tutorial! Well, almost. There were a couple
of topics that we were unable to include in our first four tutorials due to space limitations.
Fortunately, we have a couple of good resources that will help you get up to speed on these
topics in no time. Be sure to cover these particular tutorials if you are planning to get your
LPIC level 1 certification.
We didnt have quite enough room to cover the important topic of system backups in
this tutorial. Fortunately, IBM developerWorks already has a tutorial on this subject, called
Backing up your Linux machines. In this tutorial, youll learn how to back up Linux systems
using a tar variant called star. Youll also learn how to use the mt command to control tape
functions.
The second topic that we werent quite able to fit in was periodic scheduling. Fortu-
nately, theres some good cron documentation available at Indiana University. cron is used
to schedule jobs to be executed at a specific time, and is an important tool for any system
administrator.
On the next page, youll find a number of resources that you will find helpful in learning
more about the subjects presented in this tutorial.
5.6 Tham kho 63

5.6 Tham kho


To find out more about quota support under Linux, be sure to check out the Linux Quota
mini-HOWTO. Also be sure to consult the quota(1), edquota(8), repquota(8), quotacheck(8),
and quotaon(8) man pages on your system.
Additional information to the system boot process and boot loaders can be found at:
* IBM developerWorks Getting to know GRUB tutorial * LILO Mini-HOWTO * GRUB
home * Kernel command-line options in /usr/src/linux/Documentation/kernel-parameters.txt
* Sysvinit docs at Redhat
To learn more about Linux filesystems, read the multi-part advanced filesystem imple-
mentors guide on the IBM developerWorks Linux zone, covering:
* The benefits of journalling and ReiserFS (Part 1) * Setting up a ReiserFS system (Part
2) * Using the tmpfs virtual memory filesystem and bind mounts (Part 3) * The benefits of
devfs, the device management filesystem (Part 4) * Beginning the conversion to devfs (Part
5) * Completing the conversion to devfs using an init wrapper (Part 6) * The benefits of the
ext3 filesystem (Part 7) * An in-depth look at ext3 and the latest kernel updates (Part 8) *
An introduction to XFS (Part 9)
For more information on partitioning, take a look at the following partitioning tips on
the IBM developerWorks Linux zone:
* Partition planning tips * Partitioning in action: consolidating data * Partitioning in
action: moving /home
ReiserFS Resources:
* The home of ReiserFS * Advanced filesystem implementors guide, Part 1: Journalling
and ReiserFS on developerWorks * Advanced filesystem implementors guide, Part 2: Using
ReiserFS and Linux 2.4 on developerWorks
ext3 resources:
* Andrew Mortons ext3 page * Andrew Mortons excellent ext3 usage documentation
(recommended)
XFS and JFS resources:
* SGI XFS projects page * The IBM JFS project Web site
Dont forget linuxdoc.org. Youll find linuxdocs collection of guides, HOWTOs, FAQs,
and man pages to be invaluable. Be sure to check out Linux Gazette and LinuxFocus as
well.
The Linux System Administrators guide, available from Linuxdoc.orgs "Guides" sec-
tion, is a good complement to this series of tutorials give it a read! You may also find Eric
S. Raymonds Unix and Internet Fundamentals HOWTO to be helpful.
In the Bash by example article series on developerWorks, Daniel shows you how to use
bash programming constructs to write your own bash scripts. This bash series (particularly
Parts 1 and 2) will be excellent additional preparation for the LPIC Level 1 exam:
* Bash by example, part 1: Fundamental programming in the Bourne-again shell * Bash
by example, part 2: More bash programming fundamentals * Bash by example, part 3:
Exploring the ebuild system
We highly recommend the Technical FAQ by Linux Users by Mark Chapman, a 50-page
in-depth list of frequently-asked Linux questions, along with detailed answers. The FAQ
itself is in PDF (Adobe Acrobat) format. If youre a beginning or intermediate Linux user,
you really owe it to yourself to check this FAQ out. We also recommend the Linux glossary
for Linux users, also from Mark.
64 Qun tr h thng linux nng cao

If youre not familiar with the vi editor, we strongly recommend that you check out
Daniels Vi intro the cheat sheet method tutorial. This tutorial will give you a gentle yet
fast-paced introduction to this powerful text editor. Consider this must-read material if you
dont know how to use vi.
Chng 6

Bin dch m ngun v qun l gi phn


mm trong linux
7.1 Gii thiu h ht nhn Linux 67

Chng 7

Cu hnh v bin dch ht nhn

7.1 Gii thiu h ht nhn Linux


7.1.1 Ht nhn l ... Linux
7.1.2 Giao tip vi phn cng
7.1.3 iu qun CPU
7.1.4 iu qun vo ra I/O
7.1.5 Trung tm ca h thng mng
7.1.6 n li v qu trnh khi ng linux
7.1.7 Gii thiu v m un
7.1.8 V tr ca tp tin m un
7.1.9 Modules not for every process!

7.2 Ti m ngun ca ht nhn


7.2.1 Kernel version history
7.2.2 Getting new kernel sources
7.2.3 Unpacking the kernel

7.3 Cu hnh ht nhn


7.3.1 Lets talk configuration
7.3.2 The new way to configure
7.3.3 Cc mo khi cu hnh
7.3.4 Code maturity level options
7.3.5 Modules and CPU-related options
7.3.6 General and parallel port options
Chng 8

H thng mng
Chng 9

USB bo mt h v v chia s tp tin


70 USB bo mt h v v chia s tp tin

You might also like