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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

MC LC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 17 18 19 19 19 20 20 20 21 21 21 21 21 23 23 23 23 23 24 24 24 25 25 25 26 26 27 27 27 28 28 28 28 29 29 29 30 30 30 31 31 31 32 32 32

2.5

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

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

v 33 33 34 34 34 34 35 35 35 36 36 36 37 37 37 38 38 38 39 39 39 39 40 40 41 41 41 42 42 42 43 43 43 44 44 44 44 45 45 45 45 45 46 46 46 46 47

3.3

3.4

3.5

vi 3.5.13 nh v mun nhn . . . . . . . . 3.5.14 insmod v modprobe . . . . . . . . 3.5.15 Thc thi rmmod v modprobe . . . 3.5.16 Ti khn: modinfo v modules.conf 3.5.17 modules.conf . . . . . . . . . . . . Tng kt v cc ngun tham kho . . . . . 3.6.1 Tng kt . . . . . . . . . . . . . . 3.6.2 Tham kho . . . . . . . . . . . . . 3.6.3 kin c gi . . . . . . . . . . . 3.6.4 Thay cho li kt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MC LC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47 47 48 48 48 48 48 49 50 50 51 52 52 52 52 52 53 53 54 54 54 54 57 57 57 58 58 59 59 59 59 59 59 59 59 59 59 59 59 59 59 60 60 60 60 60

3.6

4 5

Qun tr h thng Linux 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 . . . . . . . . . . . . . 5.1.2 Cc lp tru tng . . . . . . . . . . . . . . . . . 5.1.3 Phn vng . . . . . . . . . . . . . . . . . . . . . 5.1.4 Gii thiu v cng c fdisk . . . . . . . . . . . . . 5.1.5 S dng fdisk . . . . . . . . . . . . . . . . . . . . 5.1.6 Thit b khi v tng quan v vic chia phn vng 5.1.7 Loi phn vng . . . . . . . . . . . . . . . . . . . 5.1.8 S dng fdisk thit lp cc phn vng . . . . . 5.1.9 a cng sau khi c phn vng s th no . . . 5.2 Khi ng h thng . . . . . . . . . . . . . . . . . . . . . 5.2.1 About this sectin . . . . . . . . . . . . . . . . . . 5.2.2 Bng ghi khi ng chnh - MBR . . . . . . . . . 5.2.3 Qa trnh khi ng ca ht nhn . . . . . . . . . 5.2.4 Chng trnh /sbin/init . . . . . . . . . . . . . . . 5.2.5 Digging in: LILO . . . . . . . . . . . . . . . . . . 5.2.6 Digging in: 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 . . . . . . . . . . . . . . . . . . . . . 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 . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

MC LC 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 . . . . . . . . . . . . Gii thiu v syslogd . . . . . . . . . . . . . . . . . . . . . 5.4.1 c thng tin nht k . . . . . . . . . . . . . . . . 5.4.2 Tailing log files . . . . . . . . . . . . . . . . . . . . 5.4.3 Grepping logs . . . . . . . . . . . . . . . . . . . . . 5.4.4 Ghi nh bo mt . . . . . . . . . . . . . . . . . . . 5.4.5 Ch nng cao - klogd . . . . . . . . . . . . . . . 5.4.6 Ch nng cao - cc chng trnh ghi nht k khc Tm lc . . . . . . . . . . . . . . . . . . . . . . . . . . . Tham kho . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

vii 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 60 61 62 62 62 63 65 66 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67

5.4

5.5 5.6 6 7

Bin dch m ngun v qun l gi phn mm trong linux 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 . . . 7.3.7 RAID and LVM . . . . . . . . . . . . 7.3.8 H thng mng v cc thit b lin quan

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

. . . . . . . . . . . . . . . . . . . . . . .

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

MC LC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 67 68 69

7.4

7.5

7.6

7.7

8 9

H thng mng USB bo mt h v v chia s tp tin

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

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
2.1.1

Gii thiu v bash


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

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


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
3

2.1 Gii thiu v bash

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 8

hy ch s khc nhau gia hai cch bin dch thng gi l th mc m hn 9 gi nm na l "hng xm"

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

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
2.2.1

S dng cc cu lnh
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 12

tt nhin nu h c trong h thng hay ni ng hn l bash

C bn v Linux

$ ls -l /usr total 122 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 2 drwxr-xr-x 46 lrwxrwxrwx 1 drwxr-xr-x 138 drwxrwsr-x 11 drwxr-xr-x 2 drwxr-xr-x 236 drwxrwsr-x 5 drwxr-xr-x 6

root root root root root root root root root teppi82 root

root 53104 2004-08-29 02:17 bin root 2336 2004-06-22 19:51 doc root 3088 2004-06-01 15:44 games root 5528 2004-06-13 16:33 include root 10 2004-05-31 22:29 info -> share/info root 43384 2004-08-29 00:28 lib staff 272 2004-06-05 04:06 local root 6760 2004-08-29 00:28 sbin root 6360 2004-06-22 19:31 share src 136 2004-08-28 21:58 src 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 drwxr-xr-x 12 root root 312 2004-05-31 22:29 drwxr-xr-x 2 root root 53208 2004-09-02 18:21 drwxr-xr-x 2 root root 3984 2004-06-22 19:30

../share /usr /usr/bin /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.
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
13

2.2 S dng cc cu lnh

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 685 915 916 -i /usr bin doc games

917 include 918 info 919 lib

9352 local 706 sbin 708 share

920 src 12522 X11R6

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

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:
xin vit tt l HDSD 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
18 17

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 "embichuyen". 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 22

chng ti s dng t terminal thay th cho thut ng ny 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
2.3.1

To lin kt v xa tp tin
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 25

ngi c quyn ghi vo th mc /usr/bin theo mc nh 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 -rw-r--r-- 1 teppi82 $ rm tep1 tep2 $ ls -l tep1 tep2 ls: tep1: No such file ls: tep2: No such file

thang thang

0 2004-09-04 17:53 tep1 0 2004-09-04 17:53 tep2

or directory 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
2.4.1

S dng cc k t i din (wildcard)


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/gateways /etc/gnome-vfs-2.0 /etc/gconf /etc/gnome-vfs-mime-magic /etc/gdm /etc/groff /etc/gimp /etc/group

/etc/group/etc/group.org /etc/gs-gpl /etc/gshadow /etc/gshadow-

/etc/gtk /etc/gtk-2.0

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 .
wildcard pattern 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
28 27

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
2.5.1

Tng kt v cc ngun tham kho


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
3.1.1

Biu thc chnh quy


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 /dev/hda1 /boot reiserfs /dev/hda2 swap swap #/dev/hda4 /mnt/extra reiserfs

noatime,ro 1 1 noauto,noatime,notail 1 2 sw 0 0 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
3.2.1

FHS v tm tp tin
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
3.3.1

Qun l tin trnh


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 [2]+ 16224 Stopped (signal)

xeyes -center red 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) $ kill -s SIGKILL \$ jobs -l [2]+ 16224 Interrupt

xeyes -center blue

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 1? 2? 3? 4? 5?

STAT S SW SWN SW SW

TIME COMMAND 0:04 init [3] 0:11 [keventd] 0:13 [ksoftirqd_CPU0] 2:33 [kswapd] 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 927 pts/1 6690 pts/1 26909 pts/1 19930 pts/4 25740 pts/4
2

STAT S S R S S

TIME 0:00 0:00 0:00 0:01 0:04

COMMAND bash \_ bash \_ ps x --forest bash \_ vi processes.txt

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 agriffis chouser root agriffis chouser

PID 403 404 408 434 927

%CPU %MEM 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

VSZ RSS TTY 2484 72 tty1 2508 92 tty2 1308 248 tty6 1008 4 tty1 2540 96 pts/1

STAT START TIME COMMAND S 2001 0:00 -bash S 2001 0:00 -bash S 2001 0:00 /sbin/agetty 3 S 2001 0:00 /bin/sh /usr/X S 2001 0:00 bash

$ ps F 100 100 000 000 000

al UID 1001 1000 0 1001 1000

PID PPID PRI NI VSZ RSS WCHAN STAT TTY 403 1 9 0 2484 72 wait4 S tty1 404 1 9 0 2508 92 wait4 S tty2 408 1 9 0 1308 248 read_c S tty6 434 403 9 0 1008 4 wait4 S tty1 927 652 9 0 2540 96 wait4 S pts/1

TIME COMMAND 0:00 -bash 0:00 -bash 0:00 /sbin/ag 0:00 /bin/sh 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
3.4.1

Gia cng vn bn
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

wc, head, v tail

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

tr, awk, v sed

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

od, split, v fmt

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
3.5.1

Mun nhn
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 vmnet vmmon nvidia mousedev hid usbmouse input usb-ohci ehci-hcd emu10k1

Size Used by Tainted: PF 20520 5 22484 11 1547648 10 3860 2 16772 0 (unused) 1848 0 (unused) 3136 0 [mousedev hid usbmouse] 15976 0 (unused) 13288 0 (unused) 64264 2

46 ac97_codec sound usbcore 9000 51508 55168

C bn v qun tr Linux 0 [emu10k1] 0 [emu10k1] 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 "modules.": $ 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 "modprobe" 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
3.6.1

Tng kt v cc ngun tham kho


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.

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
5.1.1

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


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 512byte 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 /dev/hda1 * /dev/hda2 /dev/hda3 /dev/hda4 /dev/hda5 /dev/hda6 /dev/hda7 Start 1 899 925 1542 1542 1628 2273 End 898 924 1541 4864 1627 2272 2688 Blocks Id 7213153+ 7 208845 83 4956052+ a9 26691997+ 5 690763+ 82 5180931 83 3341488+ 83 System HPFS/NTFS Linux NetBSD Extended Linux swap Linux Linux

54 /dev/hda8 /dev/hda9 3590 2689 4864 3589

Qun tr h thng linux nng cao 10241406 7237251 7 83 HPFS/NTFS 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 5.1.9

S dng fdisk thit lp cc phn vng 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 /dev/hda1 * /dev/hda2 /dev/hda3 Start 1 15 82 End 14 81 3876 Blocks 105808+ 506520 28690200 Id 83 82 83 System Linux Linux swap 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 /dev/hda1 Start 1 End 14 Blocks 105808+ Id 83 System 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 /dev/hda1 /dev/hda2 Start 1 15 End 14 81 Blocks 105808+ 506520 Id 83 82 System Linux 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 /dev/hda1 /dev/hda2 /dev/hda3 Start 1 15 82 End 14 81 3876 Blocks 105808+ 506520 28690200 Id 83 82 83 System Linux Linux swap 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/lpartplan4.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 thit lp h thng tp tin ReiserFS chng ta s dng lnh mkreiserfs: # mkreiserfs /dev/hda3

57

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
5.2.1 5.2.2

Khi ng h thng
About this sectin 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 1 ?

TIME CMD 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 5.2.8 5.2.9 5.2.10 5.2.11 5.2.12 5.2.13 5.2.14 5.2.15 5.2.16 5.2.17 5.2.18

Thng tin dmesg Thng tin trong /var/log/messages Cc thng tin khc Cp thnc tin Single-user mode Understanding single-user mode Cc cp thc thi - Runlevels Cng c telinit Runlevel etiquette "Now" v halt Cp thc thi ngm nh 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
5.3.1 5.3.2 5.3.3 5.3.4 5.3.5 5.3.6 5.3.7 5.3.8 5.3.9 5.3.10 5.3.11 5.3.12 5.3.13 5.3.14 5.3.15 5.3.16

Cp php s dng h thng tp tin.


Gii thiu v cp php H tr ca ht nhn H tr ca h thng tp tin Cu hnh h thng giy php Lnh "quota" Viewing quota edquota Understanding edquota Making changes Copying quotas Group restrictions The repquota command Repquota options Monitoring quotas Modifying the grace period Kim tra qouta khi khi ng

5.4
5.4.1 5.4.2 5.4.3

Gii thiu v syslogd


c thng tin nht k Tailing log files 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 daemons. * 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 facility 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 everybody 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 worldreadable. 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. Fortunately, 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 implementors 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" section, 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
7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.1.6 7.1.7 7.1.8 7.1.9

Gii thiu h ht nhn Linux


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

7.2
7.2.1 7.2.2 7.2.3

Ti m ngun ca ht nhn
Kernel version history Getting new kernel sources Unpacking the kernel

7.3
7.3.1 7.3.2 7.3.3 7.3.4 7.3.5 7.3.6

Cu hnh ht nhn
Lets talk configuration The new way to configure Cc mo khi cu hnh Code maturity level options Modules and CPU-related options 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