Giáo trình Hệ điều hành Unix, Linux - Hà Quang Thụy

pdf 214 trang hoanguyen 4531
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Hệ điều hành Unix, Linux - Hà Quang Thụy", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_he_dieu_hanh_unix_linux_ha_qung_thuy.pdf

Nội dung text: Giáo trình Hệ điều hành Unix, Linux - Hà Quang Thụy

  1. www.nhipsongcongnghe.net ĐẠI H ỌC QU ỐC GIA HÀ N ỘI TR ƯỜNG ĐẠI H ỌC CÔNG NGH Ệ === HÀ QUANG TH Y NGUY N TRÍ THÀNH Giáo trình: H IU HÀNH UNIX - LINUX Dành cho sinh viên ngành Công ngh thông tin, in t - Vi n thông, Toán tin ng d ng HÀ N I - 2004
  2. MC L C LI GI I THI U 9 CH Ơ NG 1. GI I THI U CHUNG V LINUX 10 1.1. Gi i thi u v UNIX và Linux 10 1.1.1. Xu t x , quá trình ti n hóa và m t s c tr ưng c a h iu hành UNIX 10 1.1.2. Gi i thi u s ơ b v Linux 13 1.2. S ơ b v các thành ph n c a Linux 17 1.2.1. S ơ b v nhân 18 1.2.2. S ơ b v shell 18 1.3. Gi i thi u v s d ng l nh trong Linux 20 1.3.1. Các quy ưc khi vi t l nh 22 1.3.3. Làm ơ n gi n thao tác gõ l nh 25 1.3.4. Ti p n i dòng l nh 29 1.4. Trang Man 29 CH Ơ NG 2. THAO TÁC V I H TH NG 32 2.1. Quá trình kh i ng Linux 32 2.2. Th t c ng nh p và các l nh thoát kh i h th ng 33 2.2.1. ng nh p 33 2.2.2. Ra kh i h th ng 36 2.2.3. Kh i ng l i h th ng 38 2.2.4. Kh i ng vào ch ho 38 2.3. L nh thay i m t kh u 42 2.4. L nh xem, thi t t ngày, gi hi n t i và xem l ch trên h th ng 45 2.4.1 L nh xem, thi t t ngày, gi 45 2.4.2. L nh xem l ch 47 2.5. Xem thông tin h th ng 48 2.6. Thay i n i dung d u nh c shell 49 2.7. L nh g i ngôn ng tính toán s h c 50 CH Ơ NG 3. H TH NG FILE 53 3.1 Tng quan v h th ng file 53 3.1.1. M t s khái ni m 53 3.1.2. S ơ b ki n trúc n i t i c a h th ng file 57 3.1.3. M t s thu t toán làm vi c v i inode 63 3.1.4. H tr nhi u h th ng File 66 3.1.5. Liên k t t ưng tr ưng (l nh ln) 71 2
  3. 3.2 Quy n truy nh p th ư m c và file 72 3.2.1 Quy n truy nh p 72 3.2.2. Các l nh c ơ b n 75 3.3 Thao tác v i th ư m c 80 3.3.1 M t s th ư m c c bi t 80 3.3.2 Các l nh c ơ b n v th ư m c 83 3.4. Các l nh làm vi c v i file 87 3.4.1 Các ki u file có trong Linux 87 3.4.2. Các l nh t o file 88 3.4.3 Các l nh thao tác trên file 90 3.4.4 Các l nh thao tác theo n i dung file 98 3.4.5 Các l nh tìm file 106 3.5 Nén và sao l ưu các file 115 3.5.1 Sao l ưu các file (l nh tar) 115 3.5.2 Nén d li u 118 CH Ơ NG 4. QU N TR QUÁ TRÌNH 122 4.1 Quá trình trong UNIX 122 4.1.1. S ơ b v quá trình 122 4.1.2. S ơ b c u trúc iu khi n c a UNIX 123 4.1.3. Các h th ng con trong nhân 125 4.1.4. S ơ b v iu khi n quá trình 129 4.1.5. Tr ng thái và chuy n d ch tr ng thái 130 4.1.6. S ng ưng ho t ng và ho t ng tr l i c a quá trình 132 4.1.7. S ơ b v l nh i v i quá trình 132 4.2. Các l nh c ơ b n 133 4.2.1. L nh fg và l nh bg 133 4.2.2. Hi n th các quá trình ang ch y v i l nh ps 135 4.2.3. H y quá trình v i l nh kill 137 4.2.4. Cho máy ng ng ho t ng m t th i gian v i l nh sleep 139 4.2.5. Xem cây quá trình v i l nh pstree 139 4.2.6. L nh thi t t l i ưu tiên c a quá trình nice và l nh renice 141 CH Ơ NG 5. QU N LÝ TÀI KHO N NGI DÙNG 142 5.1 Tài kho n ng ưi dùng 142 5.2 Các l nh c ơ b n qu n lý ng ưi dùng 142 5.2.1 File /etc/passwd 143 5.2.2 Thêm ng ưi dùng v i l nh useradd 143 5.2.3 Thay i thu c tính ng ưi dùng 146 5.2.4 Xóa b m t ng ưi dùng (l nh userdel) 147 3
  4. 5.3 Các l nh c ơ b n liên quan n nhóm ng ưi dùng 148 5.3.1 Nhóm ng ưi dùng và file /etc/group 148 5.3.2 Thêm nhóm ng ưi dùng 149 5.3.3 S a i các thu c tính c a m t nhóm ng ưi dùng (l nh groupmod) 149 5.3.4 Xóa m t nhóm ng ưi dùng (l nh groupdel) 150 5.4 Các l nh c ơ b n khác có liên quan n ng ưi dùng 150 5.4.1 ng nh p v i t ư cách m t ng ưi dùng khác khi dùng l nh su 150 5.4.2 Xác nh ng ưi dùng ang ng nh p (l nh who) 151 5.4.3 Xác nh các quá trình ang ưc ti n hành (l nh w) 153 CH Ơ NG 6. TRUY N THÔNG VÀ M NG UNIX-LINUX 154 6.1. L nh truy n thông 154 6.1.1. L nh write 154 6.1.2. L nh mail 155 6.1.3. L nh talk 156 6.2 C u hình Card giao ti p m ng 156 6.3. Các d ch v m ng 159 6.3.1 H thông tin m ng NIS 159 6.4 H th ng file trên m ng 164 6.4.1 Cài t NFS 165 6.4.2 Kh i ng và d ng NFS 166 6.4.3 C u hình NFS server và Client 167 6.4.4 S d ng mount 167 6.4.5 Unmount 168 6.4.6 Mount t ng qua t p c u hình 168 CH Ơ NG 7. L P TRÌNH SHELL VÀ L P TRÌNH C TRÊN LINUX 170 7.1. Cách th c pipes và các y u t c ơ bn l p trình trên shell 170 7.1.1. Cách th c pipes 170 7.1.2. Các y u t c ơ b n l p trình trong shell 171 7.2. M t s l nh l p trình trên shell 175 7.2.1. S d ng các toán t bash 175 7.2.2. iu khi n lu ng 179 7.2.3 Các toán t nh h ưng vào ra 193 7.2.4. Hi n dòng v n b n 194 7.2.5. L nh read c d li u cho bi n ng ưi dùng 194 7.2.6. L nh set 195 7.2.7. Tính toán trên các bi n 196 7.2.8. Ch ươ ng trình ví d 196 4
  5. 7.3. L p trình C trên UNIX 197 7.3.1. Trình biên d ch gcc 197 7.3.2. Công c GNU make 201 7.3.3. Làm vi c v i file 203 7.3.4. Th ư vi n liên k t 211 7.3.5 Các công c cho th ư vi n 220 TÀI LI U THAM KH O 223 CHÚ THÍCH M T S THU T NG 224 PH L C A. QUÁ TRÌNH CÀI T REDHAT-LINUX 227 AA. Cài t phiên b n RedHat 6.2 228 AA.1. T o a m m kh i ng 228 AA.2. Phân vùng l i a DOS/Windows hi n th i 228 AA.3. Các b ưc cài t (b n RedHat 6.2 và kh i ng t CD-ROM) 229 AA.4. Các h n ch v ph n c ng i v i Linux 239 PH L C B. TRÌNH SO N TH O VIM 242 B.1 Kh i ng vim 244 B.1.1 M ch ươ ng trình so n th o vim 244 B.1.2. Tính n ng m nhi u c a s 245 B.1.3. Ghi và thoát trong vim 246 B.2. Di chuy n tr so n th o trong Vim 247 B.2.1. Di chuy n trong v n b n 247 B.2.2. Di chuy n theo các i t ưng v n b n 248 B.2.3. Cu n màn hình 248 B.3. Các thao tác trong v n b n 249 B.3.1. Các l nh n v n b n trong vim 249 B.3.2. Các l nh xoá v n b n trong vim 250 B.3.3. Các l nh khôi ph c v n b n trong vim 250 6.3.4. Các l nh thay th v n b n trong vim 250 B.3.5. Sao chép và di chuy n v n b n trong vim 252 B.3.6. Tìm ki m và thay th v n b n trong vim 253 B.3.7. ánh d u trong vim 254 B.3.8. Các phím s d ng trong ch n 255 B.3.9. M t s l nh trong ch o 256 B.3.10. Các l nh l p 256 B.4. Các l nh khác 257 B.4.1. Cách th c hi n các l nh bên trong Vim 257 B.4.2. Các l nh liên quan n file 257 5
  6. PH L C C. MIDNIGHT COMMANDER 259 C.1. Gi i thi u v Midnight Commander (MC) 259 C.2. Kh i ng MC 259 C.3. Giao di n c a MC 259 C.4. Dùng chu t trong MC 260 C.5. Các thao tác bàn phím 261 C.6. Th c ơ n thanh ngang (menu bar) 263 C.7. Các phím ch c n ng 266 C.8. B so n th o c a Midnight Commander 267 PH L C D. SAMBA 270 D.1 Cài t Samba 270 D.2 Các thành ph n c a Samba 271 D.3 File c u hình Samba 272 D.4 Các ph n c bi t c a file c u hình Samba 275 D.5 Qu n lý ng ưi dùng trong Samba 282 D.6 Cách s d ng Samba t các máy tr m 284 D.6.1 Cách s d ng t các máy tr m là Linux 284 D.6.2 Cách s d ng t các máy tr m là Windows 287 6
  7. LI GI I THI U Trong h ơn m ưi n m tr l i ây h iu hành Linux ã 7
  8. CH ƠNG 1. GI I THIU CHUNG V LINUX 1.1. Gi i thi u v UNIX và Linux 1.1.1. Xu t x , quá trình ti n hóa và m t s c tr ưng c a h iu hành UNIX Nm 1965, Vi n công ngh Massachusetts (MIT: Massachusetts Institute of Technology) và Phòng thí nghi m Bell c a hãng AT&T th c hi n d án xây d ng m t h iu hành có tên g i là Multics (MULTiplexed Information and Computing Service) v i mc tiêu: t o l p ưc m t h iu hành ph trên vùng lãnh th rng (ho t ng trên t p các máy tính ưc k t n i), a ng ưi dùng, có n ng l c cao v tính toán và l ưu tr . D án nói trên thành công m c h t s c khiêm t n và ng ưi ta ã bi t n m t s khi m khuy t khó kh c ph c c a Multics. Nm1969, Ken Thompson, m t chuyên viên t i phòng thí nghi m Bell, ng ưi ã tham gia d án Multics, cùng Dennics Richie vi t l i h iu hành a-bài toán trên máy PDP-7 vi tên là UNICS (UNiplexed Information and Computing Service) t m t câu g i ùa c a mt ng nghi p. Trong h iu hành UNICS, m t s kh i th o u tiên v H th ng file ã ưc Ken Thompson và Dennis Ritchie th c hi n. n n m 1970 h iu hành ưc vi t trên assembler cho máy PDP-11/20 và mang tên là UNIX. Nm 1973, Riche và Thompson vi t l i nhân c a h iu hành UNIX trên ngôn ng C, và h iu hành ã tr nên d dàng cài t t i các lo i máy tính khác nhau; tính ch t nh ư th ưc g i là tính kh chuy n (portable) c a UNIX. Tr ưc ó, kho ng n m 1971, h iu hành ưc th hi n trên ngôn ng B (mà d a trên ngôn ng B, Ritche ã phát tri n thành ngôn ng C). Hãng AT&T ph bi n ch ươ ng trình ngu n UNIX t i các tr ưng i h c, các công ty th ươ ng m i và chính ph v i giá không áng k . Nm 1982, h th ng UNIX-3 là b n UNIX th ươ ng m i u tiên c a AT&T. Nm 1983, AT&T gi i thi u H th ng UNIX-4 phiên b n th nh t trong ó ã có trình so n th o vi , th ư vi n qu n lý màn hình ưc phát tri n t i h c T ng h p California, Berkley. Giai on 1985-1987, UNIX-5 phiên b n 2 và 3 t ươ ng ng ưc ư a ra vào các n m 1985 và 1987. Trong giai on này, có kho ng 100000 b n UNIX ã ưc ph bi n trên th gi i, cài t t máy vi tính n các h th ng l n. u th p 1990. UNIX-5 phiên b n 4 ưc ư a ra nh ư là m t chu n c a UNIX. ây là s k t h p c a các b n sau:  AT&T UNIX-5 phiên b n 3,  Berkley Software Distribution (BSD),  XENIX c a MicroSoft  SUN OS Có th tìm th y các n i dung liên quan t i m t s phiên b n m i c a UNIX t i a ch website Các nhóm nhà cung c p khác nhau v UNIX ang ho t ng trong th i gian hi n nay ưc k n nh ư sau:  Unix International (vi t t t là UI). UI là m t t ch c g m các nhà cung c p th c hi n vi c chuy n nh ưng h th ng UNIX-5 và cung c p b n AT&T theo các 8
  9. nhu c u và thông báo phát hành m i, ch ng h n nh ư iu ch nh b n quy n. Giao di n ha ng ưi dùng là Open Look.  Open Software Foundation (OSF). OSF ưc h tr b i IBM, DEC, HP theo h ưng phát tri n m t phiên b n c a Unix nh m tranh ua v i h th ng UNIX-5 phiên b n 4. Phiên b n này có tên là OSF/1 v i giao di n ha ng ưi dùng ưc gi là MOTIF.  Free SoftWare Foundation (FSF): m t cng ng do Richard Stallman kh i xưng n m 1984 ch tr ươ ng phát hành các ph n m m s d ng t do, trên c ơ s m t h iu hành thu c lo i UNIX. Bng sau ây li t kê m t s cài t UNIX khá ph bi n (th ưng th y có ch X cu i tên g i c a H iu hành): Tên h Nhà cung c p Nn phát tri n AIX International Business Machines AT&T System V A/UX Apple Computer AT&T System V Dynix Sequent BSD (Berkeley SoftWare Distribution) HP-UX Hewlett-Packard BSD Irix Silicon Graphics AT&T System V Linux Free SoftWare Foundation NextStep Next BSD OSF/1 Digital Equipment Corporation BSD SCO UNIX Santa Cruz Operation AT&T System V Solaris Sun Microsystems AT&T System V SunOS Sun Microsystems BSD UNIX Ultrix Digital Equipment Corporation BSD UNIX Unicos Cray AT&T System V UnixWare Novell AT&T System V XENIX MicroSoft AT&T System III-MS Dưi ây li t kê m t s c tr ưng c a h iu hành UNIX:  H iu hành ưc vi t trên ngôn ng b c cao; b i v y, r t d c, d hi u, d thay i cài t trên lo i máy m i (tính d mang chuy n, nh ư ã nói),  Có giao di n ng ưi dùng ơ n gi n n ng l c cung c p các d ch v mà ng ưi dùng mong mu n (so sánh v i các h iu hành có t tr ưc ó thì giao di n ca UNIX là m t ti n b v ưt b c),  Th a mãn nguyên t c xây d ng các chươ ng trình ph c t p t nh ng ch ươ ng trình ơ n gi n h ơn: tr ưc h t có các mô un c ơ b n nh t c a nhân sau ó phát tri n có toàn b h iu hành,  S d ng duy nh t m t h th ng File có c u trúc cho phép d dàng b o qu n và s d ng hi u qu , 9
  10.  S d ng ph bin m t d ng ơ n gi n trình bày n i t i c a File nh ư m t dòng các byte cho phép d dàng khi vi t các ch ươ ng trình ng d ng truy nh p, thao tác vi các d li u trong File,  Có k t n i ơ n gi n v i thi t b ngo i vi: các file thi t b ã ưc t s n trong H th ng File t o ra m t k t n i ơ n gi n gi a ch ươ ng trình ng ưi dùng v i các thi t b ngo i vi,  Là h iu hành a ng ưi dùng, a quá trình, trong ó m i ng ưi dùng có th th c hi n các quá trình c a mình m t cách c l p.  Mi thao tác vào - ra c a h iu hành ưc th c hi n trên h th ng File: mi thi t b vào ra t ươ ng ng v i m t file. Ch ươ ng trình ng ưi dùng làm vi c v i file ó mà không c n quan tâm c th tên file ó ưc t cho thi t b nào trong h th ng.  Che khu t c u trúc máy i v i ng ưi dùng, m b o tính c l p t ươ ng i ca ch ươ ng trình i v i d li u và ph n c ng, t o iu ki n thu n l i h ơn cho ng ưi l p trình khi vi t các ch ươ ng trình ch y UNIX v i các iu ki n ph n c ng hoàn toàn khác bi t nhau. 1.1.2. Gi i thi u s ơ b v Linux Linus Tovalds (m t sinh viên Ph n lan) ư a ra nhân (phiên b n u tiên) cho h iu hành Linux vào tháng 8 n m 1991 trên c ơ s c i ti n m t phiên b n UNIX có tên Minix do Giáo sư Andrew S. Tanenbaum xây d ng và ph bi n. Nhân Linux tuy nh song là t óng gói. Kt h p v i các thành ph n trong h th ng GNU, h iu hành Linux ã ưc hình thành. Và c ng t th i im ó, theo t ư t ưng GNU, hàng nghìn, hàng v n chuyên gia trên toàn th gi i (nh ng ng ưi này hình thành nên c ng ng Linux) ã tham gia vào quá trình phát tri n Linux và vì v y Linux ngày càng áp ng nhu c u c a ng ưi dùng. Dưi ây là m t s m c th i gian quan tr ng trong quá trình hình thành và phát tri n h iu hành Linux.  Sau ba n m nhân Linux ra i, n ngày 14-3-1994, h iu hành Linux phiên b n 1.0 ưc ph bi n. Thành công l n nh t c a Linux 1.0 là nó ã h tr giao th c m ng TCP/IP chu n UNIX, sánh v i giao th c socket BSD- t ươ ng thích cho l p trình m ng. Trình iu khi n thi t b ã ưc b sung ch y IP trên m t m ng Ethernet ho c trên tuyn ơ n ho c qua modem. H th ng file trong Linux 1.0 ã v ưt xa h th ng file c a Minix thông th ưng, ngoài ra ã h tr iu khi n SCSI truy nh p a t c cao. iu khi n b nh o ã ưc m r ng h tr iu khi n trang cho các file swap và ánh x b nh c a file c quy n (ch có m t ánh x b nh ch c ưc thi hành trong Linux 1.0).  Vào tháng 3-1995, nhân 1.2 ưc ph bi n. iu áng k c a Linux 1.2 so v i Linux 1.0 ch nó h tr m t ph m vi r ng và phong phú ph n c ng, bao g m c ki n trúc tuy n ph n c ng PCI m i. Nhân Linux 1.2 là nhân k t thúc dòng nhân Linux ch h tr PC. Mt iu c n l ưu ý v các ánh ch s các dòng nhân (h iu hành) Linux. H th ng ch s ưc chia thành m t s m c, ch ng h n hai m c nh ư 2.4 ho c ba m c nh ư 2.2.5. Trong cách ánh ch s nh ư v y, quy ưc r ng v i các ch s t m c th hai tr i, n u là s ch n thì dòng nhân ó ã khá n nh và t ươ ng i hoàn thi n, còn n u là s l thì dòng nhân ó v n ang ưc phát tri n ti p. 1 0
  11.  Tháng 6-1996, nhân Linux 2.0 ưc ph bi n. Có hai c tr ưng n i b t c a Linux 2.0 là h tr ki n trúc ph c h p, bao g m c c ng Alpha 64-bit y , và h tr ki n trúc a b x lý. Phân ph i nhân Linux 2.0 c ng thi hành ưc trên b x lý Motorola 68000 và ki n trúc SPARC c a SUN. Các thi hành c a Linux d a trên vi nhân GNU Mach c ng ch y trên PC và PowerMac.  Ti n m 2000, nhân Linux 2.4 ưc ph bi n. M t trong c im ưc quan tâm ca nhân này là nó h tr mã ký t Unicode 32 bít, r t thu n l i cho vi c xây d ng các gi i pháp toàn di n và tri t i v i v n ngôn ng t nhiên trên ph m vi toàn th gi i. Vn phân ph i và gi y phép Linux V lý thuy t, m i ng ưi có th kh i t o m t h th ng Linux b ng cách ti p nh n b n m i nh t các thành ph n c n thi t t các site ftp và biên d ch chúng. Trong th i k u tiên, ng ưi dùng Linux ph i ti n hành toàn b các thao tác này và vì v y công vi c là khá v t v . Tuy nhiên, do có s tham gia ông o c a các cá nhân và nhóm phát tri n Linux, ã ti n hành th c hi n nhi u gi i pháp nh m làm cho công vi c kh i t o h th ng v t v . M t trong nh ng gi i pháp in hình nh t là cung c p t p các gói ch ươ ng trình ã ti n d ch, chu n hóa. Nh ng t p h p nh ư v y hay nh ng b n phân ph i là l n h ơn nhi u so v i h th ng Linux cơ s . Chúng th ưng bao g m các ti n ích b sung cho kh i t o h th ng, các th ư vi n qu n lý, c ng nh ư nhi u gói ã ưc ti n d ch, s n sàng kh i t o c a nhi u b công c UNIX dùng chung, ch ng h n nh ư ph c v tin, trình duy t web, công c x lý, so n th o vn b n và th m chí các trò ch ơi. Cách th c phân ph i ban u r t ơ n gi n song ngày càng ưc nâng c p và hoàn thi n bng ph ươ ng ti n qu n lý gói tiên ti n. Các b n phân ph i ngày nay bao g m các c ơ s d li u ti n hóa gói, cho phép các gói d dàng ưc kh i t o, nâng c p và lo i b . Nhà phân ph i u tiên th c hi n theo ph ươ ng châm này là Slakware, và chính h là nh ng chuy n bi n m nh m trong c ng ng Linux i v i công vi c qu n lý gói kh i t o Linux. Ti n ích qu n lý gói RPM (RedHat Package Manager) c a công ty RedHat là m t trong nh ng ph ươ ng ti n in hình. Nhân Linux là ph n m m t do ưc phân ph i theo Gi y phép s h u công c ng ph n mm GNU GPL. Các thành ph n tích h p H iu hành Linux Linux s d ng r t nhi u thành ph n t D án ph n m m t do GNU, t h iu hành BSD ca i h c Berkeley và t h th ng X-Window c a MIT. Th ư vi n h th ng chính c a Linux ưc b t ngu n t D án GNU, sau ó ưc r t nhi u ng ưi trong c ng ng Linux phát tri n ti p, nh ng phát tri n ti p theo nh ư v y ch y u liên quan t i vi c gi i quy t các v n nh ư thi u v ng a ch (l i trang), thi u hi u qu và g r i. M t s thành ph n khác c a D án GNU, ch ng h n nh ư trình biên d ch GNU C (gcc), v n là ch t l ưng cao nên ưc s d ng nguyên xy trong Linux. Các tool qu n lý m ng ưc b t ngu n t mã 4.3BSD song sau ó ã ưc c ng ng Linux phát tri n, ch ng h n nh ư th ư vi n toán h c ng x lý d u ch m ng Intel và các trình iu khi n thi t b ph n c ng âm thanh PC. Các tool qu n lý m ng này sau ó l i ưc b sung vào h th ng BSD. 1 1
  12. H th ng Linux ưc duy trì g n nh ư b i m t m ng l ưi không ch t ch các nhà phát tri n ph n m m c ng tác v i nhau qua Internet, m ng l ưi này g m các nhóm nh và cá nhân ch u trách nhi m duy trì tính toàn v n c a t ng thành ph n. M t l ưng nh các site phân cp ftp Internat công c ng ã óng vai trò nhà kho theo chu n de facto ch a các thành ph n này. Tài li u Chu n phân c p h th ng file (File System Hierarchy Standard) ưc cng ng Linux duy trì nh m gi tính t ươ ng thích xuyên qua s khác bi t r t l n gi a các thành ph n h th ng. Mt s c im chính c a Linux Dưi ây trình bày m t s c im chính c a c a h iu hành Linux hi n t i:  Linux t ươ ng thích v i nhi u h iu hành nh ư DOS, MicroSoft Windows :  Cho phép cài t Linux cùng v i các h iu hành khác trên cùng m t c ng. Linux có th truy nh p n các file c a các h iu hành cùng m t a. Linux cho phép ch y mô ph ng các ch ươ ng trình thu c các h iu hành khác.  Do gi ưc chu n c a UNIX nên s chuy n i gi a Linux và các h UNIX khác là d dàng.  Linux là m t h iu hành UNIX tiêu bi u v i các c tr ưng là a ng ưi dùng, a ch ươ ng trình và a x lý.  Linux có giao di n ho (GUI) th a h ưng t h th ng X-Window. Linux h tr nhi u giao th c m ng, b t ngu n và phát tri n t dòng BSD. Thêm vào ó, Linux còn h tr tính toán th i gian th c.  Linux khá m nh và ch y r t nhanh ngay c khi nhi u quá trình ho c nhi u c a s .  Linux ưc cài t trên nhi u ch ng lo i máy tính khác nhau nh ư PC, Mini và vi c cài t khá thu n l i. Tuy nhiên, hi n nay ch ưa xu t hi n Linux trên máy tính l n (mainframe).  Linux ngày càng ưc h tr b i các ph n m m ng d ng b sung nh ư so n th o, qu n lý m ng, qu n tr c ơ s d li u, b ng tính  Linux h tr t t cho tính toán song song và máy tính c m (PC-cluster) là m t h ưng nghiên c u tri n khai ng d ng nhi u tri n v ng hi n nay.  Là m t h iu hành v i mã ngu n m , ưc phát tri n qua c ng ng ngu n m (bao g m c Free Software Foundation) nên Linux phát tri n nhanh. Linux là m t trong mt s ít các h iu hành ưc quan tâm nhi u nh t trên th gi i hi n nay.  Linux là m t h iu hành h tr a ngôn ng m t cách toàn di n nh t. Do Linux cho phép h tr các b mã chu n t 16 bit tr lên (trong ó có các b mã ISO10646, Unicode) cho nên vi c b n a hóa trên Linux là tri t nh t trong các h iu hành. Tuy nhiên c ng t n t i m t s khó kh n làm cho Linux ch ưa th c s tr thành m t h iu hành ph d ng, d ưi ây là m t s khó kh n in hình:  Tuy ã có công c h tr cài t, tuy nhiên, vi c cài t Linux còn t ươ ng i ph c tp và khó kh n. Kh n ng t ươ ng thích c a Linux v i m t s lo i thi t b ph n c ng còn th p do ch ưa có các trình iu khi n cho nhi u thi t b , 1 2
  13.  Ph n m m ng d ng ch y trên n n Linux tuy ã phong phú song so v i m t s h iu hành khác, c bi t là khi so sánh v i MS Windows, thì v n còn có kho ng cách. Vi s h tr c a nhi u công ty tin h c hàng u th gi i (IBM, SUN, HP ) và s tham gia phát tri n c a hàng v n chuyên gia trên toàn th gi i thu c c ng ng Linux, các khó kh n c a Linux ch c ch n s nhanh chóng ưc kh c ph c. Chính vì l ó ã hình thành m t s nhà cung c p Linux trên th gi i. B ng d ưi ây là tên c a m t s nhà cung c p Linux có ti ng nh t và a ch website c a h . áng chú ý nh t là Red Hat Linux (t i M ) và Red Flag Linux (t i Trung Qu c). Red Hat ưc coi là lâu i và tin c y, còn Red Flag là m t công ty Linux c a Trung qu c, có quan h v i c ng ng Linux Vi t nam và chúng ta có th h c h i m t cách tr c ti p kinh nghi m cho quá trình ư a Linux vào Vi t nam. Tên công ty a ch website Caldera OpenLinux www.caldera.com Corel Linux www.corel.com Debian GNU/Linux www.debian.com Linux Mandrake www.mandrake.com Red Hat Linux www.redhat.com Red Flag Linux www.redflag-linux.com Slackware Linux www.slackware.com SuSE Linux www.suse.com TurboLinux www.turbolinux.com 1.2. S ơ b v các thành ph n c a Linux H th ng Linux, ưc thi hành nh ư m t h iu hành UNIX truy n th ng, g m shell và ba thành ph n ( ã d ng mã ch ươ ng trình) sau ây: - Nhân h iu hành ch u trách nhi m duy trì các i tưng tr u t ưng quan tr ng c a h iu hành, bao g m b nh o và quá trình. Các mô un ch ươ ng trình trong nhân ưc c quy n trong h th ng, bao g m c quy n th ưng tr c b nh trong. - Th ư vi n h th ng xác nh m t t p chu n các hàm các ng d ng t ươ ng tác v i nhân, và thi hành nhi u ch c n ng c a h th ng nh ưng không c n có các c quy n c a mô un thu c nhân. M t h th ng con in hình ưc thi hành d a trên th ư viên h th ng là h th ng file Linux. - Ti n ích h th ng là các ch ươ ng trình thi hành các nhi m v qu n lý riêng r , chuyên bi t. M t s ti n ích h th ng ưc g i ra ch m t l n kh i ng và c u hình ph ươ ng ti n h th ng, m t s ti n ích khác, theo thu t ng UNIX ưc g i là trình ch y ng m (daemon), có th ch y m t cách th ưng xuyên (th ưng theo chu k ), iu khi n các bài toán nh ư h ưng ng các k t n i m ng m i n, ti p nh n yêu c u logon, ho c c p nh t các file log. Ti n ích (hay l nh) có s n trong h iu hành (d ưi ây ti n ích ưc coi là l nh th ưng tr c). N i dung chính y u ca tài li u này gi i thi u chi ti t v m t s l nh thông d ng nh t ca Linux. H th ng file s ưc gi i thi u trong ch ươ ng 3. Trong các ch ươ ng sau có cp t i nhi u n i dung liên quan n nhân và shell, song d ưi ây là m t s nét s ơ b v chúng. 1 3
  14. 1.2.1. S ơ b v nhân Nhân (còn ưc g i là h lõi) c a Linux, là m t b các môdun ch ươ ng trình có vai trò iu khi n các thành ph n c a máy tính, phân ph i các tài nguyên cho ng ưi dùng (các quá trình ng ưi dùng). Nhân chính là c u n i gi a ch ươ ng trình ng d ng v i ph n c ng. Ng ưi dùng s d ng bàn phím gõ n i dung yêu c u c a mình và yêu c u ó ưc nhân g i ti shell: Shell phân tích l nh và g i các ch ươ ng trình t ươ ng ng v i l nh th c hi n. Mt trong nh ng ch c n ng quan tr ng nh t c a nhân là gi i quy t bài toán l p l ch, t c là h th ng c n phân chia CPU cho nhi u quá trình hi n th i cùng t n t i. i v i Linux, s lưng quá trình có th lên t i con s hàng nghìn. V i s l ưng quá trình ng th i nhi u nh ư v y, các thu t toán l p l ch c n ph i hi u qu : Linux th ưng l p l ch theo ch Round Robin (RR) th c hi n vi c luân chuy n CPU theo l ưng t th i gian. Thành ph n quan tr ng th hai trong nhân là h th ng các mô un ch ươ ng trình ( ưc gi là l i g i h th ng) làm vi c v i h th ng file. Linux có hai cách th c làm vi c v i các file: làm vi c theo byte (kí t ) và làm vi c theo kh i. M t c im áng chú ý là file trong Linux có th ưc nhi u ng ưi cùng truy nh p t i nên các l i g i h th ng làm vi c v i file cn m b o vi c file ưc truy nh p theo quy n và ưc chia x cho ng ưi dùng. 1.2.2. S ơ b v shell Mt s n i dung chi ti t v shell (còn ưc g i là h v ) trong Linux ưc trình bày trong ch ươ ng "L p trình trên shell". Nh ng n i dung trình bày d ưi ây cung c p m t cách nhìn s ơ b v shell và vai trò c a nó trong ho t ng chung c a h iu hành. Ng ưi dùng mong mu n máy tính th c hi n m t công vi c nào ó thì c n gõ l nh th hi n yêu c u c a mình h th ng áp ng yêu c u ó. Shell là b d ch l nh và ho t ng nh ư m t k t n i trung gian gi a nhân v i ng ưi dùng: Shell nh n dòng l nh do ng ưi dùng ư a vào; và t dòng l nh nói trên, nhân tách ra các b ph n nh n ưc m t hay m t s lnh t ươ ng ng v i các on v n b n có trong dòng l nh. M t l nh bao g m tên l nh và tham s : t u tiên là tên l nh, các t ti p theo (n u có) là các tham s . Ti p theo, shell s dng nhân kh i sinh m t quá trình m i (kh i t o quá trình) và sau ó, shell ch i quá trình con này ti n hành, hoàn thi n và k t thúc. Khi shell s n sàng ti p nh n dòng l nh c a ng ưi dùng, m t d u nh c shell (còn g i là d u nh c nh p l nh) xu t hi n trên màn hình. Linux có hai lo i shell ph bi n là: C-shell (d u nh c %), Bourne-shell (d u nh c $) và mt s shell phát tri n t các shell nói trên (ch ng h n, TCshell - tcsh vi d u nh c ng m nh > phát tri n t C-shell và GNU Bourne - bash v i d u nh c bash # phát tri n t Bourne-shell). D u m i phân bi t shell nói trên không ph i hoàn toàn rõ ràng do Linux cho phép ng ưi dùng thay i l i d u nh c shell nh vi c thay giá tr các bi n môi tr ưng PS1 và PS2 . Trong tài li u này, chúng ta s d ng kí hi u "hàng rào #" bi u th d u nh c shell. C-shell có tên g i nh ư v y là do cách vi t l nh và ch ươ ng trình l nh Linux t a nh ư ngôn ng C. Bourne-shell mang tên tác gi c a nó là Steven Bourne. M t s l nh trong C- shell (ch ng h n l nh alias ) không còn có trong Bourne-shell và vì v y nh n bi t h th ng ang làm vi c v i shell nào, chúng ta gõ l nh: # alias Nu m t danh sách xu t hi n thì shell ang s d ng là C-shell; ng ưc li, n u xu t hi n thông báo "Command not found" thì shell ó là Bourne-shell. Lnh ưc chia thành 3 lo i l nh: 1 4
  15.  Lnh th ưng tr c (có s n c a Linux). Tuy t i a s l nh ưc gi i thi u trong tài li u này là l nh th ưng tr c. Chúng bao g m các l nh ưc ch a s n trong shell và các l nh th ưng tr c khác.  File ch ươ ng trình ngôn ng máy: ch ng h n, ng ưi dùng vi t trình trên ngôn ng C qua b d ch gcc (bao g m c trình k t n i link ) t o ra m t ch ươ ng trình trên ngôn ng máy.  File ch ươ ng trình shell (Shell Scrip). Khi k t thúc m t dòng l nh c n gõ phím ENTER shell phân tích và th c hi n l nh. 1.3. Gi i thi u v s d ng l nh trong Linux Nh ư ã gi i thi u ph n trên, Linux là m t h iu hành a ng ưi dùng, a nhi m, ưc phát tri n b i hàng nghìn chuyên gia Tin h c trên toàn th gi i nên h th ng l nh cng ngày càng phong phú; n th i im hi n nay Linux có kho ng h ơn m t nghìn l nh. Tuy nhiên ch có kho ng vài ch c l nh là thông d ng nh t i v i ng ưi dùng. Tài li u này c ng h n ch gi i thi u kho ng vài ch c l nh ó. Chúng ta ng e ng i v s l ưng lnh ưc gi i thi u ch chi m m t ph n nh trong t p h p l nh b i vì ây là nh ng l nh thông d ng nh t và chúng cung c p m t ph m vi ng d ng r ng l n, th a mãn yêu c u ca chúng ta. Cng nh ư ã nói trên, ng ưi dùng làm vi c v i máy tính thông qua vi c s d ng tr m cu i: ng ưi dùng ư a yêu c u c a mình b ng cách gõ "l nh" t bàn phím và giao cho h iu hành x lý. Khi cài t Linux lên máy tính cá nhân thì máy tính cá nhân v a óng vai trò tr m cu i, va óng vai trò máy tính x lý. Dng t ng quát c a l nh Linux có th ưc vi t nh ư sau: # [ ] ¿ trong ó:  Tên l nh là m t dãy ký t , không có d u cách, bi u th cho m t l nh c a Linux hay m t ch ươ ng trình. Ng ưi dùng c n h iu hành áp ng yêu c u gì c a mình thì ph i ch n úng tên l nh. Tên l nh là b t bu c ph i có khi gõ l nh.  Các tham s có th có ho c không có, ưc vi t theo quy nh c a l nh mà chúng ta s d ng, nh m cung c p thông tin v các i t ưng mà l nh tác ng t i. Ý ngh a c a các d u [, , ] ưc gi i thích ph n quy t c vi t l nh. Các tham s ưc phân ra thành hai lo i: tham s khóa (sau ây th ưng dùng là "tùy ch n") và tham s v trí. Tham s v trí th ưng là tên file, th ư m c và th ưng là các i t ưng ch u s tác ng c a l nh. Khi gõ l nh, tham s v trí ưc thay b ng nh ng i t ưng mà ng ưi dùng c n h ưng tác ng t i. Tham s khóa chính là nh ng tham s iu khi n ho t ng ca l nh theo các tr ưng h p riêng. Trong Linux, tham s khóa th ưng b t u b i d u tr "-" ho c hai d u tr liên ti p " ". Khi gõ l nh, c ng gi ng nh ư tên l nh, tham s khóa ph i ưc vi t chính xác nh ư trình bày trong mô t l nh. M t l nh có th có m t s ho c r t nhi u tham s khóa. Ph thu c vào yêu c u c th c a mình, ng ưi dùng có th ch n m t ho c m t s các tham s khóa khi gõ l nh. Trong mô t l nh, th ưng xu t hi n thu t ng tùy-ch n. Tùy ch n l nh (th c ch t là tham s khóa ) cho phép iu ch nh ho t ng c a lnh trong Linux, làm cho l nh có tính ph dng cao. Tu ch n l nh cho phép l nh có th áp ng ý mu n c a ng ưi dùng i v i h u h t (tuy không ph i lúc nào c ng v y) các tình hu ng t ra cho thao tác ng v i l nh. 1 5
  16.  Ký hi u " ↵" bi u th vi c gõ phím h t dòng . k t thúc m t yêu cu, ng ưi dùng nh t thi t ph i gõ phím " ↵". Ví d , khi ng ưi dùng gõ l nh xem thông tin v các file: # ls -l g ↵↵↵¿ trong l nh này:  ls là tên l nh th c hi n vi c ư a danh sách các tên file/ th ư m c con trong mt th ư m c,  -l là tham s khóa, cho bi t yêu c u xem y thông tin v các i t ưng hi n ra. Chú ý, trong tham s khóa ch cái (ch " l") ph i i ngay sau d u tr " -". Tươ ng ng v i l nh ls còn có các tham s khóa -a, -L, và chúng c ng là các tùy ch n l nh. Trong m t s tham s khóa có nhi u ch cái thay cho m t d u " -" là hai du " " u tham s . Ví d , nh ư tr ưng h p tham s file c a l nh date .  g* là tham s v trí ch rõ ng ưi dùng c n xem thông tin v các file có tên gi b t u là ch cái "g". Trong tài li u này, quy ưc r ng khi vi t m t l nh (trong mô t l nh và gõ l nh) thì không c n ph i vi t d u " ↵" cu i dòng l nh ó, song luôn ghi nh r ng phím ENTER (" ↵") là b t bu c khi gõ l nh.  Lu ý:  Linux (và UNIX nói chung) ưc xây d ng trên ngôn ng l p trình C, vì v y khi gõ l nh ph i phân bi t ch th ưng v i ch hoa. Ngo i tr m t s ngo i l , trong Linux chúng ta th y ph bi n là:  Các tên l nh là ch th ưng,  Mt s tham s có th là ch th ưng ho c ch hoa (ví d , trong l nh date v th i gian h th ng thì hai tham s -r và -R có ý ngh a hoàn toàn khác nhau). Tên các bi n môi tr ưng c ng th ưng dùng ch hoa.  Trong tài li u này, t i nh ng dòng v n b n di n gi i, s d ng cách vi t tên lnh, các tham s khóa b ng ki u ch không chân, m nh ư date , -R, -r  Linux phân bi t siêu ng ưi dùng (ti ng Anh là superuser ho c root, còn ưc g i là ng i qu n tr hay ng i dùng t i cao ho c siêu ng i dùng ) v i ng ưi dùng thông th ưng. Trong t p h p l nh c a Linux, có m t s l nh mà ch siêu ng ưi dùng m i ưc phép s d ng còn ng ưi dùng thông th ưng thì không ưc phép (ví d nh ư l nh adduser th c hi n vi c b sung thêm ng ưi dùng). M t khác trong m t s l nh, v i m t s tham s khóa thì ch siêu ng ưi dùng ưc phép dùng, còn v i m t s tham s khác thì m i ng ưi dùng u ưc phép (ví d nh ư l nh passwd thay i m t kh u ng ưi dùng).  Mt dòng l nh có th có nhi u h ơn m t l nh, trong ó l nh sau ưc ng n cách b i v i l nh i ngay tr ưc b ng d u ";" ho c d u "|". Ví d v m t s dòng l nh dng này: # ls -l; date # head Filetext | sort >temp  Sau khi ng ưi dùng gõ xong dòng l nh, shell ti p nh n dòng l nh này và phân tích n i dung v n b n c a l nh. N u l nh ưc gõ úng thì nó ưc th c hi n; ng ưc l i, trong tr ưng h p có sai sót khi gõ l nh thì shell thông báo v sai sót và 1 6
  17. du nh c shell l i hi n ra ch l nh ti p theo c a ng ưi dùng. V ph bi n, n u nh ư sau khi ng ưi dùng gõ l nh, không th y thông báo sai sót hi n ra thì có ngh a lnh ã ưc th c hi n m t cách bình th ưng. Tr ưc khi i vào n i dung chi ti t các l nh thông d ng, chúng ta xem xét v m t s quy nh dùng trong mô t l nh ưc trình bày trong tài li u này. 1.3.1. Các quy ưc khi vi t l nh Trong tài li u này, các l nh ưc trình bày theo m t b quy t c cú pháp nh t quán. B quy t c này cho phép phân bi t trong m i l nh các thành ph n nào là b t buc ph i có, các thành ph n nào có th có ho c không D ưi ây là n i dung c a các quy t c trong b quy tc ó.  Tên l nh là b t bu c, ph i là t u tiên trong b t k l nh nào, ph i ưc gõ úng nh ư khi mô t l nh.  Tên khái ni m ưc n m trong c p d u ngo c quan h ( ) bi u th cho mt l p i t ưng và là tham s b t bu c ph i có. Khi gõ l nh thì tên khái ni m (có th ưc coi là "tham s hình th c") ph i ưc thay th b ng m t t (th ưng là tên file, tên th ư m c và có th ưc coi là "tham s th c s ") ch i t ưng liên quan n thao tác c a l nh. Ví d , mô t cú pháp c a l nh more xem n i dung file là # more thì t more là tên l nh, còn là tham s trong ó file là tên khái ni m và là tham s bt bu c ph i có. L nh này có tác ng là hi n lên màn hình theo cách th c cu n n i dung ca file v i tên ã ch trong l nh. xem n i dung file có tên là temp , ng ưi dùng gõ l nh: # more temp Nh ư v y, tên l nh more ưc gõ úng nh ư mô t cú pháp (c n i dung và v trí) còn "file " ã ưc thay th b ng t " temp " là tên file mà ng ưi dùng mu n xem n i dung.  Các b ph n n m gi a c p d u ngo c vuông [ và ] là có th gõ ho c không gõ c ng ưc. Ví d , cú pháp c a l nh halt là # halt [tùy-ch n] Vi các tùy ch n là -w, -n, -d, -f, -i mã m i tùy ch n cho m t cách th c ho t ng khác nhau c a l nh halt . Lnh halt có tác ng chính là làm ng ng ho t ng c a h iu hành, tuy nhiên khi ng ưi dùng mu n có m t cách ho t ng nào ó c a l nh này thì s ch n m t (ho c m t s ) tu ch n l nh t ươ ng ng. M t s cách gõ l nh halt c a ng ưi dùng nh ư sau ây là úng cú pháp: # halt # halt -w # halt -n # halt -f  Các giá tr có trong c p | và | trong ó các b ph n cách nhau b ng d u s ng "|" cho bi t c n ch n m t và ch m t trong các giá tr n m gi a hai d u ngo c ó. 1 7
  18. Ví d , khi gi i thi u v tùy ch n l nh c a l nh tail xem ph n cu i n i dung c a file, chúng ta th y: -f, follow[={tên | c t }] Nh ư v y, sau tham s khóa follow , n u xu t hi n thêm d u b ng " =" thì ph i có ho c tên ho c c t . ây là tr ưng h p các ch n l a "lo i tr nhau".  Du ba ch m th hi n vi c l p l i thành ph n cú pháp i ngay tr ưc d u này, vi c l p l i ó có th t không n nhi u l n (không k chính thành ph n cú pháp ó). Cách th c này th ưng ưc dùng v i các tham s nh ư tên file. Ví d , mô t l nh chown nh ư sau: chown [tùy-ch n] [,[nhóm]] Nh ư v y trong l nh chown có th không có ho c có m t s tùy ch n l nh và có t m t n nhi u tên file.  Các b ph n trong mô t l nh, n u không n m trong các c p d u [ ], có ngh a là thay b ng tên file c n xem n i dung, n u k t h p thêm d u ngo c vuông [ và ], t c là có d ng sau (chính là d ng t ng quát c a l nh more ): # more [ ] thì nói chung ph i có trong l nh more , tuy nhiên trong m t s tr ưng h p có th b qua tham s file.  Lu ý:  i v i nhi u l nh, cho phép ng ưi dùng gõ tham s khóa k t h p t ươ ng ng v i tùy_ch n trong mô t l nh. Tham s khóa k t h p ưc vi t theo cách - , trong ó xâu-kí-t g m các ch cái trong tham s khóa. Ví d , trong mô t l nh in l ch cal : cal [tùy-ch n] [tháng [nm] ] có ba tham s khóa là -m, -j, -y. Khi gõ l nh có th gõ m t t hp nào ó t ba tham s khóa này ưc tình hu ng s d ng l nh theo ý mu n. Ch ng h n, nu gõ l nh cal -mj 3 thì l nh cal th c hi n theo iu khi n c a hai tham s khóa -m (ch n Th Hai là ngày u tu n, thay vì cho ng m nh là Ch Nh t) và -j (hi n th ngày trong tháng d ưi d ng s ngày trong n m k t u n m). Vì v y, khi vi t [tùy-ch n] trong mô t l nh bi u th c vi c s d ng t ng tùy ch n, nhi u tùy ch n ho c k t hp các tu ch n.  Trong m t s l nh, có hai tham s khóa cùng t ươ ng ng v i m t tình hu ng th c hi n l nh, trong ó m t tham s g m m t kí t còn tham s kia l i là mt t . Tham s dài m t t là tham s chu n c a l nh, còn tham s m t kí t là cách vi t ng n g n. Tham s chu n dùng ưc trong m i Linux và khi gõ ph i có kí t trong t . 1 8
  19. Ví d , khi mô t l nh date có tùy ch n:  -d, date=STRING nh ư v y hai tham s -d và date=STRING có cùng ý ngh a. Ngoài nh ng quy ưc trên ây, ng ưi dùng ng quên m t quy nh c ơ b n là c n phân bi t ch hoa v i ch th ưng khi gõ l nh. 1.3.3. Làm ơ n gi n thao tác gõ l nh Vi c s d ng bàn phím nh p l nh tuy không ph i là m t công vi c n ng n , song Linux còn cho phép ng ưi dùng s d ng m t s cách th c thu n ti n h ơn khi gõ l nh. Mt s trong nh ng cách th c ó là:  S d ng vi c khôi ph c dòng l nh,  S d ng các phím c bi t,  S d ng các kí hi u thay th và phím ,  S d ng thay th alias ,  S d ng ch ươ ng trình l nh. Cách th c s d ng ch ươ ng trình l nh (shell script) s ưc gi i thi u chi ti t trong các ch ươ ng sau. D ưi ây, chúng ta xem xét cách th c s d ng vi c khôi ph c dòng l nh, phím c bi t và kí hi u thay th . Cơ ch khôi ph c dòng l nh Linux cung c p m t cách th c c bi t là kh n ng khôi ph c l nh. T i d u nh c shell: Ng ưi dùng s d ng các phím m i tên lên/xu ng ( ↑/↓) trên bàn phím nh n l i các dòng lnh ã ưc ư a vào tr ưc ây t i d u nh c shell, ch n m t trong các dòng l nh ó và biên tp l i n i dung dòng l nh theo úng yêu c u m i c a mình. Ví d , ng ưi dùng v a gõ xong dòng l nh: # ls -l tenfile* sau ó mu n gõ l nh ls -l tentaptin thì t i d u nh c c a shell, ng ưi dùng s d ng các phím di chuy n lên ( ↑) ho c xu ng ( ↓) nh n ưc: # ls -l tenfile* dùng các phím t t di chuy n, xoá kí t (xem ph n sau) có ưc: # ls -l ten và gõ ti p các kí t "taptin" nh n ưc: # ls -l tentaptin chính là k t qu mong mu n. Trong tr ưng h p s l ưng kí t thay th là r t ít so v i s l ưng kí t c a toàn dòng lnh thì hi u qu c a cách th c này r t cao.  Lu ý:  Vi c nh n liên ti p các phím di chuy n lên ( ↑) ho c xu ng ( ↓) cho phép ng ưi dùng nh n ưc các dòng l nh ã gõ t tr ưc mà không ch dòng l nh m i ưc gõ. Cách th c này t ươ ng t v i cách th c s d ng ti n ích DOSKEY trong h iu hành MS-DOS. 1 9
  20. Mt s phím c bi t khi gõ l nh Khi ng ưi dùng gõ l nh có th x y ra m t s tình hu ng nh ư sau:  Dòng l nh ang gõ có ch sai sót, không úng theo yêu c u c a ng ưi dùng vì v y c n ph i s a l i ôi chút n i dung trên dòng l nh ó. Trong tr ưng h p ó cn s d ng các phím c bi t (còn g i là phím vi t t t hay phím t t) di chuy n, xoá b , b sung vào n i dung dòng l nh.  Sau khi s d ng cách th c khôi ph c dòng l nh, chúng ta nh n ưc dòng lnh t ươ ng t v i l nh c n gõ và sau ó s d ng các phím t t hoàn thi n l nh. Dưi ây gi i thi u các phím t t và ý ngh a c a vi c s d ng chúng: • Nh n phím → di chuy n con tr sang bên ph i m t v trí • Nh n phím ← di chuy n con tr sang bên trái m t v trí • Nh n phím xoá m t t bên trái con tr • Nh n phím xoá m t t bên ph i con tr • Nh n phím di chuy n con tr sang bên ph i m t t • Nh n phím di chuy n con tr sang bên trái m t t • Nh n phím di chuy n con tr v u dòng l nh • Nh n phím di chuy n con tr v cu i dòng • Nh n phím xóa dòng l nh Có th dùng phím thay cho phím . Các kí hi u mô t nhóm file và phím Khi gõ l nh th c s nhi u tr ưng h p ng ưi dùng mong mu n m t tham s trong l nh không ch xác nh m t file mà l i liên quan n m t nhóm các file mà tên g i c a các file trong nhóm có chung m t tính ch t nào ó. Trong nh ng tr ưng h p nh ư v y, ng ưi dùng cn s d ng các kí hi u mô t nhóm file (wildcards), chúng ta g i là kí hi u mô t nhóm (còn ưc g i là kí hi u thay th ). Ng ưi ta s d ng các kí t *, ? và c p hai d u [ và ] mô t nhóm file. Các kí t này mang ý ngh a nh ư sau khi vi t vào tham s tên file th c s : • "*" : là ký t mô t nhóm g m m i xâu kí t (thay th m i xâu). Mô t này cho m t nhóm l n nh t trong ba mô t . • "?" : mô t nhóm g m m i xâu v i dài không quá 1 (thay th m t kí t ). Nhóm này là t p con c a nhóm u tiên (theo kí t "*"). • [xâu-kí-t] : mô t nhóm g m m i xâu có dài 1 là m i kí t thu c xâu nói trên. Mô t này cho m t nhóm có l c l ưng bé nh t trong ba mô t . Nhóm này là t p con c a nhóm th hai (theo kí t "?"). Khi gõ l nh ph i gõ c hai d u [ và ]. M t dng khác c a mô t nhóm này là [ - ] ngh a là gi a c p d u ngo c có ba kí t trong ó kí t gi a là d u n i (d u -) thì cách vi t này t ươ ng ươ ng v i vi c li t kê m i kí t t n . Ch ng h n, cách vi t [a-d] t ươ ng ươ ng v i cách vi t [abcd]. Ví d , gi s khi mu n làm vi c v i t t c các file trong m t th ư m c nào ó, ng ưi dùng gõ * thay th tham s file thì xác nh ưc các tên file sau (chúng ta vi t b n tên file trên m t dòng): 2 0
  21. info-dir initlog.conf inittab lynx.cfg mail.rc mailcap minicom.users motd mtab mtools.conf services shadow shadow- shells smb.conf sysctl.conf syslog.conf temp termcap up2date.conf temp termcap Nu ng ưi dùng gõ s* ( ch các tên có ch cái u là s) thay th tham s file thì xác nh ưc các tên file sau: shadow shadow- shells sysctl.conf syslog.conf Nu ng ưi dùng gõ [si]* ( ch các tên có ch cái u là s ho c i, chú ý dùng c hai kí t [ và ]) thay th tham s file thì xác nh các tên file sau: info-dir initlog.conf inittab services shadow shadow- shells smb.conf sysctl.conf syslog.conf  Lu ý:  Nh ư v y, Linux (và UNIX nói chung) không ch s d ng hai kí t mô t nhóm * và ? mà còn có cách th c s d ng c p kí t [ và ].  Cn phân bi t c p d u [ và ] ưc s d ng khi ng ưi dùng gõ l nh có ý ngh a hoàn toàn khác v i ý ngh a c a chúng khi ưc s d ng trong mô t l nh. Hơn th n a, Linux còn cung c p cho ng ưi dùng cách th c s d ng phím hoàn thành n t tên file (tên th ư m c) trong l nh. Ví d , khi chúng ta gõ dòng l nh # ls /u local b thì nó c ng t ươ ng ươ ng nh ư gõ dòng l nh (và ây chính là n i dung xu t hi n t i d u nh c shell): # ls /usr/local/bin vi iu ki n trong th ư m c /usr ch có th ư m c local ưc b t u b i ch "l" và trong th ư mc local c ng ch có th ư m c bin ưc b t u b i ch "b". Trong tr ưng h p n u nh ư m t kí t ch ưa xác nh, ng ưi dùng c n gõ thêm kí t ti p theo trong tên file (tên th ư m c) và nh n phím hoàn thành dòng l nh. 1.3.4. Ti p n i dòng l nh Nh ư ã l ưu ý trên ây, m t dòng l nh có th g m m t ho c m t s l nh, m t khác tham s c a l nh có th là r t dài không th trong khuôn kh ca m t dòng v n b n ưc. Khi gõ lnh, n u dòng l nh quá dài, Linux cho phép ng t dòng l nh xu ng dòng d ưi b ng cách thêm kí t báo hi u chuy n dòng "\" t i cu i dòng; trong tr ưng h p ó, kí t "\" ph i là ký t cu i cùng thu c dòng l nh tr ưc. Ví d , # cd vsd\ thumuc thì dòng th hai là ph n ti p theo c a dòng th nh t và k t h p c hai dòng này th c ch t là mt dòng l nh Linux. 2 1
  22. 1.4. Trang Man Chúng ta có th nói r ng Linux là m t h iu hành r t ph c t p v i hàng nghìn l nh và mi l nh l i có th có t i vài ho c vài ch c tình hu ng s d ng do chúng cho phép có nhi u tùy ch n l nh. thu c h t ưc n i dung t t c các l nh c a Linux là m t iu h t s c khó kh n, có th nói là không th . Linux cho phép ng ưi dùng s d ng cách th c g i trang Man có ưc các thông tin y gi i thi u n i dung các l nh. D ưi ây là m t s n i dung v cách th c s d ng trang Man. "Man" là t vi t t t c a "manual", ưc coi là tài li u tr c tuy n trong Linux ã l ưu tr toàn b các l nh có s n v i các thông tin tham kh o khá y cho phép ng ưi dùng có th m ra nh n ưc tr giúp. m trang Man c a m t l nh, chúng ta s d ng l nh man c a Linux và gõ: # man Ni dung c a trang Man tuy không ph i là quá khó hi u, song hi u h t ưc nó c ng òi h i không ít th i gian. Tuy v y, n u quên n i dung m t l nh nào ó thì cách t t nh t là hãy s d ng trang Man. Cu trúc chung c a m t trang Man nh ư sau: COMMAND(1) Linux Programmer's Manual COMMAND(1) NAME tên l nh - khái quát tác d ng c a l nh SYNOPSIS cú pháp c a l nh DESCRIPTION mô t c th h ơn v tác d ng c a l nh OPTIONS li t kê các tùy ch n l nh và tác d ng c a chúng FILES li t kê các file mà l nh s d ng ho c tham chi u n SEE ALSO li t kê các l nh, các tài li u, , có liên quan n l nh REPORTING BUGS a ch liên h n u g p l i khi s d ng l nh AUTHOR tên tác gi c a l nh Ng ưi dùng th m chí không nh chính xác tên l nh. Linux còn có m t cách th c h tr ng ưi dùng có th nhanh chóng tìm ưc l nh c n s d ng trong tr ưng h p ch nh nh ng ch cái u c a tên l nh, ó là cách th c s d ng phím TAB. Trong cách th c này, ng ưi dùng ch c n nh m t s ch cái u tiên c a tên lnh. Có th trình bày cách th c ó theo cú pháp sau ây: # Trong ó dãy-ch -cái có t m t n m t vài ch cái thu c ph n u c a tên l nh. Chú ý rng, các ch cái và hai phím ph i ưc gõ liên ti p nhau. Kt h p cách th c này v i cách th c s d ng l nh man (v i s phong phú v tùy ch n ca l nh man ) nh n ưc m t cách th c khá tuy t v i tr giúp ng ưi dùng. 2 2
  23. Ví d , mu n s d ng l nh history nh ưng l i không nh chính xác tên l nh ưc vi t ra nh ư th nào mà ch nh nó ưc b t u b i ch h, hãy gõ ch h ó t i d u nh c shell và nh n phím TAB hai l n, s th y m t danh sách các l nh có ch cái u tiên là h ưc hi n ra trên màn hình: # h h2ph hboot help hexdump history hostname htdigest h2xs hcc helpme hf77 hltest hoststat htpasswd halt hcp helptool hinotes host hpcdtoppm hash head hexbin hipstopgm hostid hpftodit Nh ư v y, t t c các l nh có tên b t u v i ch h ưc hi n th trên màn hình và cho phép ng ưi dùng có th xác nh ưc l nh c n quan tâm. Tr ưng hp t n t i m t s l ưng l n các l nh có cùng ch cái u tiên mà ng ưi dùng ã gõ, thay vì hi n h t m i tên l nh, h iu hành cho ra m t thông báo h i ng ưi dùng có mu n xem toàn b các l nh ó hay không. Ng ưi dùng áp ng thông báo ó tu theo ý mu n ca mình. Ví d , khi ng ưi dùng gõ n i dung nh ư sau: # p thì h th ng áp l i là: There are 289 possibilities. Do you really wish to see them all? (y or n) Ng ưi dùng gõ phím "y" n u mu n xem, ho c gõ "n" n u b qua. Ng ưi dùng có th gõ nhi u h ơn m t ch cái u tên l nh và iu ó cho phép gi m bt s tên l nh mà h th ng tìm ưc và hi n th . Ch ng h n, khi bi t hai ch cái u là "pw" và ng ưi dùng gõ: # pw thì h th ng s hi n ra danh sách các tên l nh b t u b i "pw": pwck pwconv pwd pwdb_chkpwd pwunconv Trong tr ưng h p này, ng ưi dùng s nh n bi t ưc tên l nh ang c n tìm thu n ti n hơn. 2 3
  24. CH Ơ NG 2. THAO TÁC V I H TH NG 2.1. Quá trình kh i ng Linux Trong ph n này, chúng ta xem xét s ơ b quá trình kh i ng h iu hành Linux. Mt trong nh ng cách th c kh i ng Linux ph bi n nh t là cách th c do ch ươ ng trình LILO (LInux LOader) th c hi n. Ch ươ ng trình LILO ưc n p lên a c a máy tính khi cài t h iu hành Linux. LILO ưc n p vào Master Boot Record c a a c ng hoc vào Boot Sector t i phân vùng kh i ng (trên a c ng ho c a m m). Gi s máy tính c a chúng ta ã cài t Linux và s d ng LILO kh i ng h iu hành. LILO thích h p v i vi c trên máy tính ưc cài t m t s h iu hành khác nhau và theo ó, LILO còn cho phép ng ưi dùng ch n l a h iu hành kh i ng. Giai on kh i ng Linux tùy thu c vào c u hình LILO ã ưc l a ch n trong quá trình cài t Linux. Trong tình hu ng ơ n gi n nh t, Linux ưc kh i ng t a c ng hay a m m kh i ng. Quá trình kh i ng Linux có th ưc mô t theo s ơ sau: LILO Nhân init T heo sơ này, LILO ưc t i vào máy th c hi n mà vi c u tiên là ư a nhân vào b nh trong và sau ó t i ch ươ ng trình init th c hi n vi c kh i ng Linux. Nu cài t nhi u phiên b n Linux hay cài Linux cùng các h iu hành khác (trong các tr ưng h p nh ư th , m i phiên b n Linux ho c h iu hành khác ưc gán nhãn - label phân bi t), thì thông báo sau ây ưc LILO ư a ra: LILO boot: cho phép nh p xâu là nhãn c a m t trong nh ng h iu hành hi n có trên máy kh i ng nó. T i th i im ó, ng ưi dùng c n gõ nhãn c a h iu hành c n kh i ng vào, ví d, gõ LILO boot: linux nu ch n kh i ng làm vi c trong Linux, ho c gõ LILO boot: dos nu ch n kh i ng làm vi c trong MS-DOS, Windows.  Lu ý:  Nu chúng ta không nh ưc nhãn c a h iu hành có trong máy ch n, hãy gõ phím ưc LILO cho bi t nhãn c a các h iu hành. LILO boot: s hi n ra danh sách các nhãn (ví d nh ư): linux dos và hi n l i thông báo nói trên ta gõ nhãn c a h iu hành.  LILO c ng cho phép t ch ch n ng m nh h iu hành kh i ng mà theo ó n u chúng ta không có tác ng gì sau thông báo ch n h iu hành thì LILO s t ng ch n h iu hành ng m nh ra kh i ng. N u chúng ta không can thi p vào các file t ươ ng ng c a trình LILO thì h iu hành Linux là h iu hành ng m nh. Gi s Linux ã ưc ch n kh i ng. Khi init th c hi n, chúng ta s th y m t chu i (kho ng vài ch c) dòng thông báo cho bi t h th ng ph n c ng ưc Linux nh n di n và 2 4
  25. thi t l p c u hình cùng v i t t c trình iu khi n ph n m m ưc n p khi kh i ng. Quá trình init là quá trình kh i th y, là cha c a m i quá trình. T i th i im kh i ng h th ng init th c hi n vai trò u tiên c a mình là ch y ch ươ ng trình shell trong file /etc/inittab và các dòng thông báo trên ây chính là k t qu c a vi c ch y ch ươ ng trình shell ó. Sau khi ch ươ ng trình shell trên ưc th c hi n xong, bt u quá trình ng ưi dùng ng nh p (login) vào h th ng. 2.2. Th t c ng nh p và các l nh thoát kh i h th ng 2.2.1. ng nh p Sau khi h th ng Linux (l y Red Hat 6.2 làm ví d ) kh i ng xong, trên màn hình xu t hi n nh ng dòng sau: Ret Hat Linux release 6.2 (Zoot) Kernel 2.2.14-5.0 on an i686 May1 login: Dòng th nh t và dòng th hai cho bi t lo i phiên b n Linux, phiên b n c a nhân và ng ta th thay i các ng hi n nh ư nh y trên ây b ng cách s a i file /etc/rc.d/rc.local nh ư sau: Thay n ch ươ ng nh echo "" > /etc/issue echo "$R" >> /etc/issue echo "Kernel $(uname -r) on $a $SMP$(uname -m)" >> /etc/issue cp -f /etc/issue /etc/issue.net echo >> /etc/issue nh echo "" > /etc/issue echo "Thông báo mun hi n " >> /etc/issue sa nh: echo "" > /etc/issue echo "This is my computer" >> /etc/issue trên n nh ng nh p ng sau: This is my computer hostname login: ki n trúc ph n c ng có trên máy, dòng th ba là d u nh c ng nh p ng ưi dùng th c hi n vi c ng nh p. Chú ý là các dòng trên ây có th thay i chút ít tùy thu c vào phiên bn Linux. Ti d u nh c ng nh p, hãy nh p tên ng ưi dùng (còn g i là tên ng nh p): ây là tên kí hi u ã cung c p cho Linux nh m nh n di n m t ng ưi dùng c th . Tên ng nh p ng vi m i ng ưi dùng trên h th ng là duy nh t, m theo m t m t khu ng nh p. May1 login: root Password: 2 5
  26. Khi nh p xong tên ng nh p, h th ng s hi n ra thông báo h i m t kh u và di chuy n con tr xu ng dòng ti p theo ng ưi dùng nh p m t kh u. M t kh u khi ưc nh p s không hi n th trên màn hình và chính iu ó giúp tránh kh i s "nhòm ngó" c a ng ưi khác. Nu nh p sai tên ng nh p ho c m t kh u, h th ng s ư a ra m t thông báo l i: May1 login: root Password: Login incorrect Máy1 login: Nu ng nh p thành công, ng ưi dùng s nhìn th y m t s thông tin v h th ng, m t vài tin t c cho ng ưi dùng Lúc ó, d u nh c shell xu t hi n ng ưi dùng b t u phiên làm vi c c a mình. May1 login: root Password: Last login: Fri Oct 27 14:16:09 on tty2 Root[may1 /root]# Dãy kí t trong dòng cu i cùng chính là du nh c shell . Trong d u nh c này, root là tên ng ưi dùng ng nh p, may1 là tên máy và /root tên th ư m c hi n th i (vì ây là ng ưi dùng root). Khi d u nh c shell xu t hi n trên màn hình thì iu ó có ngh a là h iu hành ã s n sàng ti p nh n m t yêu cu m i c a ng ưi dùng. Du nh c shell có th khác v i trình bày trên ây (M c 2.7 cung c p cách thay i d u nh c shell), nh ưng có th hi u nó là chu i kí t b t u m t dòng có ch a tr chu t và luôn xu t hi n m i khi h iu hành hoàn thành m t công vi c nào ó. 2.2.2. Ra kh i h th ng k t thúc phiên làm vi c ng ưi dùng c n th c hi n th t c ra kh i h th ng. Có r t nhi u cách cho phép thoát kh i h th ng, ây chúng ta xem xét m t s cách thông d ng nh t.  Cách ơ n gi n nh t m b o thoát kh i h th ng úng n là nh n t hp phím CTRL +ALT +DEL . Khi ó, trên màn hình s hi n th m t s thông báo ca h th ng và cu i cùng là thông báo thoát tr ưc khi t t máy. C n chú ý là: N u ang làm vi c trong môi tr ưng X Window System, hãy nh n t hp phím CTRL +ALT +BACKSPACE tr ưc r i sau ó hãy nh n CTRL +ALT +DEL .  Cách th hai là s d ng l nh shutdown v i cú pháp nh ư sau: shutdown [tùy-ch n] [cnh-báo] Lnh này cho phép d ng t t c các d ch v ang ch y trên h th ng. Các tùy-ch n c a l nh này nh ư sau:  -k : không th c s shutdown mà ch c nh báo.  -r : kh i ng l i ngay sau khi shutdown.  -h : tt máy th c s sau khi shutdown.  -f : kh i ng l i nhanh và b qua vi c ki m tra a. 2 6
  27.  -F : kh i ng l i và th c hi n vi c ki m tra a.  -c : b qua không ch y l nh shutdown. Trong tùy ch n này không th ư a ra tham s th i gian nh ưng có th ư a ra thông báo gi i thích trên dòng l nh g i cho t t c các ng ưi dùng.  -t s-giây : qui nh init(8) ch kho ng th i gian s -giây t m d ng gi a quá trình g i c nh báo và tín hi u kill, tr ưc khi chuy n sang m t m c ch y khác. và hai tham s v trí còn l i:  time : t th i im shutdown. Tham s time có hai d ng. D ng tuy t i là gg:pp (gg: gi trong ngày, pp: phút) thì h th ng s shutdown khi ng h máy trùng v i giá tr tham s . D ng tươ ng i là + là n sau th i kho ng phút s shutdown; coi shutdown l p t c t ươ ng ươ ng v i +0.  cnh-báo : thông báo g i n t t c ng ưi dùng trên h th ng. Khi l nh th c hi n t t c các máy ng ưi dùng u nh n ưc c nh báo. Ví d , khi ng ưi dùng gõ l nh: shutdown +1 Sau mot phut nua he thong se shutdown! trên màn hình c a t t c ng ưi dùng xu t hi n thông báo "Sau mot phut nua he thong se shutdown! " và sau m t phút thì h th ng shutdown th c s .  Cách th ba là s d ng lnh halt vi cú pháp nh ư sau: halt [tùy-ch n] Lnh này t t h n máy. Các tu ch n c a l nh halt :  -w : không th c s t t máy nh ưng v n ghi các thông tin lên file /var/log/wtmp ( ây là file l ưu tr danh sách các ng ưi dùng ng nh p thành công vào h th ng).  -d : không ghi thông tin lên file /var/log/wtmp. Tùy ch n -n có ý ngh a t ươ ng t song không ti n hành vi c ng b hóa.  -f : th c hi n t t máy ngay mà không th c hi n l n l ưt vi c d ng các d ch v có trên h th ng.  -i : ch th c hi n d ng t t c các d ch v m ng tr ưc khi t t máy. Chúng ta c n nh r ng, n u thoát kh i h th ng không úng cách thì d n n h u qu là mt s file hay toàn b h th ng file có th b h ư h ng.  Lu ý:  Có th s d ng l nh exit tr v d u nh c ng nh p ho c k t thúc phiên làm vi c b ng l nh logout . 2.2.3. Kh i ng l i h th ng Ngoài vi c thoát kh i h th ng nh các cách th c trên ây ( n t hp ba phím Ctrl+Alt+Del, dùng l nh shutdown ho c l nh halt ), khi c n thi t (ch ng h n, g p ph i tình hu ng m t trình ng d ng ch y qu n) có th kh i ng l i h th ng nh l nh reboot . Cú pháp l nh reboot : reboot [tùy-ch n] Lnh này cho phép kh i ng l i h th ng. Nói chung thì ch siêu ng ưi dùng m i ưc phép s d ng l nh reboot , tuy nhiên, n u h th ng ch có duy nh t m t ng ưi dùng ang 2 7
  28. làm vi c thì l nh reboot v n ưc th c hi n song h th ng òi h i vi c xác nh n m t kh u. Các tùy ch n c a l nh reboot nh ư sau là -w, -d, -n, -f, -i có ý ngh a t ươ ng t nh ư trong lnh halt . 2.2.4. Kh i ng vào ch ho Linux cho phép nhi u ch kh i ng, nh ng ch này ưc li t kê trong file /etc/inittab. Dưi ây là n i dung c a file này: # inittab This file describes how the INIT process should set up # the system in a certain run-level. # # Author: Miquel van Smoorenburg, # Modified for RHS Linux by Marc Ewing and Donnie Barnes # # Default runlevel. The runlevels used by RHS are: # 0 - halt (Do NOT set initdefault to this) - ây là ch d ng ho t ng c a h th ng # 1 - Single user mode - ây là ch ơ n ng i dùng, ta có th ng nh p vào ch này trong tr ng h p mu n kh c ph c m t s s c . # 2 - Multiuser, without NFS (The same as 3, if you do not have networking) - ây là ch a ng i dùng, giao di n text, không h tr k t n i mng. # 3 - Full multiuser mode – Ch a ng i dùng, giao di n text # 4 – unused – Không s d ng ch này # 5 - X11 - ây là ch a ng i dùng, giao di n ho # 6 - reboot (Do NOT set initdefault to this) – Ch kh i ng l i máy tính # id:3:initdefault: - ây là ch ng m nh h th ng s s d ng kh i ng # System initialization. si::sysinit:/etc/rc.d/rc.sysinit l0:0:wait:/etc/rc.d/rc 0 l0:0:wait:/etc/rc.d/rc 0 l1:1:wait:/etc/rc.d/rc 1 l2:2:wait:/etc/rc.d/rc 2 l3:3:wait:/etc/rc.d/rc 3 l4:4:wait:/etc/rc.d/rc 4 l5:5:wait:/etc/rc.d/rc 5 l6:6:wait:/etc/rc.d/rc 6 # Things to run in every runlevel. ud::once:/sbin/update # Trap CTRL-ALT-DELETE ca::ctrlaltdel:/sbin/shutdown -t3 -r now #ca::ctrlaltdel:/bin/echo "You can't do that" # When our UPS tells us power has failed, assume we have a few minutes 2 8
  29. # of power left. Schedule a shutdown for 2 minutes from now. # This does, of course, assume you have powerd installed and your # UPS connected and working correctly. pf::powerfail:/sbin/shutdown -f -h +2 "Power Failure; System Shutting Down" # If power was restored before the shutdown kicked in, cancel it. pr:12345:powerokwait:/sbin/shutdown -c "Power Restored; Shutdown Cancelled" # Run gettys in standard runlevels 1:2345:respawn:/sbin/mingetty tty1 2:2345:respawn:/sbin/mingetty tty2 #3:2345:respawn:/sbin/mingetty tty3 #4:2345:respawn:/sbin/mingetty tty4 #5:2345:respawn:/sbin/mingetty tty5 #6:2345:respawn:/sbin/mingetty tty6 # Run xdm in runlevel 5 # xdm is now a separate service x:5:respawn:/etc/X11/prefdm –nodaemon Trong ó ch kh i ng s 3 là ch kh i ng vào ch Text, và ch 5 là kh ng vào ch ho . Nh ư v y cho máy tính kh i ng vào ch ho ta s a li dòng c u hình id:3:initdefault: thành id:5:initdefault: Trong Linux có m t s lo i giao di n ho do m t s t ch c vi t ra. Hai t ch c n i ti ng là GNOME ( và KDE ( ) ã vi t ra các giao di n ho mang tên trùng v i t ch c ó là GNOME và KDE. Cng tu vào vi c ưc cài giao di n GNOME hay KDE mà khi kh i ng vào ch ho , máy tính có các giao di n t ươ ng ng. Trên hình trên là giao di n GNOME mà khi kh i ng vào ch ho . M t khác, các giao di n này liên t c ưc phát tri n, do ó 2 9
  30. mi phiên b n s có s khác nhau. Trong giao di n ng nh p ha, h th ng hi n th h p tho i cho phép ng ưi dùng nh p vào tên tài kho n; sau khi ng ưi dùng nh p tên tài kho n ca mình, h th ng h i ti p m t kh u. N u c tên tài kho n và m t kh u u chính xác thì ng ưi dùng ưc phép vào h th ng và m t giao di n làm vi c m i s hi n ra nh ư hình dưi. 2.3. L nh thay i m t kh u Mt kh u là v n r t quan tr ng trong các h th ng a ng ưi dùng và m b o tính bo m t t i a, c n thi t ph i chú ý t i vi c thay i m t kh u. Th m chí trong tr ưng h p h th ng ch có m t ng ưi s d ng thì vi c thay i m t kh u v n là r t c n thi t. Mt kh u là m t xâu kí t i m v i tên ng ưi dùng m b o cho phép m t ng ưi vào làm vi c trong h th ng v i quy n h n ã ưc quy nh. Trong quá trình ng nh p, ng ưi dùng ph i gõ úng tên và m t kh u, trong ó gõ m t kh u là công vi c b t bu c ph i th c hi n. Tên ng ưi dùng có th ưc cô ng khai song m t kh u thì tuy t i ph i ưc m bo bí m t. · Vi c ng ký tên và m t kh u c a siêu ng ưi dùng ưc ti n hành trong quá trình kh i to h iu hành Linux. · Vi c ng ký tên và m t kh u c a m t ng ưi dùng thông th ưng ưc ti n hành khi mt ng ưi dùng m i ng ký tham gia s d ng h th ng. Thông th ưng siêu ng ưi dùng cung c p tên và m t kh u cho ng ưi dùng m i (có th do ng ưi dùng ngh ) và dùng l nh adduser (ho c l nh useradd ) ng ký tên và m t kh u ó v i h 3 0
  31. th ng. Sau ó, ng ưi dùng m i nh t thi t c n thay i m t kh u b o m vi c gi bí m t cá nhân tuy t i. Lnh passwd cho phép thay i m t kh u ng v i tên ng nh p ng ưi dùng. Cú pháp lnh passwd : passwd [tùy-ch n] [tên-ng ưi-dùng] vi các tùy ch n nh ư sau:  -k : thay i m t kh u ng ưi dùng. L nh òi h i ph i xác nh n quy n b ng vi c gõ m t kh u ang dùng tr ưc khi thay i m t kh u. Cho phép ng ưi dùng thay i m t kh u c a mình c lp v i siêu ng ưi dùng.  -f : t m t kh u m i cho ng ưi dùng song không c n tin hành vi c ki m tra m t kh u ang dùng. Ch siêu ng ưi dùng m i có quy n s d ng tham s này.  -l : khóa m t tài kho n ng ưi dùng. Vi c khóa tài kho n th c ch t là vi c d ch b n mã hóa m t kh u thành m t xâu ký t vô ngh a b t u b i kí hi u "!". Ch siêu ng ưi dùng m i có quy n s d ng tham s này.  -stdin : vi c nh p m t kh u ng ưi dùng ch ưc ti n hành t thi t b vào chu n không th ti n hành t ưng d n (pipe). N u không có tham s này cho phép nh p m t kh u c t thi t b vào chu n ho c t ưng d n.  -u : m khóa (tháo b khóa) m t tài kho n ( i ng u v i tham s -l). Ch siêu ng ưi dùng m i có quy n s d ng tham s này.  -d : xóa b m t kh u c a ng ưi dùng. Ch siêu ng ưi dùng m i có quy n s d ng tham s này.  -S : hi n th thông tin ng n g n v tr ng thái m t kh u c a ng ưi dùng ưc ư a ra. Ch siêu ng ưi dùng m i có quy n s d ng tham s này. Nu tên-ng ưi-dùng không có trong l nh thì ng m nh là chính ng ưi dùng ã gõ l nh này. Ví d khi ng ưi dùng user1 gõ l nh: # passwd user1 h th ng thông báo: Changing password for user user1 New UNIX password: ng ưi dùng nh p m t kh u m i c a mình vào. Sau khi ng ưi dùng gõ xong m t kh u mi, h th ng cho ra thông báo: BAD PASSWORD: it is derived from your password entry Retype new UNIX password: ng ưi dùng kh ng nh m t l n n a m t kh u v a gõ dòng trên (nh ph i gõ l i úng h t nh ư l n tr ưc). Ch nên quá phân vân vì thông báo dòng phía trên vì h u h t khi gõ m t kh u m i luôn g p nh ng thông báo ki u i lo i nh ư v y, ch ng h n nh ư: BAD PASSWORD: it is too simplistic/systematic Và sau khi chúng ta kh ng nh l i m t kh u m i, h th ng cho ra thông báo: Passwd: all authentication tokens updated successfully. cho bi t vi c thay i m t kh u thành công và d u nh c shell l i hi n ra. Khi siêu ng ưi dùng gõ l nh: 3 1
  32. # passwd -S root s hi n ra thông báo Changing password for user root Password set, MD5 encryption cho bi t thu t toán mã hóa m t kh u mà Linux s d ng là m t thu t toán hàm b m có tên là MD5.  Lu ý:  Có m t l i khuyên i v i ng ưi dùng là nên ch n m t kh u không quá ơ n gi n quá (nh m tránh ng ưi khác d dò tìm ra) ho c không quá ph c t p (tránh khó kh n cho chính ng ưi dùng khi ph i ghi nh và gõ m t kh u). c bi t không nên s dng h tên, ngày sinh, s in tho i c a b n thân ho c ng ưi thân làm m t kh u vì ây là m t trong nh ng tr ưng h p m t kh u ơ n gi n nh t.  Nu thông báo m t kh u quá ơ n gi n ưc l p i l p l i m t vài l n và không có thông báo m t kh u m i thành công ã quay v d u nh c shell thì nên gõ li l nh và ch n m t m t kh u m i ph c t p h ơn ôi chút. 2.4. L nh xem, thi t t ngày, gi hi n t i và xem l ch trên h th ng 2.4.1 L nh xem, thi t t ngày, gi Lnh date cho phép có th xem ho c thi t t l i ngày gi trên h th ng. Cú pháp c a l nh g m hai d ng, d ng xem thông tin v ngày, gi : date [tùy-ch n] [+nh-dng] và d ng thi t t l i ngày gi cho h th ng: date [tùy-ch n] [MMDDhhmm[ [CC[YY] ]-ss]] Các tùy-ch n nh ư sau:  -d, date=xâu-vn-bn : hi n th th i gian d ưi d ng xâu-vn-bn, mà không l y "th i gian hi n t i c a h th ng” nh ư theo ng m nh; xâu-vn-bn ưc t trong hai d u nháy ơ n ho c hai d u nháy kép.  -f, file=file-vn-bn : gi ng nh ư m t tham s date nh ưng ng v i nhi u ngày c n xem: mi dòng c a file-vn-bn có vai trò nh ư m t xâu-vn-bn trong tr ưng h p tham s date .  -I, iso-8601[=mô-t] : hi n th ngày gi theo chu n ISO-8601 (ví d : 2000-11-8).  -I t ươ ng ươ ng v i tham s iso-8601='date'  Vi iso-8601 : nu mô-t là ' date' (ho c không có) thì hi n th ngày, n u mô-t là 'hours ' hi n th ngày+gi , n u mô-t là 'minutes' : ngày+gi +phút; n u mô-t là 'seconds' : ngày + gi + phút + giây .  -r, reference= file : hi n th th i gian s a i file ln g n ây nh t.  -R, rfc-822 : hi n th ngày theo RFC-822 (ví d : Wed, 8 Nov 2000 09:21:46 -0500).  -s, set=xâu-vn-bn : thi t t l i th i gian theo ki u xâu-vn-bn.  -u, utc, universal : hi n th ho c thi t t th i gian theo UTC (ví d : Wed Nov 8 14:29:12 UTC 2000).  help : hi n th thông tin tr giúp và thoát. 3 2
  33. Trong d ng l nh date cho xem thông tin ngày, gi thì tham s nh-dng iu khi n cách hi n th thông tin k t qu . nh-dng là dãy có t m t n nhi u c p g m hai kí t , trong m i c p kí t u tiên là % còn kí t th hai mô t nh d ng. Do s l ưng nh d ng là r t nhi u vì v y chúng ta ch xem xét m t s nh d ng in hình ( xem y các nh d ng, s d ng l nh man date ). Dưi ây là m t s nh d ng in hình:  %% : Hi n ra chính kí t %.  %a : Hi n ra thông tin tên ngày trong tu n vi t t t theo ngôn ng b n a.  %A : Hi n ra thông tin tên ngày trong tu n vi t y theo ngôn ng b n a.  %b : Hi n ra thông tin tên tháng vi t t t theo ngôn ng b n a.  %B : Hi n ra thông tin tên tháng vi t y theo ngôn ng b n a. Trong d ng l nh date cho phép thi t t l i ngày gi cho h th ng thì tham s [MMDDhhmm[ [CC[YY] [.ss]] mô t ngày, gi m i c n thi t t, trong ó: MM: hai s ch tháng, DD: hai s ch ngày trong tháng, hh: hai s ch gi trong ngày, mm: hai s ch phút, CC: hai s ch th k , YY: hai s ch n m trong th k . Các dòng ngay d ưi ây trình bày m t s ví d s d ng l nh date , m i ví d ưc cho tươ ng ng v i m t c p hai dòng, trong ó dòng trên mô t l nh ưc gõ còn dòng d ưi là thông báo c a Linux. # date Wed Jan 3 23:58:50 ICT 2001 # date -d='01/01/2000' Sat Jan 1 00:00:00 ICT 2000 # date -iso-8601='seconds' 2000-12-01T00:36:41-0500 # date -d='01/01/2001' Mon Jan 1 00:00:00 ICT 2001 # date 010323502001.50 Wed Jan 3 23:50:50 ICT 2001 # date +%a%A Wed Wednesday # date +%a%A%b%B Wed Wednesday Jan January # date +%D%%%j 01/05/01%005 2.4.2. L nh xem l ch Lnh cal cho phép xem l ch trên h th ng v i cú pháp nh ư sau: cal [tùy-ch n] [ [ ]] 3 3
  34. nu không có tham s , l ch c a tháng hi n th i s ưc hi n th . Các tu -ch n là:  -m : ch n ngày Th hai là ngày u tiên trong tu n (m c nh là ngày Ch nh t).  -j : hi n th s ngày trong tháng d ưi d ng s ngày trong n m (ví d : ngày 1/11/2000 s ưc hi n th d ưi d ng là ngày th 306 trong n m 2000, s ngày b t u ưc tính t ngày 1/1).  -y : hi n th l ch c a n m hi n th i. Ví d : # cal 1 2001 January 2001 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 Khi nh p dòng l nh trên, trên màn hình s hi n th l ch c a tháng 1 n m 2001, m c nh ch n ngày ch nh t là ngày b t u c a tu n. D ưi ây là ví d hi n th s ngày trong tháng 3 d ưi d ng s ngày trong n m 2001. # cal -j 3 2001 March 2001 Su Mo Tu We Th Fr Sa 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 2.5. Xem thông tin h th ng Lnh uname cho phép xem thông tin h th ng v i cú pháp là: uname [tùy-ch n] Nu không có tu ch n thì hi n tên h iu hành. Lnh có các tùy ch n là:  -a, all : hi n t t c các thông tin.  -m, machine : ki u ki n trúc c a b x lý (i386, i486, i586, i686 ).  -n, nodename : hi n tên c a máy.  -r, release : hi n nhân c a h iu hành.  -s, sysname : hi n tên h iu hành.  -p, processor : hi n ki u b x lý c a máy ch . Ví d , n u gõ l nh # uname -a 3 4
  35. thì màn hình s hi n ra nh ư sau: Linux linuxsrv.linuxvn.net 2.2.14-5.0 #1 Tue Mar 7 21:07:39 EST 2000 i686 unknown # Thông tin hi n ra có t t c 6 tr ưng là: Tên h iu hành: Linux Tên máy: linuxsrv.linuxvn.net Tên nhân c a h iu hành: 2.2.14-5.0 Ngày s n xu t: #1 Tue Mar 7 21:07:39 EST 2000 Ki u ki n trúc b x lý: i686 Ki u b x lý c a máy ch : unknown Ví d n u gõ l nh: # uname -spr thì màn hình s hi n ra nh ư sau: Linux 2.2.14-5.0 unknown là tên h iu hành, tên nhân và ki u b x lý c a máy ch .  Lu ý:  Chúng ta làm rõ thêm n i dung l ưu ý trong mc 1.3.1 v tham s khóa k t hp: Trong ví d trên ây khi vi t tham s -spr là yêu c u th c hi n l nh usame vi ngh a k t h p tình hu ng theo c ba tham s khóa -s, -p, -r. Chú ý r ng, không th vi t -s -p -r thay cho -spr ưc. Nh ư ã l ưu ý mc 1.3.1 trong nhi u l nh c a Linux cho phép vi t k t h p các tham s khóa theo cách th c nh ư trên mi n là các tham s ó không xung kh c v i nhau. 2.6. Thay i n i dung d u nh c shell Trong Linux có hai lo i d u nh c: d u nh c c p m t (d u nh c shell) xu t hi n khi nh p lnh và d u nh c c p hai (d u nh c nh p li u) xu t hi n khi l nh c n có d li u ưc nh p t bàn phím và t ươ ng ng v i hai bi n nh c tên là PS1 và PS2 . PS1 là bi n h th ng t ươ ng ng v i d u nh c c p 1: Giá tr c a PS1 chính là n i dung hi n th c a d u nh c shell. nh n bi t thông tin h th ng hi n t i, m t nhu c u t ra là c n thay i giá tr c a các bi n h th ng PS1 và PS2 . Linux cho phép thay i giá tr c a bi n h th ng PS1 b ng l nh gán tr m i cho nó. L nh này có d ng: # PS1=' ' Nm (5) kí t u tiên c a l nh gán trên ây ( PS1 =' ) ph i ưc vi t liên ti p nhau. Dãy kí t n m gi a c p hai d u nháy ơ n (có th s d ng c p hai d u kép ") và không ưc phép ch a d u nháy. Dãy kí t này bao g m các c p kí t iu khi n và các kí t khác, cho phép có th có d u cách. C p kí t iu khi n g m hai kí t , kí t u tiên là d u s xuôi "\" còn kí t th hai nh n m t trong các tr ưng h p li t kê trong b ng d ưi ây. B ng d ưi ây gi i thi u mt s c p ký t iu khi n có th ưc s d ng khi mu n thay i d u nh c lnh: Cp ký t iu khi n Ý ngh a 3 5
  36. \! Hi n th th t c a l nh trong l ch s \# Hi n th th t c a l nh \$ Hi n th d u ô-la ($). i v i siêu ng ưi dùng (super user), thì hi n th d u s hi u (#) \\ Hi n th d u s (\) \d Hi n th ngày hi n t i \h Hi n th tên máy (hostname) \n Ký hi u xu ng dòng \s Hi n th tên h shell \t Hi n th gi hi n t i \u Hi n th tên ng ưi dùng \W Hi n th tên th c s c a th ư m c hi n th i (ví d th ư mc hi n th i là /mnt/hda1 thì tên th c s c a nó là /hda1) \w Hi n th tên y c a th ư m c hi n th i (ví d /mnt/hda1 ) Ví d , hi n th i d u nh c shell có d ng: root[may1 /hda1]# Sau khi gõ l nh root@may1 /hda1]# PS1='[\h@\u \w : \d]\$' thì d u nh c shell ưc thay i là: [may1@root /mnt/hda1 : Fri Oct 27 ]# ngoài vi c i th t gi a tên ng ưi dùng và máy còn cho chúng ta bi t thêm v ngày h th ng qu n lý và tên y c a th ư m c hi n th i. Linux cung c p cách th c hoàn toàn t ươ ng t nh ư i v i bi n PS1 thay i giá tr bi n h th ng PS2 t ươ ng ng v i d u nh c c p hai. 2.7. L nh g i ngôn ng tính toán s h c Linux cung c p m t ngôn ng tính toán v i chính xác tùy ý thông qua l nh bc . Khi yêu c u l nh này, ng ưi dùng ưc cung c p m t ngôn ng tính toán (và cho phép l p trình tính toán có d ng ngôn ng l p trình C) ho t ng theo thông d ch. Trong ngôn ng l p trình ưc cung c p (t m th i g i là ngôn ng bc ), tn t i r t nhi u công c h tr tính toán và l p trình tính toán: ki u phép toán s h c phong phú, phép toán so sánh, m t s hàm chu n, bi n chu n, c u trúc iu khi n, cách th c nh ngh a hàm, cách th c thay i chính xác, t l i chú thích Ch c n s d ng m t ph n nh tác ng c a l nh bc , chúng ta ã có m t "máy tính s b m tay" hi u qu . Cú pháp l nh bc : bc [tùy-ch n] [file ] vi các tu ch n sau ây:  -l, mathlib : th c hi n phép tính theo chu n th ư vi n toán h c (ví d : 5/5=1.00000000000000000000).  -w, warn : khi th c hi n phép tính không tuân theo chu n POSIX (POSIX là m t chu n trong Linux) thì m t c nh báo xu t hi n. 3 6
  37.  -s, standard : th c hi n phép tính chính xác theo chu n c a ngôn ng POSIX bc.  -q, quiet : không hi n ra l i gi i thi u v ph n m m GNU khi dùng bc. Tham s file là tên file ch a ch ươ ng trình vi t trên ngôn ng bc , khi l nh bc th c hi n s t ng ch y các file ch ươ ng trình này (N u có nhi u tham s thì có ngh a s ch y nhi u ch ươ ng trình liên ti p nhau). Dưi ây là m t ví d s d ng l nh bc d ng ơ n gi n nh t. Khi gõ l nh t i d u nh c: # bc -l màn hình xu t hi n l i gi i thi u v GNU khi dùng bc và ngôn ng bc ưc kích ho t ph c v ng ưi dùng. bc 1.05 Copyright 1991, 1992, 1993, 1994, 1997, 1998 Free Software Foundation, Inc. This is free software with ABSOLUTELY NO WARRANTY. For details type `warranty'. 5^3 125 12+12+78*7-62/4 554.50000000000000000000 a=4 a^a 256 a*78 312 b=45 a*b 180 a/b .08888888888888888888 a%b .00000000000000000040 ở ây * là phép nhân, ^ là phép tính lu th a, / là phép chia l y th ươ ng, % là chia l y ph n dư.  Lu ý:  Ngôn ng l p trình tính toán bc là m t ngôn ng r t m nh có n i dung h t sc phong phú cho nên trong khuôn kh ca tài li u này không th mô t h t các n i dung c a ngôn ng ó ưc. Chúng ta c n s d ng l nh man bc nh n ưc thông tin y v l nh bc và ngôn ng tính toán bc .  Ở ây trình bày s ơ b m t s y u t c ơ b n nh t c a ngôn ng ó ( bt là vi t tt c a bi u th c, b là vi t t t c a bi n): Các phép tính: - bt: l y i; ++ b, b, b ++, b : phép toán t ng, gi m b; các phép toán hai ngôi c ng +, tr -, nhân *, chia /, l y ph n d ư %, l y th a nguyên 3 7
  38. bc ^; gán =; gán sau khi thao tác =; các phép toán so sánh , >=, b ng ==, khác != Phép so sánh cho 1 n u úng, cho 0 n u sai. Bn bi n chu n là scale s l ưng ch s ph n th p phân; last giá tr tính toán cu i cùng; ibase c ơ s h m i v i input và obase là c ơ s h m v i output (ng m nh hai bi n này có giá tr 10). Các hàm chu n sin s (bt); cosin c (bt); arctg a (bt); lôgarit t nhiên l (bt); m c ơ s t nhiên e (bt); hàm Bessel b c nguyên n c a bt là j (n, bt). 3 8
  39. CH Ơ NG 3. H TH NG FILE 3.1 Tng quan v h th ng file 3.1.1. M t s khái ni m Ng ưi dùng ã t ng làm vi c v i h iu hành DOS/Windows thì r t quen bi t v i các khái ni m: file (t p tin), th ư m c, th ư m c hi n th i m b o tính h th ng và thu n ti n cho ng ưi dùng ch ưa t ng làm vi c thành th o v i m t h iu hành nào khác, ch ươ ng này v n gi i thi u v các khái ni m này m t cách s ơ b . Mt i t ưng in hình trong các h iu hành ó là file . File là m t t p h p d li u có t ch c ưc h iu hành qu n lý theo yêu c u c a ng ưi dùng. Cách t ch c d li u trong file thu c v ch c a nó là ng ưi ã t o ra file. File có th là m t v n b n (tr ưng h p c bi t là ch ươ ng trình ngu n trên C, PASCAL, shell script ), m t ch ươ ng trình ngôn ng máy, m t t p h p d li u H iu hành t ch c vi c l ưu tr n i dung file trên các thi t b nh lâu dài (ch ng h n a t ) và m b o các thao tác lên file. Chính vì có h iu hành m b o các ch c n ng liên quan n file nên ng ưi dùng không c n bi t file c a mình l ưu vùng nào trên a t , b ng cách nào c/ghi lên các vùng c a a t mà v n th c hi n ưc yêu c u tìm ki m, x lý lên các file. H iu hành qu n lý file theo tên g i c a file (tên file) và m t s thu c tính liên quan n file. Tr ưc khi gi i thi u m t s n i dung liên quan n tên file và tên th ư m c, chúng ta gi i thi u s ơ b v khái ni m th ư m c. làm vi c ưc v i các file, h iu hành không ch qu n lý n i dung file mà còn ph i qu n lý các thông tin liên quan n các file. Th ư m c (directory) là i t ưng ưc dùng ch a thông tin v các file, hay nói theo m t cách khác, th ư m c ch a các file. Các th ư m c c ng ưc h iu hành qu n lý trên v t d n ngoài và vì v y, theo ngh a này, th ư mc c ng ưc coi là file song trong m t s tr ưng h p phân bi t v i "file" th ư m c, chúng ta dùng thu t ng file thông th ng . Khác v i file thông th ưng, h iu hành l i quan tâm n n i dung c a th ư m c. Mt s n i dung sau ây liên quan n tên file (bao g m c tên th ư m c):  Tên file trong Linux có th dài t i 256 ký t , bao g m các ch cái, ch s , d u gch n i, g ch chân, d u ch m. Tên th ư m c/file trong Linux có th có nhi u h ơn m t du ch m, ví d : This_is.a.VERY_long.filename . N u trong tên file có d u ch m "." thì xâu con c a tên file t d u ch m cu i cùng ưc g i là ph n m r ng c a tên file (ho c file). Ví d , tên file trên ây có ph n m r ng là .filename . Chú ý r ng khái ni m ph n m r ng ây không mang ý ngh a nh ư m t s h iu hành khác (ch ng hn nh ư MS-DOS).  Lu ý:  Chúng ta nên l ưu ý r ng, không ph i ký t nào c ng có ngh a. N u có hai file ch khác nhau ký t cu i cùng, thì i v i Linux, ó là hai file có th trùng tên. Bi l , Linux ch l y 32 hay 64 ký t u tiên trong tên file mà thôi (tùy theo phiên bn Linux), ph n tên file còn l i dành cho ch c a file, Linux theo dõi thông tin, nh ưng th ưng không xem các ký t ng sau ký t th 33 hay 65 là quan tr ng i vi nó.  Xin nh c l i l ưu ý v phân bi t ch hoa và ch th ưng i v i tên th ư m c/file, ví d hai file FILENAME.tar.gz và filename.tar.gz là hai file khác nhau. 3 9
  40.  Nu trong tên th ư m c/file có ch a kho ng tr ng, s ph i t tên th ư m c/file vào trong c p d u nháy kép s d ng th ư m c/file ó. Ví d , t o th ư m c có tên là “My document” ch ng h n, hãy ánh dòng l nh sau: # mkdir "My document"  Mt s ký t sau không ưc s d ng trong tên th ư m c/file: !, *, $, &, #  Khi s d ng ch ươ ng trình mc (Midnight Commander), vi c hi n th tên file s b sung m t kí t theo ngh a: d u "*" cho file kh thi trong Linux, d u "~" cho file sao lưu, d u "." cho file n, d u "@" cho file liên k t Tp h p t t c các file có trong h iu hành ưc g i là h th ng file là m t h th ng th ng nh t. B i chính t cách th c s d ng th ư m c, h th ng file ưc t ch c lôgic theo dng hình cây: H th ng file ưc xu t phát t m t th ư m c g c ( ưc kí hi u là " /") và cho phép t o ra th ư m c con trong m t th ư m c b t k . Thông th ưng, khi kh i t o Linux ã có ngay h th ng file c a nó. Hình 3.1. cho minh h a m t ph n trong cây lôgic c a h th ng file. ch m t file hay m t th ư m c, chúng ta c n ư a ra m t ưng d n, ví d ưng dn xác nh file Xclients trong hình 3.1. chúng ta vi t nh ư sau: /etc/X11/xinit/Xclients ưng d n này cho bi t Xclients n m trong xinit , xinit n m trong X11 , X11 / root bin etc usr home dev peng office52 sh date who X11 src bin user1 user2 tty00 tty01 xinit Xclients Xmodmap nh 3.1. Mt ph n c u c lôgic ng cây a h th ng File nm trong etc và etc n m trong g c /. 4 0
  41. Tên file th ưng là tham s th c s khi gõ l nh và công vi c gõ l nh tr nên r t n ng n i v i ng ưi dùng n u nh ư trong l nh ph i gõ m t ưng d n dài theo d ng trên ( ưc bi t v i tên g i là ng d n tuy t i). Vì v y, Linux (c ng nh ư nhi u h iu hành khác) s d ng khái ni m th m c hi n th i c a m i ng ưi dùng làm vi c trong h th ng. Th ư mc hi n th i là m t th ư m c trong h th ng file mà hi n th i "ng ưi dùng ang ó". Qua th ư m c hi n th i, Linux cho phép ng ưi dùng ch m t file trong l nh ng n g n hơn nhi u. Ví d , n u th ư m c hi n th i là th ư m c xinit thì ch file ã nói, ng ưi dùng ch c n vi t Xclients ho c ./Xclients trong ó kí hi u " ." ch th ư m c hi n th i. ưng d n ưc xác nh qua th ư m c hi n th i ưc g i là ng d n t ơ ng i. Khi m t ng ưi dùng ng nh p vào h th ng, Linux luôn chuy n ng ưi dùng vào th ư mc riêng, và t i th i im ó th ư m c riêng là th ư m c hi n th i c a ng ưi dùng. Th ư mc riêng c a siêu ng ưi dùng là /root , th ư m c riêng c a ng ưi dùng có tên là user1 là /home/user1 Linux cho phép dùng l nh cd chuy n sang th ư m c khác (l y th ư mc khác làm th ư m c hi n th i). Hai d u ch m " " ưc dùng ch th ư m c ngay trên th ư m c hi n th i (cha c a th ư m c hi n th i). Linux còn cho phép ghép m t h th ng file trên m t thi t b nh ( a m m, vùng a cng ch ưa ưc ư a vào h th ng file) thành m t th ư m c con trong h th ng file c a h th ng b ng l nh mount . Các h th ng file ưc ghép thu c vào các ki u khác nhau. Hai m c ti p theo (3.1.2 và 3.1.3.) gi i thi u nh ng n i dung sâu h ơn v h th ng file Linux. 3.1.2. S ơ b ki n trúc n i t i c a h th ng file Trên a t , h th ng file ưc coi là dãy tu n t các kh i lôgic m i kh i ch a ho c 512B ho c 1024B ho c b i c a 512B là c nh trong m t h th ng file. Trong h th ng file, các kh i d li u ưc a ch hóa b ng cách ánh ch s liên ti p, m i a ch ưc ch a trong 4 byte (32 bit). Cu trúc n i t i c a h th ng file bao g m 4 thành ph n k ti p nhau: Boot block (dùng kh i ng h th ng), Siêu kh i (Super block), Danh sách inode và Vùng d li u. Dưi ây, chúng ta xem xét s ơ l ưc n i dung các thành ph n c u trúc n i t i m t h th ng file. Siêu kh i Siêu kh i ch a nhi u thông tin liên quan n tr ng thái c a h th ng file. Trong siêu kh i có các tr ưng sau ây:  Kích th ưc c a danh sách inode (khái ni m inode s ưc gi i thích trong mc sau): nh kích c vùng không gian trên H th ng file qu n lý các inode.  Kích th ưc c a h th ng file. Hai kích th ưc trên ây tính theo ơ n v dung l ưng b nh ngoài,  Mt danh sách ch s các kh i r i (th ưng tr c trên siêu kh i) trong h th ng file. 4 1
  42. Ch s các kh i r i th ưng tr c trên siêu kh i ưc dùng áp ng nhu c u phân ph i mi. Chú ý r ng, danh sách ch s các kh i r i có trên siêu kh i ch là m t b ph n c a t p tt c các kh i r i có trên h th ng file.  Ch s c a kh i r i tip theo trong danh sách các kh i r i. Ch s kh i r i ti p theo dùng h tr vi c tìm ki m ti p các kh i r i: bt u tìm t kh i có ch s này tr i. iu ó có ngh a là m i kh i có ch s không l n h ơn ch s này ho c có trong danh sách các kh i r i th ưng tr c ho c ã ưc c p phát cho m t file nào ó. Nhi u thao tác t o file m i, xoá file, thay i n i dung file v.v. c p nh t các thông tin này.  Mt danh sách các inode r i (th ưng tr c trên siêu kh i) trong h th ng file. Danh sách này ch a ch s các inode r i ưc dùng phân ph i ngay ưc cho m t file m i ưc kh i t o. Thông th ưng, danh sách này ch ch a m t b ph n các inode r i trên h th ng file.  Ch s inode r i ti p theo trong danh sách các inode r i. Ch s inode r i ti p theo nh v vic tìm ki m ti p thêm inode r i: bt u tìm t inode có ch s này tr i. iu ó có ngh a là m i inode có ch s không l n h ơn ch s này ho c có trong danh sách các inode r i th ưng tr c ho c ã ưc t ươ ng ng v i m t file nào ó. Hai tham s trên ây t o thành c p xác nh ưc danh sách các inode r i trên h th ng file các thao tác t o file m i, xoá file c p nh t thông tin này.  Các tr ưng khóa (lock) danh sách các kh i r i và danh sách inode r i: Trong mt s tr ưng h p, ch ng h n khi h th ng ang làm vi c th c s v i a t c p nh t các danh sách này, h th ng không cho phép c p nh t t i hai danh sách nói trên.  C ch d n v vi c siêu kh i ã ưc bi n i: nh k th i gian siêu kh i b nh trong ưc c p nh t l i vào siêu kh i a t và vì v y c n có thông tin v vi c siêu kh i b nh trong khác v i n i dung b nh ngoài: n u hai b n không gi ng nhau thì c n ph i bi n i chúng ưc ng nh t.  C ch d n r ng h th ng file ch có th c (c m ghi): Trong m t s tr ưng hp, h th ng ang c p nh t thông tin t b nh ngoài thì ch cho phép c i v i h th ng file,  S l ưng t ng c ng các kh i r i trong h th ng file,  S l ưng t ng c ng các inode r i trong h th ng file,  Thông tin v thi t b ,  Kích th ưc kh i ( ơ n v phân ph i d li u) c a h th ng file. Hi n t i kích th ưc ph bi n c a kh i là 1KB. Trong th i gian máy ho t ng, theo t ng giai on, nhân s ư a siêu kh i lên a n u nó ã ưc bi n i phù h p v i d li u trên h th ng file. Mt trong khái ni m c t lõi xu t hi n trong h th ng file ó là inode. Các i t ưng liên quan n khái ni m này s ưc trình bày trong các m c ti p theo. 4 2
  43. Inode Mi khi m t quá trình kh i t o m t file m i, nhân h th ng s gán cho nó m t inode ch ưa s d ng. hi u rõ h ơn v inode, chúng ta xem xét s ơ l ưc m i quan h liên quan gi a file d li u và vi c l ưu tr trên v t d n ngoài i v i Linux. Ni dung c a file ưc ch a trong vùng d li u c a h th ng file và ưc phân chia các kh i d li u (ch a n i dung file) và hình nh phân b n i dung file có trong m t inode tươ ng ng. Liên k t n t p h p các kh i d li u này là m t inode, ch thông qua inode m i có th làm vi c v i d li u t i các kh i d li u: Inode ch a d ng thông tin v t p h p các kh i d li u n i dung file. Có th quan ni m rng, t hp g m inode và t p các kh i d li u nh ư v y là m t file v t lý: inode có thông tin v file v t lý, trong ó có a ch c a các kh i nh ch a n i dung c a file v t lý. Thu t ng inode là s k t h p c a hai t index v i node và ưc s d ng ph d ng trong Linux. Các inode ưc phân bi t nhau theo ch s c a inode: ó chính là s th t c a inode trong danh sách inode trên h th ng file. Thông th ưng, h th ng dùng 2 bytes l ưu tr ch s c a inode. V i cách l ưu tr ch s nh ư th , không có nhi u h ơn 65535 inode trong mt h th ng file. Nh ư v y, m t file ch có m t inode song m t file l i có m t ho c m t s tên file. Ng ưi dùng tác ng thông qua tên file và tên file l i tham chi u n inode (tên file và ch s inode là hai tr ưng c a m t ph n t c a m t th ư m c). M t inode có th t ươ ng ng v i m t ho c nhi u tên file, m i t ươ ng ng nh ư v y ưc g i là m t liên k t. Inode ưc l ưu tr t i vùng danh sách các inode. Trong quá trình làm vi c, Linux dùng m t vùng b nh , ưc g i là b ng inode (trong mt s tr ưng h p, nó còn ưc g i t ưng minh là b ng sao in-core inode) v i ch c n ng tươ ng ng v i vùng danh sách các inode có trong h th ng file, h tr cho quá trình truy nh p d li u trong h th ng file. N i dung c a m t in-core inode không ch ch a các thông tin trong inode t ươ ng ng mà còn ưc b sung các thông tin m i giúp cho quá trình x lý inode. Chúng ta xem xét c u trúc n i t i c a m t inode th y ưc s trình bày n i t i c a mt file. Inode bao g m các tr ưng thông tin sau ây:  Ki u file. Trong Linux phân lo i các ki u file: file thông th ưng (regular), th ư m c, c t kí t , c t kh i và ng d n FIFO (pipes). Linux quy nh tr ưng ki u file có giá tr 0 t ươ ng ng ó là inode ch ưa ưc s d ng.  Quy n truy nh p file. Trong Linux, file là m t tài nguyên chung c a h th ng vì v y quy n truy nh p file ưc c bi t quan tâm tránh nh ng tr ưng h p truy nh p không h p l . i v i m t inode, có 3 m c quy n truy nh p liên quan n các i t ưng:  mc ch c a file ( i t ưng này ưc ký hi u là u: t ch user),  mc nhóm ng ưi dùng c a ch nhân c a file ( i t ưng này ưc ký hi u là g: t ch group),  mc ng ưi dùng khác ( i t ưng này ưc ký hi u là a: t ch all). Quy n truy nh p là c, ghi, th c hi n ho c m t t hp nào ó t nhóm g m 3 quy n trên. Chú ý r ng, quy n th c hi n i v i m t th ư m c t ươ ng ng v i vi c cho phép tìm mt tên file có trong th ư m c ó.  S l ưng liên k t i v i inode: ây chính là s l ưng các tên file trên các th ư m c ưc liên k t v i inode này, 4 3
  44.  nh danh ch nhân c a inode,  nh danh nhóm ch nhân: xác nh tên nhóm ng ưi dùng mà ch file là mt thành viên c a nhóm này,  dài c a file tính theo byte,  Th i gian truy nh p file:  th i gian file ưc s a i mu n nh t,  th i gian file ưc truy nh p mu n nh t,  th i gian file ưc kh i t o, • Bng a ch ch a các a ch kh i nh ch a n i dung file. B ng này có 13 ph n t a ch , trong ó có 10 ph n t tr c ti p, 1 ph n t gián ti p b c 1, 1 ph n t gián ti p b c 2 và m t ph n t gián ti p b c 3 (chi ti t có trong ph n sau). Ni dung c a file thay i khi có thao tác ghi lên nó; n i dung c a m t inode thay i khi n i dung c a file thay i ho c thay i ch ho c thay i quy n ho c thay i s liên kt. Ví d v n i dung m t inode nh ư sau: type regular perms rwxr-xr-x links 2 owner 41CT group 41CNTT size 5703 bytes accessed Sep 14 1999 7:30 AM modified Sep 10 1999 1:30 PM inode Aug 1 1995 10:15 AM Các ph n t a ch d li u Bn sao in-core inode còn b sung thêm tr ưng tr ng thái c a in-core inode. • Tr ưng tr ng thái c a in-core inode có các thông tin sau:  inode ã b khoá,  mt quá trình ang ch i khi inode tháo khóa,  in-core inode khác v i inode do s thay i d li u trong inode,  in-core inode khác v i inode do s thay i d li u trong file,  s l ưng các tên file n i v i file ang ưc m ,  s hi u thi t b lôgic c a h th ng file ch a file nói trên  ch s inode: dùng liên k t v i inode trên a,  các móc n i t i các in-core inode khác. Trong b nh trong, các in-core inode ưc liên k t theo m t hàng b m và m t danh sách t do. Trong danh sách hàng b m các in-core inode hòa h p theo s hi u thi t b lôgic và s hi u inode. Trong quá trình h th ng làm vi c, n y sinh khái ni m inode tích c c n u nh ư có m t quá trình ang làm vi c v i inode ó (nh ư m file). Mt inode thu c vào danh sách các inode r i khi không có file v t lý nào t ươ ng ng v i inode ó. 4 4
  45. Bng ch a a ch kh i d li u c a File trong UNIX Bng ch a a ch kh i d li u c a file g m 13 ph n t v i 10 ph n t tr c ti p và 3 ph n t gián ti p: M i ph n t có dài 4 bytes, ch a m t s hi u c a m t kh i nh trên a. M i ph n t tr c ti p tr t i 1 kh i d li u th c s ch a n i dung file. Ph n t gián ti p bc 1 (single indirect) tr t i 1 kh i nh ngoài. Khác v i ph n t tr c ti p, kh i nh ngoài này không dùng ch a d li u c a file mà l i ch a danh sách ch s các kh i nh ngoài và chính các kh i nh ngoài này m i th c s ch a n i dung file. Nh ư v y, n u kh i có dài 1KB và m t ch s kh i ngoài có dài 4 bytes thì a ch gián ti p cho phép nh v không gian trên a l ưu tr d li u c a file t i 256KB (Không gian b nh ngoài trong vùng d li u ph i dùng t i là 257KB). T ươ ng t i v i các ph n t gián ti p m c cao h ơn. Cơ ch qu n lý a ch file nh ư trên cho th y có s phân bi t gi a file nh v i file l n. File nh có dài bé h ơn và theo cách t ch c nh ư trên, ph ươ ng pháp truy nh p s cho phép t c nhanh h ơn, ơ n gi n h ơn do ch ph i làm vi c v i các ph n t tr c ti p. Khi x lý, thu t toán c File ti n hành theo các cách khác nhau i v i các ph n t tr c ti p và gián ti p. Cơ ch t ch c l ưu tr n i dung Fle nh ư ã trình bày cho phép dài file có th lên t i (2 24 +2 16 + 2 8+10) kh i. Vùng d li u bao g m các kh i d li u, m i kh i d li u ưc ánh ch s phân bi t. Kh i trên vùng d li u ưc dùng ch a n i dung các file, n i dung các th ư m c và ni dung các kh i nh v a ch c a các file. Chú ý r ng, ch s c a kh i d li u ưc ch a trong 32 bit và thông tin này xác nh dung l ưng l n nh t c a h th ng file. 3.1.3. M t s thu t toán làm vi c v i inode H th ng l i g i h th ng file Khi làm vi c v i file th ưng thông qua l i g i h th ng. M t s l i g i h th ng th ưng gp nh ư m file open, óng file close, c n i dung file read, ghi n i dung file write v.v. Bng d ưi ây th ng kê các l i g i h th ng làm vi c v i h th ng file và phân lo i theo ch c n ng c a m i l i g i h th ng (m t l i g i có th ưc nh c t i m t s l n): Th i im S d ng namei gán inode thu c Vào-ra Cu trúc h Qu n s d ng file tính file file th ng file lý cây open open stat creat chown read mont chdir creat creat link mknod chmod write umount chown dup chdir unlink link stat cseek pipe chroot mknod unlink close chown mount chmod umount Thu t toán h th ng file m c th p Namei iget iput Ialloc ifree alloc free bmap Thu t toán nh v buffer getblk brelse Bread breada bwrite Hình 3.2. T ng th v l i g i h th ng File 4 5