You are on page 1of 79

C b n v ch ng ch LPI

Ti li u v ch ng ch LPI c bin so n d a trn h th ng ti li u c a IBM Phin b n 1.0.0, Ngy 29 thng 10 nm 2004 Bin so n: Thnh vin VnOSS

ii

B n quy n 2004-2006 thu c v C ng ng ngu n m Vi t Nam - VNOSS v nh ng ng i ng gp cho ti li u C b n v ch ng ch LPI - All rights reserved. y l m t ti li u mi n ph. B n hon ton c th phn ph i l i ti li u cho nh ng ng i s d ng khc, ho c c th ch nh s a cho ph h p nhng ph i tun theo nh ng yu c u trong gi y php b n quy n GNU (General Public License c a Free Software Foundation; phin b n 2 hay cc phin b n khc). Ti li u ny c pht hnh n tay cc b n v i hy v ng r ng n s tr nn h u ch, nhng n KHNG KM THEO B T K S B O M NO, ngay c nh ng m b o ng m hi u v vi c thng m i ho hay ph i ph h p v i m t m c ch c th no (v n ny b n c th tham kh o gi y php GNU General Public License bi t thm chi ti t). Thng th ng, b n s nh n c m t b n sao c a gi y php GNU General Public License km theo ti li u ny; n u cha c, b n c th vi t th n a ch sau Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. c m t b n gi y php.

M cl c
1 Tr c khi b t u 1.1 V ti li u ny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 V tc gi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . C b n v Linux 2.1 Gi i thi u v bash . . . . . . . . . . . . . . . . . 2.1.1 H v (shell) . . . . . . . . . . . . . . . 2.1.2 C ph i b n ang ch y bash khng? . . . 2.1.3 V bash . . . . . . . . . . . . . . . . . . 2.1.4 S d ng cd . . . . . . . . . . . . . . . . 2.1.5 ng d n . . . . . . . . . . . . . . . . 2.1.6 ng d n tuy t i . . . . . . . . . . . 2.1.7 S d ng .. . . . . . . . . . . . . . . . . . 2.1.8 V d ng d n tng i . . . . . . . . 2.1.9 Th cn . l g? . . . . . . . . . . . . . . 2.1.10 cd v th m c nh . . . . . . . . . . . . 2.1.11 Th m c nh c a nh ng ng i dng khc 2.2 S d ng cc cu l nh . . . . . . . . . . . . . . . 2.2.1 Gi i thi u ls . . . . . . . . . . . . . . . 2.2.2 Li t k chi ti t . . . . . . . . . . . . . . 2.2.3 Xem th m c . . . . . . . . . . . . . . . 2.2.4 li t k inode v li t 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 chuy n h ng . . . . . . . . . 2.2.11 cat v cp . . . . . . . . . . . . . . . . . 2.2.12 mv . . . . . . . . . . . . . . . . . . . . . 2.3 T o lin k t v xa t p tin . . . . . . . . . . . . . 2.3.1 Lin k t c ng . . . . . . . . . . . . . . . 2.3.2 Lin k t t ng trng . . . . . . . . . . . 2.3.3 Su hn v lin k t t ng trng . . . . . 2.3.4 rm . . . . . . . . . . . . . . . . . . . . . 2.3.5 rmdir . . . . . . . . . . . . . . . . . . . 2.3.6 rm v th m c . . . . . . . . . . . . . . 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 d ng cc k t i di n (wildcard) 2.4.1 Gi i thi u v k t i di n . 2.4.2 Hi u v khng tng ng . . . 2.4.3 C php i di n: * . . . . . . 2.4.4 C php i di n: ? . . . . . . 2.4.5 C php i di n: [] . . . . . 2.4.6 C php i di n: [!] . . . . . 2.4.7 Su hn v c php i di n . 2.4.8 Ngo c n "g p" ngo c kp . T ng k t v cc ngu n tham kh o . . 2.5.1 T ng k t . . . . . . . . . . . 2.5.2 Cc ngu n tham kh o . . . . 2.5.3 ki n c gi . . . . . . . . 2.5.4 Thay cho l i k t cu n 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

M CL C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 b n v qu n tr Linux 3.1 Bi u th c chnh quy . . . . . . . . . . . . . 3.1.1 Bi u th c chnh quy l g? . . . . . 3.1.2 So snh v i k t i di n (glob) . . 3.1.3 Chu i con n gi n . . . . . . . . . 3.1.4 Hi u v chu i con n gi n . . . . 3.1.5 K t mta . . . . . . . . . . . . . 3.1.6 S d ng [] . . . . . . . . . . . . . 3.1.7 S d ng [] . . . . . . . . . . . . . 3.1.8 C php khc . . . . . . . . . . . . 3.1.9 K t mta "*" . . . . . . . . . . . 3.1.10 u v cu i dng . . . . . . . . . . 3.1.11 Regex cho c dng . . . . . . . . . 3.2 FHS v tm t p tin . . . . . . . . . . . . . 3.2.1 FHS - Tiu chu n h th ng t p tin d 3.2.2 Hai c p b c FHS c l p . . . . . . 3.2.3 H th ng b c hai t i /usr . . . . . . 3.2.4 Tm t p tin . . . . . . . . . . . . . 3.2.5 ng d n . . . . . . . . . . . . . 3.2.6 S a i PATH . . . . . . . . . . . 3.2.7 T t c v "which" . . . . . . . . . . 3.2.8 "which -a" . . . . . . . . . . . . . 3.2.9 whereis . . . . . . . . . . . . . . . 3.2.10 find . . . . . . . . . . . . . . . . . 3.2.11 find v k t i di n . . . . . . . . 3.2.12 L i ki u ch v i find . . . . . . . 3.2.13 find v bi u th c chnh quy . . . . 3.2.14 find v ki u . . . . . . . . . . . . . 3.2.15 find v mtimes . . . . . . . . . . . 3.2.16 Ty ch n -daystart . . . . . . . . . 3.2.17 Ty ch n -size . . . . . . . . . . . 3.2.18 Gia cng t p tin tm th y . . . . . .

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ng cy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

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

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

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

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

M CL C 3.2.19 locate . . . . . . . . . . . . . . . 3.2.20 S d ng updatedb . . . . . . . . 3.2.21 slocate . . . . . . . . . . . . . . Qu n l ti n trnh . . . . . . . . . . . . . 3.3.1 Kh i ng xeyes . . . . . . . . . 3.3.2 D ng m t ti n trnh . . . . . . . 3.3.3 fg v bg . . . . . . . . . . . . . . 3.3.4 S d ng "&" . . . . . . . . . . . 3.3.5 Nhi u ti n trnh n n sau . . . . . 3.3.6 Gi i thi u tn hi u . . . . . . . . 3.3.7 SIGTERM v SIGINT . . . . . . 3.3.8 "Di t t n g c" . . . . . . . . . . 3.3.9 nohup . . . . . . . . . . . . . . . 3.3.10 S d ng ps li t k ti n trnh . . . 3.3.11 Hi n th cy v r ng . . . . . . . 3.3.12 Ty ch n "u" v "l" . . . . . . . . 3.3.13 S d ng "top" . . . . . . . . . . . 3.3.14 nice . . . . . . . . . . . . . . . . 3.3.15 renice . . . . . . . . . . . . . . . Gia cng vn b n . . . . . . . . . . . . . 3.4.1 n l i chuy n h ng . . . . . . . 3.4.2 M t v d ng . . . . . . . . . . 3.4.3 ng gi i nn . . . . . . . . . . . 3.4.4 M t ng di hn . . . . . . . . . 3.4.5 Gi l c gia cng vn b n b t 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 l c k t thc! Chuy n h ng . 3.4.14 S d ng . . . . . . . . . . . . . Mun nhn . . . . . . . . . . . . . . . . 3.5.1 Lm quen v i "uname" . . . . . . 3.5.2 Thm v u ra uname . . . . . . 3.5.3 B n pht hnh nhn . . . . . . . 3.5.4 Nhn . . . . . . . . . . . . . . . 3.5.5 Gi i thi u mun nhn . . . . . . 3.5.6 B n tm t t mun nhn . . . . . 3.5.7 lsmod . . . . . . . . . . . . . . . 3.5.8 Li t k mun . . . . . . . . . . 3.5.9 Mun third-party . . . . . . . . 3.5.10 depmod . . . . . . . . . . . . . . 3.5.11 Lm th no l y mun . . . . 3.5.12 S d ng 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 3.5.14 3.5.15 3.5.16 3.5.17 T ng k 3.6.1 3.6.2 3.6.3 3.6.4 nh v mun nhn . . . . . . . . insmod v modprobe . . . . . . . . Th c thi rmmod v modprobe . . . Ti khn: modinfo v modules.conf modules.conf . . . . . . . . . . . . t v cc ngu n tham kh o . . . . . T ng k t . . . . . . . . . . . . . . Tham kh o . . . . . . . . . . . . . ki n c gi . . . . . . . . . . . Thay cho l i k t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

M CL C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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

Qu n tr h th ng Linux Qu n tr h th ng linux nng cao 5.1 H th ng t p tin, phn vng, v cc thi t b kh i . . . . . 5.1.1 Gi i thi u v thi t b kh i . . . . . . . . . . . . . 5.1.2 Cc l p tr u t ng . . . . . . . . . . . . . . . . . 5.1.3 Phn vng . . . . . . . . . . . . . . . . . . . . . 5.1.4 Gi i thi u v cng c fdisk . . . . . . . . . . . . . 5.1.5 S d ng fdisk . . . . . . . . . . . . . . . . . . . . 5.1.6 Thi t b kh i v t ng quan v vi c chia phn vng 5.1.7 Lo i phn vng . . . . . . . . . . . . . . . . . . . 5.1.8 S d ng fdisk thi t l p cc phn vng . . . . . 5.1.9 a c ng sau khi c phn vng s th no . . . 5.2 Kh i ng h th ng . . . . . . . . . . . . . . . . . . . . . 5.2.1 About this sectin . . . . . . . . . . . . . . . . . . 5.2.2 B ng ghi kh i ng chnh - MBR . . . . . . . . . 5.2.3 Qa trnh kh i ng c a h t 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 C p th nc tin . . . . . . . . . . . . . . . . . . . . 5.2.11 Single-user mode . . . . . . . . . . . . . . . . . . 5.2.12 Understanding single-user mode . . . . . . . . . . 5.2.13 Cc c p th c thi - Runlevels . . . . . . . . . . . . 5.2.14 Cng c telinit . . . . . . . . . . . . . . . . . . . 5.2.15 Runlevel etiquette . . . . . . . . . . . . . . . . . . 5.2.16 "Now" v halt . . . . . . . . . . . . . . . . . . . . 5.2.17 C p th c thi ng m nh . . . . . . . . . . . . . 5.2.18 Tham kh o . . . . . . . . . . . . . . . . . . . . . 5.3 C p php s d ng h th ng t p tin. . . . . . . . . . . . . . 5.3.1 Gi i thi u v c p php . . . . . . . . . . . . . . . 5.3.2 H tr c a h t nhn . . . . . . . . . . . . . . . . . 5.3.3 H tr c a h th ng t p tin . . . . . . . . . . . . . 5.3.4 C u hnh h th ng gi y php . . . . . . . . . . . .

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

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

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

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

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

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

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

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

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

M CL C 5.3.5 L nh "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 Ki m tra qouta khi kh i ng . . . . . . . . . . . . Gi i thi u v syslogd . . . . . . . . . . . . . . . . . . . . . 5.4.1 c thng tin nh t k . . . . . . . . . . . . . . . . 5.4.2 Tailing log files . . . . . . . . . . . . . . . . . . . . 5.4.3 Grepping logs . . . . . . . . . . . . . . . . . . . . . 5.4.4 Ghi nh b o m t . . . . . . . . . . . . . . . . . . . 5.4.5 Ch nng cao - klogd . . . . . . . . . . . . . . . 5.4.6 Ch nng cao - cc chng trnh ghi nh t k khc Tm l c . . . . . . . . . . . . . . . . . . . . . . . . . . . Tham kh o . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

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 d ch m ngu n v qu n l gi ph n m m trong linux C u hnh v bin d ch h t nhn 7.1 Gi i thi u h h t nhn Linux . . . . . . . . . . 7.1.1 H t nhn l ... Linux . . . . . . . . . . 7.1.2 Giao ti p v i ph n c ng . . . . . . . . 7.1.3 i u qu n CPU . . . . . . . . . . . . . 7.1.4 i u qu n vo ra I/O . . . . . . . . . . 7.1.5 Trung tm c a h th ng m ng . . . . . 7.1.6 n l i v qu trnh kh i ng linux . . 7.1.7 Gi i thi u v m un . . . . . . . . . . 7.1.8 V tr c a t p tin m un . . . . . . . . 7.1.9 Modules not for every process! . . . 7.2 T i m ngu n c a h t nhn . . . . . . . . . . . 7.2.1 Kernel version history . . . . . . . . . 7.2.2 Getting new kernel sources . . . . . . . 7.2.3 Unpacking the kernel . . . . . . . . . . 7.3 C u hnh h t nhn . . . . . . . . . . . . . . . . 7.3.1 Lets talk configuration . . . . . . . . . 7.3.2 The new way to configure . . . . . . . 7.3.3 Cc m o khi c u 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 th ng m ng v cc thi t 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 d ch v ci t h t nhn . . 7.3.14 make dep . . . . . . . . . . . . 7.3.15 make bzImage . . . . . . . . . 7.3.16 bin d ch m un . . . . . . . . C u hnh kh i ng . . . . . . . . . . . 7.4.1 Gi i thi u v Lilo . . . . . . . . 7.4.2 C u hnh Lilo . . . . . . . . . . Thi t b PCI . . . . . . . . . . . . . . . 7.5.1 Thi t b PCI 101 . . . . . . . . 7.5.2 Cc ka c nh c a thi t 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 l c . . . . . . . . . . . . . . . . 7.7.1 Tm l c . . . . . . . . . . . . 7.7.2 Ti nguyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

M CL C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 th ng m ng USB b o m t h v v chia s t p tin

Chng 1 Tr c khi b t u
1.1 V ti li u ny

Cho m ng n v i "Linux nh ng i u c b n," cu n th nh t trong b n cu n sch h ng d n gip b n chu n b cho bi thi 101 c a LPI (Linux Professional Institute). Trong cu n sch h ng d n ny, chng ti s gi i thi u v i b n bash (v , shell, tiu chu n c a Linux), ch cho b n cch s d ng thnh th o cc cu l nh c b n c a Linux nh ls, cp v mv, gi i thch v inode, lin k t "c ng" v lin k t "t ng trng" (hard link v symbolic links) v nhi u th khc. Khi k t thc cu n sch h ng d n ny b n s c ki n th c v ng vng v nh ng i u c b n khi s d ng Linux, v th m ch cn s n sng b t u h c c b n v nhi m v qu n tr m ng Linux. Khi k t thc chu i sch h ng d n ny (tm cu n t t c ), b n s c ki n th c c n thi t tr thnh Qu n tr vin h th ng Linux v s n sng t t i ch ng ch LPIC b c I c a Linux Professional Institute n u b n d nh nh v y. Cu n sch h ng d n ny (Ph n I) ni ring l l t ng v i nh ng "ng i m i" v i Linux, ho c v i nh ng ng i mu n xem l i ho c c i ti n s hi u bi t c a mnh v nh ng khi ni m c b n c a Linux nh sao chp (copying) v di chuy n (moving) t p tin, t o ng d n "c ng" v "t ng trng", v s d ng cc cu l nh "ch bi n" vn b n c b n song song v i "bng chuy n" (pipeline) v "chuy n h ng" (redirection). D c theo cu n h ng d n ny, chng ti s chia s v i cc b n nh ng l i g i , l i mch n c v mnh l i gi cho cu n h ng d n thm phong ph ("ngon n") v c tnh th c d ng, th m ch cho c nh ng ai c kinh nghi m s d ng Linux ng k . V i nh ng "ng i b t u", nhi u ti li u c a cu n h ng d n ny s m i, nhng v i nh ng ng i s d ng Linux kinh nghi m c th tm th y cu n h ng d n ny nh m t cch tuy t v i "lm bo thm" k nng Linux c b n. V i nh ng ai qua pht hnh (release) 1 c a cu n h ng d n ny v i m c ch khc hn l chu n b thi LPI, b n c kh nng khng c n pht hnh 2. Tuy nhin, n u b n c d tnh v t qua k thi LPI, b n nn lu c b n ch nh s a ny.

1.2

V tc gi

C tr t i Albuquerque, New Mexico, Daniel Robbins l ki n trc tr ng c a Gentoo Linux, m t b n phn ph i Linux cao c p. Tc gi cn vi t cc bi bo, sch h ng d n, nh ng l i mch n c cho IBM developerWorks v Intel Developer Services v l tc gi ng gp

Tr c khi b t u

c a vi cu n sch, g m c Samba Unleashed v SuSE Linux Unleashed. Daniel thch th s d ng th i gian v i v , Mary, v con gi, Hadassah. B n c th lin h v i Daniel qua t i drobbins@gentoo.org. V i nh ng cu h i k thu t v n i dung c a cu n h ng d n ny, lin h v i tc gi , Daniel Robbins, t i drobbins@gentoo.org.

Chng 2 C b n v Linux
2.1
2.1.1

Gi i thi u v bash
H v (shell)

N u b n t ng s d ng h i u hnh Linux, th bi t r ng sau khi ng nh p xong, chng ta s c n cho b i d u nh c nh sau: $

D u nh c b n th y trn my c a mnh c th trng khc m t cht. N c th ch a tn my, tn c a th m c hi n th i, ho c c hai. Tuy nhin, b t k l gi u nh c c a b n trng nh th no, ch c ch n n ch a k hi u ni trn1 . Chng trnh, m in d u nh c ni trn ra g i, l "h v " (shell). V r t c th h v shell c a b n l bash - m t h v shell thng d ng trong th gi i h i u hnh chim cnh c t.

2.1.2

C ph i b n ang ch y bash khng?

B n mu n bi t mnh ang ch y bash hay khng b ng hy g: $ echo $SHELL /bin/bash N u dng trn cho ra m t thng bo l i ho c k t qu khng gi ng v i v d , th t c l b n ang ch y m t h v shell khc. Trong tr ng h p , ph n l n v d c a cu n h ng d n ny v n c th c p d ng. Nhng chng ti khuyn b n nn dng bash, v r t c l i v nh t l n u b n c m c ch tr thi LPI 101. (Cu n h ng d n th hai, v qu n tr c b n, chng ti s h ng d n cch thay i h v shell cho ng i dng b ng cu l nh chsh.2 )
tr khi b n ng nh p v i quy n ng i dng root. N u b n khng bi t ng i dng root l g hy c t m bi t nh th ;). Chng ti s ni n v n ny cc ph n tip theo 2 n u b n l ng i thch khm ph th hy th lm quen v i cu l nh trn ngay by gi ! C php c a n cng khng qu ph c t p so v i cc cu l nh khc c a Linux. T khm ph lun l m t cch h c t t trong m i lnh v c! Chng ti r t khuy n khch b n
1

C b n v Linux

2.1.3

V bash

Bash l t vi t t t c a "Bourne-again shell"3 . Bash l h v shell theo m c nh trn h u h t cc h th ng Linux. Cng vi c c a h v shell l tun theo cc cu l nh c a ng i dng. Nh c h v shell b n c th tc ng qua l i v i h i u hnh. Khi lm xong cc cng vi c c n thi t, c th ch th cho h v shell thot ra (exit) hay ng xu t (logout). T i th i i m ny b n s c a tr l i d u nh c ng nh p4 . Nhn ti n, b n c th ng xu t b ng cch g control-D t i d u nh c ni trn.

2.1.4

S d ng cd

Nh b n bi t v c th s bi t :), nhn ch m ch m vo d u nh c bash khng ph i l i u thch th nh t trn th gian. V v y, hy th s d ng bash "i d o" m t vng, quanh h th ng t p tin. T i d u nh c, g cu l nh sau (khng g d u $5 : $ cd / Chng ta v a yu c u chuy n sang lm vi c t i bash th m c /. / cn c ng i dng Linux bi t n d i ci tn root6 . Trn h th ng Linux t t c cc th m c t o thnh m t cy th m c, v / l th m c cao nh t c a cy ny, hay l g c r (root) c a n. cd thi t l p th m c m b n ang lm vi c v i n, cn g i l "th m c hi n th i". bi t th m c hi n th i c a bash, hy g: $ pwd

2.1.5

ng d n

Trong v d pha trn, i s / cho cd g i l ng d n (path). i s cho cd bi t ni chng ta mu n chuy n n. Trong tr ng h p ny, i s / l ng d n tuy t i, c ngha l n ch r m t v tr trong cy th m c i v i th m c g c (root).

2.1.6

ng d n tuy t i

D i y l m t s ng d n tuy t i khc: /dev /usr /usr/bin /usr/local/bin


ng i d ch: Bourne-again shell l m t cch chi ch ti ng Anh. "Bourne" c gi ng nh borne (sinh ra, ra). 4 th ng c d ng login: 5 Trong cc v d $ u dng ch ch d u nh c c a ng i dng, n khng ph i l thnh ph n c a m t cu l nh 6 Xin hy nh ci tn ny!!! V ti p theo chng ti s g i nh v y trong su t cu n sch ny
3

2.1 Gi i thi u v bash

Nh b n th y, m i ng d n tuy t i c m t i m chung - b t u v i /. V i ng d n /usr/local/bin, ta mu n cd chuy n vo th m c /, sau th m c usr d i n, v sau local v cu i cng l bin. ng d n tuy t i lun lun c nh n ra b i s c m t c a / u. C th b n on ra r ng n u c tuy t i th ph i c t ng i. Vng ng l c ng d n tng i. Bash, cd, v cc cu l nh khc lun lun bin d ch nh ng ng d n ny tng i v i th m c hi n th i7 . ng d n tng i khng bao gi b t u v i m t /. V th , n u chng ta ang trong th m c /usr.

$ cd /usr Th c th dng ng d n tng i chuy n t i th m c /usr/local/bin:

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

2.1.7

S d ng ..

ng d n tng i c th ch a m t hay nhi u th m c "..". Th m c .. l th m c c bi t ch t i th m c "b "8 . Ti p t c v d trn:

$ pwd /usr/local/bin $ cd .. $ pwd /usr/local B n th y khng, th m c hi n th i c a chng ta by gi l /usr/local. Chng ta "quay ng c tr l i" m t th m c v pha th m c root, n u so v i th m c hi n th i lc u (/usr/local/bin). Thm vo , chng ta c th thm .. vo ng d n tng i c, i t i m t th m c n m "k bn"9 th m c hi n th i, v d :

$ pwd /usr/local $ cd ../share $ pwd /usr/share


7 8

hy ch s khc nhau gi a hai cch bin d ch th ng g i l th m c m hn 9 g i nm na l "hng xm"

C b n v Linux

2.1.8

V d ng d n tng i

ng d n tng i c th kh ph c t p. Sau y l m t s v d , chng ti khng cho bi t cc th m c thu c. Hy th t hnh dung xem b n s i t i u sau khi g nh ng cu l nh 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 b n hnh dung c ng khng :)

2.1.9

Th cn . l g?

Tr c khi k t thc bi gi ng c a chng ta v cd, c m t vi i u chng ti mu n c p n. u tin, c m t th m c c bi t khc g i l ., c ngha "th m c hi n th i". Th m c ny th ng khng s d ng nh i s cho cu l nh cd, m th ng c s d ng th c thi m t s chng trnh trong th m c hi n th i. V d :

$ ./chuongtrinh T p tin th c thi chuongtrinh n m t i th m c hi n th i s c ch y.

2.1.10

cd v th m c nh

By gi , chng ta mu n chuy n t i th m c nh (home directory), ta g:

$ cd Khng c i s , cd s chy n t i th m c nh c a ng i dng. Th m c nh s l /root cho ng i dng cao c p (superuser) v i n hnh l /home/username cho ng i dng bnh th ng. Nhng n u mu n ch r m t t p tin trong th m c nh th sao? V d chng ta mu n dng t p tin lm i s cho cu l nh chuongtrinh. N u t p tin "tr ng " trong th m c nh, c th g10 :

$ ./chuongtrinh /home/teppi82/tepcuatoi.txt
10

trong v d ny ng i dng c tn l teppi82

2.2 S d ng cc cu l nh

Tuy nhin, vi c s d ng ng d n tuy t i nh v y khng ph i lc no cng ti n l i, b n c l chng ta s ph i g r t nhi u k t khng? Hy thng cc ngn tay c a mnh!! R t may, ta c th s d ng k t (d u ng) lm cng vi c tng t : $ ./chuongtrinh ~/tepcuatoi.txt B n th y khng, nhanh hn r t nhi u v r t ti n l i!

2.1.11

Th m c nh c a nh ng ng i dng khc

Bash s khai tri n k t ng m t mnh ch th m c nh c a b n, nhng cng c th s d ng k t ny ch th m c nh c a nh ng ng i dng khc11 . V d , n u chng ta mu n ch n t p tin girls.txt trong th m c nh c a James, ta g: $ ./chuongtrinh ~james/girls.txt

2.2
2.2.1

S d ng cc cu l nh
Gi i thi u ls

By gi , chng ta s xem xt qua cu l nh ls. R t c th ls l cu l nh quen thu c c a b n, v b n bi t r ng n u ch g cu l nh ny (khng c tham s ) th n i dung c a th m c hi n th i s c li t k: $ cd /usr $ ls bin doc games include info lib local sbin share src X11R6 Khi ty ch n -a c ch r, b n s "nhn th y" t t c m i t p tin c a m t th m c, bao g m c cc t p tin n (hidden files), nh ng t p tin m tn b t u v i .. Trong v d sau, b n s th y trong u ra c a ls -a c c cc th m c lin k t c bi t . v .. :
$ ls -a . .. bin doc games include info lib local sbin share src X11R6

2.2.2

Li t k chi ti t

Linux12 cho php ch r m t hay nhi u t p tin hay th m c trn dng l nh ls. N u b n ch r m t t p tin, th ls s ch hi n u ra t p tin m thi. N u b n ch r m t th m c, th ls s hi n th n i dung c a th m c, t c l cc t p tin v th m c con c a n. Cu l nh ls c ty ch n -l r t thu n ti n khi c n xem cc thng tin nh quy n h n (permissions), quy n s h u (ownership), th i gian s a i (modification time), v kch th c (size) c a cc m c. Trong v d d i y, chng ta s d ng ty ch n -l li t k chi ti t th m c /usr:
11 12

t t nhin n u h c trong h th ng hay ni ng hn l bash

C b n 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

C t th nh t trong b ng trn l thng tin v quy n h n cho t ng m c trong danh sch13 . Chng ti s gi i thch m t cch c th cch d ch thng tin ny trong cc ph n ti p theo. C t ti p theo hi n th s lin k t (links) cho m i m c , chng ta cng t m th i d ng l i nhng s tr l i sau. C t th ba v c t th t cho bi t, tng ng, ch s h u (owner) v nhm s h u (group). C t th nm li t k kch th c c a m c. C t th su l "th i gian s a i g n nh t" ("last modified" time) hay cn g i t t l "mtime" c a m c. C t cu i cng l tn g i c a chng. Hy t p info! N u t p tin l lin k t t ng trng (symbolic link), b n s th y d u -> v ng d n t i ni m lin k t ch n. Trong v d trn info l m t tr ng h p nh v y.

2.2.3

Xem th m c

i khi b n ch mu n xem thng tin c a th m c, m khng quan tm t i n i dung c a n bn trong. Cho nh ng tr ng h p ny, chng ta c n ch r ty ch n -d, "ra l nh" cho ls ch hi n th thng tin c a th m c 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

li t k inode v li t k qui (recursive)

Nh v y l c th s d ng ty ch n -d ch xem thng tin c a th m c. Nhng ng th i chng ta cng c th dng ty ch n -R th c hi n i u ng c l i, t c l khng ch xem n i dung c a th m c, m cn xem t t c cc t p v th m c bn trong c a th m c (Xem ton b 14 )! Chng ti khng a ra v d no cho ty ch n ny (v danh sch thu c th ng r t di), tuy nhin b n nn th m t vi l n cu l nh ls -R v ls -Rl bi t chng lm vi c nh th no.
B n nn bi t r (readable) - c th c, w (writable) - c th vi t, x (executable) - c th th c thi, d u g ch ngang (-) cho bi t khng c m t trong ba quy n h n ni trn, nh th s d nh hn. B n s h i v y hai ch ci d v l y l g? d v l y khng lin quan g n quy n h n, m l ch vi t t t ch phn lo i c a m c, c th l d (directory) - th m c, l (link) - lin k t. T m bi t v y , nh th t i nay b n s ng ngon hn 14 Ni nm na l xem t t t n t t
13

2.2 S d ng cc cu l nh

V cu i cng vng r t may l cu i cng, ty ch n -i c a ls s d ng hi n th s inode c a cc i t ng15 trong h th ng t p 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?

M i i t ng trn m t h th ng t p tin c xc nh b i m t ch m c (index) duy nh t, g i l ch m c inode. Ci ny nghe c v t m th ng, nhng r t c n am hi u inode c th n m c th c ch t c a nhi u thao tc v i h th ng t p tin. Trong v d ny chng ta s xem xt cc lin k t . v .. m xu t hi n trong m i th m c. bi t th c ch t th m c .. l g, u tin chng ta xem ch m c inode c a /usr/local: $ ls -id /usr/local 9352 /usr/local Th m c /usr/local c ch m c inode l 9352. Cn by gi , hy xem ch m c inode c a mbox/usr/local/bin/..: $ ls -id /usr/local/bin/.. 9352 /usr/local/bin/.. i! Cng l 9352. Nh b n th y y, /usr/local/bin/.. c cng ch m c inode v i /usr/local! Nh v y chng ta hi u th c ch t .. cng l m t m c trn h th ng t p tin m c cng inode v i th m c m . y l m t khm ph gy s c! Tr c y, chng ta cho r ng /usr/local l th m c. By gi , chng ta khm ph ra inode 9352 trn th c t m i l th m c, v tm th y hai m c (cn g i l "lin k t") ch t i inode ny. l /usr/local v /usr/local/bin/.., chng u l lin k t t i inode 9352. M c d inode 9352 ch t n t i m t ni trn a, nhng cho php nhi u m c c th lin k t t i n. Inode 9352 l i t ng th t s n m trn a. Trong khi th c hnh, n u mu n chng ta c th th y t ng s l n m inode 9352 c lin k t n, dng cu l nh ls -dl:
$ ls -dl /usr/local drwxrwsr-x 11 root staff

272 2004-06-05 04:06 /usr/local

Chng ti mu n b n ch vo c t th hai t bn tri. Vng v i nh ng ci u nhanh nh y nh c a cc b n, th th y r ng th m c /usr/local (hay ni ng hn l inode 9352) c lin k t n m i m t l n. C th t s nhi u nh v y khng? nh tan m i hoi nghi d i y l cc m c khc nhau, lin k t n inode ny trn h i u hnh c a ti:
15

object

10

C b n 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 m t ci nhn khi qut v th m c, chng ta xem xt nhanh cu l nh mkdir, l nh s d ng t o m t (cc) th m c m i. V d d i y t o 3 th m c m i, co, ca, ro, t t c d i /tmp: $ cd /tmp $ mkdir co ca ro Theo m c nh, cu l nh mkdir khng t o th m c m ; t t c ng d n t thnh ph n u tin n thnh ph n g n cu i cng ph i t n t i. gi i thch r v n ny chng ti xin l y v d sau: trong th m c nh c n t o th m c project/vnoss/docs v cc th m c project, project/vnoss cha c s n. Th g:
$ mkdir project/vnoss/docs mkdir: cannot create directory project/vnoss/docs: No such file or directory

i! L i thi u th m c m ! Chng ta c n a ra ba cu l nh mkdir ring bi t nh sau: $ mkdir project $ mkdir project/vnoss $ mkdir project/vnoss/docs

2.2.7

mkdir -p

S d ng 3 cu l nh ring bi t nh trn th t l b t ti n v m t th i gian. R t may, ty ch n -p c a mkdir xa b s b t ti n ny16 . L nh mkdir v i ty ch n -p s t o t t c cc th m c m n u chng khng t i t i, nh y:


Trong th gi i Linux b n s th y c r t nhi u cng c nh v y, ch c n b cht t th i gian tm hi u th cc cng vi c hng ngy s tr nn n gi n v t n t s c l c cng nh tr c. Ngoi ra r t c th n cn em l i cho b n s s ng khoi
16

2.2 S d ng cc cu l nh

11

$ mkdir -p project2/vnoss/docs Ni chung, s n gi n lun p m t. h c thm v cu l nh mkdir, g man mkdir v c trang h ng d n s d ng17 (man page). B n cng c th c trang HDSD c a t t c cc cu l nh ni n (v d , man ls), tr cd, v cd l l nh n i tr (built-in) trong bash18 .

2.2.8

touch

By gi , chng ta s xem xt nhanh cc cu l nh cp v mv. Chng c s d ng sao chp, i tn, v di chuy n t p tin (th m c). b t u, chng ta s d ng cu l nh touch t o m t t p tin trong /tmp: $ cd /tmp $ touch saochepem Cu l nh touch c p nh t "mtime"19 c a m t t p tin n u t p tin c trn h th ng (c t th su trong k t qu c a ls -l). N u t p tin khng t n t i, th m t t p tin m i, tr ng r ng s c t o ra. By gi chng ta c t p tin /tmp/saochepem v i kch th c b ng khng.

2.2.9

echo

Hy thm vo t p tin ny m t s d li u. Trn h th ng Linux c r t nhi u cch lm vi c ny, tuy nhin t i th i i m ny chng ta s dng cu l nh echo. L nh ny l y i s v theo m c nh in chng u ra tiu chu n20 (standard output). u tin, hy th dng echo nh sau: $ echo "tepdautien" tepdautien

2.2.10

echo v s chuy n h ng

By gi , v n cu l nh echo ni trn nhng v i s chuy n h ng u ra (output redirection): $ echo "tepdautien" > saochepem Khi c d u l n hn theo sau l tn t p tin, h v shell s vi t u ra c a echo vo t p tin , t c l saochepem. T p tin ny s c t o ra n u cha c, ho c n i dung c s b vi t ln. Sau , n u ki m tra t p tin b ng ls -l, chng ta c th th y saochepem "di" 11 byte. l v n ch a t tepdautien v k t dng m i:
xin vi t t t l HDSD trong tr ng h p ny m HDSD c a bash (man bash) r i tm n m c con cd trong m c l n SHELL BUILTIN COMMAND 19 th i gian s a i cu i cng 20 thng th ng l mn hnh
18 17

12

C b n v Linux

$ ls -l saochepem -rw-r--r-- 1 teppi82 thang

11 2004-09-02 18:56 saochepem

2.2.11

cat v cp

hi n th n i dung t p tin trn thi t b u cu i21 (terminal), c th s d ng cu l nh cat: $ cat saochepem tepdautien By gi khi c t p tin th c hnh, chng ta c th s d ng "cu th n ch" cp t o t p tin embansao t t p tin g c saochepem: $ cp saochepem embansao N u dng ls -i nghin c u, chng ta th y y l nh ng t p tin ring r th t s : ch m c inode c a chng khc nhau! $ ls -i saochepem embansao 471627 embansao 471620 saochepem

2.2.12

mv

L nh mv l i l m t cu th n ch khc. L n ny dng i tn "embansao" thnh "embichuyen". B n s th y, trong v d d i, ch m c inode khng thay i; tuy nhin, tn t p tin ch n inode th s khc. $ mv embansao embichuyen $ ls -i embichuyen 471627 embichuyen S inode c a t p tin b chuy n v n nh c, v t p tin thu c n m trn cng h th ng t p tin nh t p tin ngu n ( khng cn n a). Chng ta s c ci nhn g n hn v h th ng t p tin t i Ph n 3 c a cu n sch ny. Chng ti mu n nhn vi c ni v mv, xem m t cch s d ng khc c a cu l nh ny. mv, ngoi vi c i tn t p tin, cn cho php di chuy n m t hay nhi u t p tin t i v tr khc trong h th ng. V d , chuy n /var/tmp/teptin.txt t i /home/teppi82 (t p tin nh c a teppi82) g22 : $ mv /var/tmp/teptin.txt /home/teppi82
21 22

chng ti s dng t terminal thay th cho thu t ng ny b n c n t o teptin.txt tr c, dng l nh touch

2.3 T o lin k t v xa t p tin

13

Sau khi g cu l nh ny, teptin.txt s c chuy n n v tr m i /home/teppi82/teptin.txt. V n u /home/teppi82 n m trn h th ng t p tin khc23 v i /var/tmp, th cu l nh mv s sao chp teptin.txt t i h th ng t p tin m i v xa ci trn h th ng c. R t c th b n on ra r ng, khi di chuy n teptin.txt gi a cc h th ng t p tin, teptin.txt t i v tr m i s c ch m c inode m i. l v m i h th ng t p tin c m t b cc ch m c inode c l p. mv cng l m t cng c kh m nh, chng ta c th s d ng cu l nh ny di chuy n nhi u t p tin t i m t th m c ch. V d , di chuy n teptin1.txt v baibao3.txt t i /home/teppi82, chng ta g: $ mv /var/tmp/teptin1.txt /var/tmp/baibao3.txt /home/teppi82

2.3
2.3.1

T o lin k t v xa t p tin
Lin k t c ng

N u b n cn nh th chng ta c p n thu t ng "lin k t", khi ni n quan h gi a tn hai th m c v inode c a chng. Th c t l c hai ki u lin k t trn Linux. Ki u m chng ta ni n g i l lin k t c ng. S lin k t c ng c a m i inode l khng gi i h n, v inode s v n cn trn h th ng t p tin cho n khi t t c lin k t c ng c a n b xa h t. Khi lin k t c ng cu i cng b xa, v khng c chng trnh no m t p tin , Linux s t ng xa t p tin. N u b n mu n t o lin k t c ng m i, hy tham kh o cu l nh ln: $ cd /tmp $ touch lienketdau $ ln lienketdau lienkethai $ ls -i lienketdau lienkethai 10662 lienketdau 10662 lienkethai Chng ta th y, lin k t c ng lm vi c trn c p ch m c inode ch t i m t t p tin ni ring. Trn h i u hnh Linux, lin k t c ng c m t vi h n ch . Th nh t, b n ch c th t o lin k t c ng t i t p tin, t o lin k t c ng t i th m c l khng th . i u ny ng; ch c . v .. l cc lin k t c ng t i th m c do h th ng t o ra. Nhng ng i dng (d l "root") khng c quy n t o m t ci cho ring mnh. H n ch th hai c a lin k t c ng l chng khng th lin k t "xuyn" h th ng t p tin. C ngha l khng th t o m t lin k t c ng t /usr/bin/bash t i /bin/bash n u cc th m c / v /usr n m trn hai h th ng t p tin ring bi t.

2.3.2

Lin k t t ng trng

R t c th v cc l do trn, lin k t t ng trng(hay symlink) c s d ng th ng xuyn hn lin k t c ng. Lin k t t ng trng l m t lo i t p tin c bi t, m ch t i t p tin khc b ng tn ch khng ch tr c ti p t i inode. Lin k t t ng trng khng ngn ng a vi c xa b t p tin m n ch t i: n u t p tin ch b xa b , th lin k t t ng trng s khng c gi tr s d ng, hay n cch khc l b h ng.
23

trong a s cc tr ng h p l m t phn vng khc trn a c ng

14

C b n v Linux

Vi c t o lin k t t ng trng cng khng c g ph c t p, ch c n a ty ch n -s vo l nh 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 c a ls -l, c th phn bi t lin k t t ng trng v i cc t p tin thng th ng b ng 3 cch. Th nh t, c t u tin c a lin k t t ng trng ch a k t l (link). Th hai, kch th c c a t p tin lin k t t ng trng l s k t c a tn t p tin ch (lienkethai, trong tr ng h p ny). Th ba, c t cu i cng hi n th tn t p tin ch c d u mi tn -> pha tr c.

2.3.3

Su hn v lin k t t ng trng

Lin k t t ng trng ni chung linh ho t hn lin k t c ng. Chng ta c th t o lin k t t ng trng t i b t k i t ng no c a h th ng t p tin, bao g m c th m c. V b i v lin k t t ng lm vi c trn c s ng d n, ch khng ph i inode, vi c t o lin k t t ng trng t i i t ng trn h th ng t p tin khc l hon ton c th . Tuy nhin, cng c th th c t ny l i lm cho vi c hi u lin k t t ng trng thm ph c t p. Xem xt thm tr ng h p chng ta mu n t o m t lin k t trong /tmp m ch n /usr/local/bin. C n g nh sau:

$ ln -s /usr/local/bin bin1 $ ls -l bin1 lrwxrwxrwx 1 teppi82 thang Hay m t 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 b n c th th y, c hai lin k t t ng trng cng ch t i m t th m c. Tuy nhin, n u lin k t t ng trng th hai c a chng ta b chuy n t i m t th m c khc, n s b "v " v ng d n dng t o lin k t ny l tng i:

$ mkdir thumucmoi $ mv bin2 thumucmoi $ cd thumucmoi $ cd bin2 bash: cd: bin2: No such file or director

2.3 T o lin k t v xa t p tin

15

Ni c th hn, th m c /tmp/usr/local/bin trn th c t khng t n t i. Nhng v ng d n l tng i nn sau khi di chuy n bin2, thay v ch t i /usr/local/bin s ch t i th m c khng t n t i ni trn. V v y, chng ta khng th dng cd chuy n t i th m c bin2; ni cch khc, lin k t bin2 b v . V l do ny, i lc nn trnh vi c t o lin k t t ng trng v i ng d n tng i. Tuy nhin, c nhi u tr ng h p lin k t t ng trng v i ng d n tng i l i thu n ti n. V d khi b n mu n t o tn th hai cho m t 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

N u l ng i dng "root"24 , b n c th t o m t tn tng ng cho "unicode_start", v d "u_s". Trong v d ny, d u nh c bash ch a "#" l d u hi u c a ng i dng root. y c n quy n root v ng i dng bnh th ng khng th t o t p tin trong /usr/bin/. Vi c t o m t tn tng ng cho unicode_start khng c g ph c t p:
# 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, t o ra lin k t t ng trng u_s ch t i t p tin /usr/bin/unicode_start. Hy th g u_s b n s th y k t qu thu c! Tuy nhin, gi i php ny s t o ra v n n u chng ta chuy n c hai t p /usr/bin/unicode_start v /usr/bin/u_s t i m t th m c 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 d ng ng d n tuy t i trong khi t o lin k t t ng trng ni trn, nn u_s s v n ch t i /usr/bin/unicode_start. Trong khi /usr/bin/unicode_start khng cn t n t i n a v b chuy n. C ngha l by gi u_s tr thnh m t lin k t b v . C ng d n tuy t i v ng d n tng i trong lin k t t ng trng u c m t m nh ring c a mnh, v b n c th ch n m t lo i ng d n thch h p v i nhu c u c a mnh. Th ng th c ng d n tng i v ng d n tuy t i u lm vi c t t. Trong v d sau, lin k t s lm vi c th m ch sau khi di chuy n c hai t p tin25 :
# cd /usr/bin # ln -s unicode_start u_s
24 25

ng i c quy n ghi vo th m c /usr/bin theo m c nh chng ti ng m hi u l b n t cc t p tin unicode_start v u_s v l i ch c c a n

16

C b n 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 ch y chng trnh unicode_start b ng cch g m t l nh ng n hn /usr/local/bin/u_s. L n ny /usr/local/bin/u_s ch t i chng trnh unicode_start trong cng th m c v i n.

2.3.4

rm

Xin chc m ng, hn m t n a ch ng ng qua, v cc b n bi t cch s d ng cp, mv, v ln, gi l th i gian h c cch xa i t ng. Thng th ng, vi c ny c th c hi n b i cu l nh rm. xa m t (cc) t p tin no hy ch r chng trn dng l nh:
$ 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 r ng d i Linux, m t khi t p tin b xo, n "ra i" mi mi hay ni ng hn l vi c khi ph c l i t p tin xa khng n gi n cht no. V l do ny, nhi u nh qu n tr m i vo ngh th ng s d ng ty ch n -i khi xa t p tin. V i ty ch n -i rm xa cc t p tin trong ch "h i tho i v i ng i dng" (interactive mode), t c l, c h i ki n ng i dng tr c khi th c s xa t p tin. V d : $ rm -i tep1 tep2 rm: remove regular empty file tep1? y rm: remove regular empty file tep2? y Cu l nh rm h i c "th c s " mu n xa t p tin ch r (tep1 v tep2) hay khng. xa chng, hy g "y" v Enter. N u g "n", t p tin s khng b xa. Ho c, n u thao tc sai, c th g Control-C h y b ton b l nh rm -i, v nh ng g lm c th gy thi t h i l n cho h i u hnh. N u b n v n mu n s d ng cu l nh rm, th s r t c ch n u thm dng sau vo t p tin /.bashrc. Sau khi thm xong, hy nh ng xu t v ng nh p l i26 . Sau ny, m i khi b n g rm, h v bash s t ng bi n i n thnh cu l nh rm -i. V nh th , rm s lun lun lm vi c trong ch "h i tho i v i ng i dng":
26

n u ch y /.bashrc th khng ph i ng xu t/nh p

2.4 S d ng cc k t i di n (wildcard)

17

alias rm="rm -i" Hy t o cc alias khc cho cc cu l nh ni n! V d mv, cp,... R t c th sau m t th i gian b n s th y chn ngn v i ch h i tho i ny, v n gy phi n ph c, nh t l khi xa nhi u t p tin m t lc. Ch c n xa dng ni trn i ho c thm vo u dng k t #, ch h i tho i s t ng bi n m t.

2.3.5

rmdir

xa th m c, b n c hai l a ch n. L a ch n th nh t: xa t t c cc v t th bn trong th m c v cu i cng s d ng rmdir xa b n thn th m c nh v d sau: $ $ $ $ mkdir thumuccuatoi touch thumuccuatoi/tep1 rm thumuccuatoi/tep1 rmdir thumuccuatoi

Phng php ny th ng c m ch l cch xa th m c cho "tr cn b s a". T t c nh ng ng i dng v qu n tr c kinh nghi m dng dng l nh thu n ti n hn nhi u - rm -rf. S ni n dng l nh ny ngay ph n sau.

2.3.6

rm v th m c

Cch t t nh t xa m t th m c l s d ng cu l nh rm v i ty ch n b t bu c xa ton b (recursive force). V i ty ch n ny, rm xa th m c ch ra, cng nh t t c i t ng ch a trong th m c : $ rm -rf thumuccuatoi Ni chung, s d ng dng l nh rm -rf l phng php c a chu ng hn. C n r t c n th n khi s d ng rm -rf. Nh ng i ta th ng ni b t k huy chng no cng c hai m t, s c m nh c a dng l nh ny c th em n c i u c l i v tai h a. V nn nh ng bao gi th rm -rf /!

2.4
2.4.1

S d ng cc k t i di n (wildcard)
Gi i thi u v k t i di n

Trong qu trnh lm quen cng nh s d ng Linux lm vi c t ngy ny qua ngy khc, ch c ch n c nhi u l n b n mu n th c hi n m t thao tc no (v d xa rm) trn nhi u i t ng cng m t lc. Trong nh ng tr ng h p ny, g nhi u t p tin trn m t dng l nh thng th ng gy v ng v khng c p m t: $ rm tep1 tep2 tep3 tep4 tep5 tep6 tep7 tep8

18

C b n v Linux

gi i quy t v n ny, chng ta c th l i d ng s h tr k t i di n c s n trn Linux. S h tr ny, cn g i l "globbing" (v l do l ch s ), cho php ng i dng ch r nhi u t p tin m t lc, dng m t m u i di n27 no . Bash v cc cu l nh Linux khc s bin d ch m u ny, v tm trn h th ng28 t t c cc t p tin tng ng n. Nh v y, n u c cc t p tin tep1, tep2,...i tep8 trong th m c hi n th i, b n c th xa nh ng t p ny m ch c n g: rm tep[1-8] Ho c n u b n mu n xa t t c cc t p tin m b t u b ng tep cng nh t p tin no c tn tep, hy g: $ rm tep* K t i di n * tng ng b t k k t hay chu i k t no, v th m th "khng c k t " cng tng ng. T t nhin, c th s d ng i di n "ton c u" (glob wildcards) xa t p tin m t cch n gi n hn, nh chng ta s th y trong cc ph n ti p theo.

2.4.2

Hi u v khng tng ng

N u mu n li t k t t c i t ng c a h th ng t p tin trong /etc b t u b ng g cng nh m i t p tin c tn l g, b n c n 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 , i u g s x y ra n u b n dng m t m u m khng c i t ng no tng ng? Khng c cch ki m ra no t t hn l m t v d : chng ta th li t k t t c cc t p tin trong /usr/bin b t u b ng asdf v k t thc b ng jkl,, g m c t p tin c th c l asdfjkl: $ ls -d /usr/bin/asdf*jkl ls: /usr/bin/asdf*jkl: No such file or directory l ci x y ra! Th ng th, khi chng ta ch r m t m u, m u tng ng m t hay nhi u t p tin trn h th ng, v bash thay th m u b i m t danh sch cc v t th tm th y, cch nhau b i kho ng tr ng. Tuy nhin, khi m u khng a ra khng c m t i t ng no ph h p, th bash coi k t i di n nh m t k t bnh th ng. K t qu l ls khng th tm th y t p tin /usr/bin/asdf*jkl, v a ra thng bo l i. Quy lu t y l m u ton c u ch c khai tri n n u c i t ng tng ng trong h th ng t p tin. Trong tr ng h p ng c l i chng c a nguyn vn vo cu l nh29 .
wildcard pattern ni chnh xc hn l trong ng d n ch ra trong dng l nh 29 trong tr ng h p ny /usr/bin/asdf*jkl s c a vo cu l nh ls
28 27

2.4 S d ng cc k t i di n (wildcard)

19

2.4.3

C php i di n: *

By gi , khi th y c ch lm vi c c a globbing trong cc tr ng h p khc nhau, chng ta c th xem xt n c php c a n. trn c m t vi v d v i *. y chng ta ti p t c tm hi u su hn v k t ny. Xin c nh c l i * s tng ng khng ho c nhi u k t . N c ngha "b t k th g c th vo y, g m c khng c g". T t hn h t chng ta xem xt cc v d sau, hy v ng chng s gip b n hi u r hn nh ng i u chng ti mu n ni: /etc/g* tng ng t t c t p tin trong /etc m b t u b ng g, ho c m t t p tin hay th m c c tn g. /tmp/my*l tng ng t t c t p tin trong /tmp m b t u b ng my v k t thc b ng l, bao g m c t p tin myl

2.4.4

C php i di n: ?

Khc v i *, ? ph h p b t k k t n no. V d : tepcuatoi? tng ng b t k t p tin no m tn c a n l tepcuatoi theo sau l m t k t n30 . /tmp/note?txt tng ng c /tmp/notes.txt v emph/tmp/notes_txt, t t nhin n u chng t n t i.

2.4.5

C php i di n: []

C php i di n ny gi ng m t ? ch cng ch tng ng v i m t k t n, nhng c trng hn, r i b n s th y t i sao l i c trng hn. s d ng c php ny, t cc k t m b n mu n tm tng ng vo trong []. Bi u th c thu c s tm s tng ng v i m i k t n m trong d u ngo c vung ny. B n c th s d ng - ch r m t chu i k t lin ti p, v th m ch lin h p cc chu i ny. Ph! T t hn h t l xem xt cc v d . Hy c k cc v d sau v ng no m t cht, nh t nh b n s n m ch c v n : tepcuatoi[12] s tng ng tepcuatoi1 v tepcuatoi2. Cng nh * c php i di n s c khai tri n n u t nh t m t trong nh ng t p tin ny t n t i trong th m c hi n th i. [Cc]hange[Ll]og s tng ng Changelog, ChangeLog, changeLog, v changelog. By gi th ch c b n r s c trng c a c php ny. Ngoi ra, c php ny lm phong ph thm s tng ng: ls /etc/[0-9]* s li t k t t c cc t p tin trong /etc b t u b ng m t ch s . ls /tmp/[A-Za-z]* s li t k t t c cc t p tin trong /tmp b t u b ng m t ch ci hoa hay ch ci th ng.
30

v d tepcuatoi1 tepcuatoi2 tepcuatoia tepcuatoix ...

20

C b n v Linux

2.4.6

C php i di n: [!]

C u trc [!] gi ng v i c u trc [], nhng n s tng ng b t k k t no, m khng c li t k gi a [! v ]. V d : rm tepcuatoi[!9] s xa t t c cc t p tin c tn tepcuatoi c ng v i m t k t n, ngo i tr tepcuatoi9.

2.4.7

Su hn v c php i di n

y l m t s i u c n khi s d ng cc c php i di n. u tin, bash " i x " cc k t i di n, ?, [, ], v *, m t cch c bi t, b n c n r t c n th n khi g trong i s c a m t cu l nh nh ng k t ny. V d , n u mu n t o m t t p tin c ch a dng [fo]*, th cu l nh sau s khng lm ci b n mu n: $ echo [fo]* > /tmp/teptinmoi.txt V m u [fo]* tng ng (ho c khng tng ng) v i (cc) t p tin no trong th m c hi n th i, nn b n s th y tn c a chng, n u c, trong /tmp/teptinmoi.txt, ch khng ph i l dng [fo]* nh b n mong i. Gi i php? M t cch gi i quy t l a cc k t vo d u ngo c n, chng (d u ngo c) ngn ch n khng cho bash th c hi n s khai tri n trn k t : $ echo [fo]* > /tmp/teptinmoi.txt S d ng cch ny, t p tin m i c a b n s ch a dng ch [fo]* nh mong mu n. M t gi i php khc: s d ng k t thot (escape character) g ch ng c. Khi bash coi [, ], v * l cc k t th ng ch khng ph i k t i di n: echo \[fo\]\* > /tmp/teptinmoi.txt C hai cch (ngo c n v k t thot) c cng m t tc d ng. Nhn khi ang ni v k t g ch ng c, gi l th i i m t t ni r ng, n u mu n dng \ nh m t k t bnh th ng, c n ho c a n vo ngo c n, ho c g \\, 31 . K t q a l bash s khai tri n hai bi u th c thnh \.

2.4.8

Ngo c n "g p" ngo c kp

Ch r ng ngo c kp c tc d ng tng t nh ngo c n, nhng v n cho php bash th c hi n m t s khai tri n gi i h n no . V d , k t thot g ch ng c trong m t vi tr ng h p v n c tc d ng d n m trong ngo c kp. Hy th echo "\"! B i v y, ngo c n l t t nh t khi b n th c s mu n a nguyn vn i s cho cc cu l nh. thm thng tin v s khai tri n globbing, g man 7 glob. Xem thm thng tin v trch d n (quote), b ng cc d u ngo c, g man 8 glob r i c ph n QUOTING. N u b n c d nh tr thi LPI, coi nh y l bi t p v nh.
31

ngo c n hay k t g ch ng c s l d u thot cho \

2.5 T ng k t v cc ngu n tham kh o

21

2.5
2.5.1

T ng k t v cc ngu n tham kh o
T ng k t

u tin xin chc m ng: b n t i i m cu i cu n n t p Linux - nh ng i u c b n c a chng ti! R t hy v ng n gip b n n m ch c nh ng ki n th c s ng nh t v Linux. Cc ch b n h c cu n ny, bao g m c s v bash, nh ng cu l nh Linux c b n, lin k t, v i di n, l n n mng cho cu n h ng d n ti p theo, qu n tr c s , trong chng ti s a cc ch nh bi u th c chnh quy (regular expression), quy n s h u, quy n h n, qu n l ti kho n ng i dng, v nhi u ch khc n a. Ti p t c cu n h ng d n ny, b n s s m chu n b t t i ch ng ch LPIC b c 1 t Linux Professional Institute. Ni n ch ng ch LPIC, n u y l ci b n quan tm, th chng ti khuyn b n nn u t th i gian h c cc cc ti li u tham kh o ngay sau y. Chng ti l a ch n c n th n b sung thm cho cu n h ng d n ny.

2.5.2

Cc ngu n tham kh o

Trong cc bi bo "Bash qua v d " ("Bash by example") trn developerWorks, Daniel cho b n bi t cch s d ng c u trc l p trnh bash vi t script c a mnh. Ba bi bo ny, v nh t l ph n 1 v ph n 2, l c n thi t cho k thi LPIC b c 1: Bash qua v d , Ph n 1: L p trnh c s trong h v Bourne-again shell Bash qua v d , Ph n 2: L p trnh bash nng cao Bash qua v d , Ph n 3: Khm ph h th ng ebuild N u b n l ng i dng Linux m i hay trung bnh, b n th t s khng th khng xem Nh ng cu h i k thu t th ng t - dnh cho ng i dng Linux (Technical FAQ for Linux users). FAQ ny l danh sch 50 trang, i su v nh ng cu h i m ng i dng Linux th ng t ra, v i cc cu tr l i chi ti t. B n thn FAQ ny d ng PDF (Acrobat). N u b n c m th y khng quen thu c l m v i trnh so n th o vi, hy xem cu n h ng d n vi v lng (Intro to vi). Cu n h ng d n ny l kha m u c p t c v trnh so n th o m nh ny. Coi nh y l ti li u ph i c thm n u b n khng bi t cch s d ng vi.

2.5.3

ki n c gi

Hy cho chng ti bi t cu n h ng d n ny c gip ch cho b n khng. V chng ti c th lm n t t hn nh th no. ng th i, chng ti cng mu n nghe v nh ng ch khc m b n c th mu n xem trong d n ti li u h ng d n c a developerWorks t cu h i v n i dung c a cu n h ng d n th nh t ny, lin h tc gi , Daniel Robbins, t i drobbins@gentoo.org.

2.5.4

Thay cho l i k t cu n 1

Cu n h ng d n ny c vi t hon ton trn XML, s d ng chng trnh t o sch h ng d n Toot-O-Matic c a developerWorks32 . Cng c m ngu n m Toot-O-Matic m t XSLT
32

ng i d ch: b n d ch c vi t trn m TEX s d ng trnh so n th o gedit

22

C b n v Linux

stylesheet v vi ch c nng XSLT m r ng bi n i t p XML thnh cc trang HTML, m t t p zip, nh tiu JPEG v hai t p PDF. Kh nng xu t ra c d ng vn b n v d ng nh nguyn t m t t p ngu n n cho th y kh nng v s linh ho t c a XML. (XML ng th i ti t ki m r t nhi u th i gian v s c l c c a nhm chng ti). B n c th l y m ngu n c a cng c Toot-O-Matic t i http://www6.software.ibm.com/dl/devworks/dw-tootomatic-p/. Cu n h ng d n Xy d ng h ng d n v i Toot-O-Matic (Bulding tutorials with the Toot-O-Matic) cho th y cch s d ng Toot-O-Matic t o h ng d n c a chnh b n. developerWorks cn lm ch m t di n n dnh cho Toot-O-Matic, t i a ch : http://www-105.ibm.com/developerworks/xml_df.nsf late?OpenForm&RestrictToCategory=11. Chng ti r t mu n bi t b n ngh g v cng c ny.

Chng 3 C b n v qu n tr Linux
3.1
3.1.1
M m th th

Bi u th c chnh quy
Bi u th c chnh quy l g?

t bi u th c chnh quy, regular expression, (hay cn g i l m t "regex" hay "regexp") l t c php c bi t c s d ng m t cc m u vn b n. Trn h th ng Linux, bi u c chnh quy th ng dng tm m t m u vn b n no , cng nh thao tc tm v thay trong vn b n

3.1.2

So snh v i k t i di n (glob)

Khi xem xt bi u th c chnh quy, b n c th th y r ng c php bi u th c chnh quy trng gi ng v i c php c a "globbing" m chng ta xt n t i Ph n 1. Tuy nhin, ng i u ny lm b n ngu mu i, s gi ng nhau c a chng ch l v bn ngoi. Bi u th c chnh quy v m u k t i di n, trong khi nhn c v gi ng nhau, l nh ng con th d khc nhau.

3.1.3

Chu i con n gi n

V i ch trn, hy xem xt nh ng i u c b n nh t c a bi u th c chnh quy, chu i con n gi n (simple substring). Chng ta s s d ng grep, cu l nh qut n i dung c a m t t p cho m t bi u th c chnh quy ni ring. grep in ra m i dng m tng ng v i bi u th c chnh quy, v l i m i 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 t p tin. grep c t ng dng trong /etc/passwd v p d ng simple substring regex bash t i n (dng), tm s tng ng. N u c tng ng, grep in c dng ; n u khng, dng s b b qua.

24

C b n v qu n tr Linux

3.1.4

Hi u v chu i con n gi n
ng khng i con c a i a vo n:

Ni chung, n u b n ang tm m t chu i con, b n c th ch c n vn b n nguyn d c n thm cc k t " c bi t". B n c n ph i lm m t ci g c bi t khi chu b n ch a m t +, ., *, [, ],, trong tr ng h p ny nh ng k t trn ph ngo c kp v t sau g ch ng c (\). D i y l m t vi v d chu i con n gi /tmp (qut tm dng vn b n /tmp)

"$\backslash$[box$\backslash$]" (qut tm dng vn b n [box]) "$\backslash$*funny$\backslash$*" (qut tm dng vn b n *funny*) "ld$\backslash$.so" (qut tm dng vn b n ld.so)

3.1.5

K t mta

V i bi u th c chnh quy, sau y b n c th th c hi n nh ng tm ki m ph c t p hn v d nu trn l i d ng k t mta1 . M t trong s cc k t mta l . (d u ch m cu), m tng ng b t 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 b n dev.hda khng c trn b t k dng no trong /etc/fstab. Tuy nhin, grep khng qut tm chu i vn b n dev.hda, m tm m u dev.hda. Nh r ng . s tng ng b t k k t n no. Nh b n c th th y, k t mta . c ch c nng tng ng v i k t ? trong "glob".

3.1.6

S d ng []

N u chng ta mu n tm tng ng m t k t c bi t hn ., chng ta c th s d ng [ v ] (d u ngo c vung) ch r m t t h p cc k t c n 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 b n c th th y, tnh nng ny ni ring trng v i [] trong s m r ng "glob". Nh c l i l n n a, y l m t trong nh ng r c r i khi h c regex c php l gi ng nhau nhng khng ng nh t v i s m r ng "glob", th ng lm regex r i r m khi h c.
1

K t mta l k t dng m t cc k t khc - ng i d ch

3.1 Bi u th c chnh quy

25

3.1.7

S d ng []

B n c th o ng c ngha c a d u ngo c vung b ng cch t m t \^{} ngay sau [. Trong tr ng h p ny, d u ngo c n s tm tng ng b t k k t no m khng c li t k trong chng. Nh c l i l n n a, ch r ng chng ta dng [\^{}] v i bi u th c chnh quy, nhng [!] v i "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

C n bi t r ng c php bn trong ngo c vung khc c b n v i nh ng ph n khc c a bi u th c chnh quy. V d , n u b n t m t . bn trong ngo c vung, n cho php ngo c vung tm tng ng m t k t th ng ., gi ng nh 1 v 2 trong v d trn. so snh, m t k t . ngoi ngo c vung c bin d ch nh m t k t mta tr khi t sau m t $\backslash$. Chng ta c th l i d ng i u ny in ra danh sch t t c nh ng dng trong /etc/fstab m ch a dng vn b n dev.hda b ng cch g: $ grep dev[.]hda /etc/fstab M t cch tng t , c th g: $ grep "dev\.hda" /etc/fstab} C th khng bi u th c chnh quy no tm th y tng ng trong /etc/fstab c a b n.

3.1.9

K t mta "*"

M t vi k t mta t chng khng tng ng v i b t k th g, nhng thay i ngha c a k t ng tr c. M t k t mta nh v y l * (d u sao), m c s d ng tm tng ng khng (0) hay nhi u l n l p l i c a k t ng tr c. Lu i u c ngha r ng * c m t ngha khc trong regex so v i trong glob. y l m t s v d , v c n quan tm t i nh ng tr ng h p c bi t khi regex khc v i glob: ab*c tng ng abbbbc nhng khng tng ng abqc (N u l glob, n s tng ng c hai chu i b n c th on ra t i sao khng?) ab*c tng ng abc nhng khng tng ng abbqbbc (nh c l i, n u m t glob, n s tng ng c hai) ab*c tng ng ac nhng khng tng ng cba (n u m t glob, n s khng tng ng c ac v ba|) b[cq]*e tng ng bqe v be (n u m t glob, n s tng ng bqe nhng be th khng)

26

C b n v qu n tr Linux b[cq]*e tng ng bccqqe nhng khng tng ng bccc (n u m t glob, n cng tng ng ci th nh t, nhng ci th hai th khng) b[cq]*e tng ng bqqcce nhng khng tng ng cqe (n u m t glob, n cng tng ng ci th nh t, nhng ci th hai th khng) b[cq]*e tng ng bbbeee (v i glob th khng) .* s tng ng b t k chu i no. (n u m t glob, n s tng ng b t k chu i no b t u v i .) foo.* s tng ng b t k chu i no m b t u v i foo (n u m t glob, n s tng ng b t k chu i no b t u v i b n k t vn b n foo..)

By gi , cho s xem l i nhanh: dng ac tng ng regex ab*c v d u sao cho php bi u th c ng tr c (c) xu t hi n khng l n. Nh c l i, c n ch r ng k t mta regex * c bin d ch m t cch khc c b n v i k t * c a glob.

3.1.10

u v cu i dng

Hai k t mta cu i cng chng ta c p chi ti t y l \^{} v \$, m s d ng tm tng ng u v cu i m t dng. S d ng \^{} t i u regex c a b n, b n c th khi n m u "th neo" t i u dng. Trong v d d i y, chng ta s d ng regex \^{}\# tm b t k dng no b t u v i k t \#:

$ grep ^{}# /etc/fstab # /etc/fstab: static file system information. #

3.1.11

Regex cho c dng

\^{} v \$ c th ph i h p tng ng m t dng tr n v n. V d , regex t i y s tng ng m t dng m b t u v i k t \# v k t thc b ng k t ., v i b t k s k t khc gi a chng:

$ grep ^{}#.*\.$ /etc/fstab # /etc/fstab: static file system information.

Trong v d trn, chng ta bao quanh bi u th c chnh quy dng ngo c n ngn ng a vi c shell bin d ch \$}. Khng c ngo c n, \verb$| s bi n m t kh i regex tr c khi grep c c h i th y n.

3.2 FHS v tm t p tin

27

3.2
3.2.1

FHS v tm t p tin
FHS - Tiu chu n h th ng t p tin d ng cy

Tiu Chu n H Th ng T p Tin D ng Cy (Filesystem Hierarchy Standard) l m t ti li u ch r cch s p t cc th m c trn m t h th ng Linux. FHS c t ra cung c p m t cch s p t chung lm n gi n vi c pht tri n cc ph n m m /textitkhng ph thu c b n phn ph i. FHS nh r cy th m c sau (l y th ng t ti li u FHS ra): / (th m c g c, root) /boot (cc t p tin tnh c a trnh kh i ng) /dev (t p thi t b ) /etc (c u hnh h th ng c a host) /lib (cc th vi n chia s c t y u v mun nhn) /mnt (i m g n cho cc h th ng t p tin t m th i) /opt (cc gi chng trnh thm vo, add-on) /sbin (t p tin nh nguyn c t y u) /tmp (t p tin t m th i) /usr (cy th m c ph ) /var (d li u ng - bi n thin)

3.2.2

Hai c p b c FHS c l p

FHS t c s xc nh s s p t th m c d a trn t ng, c hai c p b c t p tin c l p: c th chia s v i khng th chia s , v tnh v i ng. D li u chia s c th chia s gi a cc my; d li u khng chia s l c a ring m t h th ng (v d cc t p tin c u hnh). D li u ng c th thay i; d li u tnh khng thay i (tr khi ci t v b o tr). B ng sau y t ng k t b n kh nng k t h p, v i v d cc th m c ri vo cc h ng m c ny. Xin nh c l i, b ng ny l y tr c ti p t ti li u FHS: +---------+----------------------+--------------------+ | | chia s | khng chia s | +---------+----------------------+--------------------+ | Tnh | /usr | /etc | | | /opt | /boot | +---------+----------------------+--------------------+ | ng | /var/mail | /var/run | | | /var/spool/news | /var/lock | +---------+----------------------+--------------------+

28

C b n v qu n tr Linux

3.2.3

H th ng b c hai t i /usr

D i /usr b n s tm th y m t h th ng b c hai m c v r t gi ng h th ng t p tin g c (root). Khng nh t thi t ph i t n t i /usr khi my kh i ng, v th n c th c chia s trong m t m ng (c th chia s ), hay g n (mount) t m t CD-ROM (tnh). Thng th ng trnh ci t Linux khng chia s /usr, nhng tm hi u m t c ch c a s khc nhau gi a h th ng chnh t i th m c g c v h th ng b c hai t i /usr l c gi tr l n. y l t t c nh ng g chng ta s ni v FHS. Ti li u d c, v v y b n nn xem n. B n s hi u nhi u v h th ng t p tin Linux n u b n c n. Tm ti li u t i http://www.pathname.com/fhs/.

3.2.4

Tm t p tin

H th ng Linux th ng ch a hng trm nghn t p tin. C th b n hi u bi t khng bao gi m t d u m t t p no trong chng, nhng b n th nh tho ng b n s c n gip tm ki m. C m t vi cng c khc nhau trn LInux tm t p tin. S gi i thi u ny gip b n ch n ng cng c .

3.2.5

ng d n

Khi b n ch y m t chng trnh t i dng l nh, bash th c ch t tm chng trnh b n yu c u trong cc th m c c a m t danh sch. V d , khi b n g ls, bash theo b n ch t khng bi t r ng chng trnh ls n m trong /usr/bin. Thay vo , bash xem bi n mi tr ng PATH, m l m t danh sch th m c, phn cch nhau b i d u hai ch m. Chng ta c th ki m tra gi tr c a PATH:

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

Nh n c gi tr ny c a PATH (c a b n c th khc), bash u tin s ki m tra /usr/local/bin, sau /usr/bin tm chng trnh ls. R t c th , ls n m t i /usr/bin, n u v y bash s d ng vi c tm ki m t i .

3.2.6

S a i PATH

B n c th thm ng d n vo PATH t i dng l nh:


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

ng th i b n c th xa b m t ph n t t PATH, m c d khng d dng nh trn v b n khng th dng \$PATH c tr c. Cch t t nh t l g l i PATH m i m b n mu n:

3.2 FHS v tm t p 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 b n s ch y t shell ny c th s d ng PATH c a b n, xu t n dng cu l nh export: $ export PATH

3.2.7

T t c v "which"
y chng ta

B n c th ki m tra chng trnh c trong PATH khng b ng which. V d , th y h i u 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"

Cu i cng, b n c n bi t c (flag) -a, m khi n which a ra t t c tr ng h p chng trnh trong PATH: $ which -a ls /usr/bin/ls /bin/ls

3.2.9

whereis

N u b n thch th v i vi c tm nhi u thng tin hn l v tr ngho nn c a chng trnh, b n nn th whereis: $ whereis ls ls: /bin/ls /usr/bin/ls /usr/share/man/man1/ls.1.gz y chng ta th y ls xu t hi n t i hai v tr,/bin v /usr/bin. Thm vo , c m t trang h ng d n s d ng (man) t i /usr/share/man. B n s th y trang man ny n u g man ls. Chng trnh whereis ng th i c kh nng tm ngu n, ch r ng d n tm ki m khc, v tm ki m nh ng m c t dng. Xem trang man c a whereis bi t thm thng tin.

30

C b n v qu n tr Linux

3.2.10

find

Cu l nh find l cng c thu n ti n khc. V i find b n khng b h n ch ; b n c th tm b t k t p no b n mu n, s d ng mun mu mun v c a cc tiu chu n tm ki m. V d , tm m t t p c tn README, b t 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 di n

B n c th s d ng k t i di n "glob" trong i s cho -name, t trong ngo c kp ho c dng k t thot - g ch ng c (nh v y chng s a vo find nguyn v n m khng b khai tri n b i bash). V d , chng ta mu n tm t p tin README c ph n m r ng:

$ 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 c t i]

3.2.12

L i ki u ch v i find

T t nhin, c th b n mu n b qua ki u ch khi tm ki m:

$ find /usr/share/doc -name [Rr][Ee][Aa][Dd][Mm][Ee]* Hay n gi n hn:

$ find /usr/share/doc -iname readme\* Nh b n th y, b n c th dng -iname vi c tm ki m khng nh y c m v i ki u ch .

3.2 FHS v tm t p tin

31

3.2.13

find v bi u th c chnh quy

N u dng th o bi u th c chnh quy, b n c th dng ty ch n -regex gi i h n d li u ra. Tng t nh ty ch n -iname, c ty ch n tng ng l -iregex cho php l i ki u ch trong m u. 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 r ng khng gi ng nh nhi u chng trnh, find yu c u regex ch r ng d n y , m khng ph i ch c m t ph n. V l do ny, ch r u v ui .* l c n thi t; ch dng regex xt s khng .

3.2.14

find v ki u

Ty ch n -type cho php tm v t th h th ng t p tin c a m t ki u no . Cc argumen c th a vo -type l b (block device - thi t b kh i), c (character device - thi t b k t ), d (directory - th m c), p (named pipe - " ng"), f (regular file - t p tin th ng), l (symbolic link - lin k t t ng trng), v s (socket). V d , tm lin k t t ng trng trong /usr/bin m ch a chu i vim: $ find /usr/bin -name *vim* -type l /usr/bin/rvim /usr/bin/vimdiff /usr/bin/gvimdiff

3.2.15

find v mtimes

Ty ch n -mtime cho php b n ch n t p d a trn th i gian s a i cu i cng. Argumen cho mtime l m t k h n c a 24 gi , v c ch khi s d ng v i d u c ng (c ngha "sau") hay d u tr (c ngha "tr c"). V d , xem xt b i c nh 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 B n c th tm t p tin c t o ra trong 24 gi tr c:

32

C b n v qu n tr Linux

$ find . -name \? -mtime -1 ./a Hay c th tm t p tin c t o ra trong 24 gi hi n th i:

\$ find . -name \? -mtime +0 ./b ./c ./d

3.2.16

Ty ch n -daystart

N u b n ch r ty ch n -daystart, th th i gian s tnh t lc ngy b t u ch khng ph i l 24 gi tr c. V d , y l nh ng t p tin c t o 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 ch n -size

Ty ch n -size cho php b n tm t p tin d a trn kch th c. Theo m c nh, argumen cho -size l m t kh i 512 byte, nhng c th n gi n ha b ng thm h u t . H u t c th dng l b (block - kh i 512 byte), c (character - byte), k (kilbyte), v w (word - t 2 byte). Thm vo , b n c th t d u c ng ("l n hn") hay d u tr ("nh hn"). V d , tm t p tin th ng 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 t p tin tm th y

C th b n t h i r ng b n c th lm g v i t t c nh ng t p tin m b n tm th y! find c kh nng th c hi n trn nh ng t p tin ny dng ty ch n -exec. Ty ch n ny ch p nh n m t dng l nh nh l argumen th c hi n, k t thc v i ;, v s thay b t k s c m t no c a \{\} v i tn t p. Th d sau s gip hi u r hn:

3.2 FHS v tm t p 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 b n c th th y, find l m t cu l nh m nh. N tr ng thnh trong nh ng nm pht tri n c a UNIX v Linux. C nhi u ty ch n c ch khc. C th h c trong trang man c a find.

3.2.19

locate

Chng ta v a xem xong which, whereis v find. C th b n nh n ra r ng find c n m t cht th i gian khi thi hnh, v n c n c t ng th m c ang tm. Cu l nh locate c th tng t c d a trn c s d li u ngoi m t o ra b i updatedb (chng ta s c p m c t i). Cu l nh locate tm b t k ph n no c a tn, khng ch tn y c a t p 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 d ng updatedb

H u h t h th ng Linux c m t "cng vi c cron" c p nh t c s d li u nh k. N u locate c a b n tr l i l i nh sau, th c n ch y updatedb v i quy n root t o c s d li u tm ki m:

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

Cu l nh updatedb c th ch y kh lu.

34

C b n v qu n tr Linux

3.2.21

slocate

Trn nhi u b n phn ph i Linux, cu l nh locate c thay th b i slocate. Th ng c m t lin k t t ng trng n "locate" v th b n khng c n nh l c g. slocate c hi u l "secure locate" - locate an ton. N ghi thng tin quy n trong c s d li u v th ng i s d ng bnh th ng khng th nhn vo th m c m h khng c quy n c. Thng tin s d ng cho slocate l gi ng v i cho locate, m c d d li u ra c th khc ph thu c vo ng i dng ch y cu l nh.

3.3
3.3.1

Qu n l ti n trnh
Kh i ng xeyes

h c v qu n l ti n trnh, u tin chng ta c n kh i ng m t chng trnh. C n ch c l X ang ch y v th c hi n cu l nh sau:

$ xeyes -center red

B n s th y m t c a s xeyes hi n ln, v c u m t nhn theo tr chu t quanh mn hnh. ng th i khng cn d u nh c trong thi t b u cu i.

3.3.2

D ng m t ti n trnh

l y l i d u nh c, c n g Control-C (th ng vi t l Ctrl-C hay C):

^C $ L y l i d u nh c bash m i, nhng c a s xeyes bi t m t. Trn th c t , ti n trnh b di t. Thay v di t v i Control-C, ch d ng n v i Control-Z:

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

L n ny b n l cht v i n, b n s khc v sau b Trn th c t , n b

y l i d u nh c bash m i, v c a s xeyes v n cn. N u b n th m t th y c u m t khng c ng. N u c a s xeyes b che khu t b i c a s che i, th s khng cn th y i m t. Ti n trnh khng lm b t k ci g. "d ng" ("Stopped").

3.3 Qu n l ti n trnh

35

3.3.3

fg v bg

m t ti n trnh c "khai thng" ("un-stopped") v ch y tr l i, c th a n ra m t tr c (foreground) v i fg g n trong bash: $ fg xeyes -center red $

By gi ti p t c ti n trnh trong n n sau (background) v i bg g n trong bash: $ bg [1]+ xeyes -center red & $

Tuy t! Ti n trnh xeyes ti p t c ch y trong n n sau, v chng ta c m t d u nh c bash m i lm vi c.

3.3.4

S d ng "&"

N u mu n ch y xeyes trong n n sau ngay t u (thay v s d ng Control-Z v bg), ch c n thm k hi u "&" v cu i dng l nh xeyes: $ xeyes -center blue & [2] 16224

3.3.5

Nhi u ti n trnh n n sau

By gi c c xeyes v xanh da tr i ch y trong n n sau. C th li t k cc cng vi c ny v i jobs g n trong bash: $ jobs -l [1]- 16217 Running xeyes -center red & [2]+ 16224 Running xeyes -center blue &

S trong c t bn tri l s c a cng vi c m bash nh cho chng khi v a m i ch y. Cng vi c th 2 c m t + (c ng) ch n l "cng vi c hi n th i", m n u g fb s a n ra m t tr c. C th a m t cng vi c ra n n tr c n u ch r s c a n; v d , fg 1 s a xeyes ra n n tr c. C t ti p theo l id c a ti n trnh hay pid, bao g m trong danh sch c a ty ch n -l. Cu i cng c hai cng vi c hi n th i "ang ch y" ("Running"), v dng l nh c a chng li t k bn ph i.

36

C b n v qu n tr Linux

3.3.6

Gi i thi u tn hi u

di t, d ng hay ti p t c ti n trnh, Linux s d ng m t hnh th c thng tin c bi t, g i l "tn hi u" ("signal"). B ng vi c g i tn hi u t i m t ti n trnh, g n c th k t thc, d ng, hay lm nh ng th khc. y l nh ng g x y ra khi g Control-C, Control-Z, hay s d ng bg, fg s d ng bash g i tn hi u ring t i ti n trnh. Nh ng tn hi u ny c th g i qua cu l nh kill, ch r pid (id ti n trnh) trn dng l nh:

$ kill -s SIGSTOP 16224 $ jobs -l [1]- 16217 Running xeyes -center red & [2]+ 16224 Stopped (signal) xeyes -center blue Nh b n th y, kill khng nh t nh "gi t" m t ti n trnh, m c d c th . S d ng ty ch n "-s", kill c th g i b t k tn hi u no t i m t ti n trnh. Linux di t, d ng, hay ti p t c ti n trnh khi g i cc tn hi u SIGINT, SIGSTOP, hay SIGCONT tng ng. C th g i cc tn hi u khc n a; m t vi trong s chng bin d ch ph thu c vo ng d ng. C th bi t m t ti n trnh ch p nh n tn hi u g t i ph n SIGNALS trang man c a n.

3.3.7

SIGTERM v SIGINT

N u mu n di t m t ti n trnh, c th c vi ty ch n. Theo m c nh, kill g i tn hi u SIGTERM, m khng ng nh t v i SIGINT hay Control-C, nhng th ng c cng k t qu :

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

xeyes -center red xeyes -center blue

3.3.8

"Di t t n g c"

Ti n trnh c th l i c SIGTERM v SIGINT, ho c m t trong chng ho c chng d ng, ho c vo "th b". Trong nh ng tr ng h p ny c n gi i php m nh, tn hi u SIGKILL. M t ti n 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 Qu n l ti n trnh

37

3.3.9

nohup

Thi t b u cu i m t ch y m t cng vi c g i l thi t b u cu i i u khi n. M t s v shell s g i tn hi u SIGHUP t i cc cng vi c n n sau khi b n ng xu t2 , khi n chng ng ng ho t ng. b o v ti n trnh kh i hnh ng ny, s d ng nohup khi kh i ng: $ nohup make & $ exit

3.3.10

S d ng ps li t k ti n trnh

Cu l nh jobs v a dng ch li t k ti n trnh kh i ng t bash hi n th i. xem t t c ti n trnh trn h th ng, s d ng ps v i ty ch n 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 li t k vi ci u tin v th ng l m t danh sch r t di. Danh sch cho b n m t " nh ch p nhanh" nh ng g m my ang lm, nhng c r t nhi u thng tin phn tch. N u b qua ax, s ch th y ti n trnh m b n s h u, v c m t thi t b u cu i i u khi n. Cu l nh ps x s cho th y t t c ti n trnh c a b n, d c hay khng thi t b u cu i i u khi n. N u s d ng ps a, s nh n m t sch ti n trnh c a t t c ng i dng m g n t i m t thi t b u cu i.

3.3.11

Hi n th cy v r ng

C th li t k thng tin khc v t ng ti n trnh. Ty ch n --forest cho php d dng th y h th ng c p b c, m cho bi t quan h gi a cc ti n trnh. Khi m t ti n trnh ch y m t ti n trnh m i, ti n trnh m i g i l "con". Trong danh sch --forest, "b m " xu t hi n bn tri, v "con" nh m t nhnh cy bn ph i $ 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

ng i d ch: v d xterm

38

C b n v qu n tr Linux

3.3.12

Ty ch n "u" v "l"

Ty ch n "u" hay "l" c th thm vo b t k k t h p no v i "a" v "x" bao hm thng tin v t ng ti n 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 d ng "top"

N u ch y ps vi l n xem c g thay i, th ci b n c n c th l top. top hi n th m t danh sch ti n trnh m c c p nh t lin t c, cng v i m t vi thng tin tm t t 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

M i ti n trnh c m t thi t l p quy n u tin m Linux dng xc nh chia s bao nhiu th i gian b x l trung tm (CPU). C th t quy n u tin c a m t ti n trnh b ng ch y n v i cu l nh nice: $ nice -n 10 oggenc /tmp/song.wav V thi t l p quy n u tin g i l nice, nn d nh r ng m t gi tr cao hn s t t (nice) cho cc ti n trnh khc, cho php chng quy n u tin t i CPU. Theo m c nh, cc ti n trnh b t u v i gi tr 0, v th gi tr 10 bn trn c ngha oggenc s n lng dnh CPU

3.4 Gia cng vn b n

39

cho cc ti n trnh khc. Ni chung, i u ny c ngha r ng oggenc s cho php cc ti n trnh khc ch y v i t c bnh th ng, b t ch p oggenc c n CPU nh th no. B n c th th y c p b c nice ny d i c t NI trong danh sch ps v top trn.

3.3.15

renice

Cu l nh nice ch c th thay i quy n u tin c a m t ti n trnh khi b t u ch y. N u mu n thay i thi t l p nice c a m t ti n trnh ang ch y, 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 b n
n l i chuy n h ng

Trong ph n u c a sri sch h ng d n ny, chng ta xem m t v d s d ng > chuy n h ng d li u ra c a m t cu l nh vo m t t p, gi ng nh sau: $ echo "firstfile" > copyme Ngoi vi c chuy n d li u ra vo m t t p, chng ta c th l i d ng m t tnh nng m ng c a v shell, g i l ng (pipe). S d ng ng, c th truy n u ra c a m t cu l nh t i u vo c a cu l nh khc. Xem xt v d sau: $ echo "hi there" | wc 1 2 9

K t | dng k t n i u ra c a cu l nh bn tri t i u vo c a cu l nh bn ph i. Trong v d trn, cu l nh echo in ra dng hi there v i m t k t xu ng dng. D li u ra thng th ng xu t hi n trn thi t b u cu i, nhng ng chuy n n vo cu l nh wc, m hi n th s dng, s t , v s k t trong u vo c a n.

3.4.2

M t v d

ng

y l m t v d n gi n khc: $ ls -s | sort -n

40

C b n v qu n tr Linux

Trong tr ng h p ny, ls -s th ng in ra danh sch c a th m c hi n th i trn thi t b u cu i, v i kch th c m i t p u. Nhng thay v nh th chng ta d n u ra vo sort -n, m s p x p u ra theo s . y l m t cch c ch tm t p tin l n trong th m c nh c a b n! Cc v d sau c ph c t p hn, nhng chng cho th y s c m nh c a vi c s d ng th o ng. Chng ti s s d ng m t vi cu l nh m cha c p n, nhng ng n lm b n ch m l i. T p trung ch hi u cch ng lm vi c, b n c th dng chng trong tc v Linux hng ngy.

3.4.3

ng gi i nn

Thng th ng gi i nn v bung ra m t t p, c th lm nh sau:

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

M t km c a phng php ny l i h i ph i t o ra m t t p tin khng b nn trn a. V tar c kh nng c tr c ti p t u vo c a n (thay v ch ra m t t p), ta c th cho ra m t k t qu tng t s d ng ng:

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

h! "Qu bng" nn c bung ra m khng c n thi t m t t p tin trung gian.

3.4.4

M t ng di hn

y l m t v d khc:

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

Chng ta dng cat cung c p n i dung c a myfile.txt cho cu l nh sort. Khi sort nh n c u vo, n s p x p m t dng vo theo th t b ng ch ci, v g i u ra t i uniq. uniq xa b m i dng trng nhau (nhn ti n, n yu c u u vo ph i c s p x p) g i d li u ra l c t i wc -l. Chng ta th y cu l nh wc trn, nhng khng c ty ch n no. Khi a ty ch n -l n ch in ra s dng c a u vo, thay v in c s t v k t . B n s th y r ng ng ny s in ra s cc dng "c m t khng hai" (khng c b n sao) trong m t t p vn b n. Th t o ra vi t p th nghi m v i trnh so n th o a thch v dng ng ny xem k t qu thu c.

3.4 Gia cng vn b n

41

3.4.5

Gi l c gia cng vn b n b t u

By gi chng ta b t tay vo cu c tham quan gi l c cc cu l nh gia cng vn b n Linux c b n. V chng ti c p r t nhi u v n trong cu n h ng d n ny, nn khng c ch a v d cho m i cu l nh. Thay vo , khuy n khch c trang man c a c a chng (v d , b ng g man echo) h c cu l nh v cc ty ch n lm vi c nh th no b ng cch th v i t ng ci. Nh thnh lu t, cc cu l nh ny in k t qu c a b t k gia cng vn b n no ra thi t b u cu i m khng thay i t p tin. Sau khi k t thc cu c du ngo n ny, chng ta s nhn g n hn v chuy n h ng u ra v u vo. Vng, c m t m sng cu i ng ng m :)

echo

echo in argumen ra thi t b u cu i. S d ng ty ch n -e n u b n mu n g n chu i thot g ch ng c; v d echo -e "foo$\backslash$nfoo" s in foo, sau l m t dng m i, v foo n a. S d ng ty ch n -n echo b i d u dng m i m thm vo u ra theo m c nh.3

3.4.6

cat, sort, v uniq

cat cat in n i dung c a t p tin nh argumen ra thi t b u cu i. C ch khi l cu l nh u tin c a ng, v d , +cat foo.txt \ blah+| sort sort s in ra n i dung c a t p tin theo th t b ng ch ci. T t nhin, sort ch p nh n u vo t ng. G man sort t lm quen v i ty ch n i u khi n s s p x p uniq uniq l y m t t p tin ho c dng d li u -s p-x p (qua ng) v xa b nh ng dng l p l i.

3.4.7
wc

wc, head, v tail

wc in ra s dng, t , v byte trong m t t p tin hay trong dng d li u vo (t m t ng). G man wc bi t cch chnh quy d li u m c hi n th . head head in ra m i dng u tin c a m t t p tin hay dng d li u. S d ng ty ch n -n ch r bao nhiu dng s hi n th . tail tail in ra m i dng cu i cng c a m t t p tin hay dng d li u. S d ng ty ch n -n ch r bao nhiu dng s hi n th .
3

ng i d ch: th echo chao | wc -c v echo -n chao | wc -c s th y r tc d ng c a ty ch n -n

42

C b n v qu n tr Linux

3.4.8

tac, expand, v unexpand

tac tac gi ng nh cat, nhng in t t c m i dng theo th t ng c l i; ni cch khc, dng cu i cng c in u tin.4 expand expand bi n i tab thnh kho ng tr ng. Dng ty ch n -t ch r s k t c a tab (tapstop) unexpand unexpand bi n b i kho ng tr ng thnh tab. Dng ty ch n -t ch r s k t c a tab (tapstop)

3.4.9

cut, nl, v pr

cut cut s d ng trch ra m t vng k t gi i h n t t ng dng c a m t t p tin hay dng d li u vo. nl nl thm s th t c a dng vo u ra. C ch cho in n. pr pr dng chia t p thnh nhi u trang c a u ra; th ng dng cho in.

3.4.10
tr

tr, awk, v sed

tr l cng c chuy n i k t ; dng chuy n i k t no trong u vo thnh k t khc trong u ra. sed sed l trnh so n th o nh h ng dng (stream-oriented) m nh. C th h c thm v sed trong cc bi bo sau c a IBM developerWorks: Sed qua v d , Ph n 1 Sed qua v d , Ph n 2 Sed qua v d , Ph n 3 N u b n d nh tr thi LPI, b n c n c hai bi bo u tin c a sri ny. awk awk l ngn ng gia cng vn b n nh h ng dng (line-oriented). C th h c thm v awk trong nh ng bi bo sau c a IBM developerWorks: Awk qua v d , Ph n 1 Awk qua v d , Ph n 2 Awk qua v d , Ph n 3
4

ng i d ch: th t ch ci trong hai t cat v tac

3.4 Gia cng vn b n

43

3.4.11
od

od, split, v fmt

od c ch nh thay i u vo thnh d ng h tm (octal) hay m i su (hex). split split l cu l nh dng chia m t t p tin l n thnh nhi u t p tin nh hn. fmt fmt s nh d ng l i cc o n vn vi c chuy n dng c th c hi n l trang. Ngy nay khng cn h u d ng v kh nng ny c a vo h u h t cc trnh so n th o, nhng v n nn bi t.

3.4.12

Paste, join, v tee

paste paste dng hai hay nhi u t p tin nh l u vo, n i t ng dng lin ti p t cc t p u vo, v in ra cc dng k t qu . C ch t o b ng hay c t vn b n. join join tng t paste, nhng dng m t tr ng5 , field, (theo m c nh l tr ng u tin) trong m i dng u vo n i dng. tee tee s in u ra t i c t p tin v mn hnh. i u ny c l i khi b n mu n t o log, v ng th i mu n xem n trn mn hnh.

3.4.13

Gi l c k t thc! Chuy n h ng

Tng t nh dng > trn dng l nh bash, b n c th dng < a m t t p tin vo m t cu l nh. V i r t nhi u cu l nh, b n c th n gi n l ch r tn t p tin trn dng l nh, tuy nhin m t s cu l nh ch lm vi c t u vo tiu chu n (standard input). bash v cc v shell khc h tr khi ni m "t p tin y". i u ny cho php b n ch r u vo cho m t cu l nh, r i k t thc cu l nh v i m t gi tr no . V d l cch minh h a t t nh t: $ sort <<END apple cranberry banana END apple banana cranberry

Trong v d trn, ta g cc t apple, cranberry v banana, theo sau b i "END" thng bo k t thc vi c nh p vo. Chng trnh sort sau tr l i nh ng t trong th t b ng ch ci.
5

tr ng th ng l c m k t m k t thc b i d u tr ng

44

C b n v qu n tr Linux

3.4.14

S d ng

C th b n cho r ng >> c g gi ng v i <<, nhng khng ph i v y. N n gi n l vi t thm d li u ra vo m t t p, m khng ghi nh l >. V d : $ echo Hi > myfile $ echo there. > myfile $ cat myfile there. A l h p! Chng ta m t ph n "Hi"! Th m chng ta mu n nh sau: $ echo Hi > myfile $ echo there. >> myfile $ cat myfile Hi there. t t hn r t nhi u!

3.5
3.5.1

Mun nhn
Lm quen v i "uname"

Cu l nh uname cho bi t nhi u thng tin th v v h th ng. y l ci thu c trn tr m lm vi c c a ti khi g "uname -a" m ni "uname" in ra t t c thng tin c a n lun m t l n: $ 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
d ng b ng:

By gi , hy xem thng tin m "uname" cung c p,

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" Th t l h p d n! Cu l nh "uname -a" c a b n in ra g?

3.5 Mun nhn

45

3.5.3

B n pht hnh nhn

y l m t m o k di u. u tin, g "uname -r" uname in ra b n pht hnh c a nhn Linux m ang ch y. By gi , xem trong th m c /lib/modules v a l h p! nh cu c l b n s tm th y m t th m c v i tn nh v y! OK, khng qu k di u, nhng by gi l th i i m t t ni v s quan tr ng c a cc th m c trong /lib/modules v gi i thch mun nhn l g.

3.5.4

Nhn

Nhn l tri tim c a Linux l m u m (code) m truy c p th ng t i ph n c ng v h tr m t giao di n chung cc chng trnh c c th th c thi c. Nh c nhn, trnh so n th o c a b n khng c n quan tm vi t t i m t a SCSI hay IDE hay th m ch l m t a RAM. N ch ghi t i m t h th ng t p tin, v nhn lo ph n cn l i.

3.5.5

Gi i thi u mun nhn

V y, mun nhn l g? Chng l nh ng ph n c a nhn m ghi d ng c bi t trn a. Trn cu l nh c a b n, chng c th c nap vo nhn ang ch y v cung c p nh ng tnh nng b tr . V mun nhn c n p theo nhu c u, c th t o m t nhn h tr nhi u tnh nng b tr m thng th ng khng mu n c. Nhng m t khi quen, mun nhn r t d s d ng v c th n p, th ng l t ng, h tr h th ng t p tin hay thi t b ph n c ng m t khi s d ng.

3.5.6

B n tm t t mun nhn

Ni tm l i, mun nhn cho php thm vo nhn ang ch y m t s kh nng d a trn c s nhu c u. Khng c mun nhn, ph i bin d ch m t nhn m i v kh i ng l i h tr m t ci g m i.

3.5.7

lsmod

xem mun c n p, s d ng cu l nh "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 b n v qu n tr Linux 0 [emu10k1] 0 [emu10k1] 1 [hid usbmouse usb-ohci ehci-hcd]

3.5.8

Li t k mun

Nh b n c th th y, h th ng c a ti c vi mun c n p. Mun vmnet v vmmon cung c p ch c nng c n thi t cho chng trnh VMWare, m cho php ch y m t my tnh o (virtual PC). Mun "nvidia" l y t NVIDIA corporation v cho php s d ng c c mn hnh 3D hi u su t cao d i Linux m t n d ng h t tnh nng c a n. Sau l chu i mun dng h tr thi t b vo USB: "mousedev", "hid", "usbmouse", "input", "usb-ohci", ehci-hcd" v "usbcore". Th ng c u hnh nhn h tr USB d ng mun. V sao? V thi t b USB l "c m v ch y". N u h tr USB trong mun, th c th mua m t thi t b USB m i, c m vo v h th ng t ng n p mun thch h p c th dng thi t b . y l cch thu n ti n.

3.5.9

Mun third-party

Ba mun "emu10k1", "ac97_codec" v "sound" h tr c c m thanh SoundBlaster Audigy. C n ch r ng m t vi mun nhn l y t m ngu n nhn. V d , t t c mun USD ni n u bin d ch t m ngu n nhn Linux. Tuy nhin, cc mun nvidia, emu10k1 v mun VMWare l y t nh ng ngu n khc. y l i l m t l i ch chnh khc c a mun nhn - cho php "cng ty th ba" cung c p ch c nng c n thi t cho nhn v cho php nh ng ch c nng ny "g n vo" nhn ang ch y. Kh i ng l i l khng c n thi t.

3.5.10

depmod

Trong th m c /lib/modules/2.4.20-gaming-r1/ c m t s t p tin m tn b t u v i "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 Nh ng t p tin ny ch a nhi u thng tin v s ph thu c. Trong c thng tin v s ph thu c c a mun - m t vi mun ch n p khi cc mun khc c n p.

3.5.11

Lm th no l y mun

M t vi mun nhn c thi t k lm vi c v i thi t b ph n c ng ring, v d mun "emu10k1" l cho c c SoundBlaster Audigy. i v i lo i mun ny, cc t p tin mun

3.5 Mun nhn

47

ng th i ghi PCI ID6 v cc d u nh n d ng tng t c a thi t b ph n c ng m chng h tr . Thng tin ny c th s d ng b i m t vi th nh script cho vi c c m nng ("hotplug"), m s xem n cc cu n h ng d n ti p theo, t ng nh n ra v t ng n p mun thch h p h tr ph n c ng .

3.5.12

S d ng depmod

N u b n ci thm m t mun m i, thng tin v s ph thu c tr thnh l i th i. c p nh t, g "depmod -a". depmod s qut t t c mun trong cc th m c c a /lib/modules v lm m i thng tin v s ph thu c. N qut t p tin mun v tm ci g i l "bi u t ng" ("symbols") trong cc mun :

# depmod -a

3.5.13

nh v mun nhn

V y, mun nhn nhn nh th no? V i nhn 2.4, chng th ng l nh ng t p tin trong /lib/modules m k t thc v i ".o". xem t t 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

V y, lm th no n p mun vo nhn ang ch y? Cch th nh t l s d ng cu l nh "insmod" v a y ng d n t i mun mu n n p:

# insmod /lib/modules/2.4.20-gaming-r1/kernel/fs/fat/fat.o # lsmod | grep fat fat 29272 0 (unused) Tuy nhin, th ng dng cu l nh "modprobe" n p mun. M t m t t t c a "modprobe" l n t ng n p cc mun l thu c. ng th i, khng c n ph i ch r ng d n t i mun mu n n p, v khng ph i ch r ui ".o"
6

identification

48

C b n v qu n tr Linux

3.5.15

Th c thi rmmod v modprobe

Hy th hu n p mun "fat.o" v n p l i dng "modprobe": # rmmod fat # lsmod | grep fat # modprobe fat # lsmod | grep fat fat 29272 0 (unused) Nh b n th y, cu l nh "rmmod" lm vi c tng t nh modprobe, nhng c tc d ng ng c l i, n h y n p mun m b n ch ra.

3.5.16

Ti khn: modinfo v modules.conf

C th dng cu l nh "modinfo" bi t nhi u i u 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 bi t ch n t p tin /etc/modules.conf. T p tin ny ch a thng tin c u hnh cho modprob. T p tin cho php tinh ch nh ho t ng c a modprobe, ni modprobe n p mun tr c/sau khi n p nh ng mun khc, ch y script tr c/sau khi n p mun, v nhi u n a.

3.5.17

modules.conf

C php v ch c nng c a modules.conf kh ph c t p. Chng ta s khng i vo c php ngay by gi (g man modules.conf xem chi ti t), nhng y l m t vi i u b n *nn* bi t v t p tin ny. Nhi u b n phn ph i t o t p tin ny m t cch t ng t cc t p tin trong th m c khc, nh /etc/modules.d/. V d , Gentoo Linux c th m c /etc/modules.d/. N u ch y cu l nh update-modules, th t t c cc t p tin trong s c k t n i vo nhau v cho ra /etc/modules.conf m i. V th , thay i t p tin trong /etc/modules.d/ v ch y update-modules n u b n dng Gentoo. N u b n s d ng Debian, cc b c s tng t , tr th m c l /etc/modutils.

3.6
3.6.1

T ng k t v cc ngu n tham kh o
T ng k t

Xin chc m ng: b n t i i m cu i cu n h ng d n qu n tr Linux c s c a chng ti! Ti hy v ng n gip b n n m ch c ki n th c Linux c b n. Cu n h ng d n ti p theo s c p

3.6 T ng k t v cc ngu n tham kh o

49

qu n tr nng cao, trong chng ti c p cc ch nh quy n truy c p, v m hnh quy n s h u, qu n l ti kho n ng i dng, t o v g n k t h th ng t p tin, v nhi u n a. V nh , ti p t c sri sch h ng d n, b n s s m chu n b t c ch ng ch LPIC c p b c I t Linux Professional Institude.

3.6.2

Tham kh o

c p n ch ng ch LPIC, n u y l ci b n quan tm, th chng ti khuyn b n h c cc ngu n tham kh o sau, m c l a ch n c n th n b sung thm cho ki n th c trong cu n h ng d n ny: C m t s ngu n tham kh o t t v bi u th c chnh quy trn m ng. y l m t c p m chng ti tm th y: Bi u th c chnh quy - Ti li u Tra c u Bi u th c chnh quy - S gi i thch Ngoi ra c n c v FHS t i http://www.pathname.com/fhs/ Trong bi bo nhi u k "Bash qua v d " ("Bash by example") trn developerWorks, Daniel ch b n cch s d ng c u trc l p trnh bash vi t script c a mnh. Chu i ny (Ph n 1 v 2 ni ring) l s chu n b t t cho k thi LPIC b c 1: Bash qua v d , Ph n 1: L p trnh c s trong h v Bourne-again shell Bash qua v d , Ph n 2: L p trnh bash c s nng cao Bash qua v d , Ph n 3: Khm ph h th ng ebuild C th h c thm v sed trong cc bi bo sau c a IBM developerWorks: Sed qua v d , Ph n 1 Sed qua v d , Ph n 2 Sed qua v d , Ph n 3 N u b n d nh tr thi LPI, b n c n c hai bi bo u tin c a sri ny. C th h c thm v awk trong nh ng bi bo sau c a IBM developerWorks: Awk qua v d , Ph n 1 Awk qua v d , Ph n 2 Awk qua v d , Ph n 3 Chng ti xin khuy n khch xem Nh ng cu h i chuyn mn th ng t cho ng i dng Linux (Technical FAQ for Linux users), danh sch 50 trang i su v nh ng cu h i Linux th ng t, v i cc cu tr l i chi ti t. B n thn FAQ ny d ng PDF (Acrobat). N u b n khng quen thu c l m v i trnh so n th o vi, hy xem cu n h ng d n Vi h ng d n h c qua phng php ti khn. Cu n h ng d n ny kha m u c p t c v trnh so n th o m nh ny. Coi nh y l ti li u ph i c thm n u b n khng bi t cch s d ng vi.

50

C b n v qu n tr Linux

3.6.3

ki n c gi

Xin hy cho chng ti bi t cu n h ng d n ny c gip ch cho b n khng v chng ti c th lm n t t hn nh th no. ng th i, chng ti cng mu n nghe v nh ng ch khc m b n c th mu n xem trong h ng d n c a developerWorks h i v n i dung c a cu n h ng d n ny, lin h v i cc tc gi : Daniel Robbins, t i drobbins@gentoo.org. Chris Houser, t i chouser@gentoo.org. Aron Griffis, t i agriffis@gentoo.org.

3.6.4

Thay cho l i k t

Cu n h ng d n ny c vi t hon ton trn XML, s d ng chng trnh t o sch h ng d n Toot-O-Matic c a developerWorks7 . Cng c m ngu n m Toot-O-Matic m t XSLT stylesheet v vi ch c nng XSLT m r ng bi n i t p XML thnh cc trang HTML, m t t p zip, nh tiu JPEG v hai t p PDF. Kh nng xu t ra c d ng vn b n v d ng nh nguyn t m t t p ngu n n cho th y kh nng v s linh ho t c a XML. (XML ng th i ti t ki m r t nhi u th i gian v s c l c c a nhm chng ti). B n c th l y m ngu n c a cng c Toot-O-Matic t i http://www6.software.ibm.com/dl/devworks/dw-tootomatic-p/. Cu n h ng d n Xy d ng h ng d n v i Toot-O-Matic (Bulding tutorials with the Toot-O-Matic) cho th y cch s d ng Toot-O-Matic t o h ng d n c a chnh b n. developerWorks cn lm ch m t di n n dnh cho Toot-O-Matic, t i a ch : http://www-105.ibm.com/developerworks/xml_df.nsf late?OpenForm&RestrictToCategory=11. Chng ti r t mu n bi t b n ngh g v cng c ny.

ng i d ch: b n d ch c vi t trn m TEX s d ng trnh so n th o gedit

Chng 4 Qu n tr h th ng Linux

Chng 5 Qu n tr h th ng linux nng cao


5.1
5.1.1

H th ng t p tin, phn vng, v cc thi t b kh i


Gi i thi u v thi t b kh i

Trong ph n ny, chng ta s xem xt t i cch th c qu n l cng c a Linux, bao g m h th ng t p tin, cc phn vng, v cc thi t b kh i. Sau khi b n quen v i cc tc v vo ra d li u c a c ng cng nh l h th ng t p tin, chnh ta s ti n hnh qu trnh thi t l p phn vng v h th ng t p tin trong Linux. kh i u, ph n nh ny s gi i thi u t i b n khi ni m "thi t b kh i". Thi t b kh i c bi t n nhi u nh t trong mi tr ng Linux c l l thi t b c ng IDE u tin trong h th ng. /dev/hda N u h th ng c a b n s d ng SCSI, khi /dev/sda c ng u tin s l

5.1.2

Cc l p tr u t ng

Thi t b kh i em t i cho ng i dng m t giao di n giao tc v i c ng, Cc chng trnh ng i dng c th s d ng c ng m khng c n b n tm t i thi t b l IDE hay SCSI. Cc chng trnh ny n gi n ch c n nh a ch thi t b lu tr nh l m t nhm cc kh i lin t c truy c p ng u 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 tr ng Linux, xy d ng m t h th ng t p tin, chng ta s d ng m t l nh chuy n d ng l mkfs ( th c ch t l m t h l nh mke2fs, mkreiserfs,...vv) v i tham s u vo l m t thi t b kh i.

5.1 H th ng t p tin, phn vng, v cc thi t b kh i

53

M c d l v m t l thuy t, chng ta c th s d ng thi t b kh i t ng th (dng ch ton b c ng) nh /dev/hda ho c /dev/sda xy d ng m t h th ng t p tin, Tuy nhin, trong th c t s d ng, cch lm ny g n nh khng c dng. Thay vo , Thi t b kh i t ng th s c chia thnh cc thi t b kh i nh hn, d qu n l hn v c g i l cc phn vng. Phn vng c t o ra b ng cch s d ng cng c fdisk, fdisk c s d ng t o, s a ch a b ng ph n vng n m trn a c ng, B ng phn vng ny c dng xc nh cc th c chia m t thi t b kh i t ng th thnh cc ph n vng.

5.1.4

Gi i thi u v cng c fdisk

Chng ta c th thao tc v i b ng phn vng c ng b ng cc ch y l nh fdisk v i tham s u vo l thi t b kh i t ng th . Ghi nh : ngoi fdisk, trong mi tr ng linux cn c m t s cng c cho php ch nh s a b ng phn vng nh: cfdisk, parted, partimage. # fdisk /dev/hda ho c # fdisk /dev/sda Quan tr ng: B n khng nn lu ho c thay i b ng phn vng n u trong m t phn vng c ch a cc thng tin quan tr ng. B n ch nn lm khi b n bi t r mnh ang lm g

5.1.5

S d ng fdisk

Sau khi g i cng c fdisk, b n s c chuy n t i m t du nh c dng l nh nh sau: Command (m for help): nh n p in ra c u hnh phn vng hi n t i c a b n, d i y l m t 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

Qu n tr h th ng linux nng cao 10241406 7237251 7 83 HPFS/NTFS Linux

Command (m for help): Nh b n th y, trong c ng ny c ch a 7 h th ng t p tin Linux (cc phn vng c gi tr trong c t System l Linux) v m t phn vng trao i (swap partition - "Linux swap").

5.1.6

Thi t b kh i v t ng quan v vi c chia phn vng

Chng ta hy lu t i vi c t tn cho cc ph n vng (cc thi t b kh i con) c t bn tri, b t u b ng /dev/hda1 v k t thc l /dev/hda9. Vo th i k u khi m i xu t hi n my PC, cc ph n m m chia phn vng ch cho php t i a c 4 phn vng trn m t a c ng (g i l cc phn vng nguyn thu ). i u gy ra r t nhi u h n ch i v i s pht tri n nhanh trng c a my PC, v l do m m t s m r ng c ti n hnh cho php t o ra nhi u 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 g i l phn vng lu n l. cc phn vng c nh s t 1 t i 4 c dng cho cc phn vng nguyn thu v phn vng m r ng. Trong v d ng c a chng ta hda3 l phn vng nguyn thu . hda4 l ph n vng m r ng ch a cc phn vng lu n l t hda5 cho t i hda9. chng ta s khng bao gi th c s s d ng phn vng hda4 lu tr tr c ti p b t c h th ng t p tin no. Lc phn vng m r ng /dev/hda4 ch n thu n ng vai tr m m t phn vng ch a cc phn vng lu n l.

5.1.7

Lo i phn vng

Cng c n ph i lu t i tr ng "Id" c a phn vng, tr ng cn c g i l lo i phn vng, b t c khi no b n t o m i m t ph n vng, b n c n m b o r ng lo i phn vng c thi t l p chnh xc. H th ng t p tin c a Linux c m lo i phn vng (Id) l 83 v 82 l m lo i phn vng c a phn vng tro i dng cho linux. B n c th thi t l p lo i phn vng cho m t phn vng b ng cch s d ng l nh t trong d u nh c dng l nh c a fdisk. gi tr ny c s d ng b i h t nhn linux t ng tm h th ng t p tin cng nh l kch ho t phn vng tro i trong khi kh i ng.

5.1.8 5.1.9

S d ng fdisk thi t l p cc phn vng a c ng sau khi c phn vng s th no


a

Tr c khi ti n hnh t o cc phn vng trn c ng, chng ta c n xc nh b c c c a sau khi c phn vng, d i y l m t v d v b c c c ng sau khi phn vng:

5.1 H th ng t p tin, phn vng, v cc thi t b kh i

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 gi i v cc phn vng c a m t a c ng Kh i u Zapping existing partitions page 14 of 46 T o phn vng kh i 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

T o 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

T o phn vng g c

56

Qu n tr h th ng 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

Thi t l p kh nng kh i ng cho phn vng Ti nguyn v phn vng a c ng 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 d ng h th ng t p tin H th ng t p tin ext2 H th ng t p tin ext3 H th ng t p tin ReiserFS H th ng t p tin XFS H th ng t p tin JFS Khuy n ngh v h th ng t p tin # mke2fs -j /dev/hda1 # mkswap /dev/hda2 # mkreiserfs /dev/hda3 T o khng gian trao i Cng c mkswap c s d ng kh i t o phn vng tro i: # mkswap /dev/hda2 Khng gi ng nh h th ng t p tin g c, phn vng tro i khng th g t k t c, thay vo chng ta s d ng l nh swapon kch ho t: # swapon /dev/hdc6 Creating ext2, ext3, and ReiserFS filesystems You can use the mke2fs command to create ext2 filesystems: # mke2fs /dev/hda1 N u mu n s d ng h th ng t p tin ext3, b n c thm vo tham s l a ch n -j t o h th ng t p tin ext3 # mke2fs -j /dev/hda3

5.2 Kh i ng h th ng thi t l p h th ng t p tin ReiserFS chng ta s d ng l nh mkreiserfs: # mkreiserfs /dev/hda3

57

Thi t l p h th ng t p tin XFS v JFS thi t l p h th ng t p tin XFS, chng ta s d ng l nh mkfs.xfs: # mkfs.xfs /dev/hda3 thi t l p h th ng t p tin JFS, chng ta s d ng l nh mkfs.jfs: # mkfs.jfs /dev/hda3 G n k t h th ng t p 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 Gi i thi u v fstab Tho g n k t h th ng t p tin Gi i thi u v Cc v n v i 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

Kh i ng h th ng
About this sectin B ng ghi kh i ng chnh - MBR
+----------------+ | MBR | +----------------+ | Phn vng 1: | | phn vng g c |

58

Qu n tr h th ng linux nng cao | (/) bao g m | | h t nhn v | | h th ng. | +----------------+ | Phn vng 2: | | Linux swap | +----------------+ | Phn vng 3: | | Windows 3.0 | | (last booted | | in 1992) | +----------------+

5.2.3

Qa trnh kh i ng c a h t nhn

5.2.4

Chng trnh /sbin/init

$ ps --pid 1 PID TTY 1 ?

TIME CMD 00:00:04 init.system

5.2 Kh i ng h th ng

59

5.2.5

Digging in: LILO

S d ng LILO An important LILO gotcha

5.2.6

Digging in: GRUB

S d ng 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 C p th nc tin Single-user mode Understanding single-user mode Cc c p th c thi - Runlevels Cng c telinit Runlevel etiquette "Now" v halt C p th c thi ng m nh Tham kh o

Additional information related to this section can be found at: * Sysvinit docs at Red Hat * Linux System Administrators Guide section on init

60

Qu n tr h th ng 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

C p php s d ng h th ng t p tin.
Gi i thi u v c p php H tr c a h t nhn H tr c a h th ng t p tin C u hnh h th ng gi y php L nh "quota" Viewing quota edquota Understanding edquota Making changes Copying quotas Group restrictions The repquota command Repquota options Monitoring quotas Modifying the grace period Ki m tra qouta khi kh i ng

5.4
5.4.1 5.4.2 5.4.3

Gi i thi u v syslogd
c thng tin nh t 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 Gi i thi u 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. T p tin c u 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 b o m t

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

Qu n tr h th ng 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 nh t 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 l c

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 kh o

63

5.6

Tham kh o

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

Qu n tr h th ng 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 d ch m ngu n v qu n l gi ph n m m trong linux

7.1 Gi i thi u h h t nhn Linux

67

Chng 7 C u hnh v bin d ch h t 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

Gi i thi u h h t nhn Linux


H t nhn l ... Linux Giao ti p v i ph n c ng i u qu n CPU i u qu n vo ra I/O Trung tm c a h th ng m ng n l i v qu trnh kh i ng linux Gi i thi u v m un V tr c a t p tin m un Modules not for every process!

7.2
7.2.1 7.2.2 7.2.3

T i m ngu n c a h t 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

C u hnh h t nhn
Lets talk configuration The new way to configure Cc m o khi c u hnh Code maturity level options Modules and CPU-related options General and parallel port options

Chng 8 H th ng m ng

Chng 9 USB b o m t h v v chia s t p tin

70

USB b o m t h v v chia s t p tin

You might also like