CongNgheLINUX

Embed Size (px)

Citation preview

.: CNG NGH LINUX :..: CNG NGH LINUX :.Ging vin:Ging vin:TS. T Tun (Vin CNTT, BQP) TS. T Tun (Vin CNTT, BQP)Email: [email protected] Email: [email protected] l k thut:Tr l k thut:Nguyn Vn Phc, V Mnh Cng Nguyn Vn Phc, V Mnh CngMn hc: Mn hc:KHA 3 KHA 3CHNG TRNH O TO THC S CNTT QUA MNG CHNG TRNH O TO THC S CNTT QUA MNGI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TINI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TINI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TINI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TIN2GII THIU HC PHN GII THIU HC PHN Mc tiu mn hc- Nm c cc khi nim v nhng k nng lp trnh c bn trong mi trng Linux. Thi gian hc- Bn bui sng Ch nht hng tun (thi gian: 8h 11h30, t 7/1/2007). Hnh thc nh gi hc vin- Tham gia Din n trn mng: 20%- Lm Kha lun: 30% (Ti liu khng qu 30 trang + a CD) Cu trc ni dung a CD:- Thi kt thc mn: 50% (c dng ti liu, Khng dng my tnh) Tham kho: thi Ln 1 v thi Ln 2 (Kho 2)3 Ti liu tham kho chnhNguyn Phng Lan, Hong c Hi. Lp trnh Linux - Tp 1, NXB Gio dc, 2001.4Chng 0:Chng 0: M uM uCITD - VNUHCMBao g m cc ph n sau: 1. Lich shi u hnh Unix 2. L ch shi u hnh Linux 3. T i sao ph i sd ng Linux ?4. M hnh pht tri n 5. Gi y php GNU - GPL (General Public License) 6. Cch pht m ng chu n 7. Cc b n phn ph i c a Linux 8. Ci t HH Linux 50.1. Lch s h iu hnh Unix0.1. Lch s h iu hnh Unix- Gia nhng nm 60, General Electric, Massachusetts Institute for Technology v Bell Laboratories (AT&T) cng phi hp trong mt c gng to ra mt HH mi gi l Multics (MULTiplexed Information and Computing System). n nm 1969, chng trnh Multics b bi b.- Sau , Kenneth Thomson, mt ngi rt thch cc tnh nng ca Multics, nhng nhn thy n qu phc tp v tm cch t cc mc tiu c bn ca Multics nhng bng con ng n gin hn. Nm 1969, phin bn u tin ca Unix gi l Unics (Uniplexed Information and Computing System) c xc tin xy dng.- Nm 1973, h thng c vit li bng ngn ng C. K t , Unix tr thnh h iu hnh c s dng rng ri nht c tnh kh chuyn cao. Nm 1979, phin bn 7 ca Unix c pht hnh v l h iu hnh gc cho tt c cc h thng kiu Unix sau ny.6- Vo thi im trn, cng ng cc trng i hc v hc vin, ng u l Berkeley, pht trin mt nhnh khc gi l Berkeley Software Distribution (BSD), trong khi AT&T tip tc pht trin Unix di tn gi l System III, System V, System VII.- Trn th trng, System V l phin bn thnh cng v nhiu nh cung cp phn cng hng ti sn phm ny ca AT&T.- Hu ht cc phin bn Unix u thuc quyn s hu v c bo v bi tng nh cung cp phn cng tng ng, v d Sun Solaris l mt phin bn ca System V. Trong khi, ba phin bn ca BSD cui cng tr thnh m ngun m: FreeBSD (d ci cho PC), NetBSD (a nn tng) vOpenBSD (c tnh bo mt cao).7.: TM TT LCH S PHT TRIN HH UNIX:. .: TM TT LCH S PHT TRIN HH UNIX:.-------------------- --------------------1969 The Beginning Kenneth Thompson, Dennis Ritchie khi cng "little-used PDP-7 in a corner" ti Bell Labs (AT&T), tin thn ca UNIX sau ny.1971 First EditionAssembler cho PDP-11/20, File system, fork() v ed. 1973 Fourth Edition c vit li bng C. C tnh kh chuyn (Portable). Nhng thay i c tnh cch mng i vi ton lch s pht trin h iu hnh.1975 Sixth Edition Unix ln u l din ngoi khun kh Bell Labs. 1979 Seventh EditionUnix c hon thin ng k. Thm Bourne shell.Chuyn sang h my VAX vi nhn khong 40 KB.1980 Xenix Xenix ca Microsoft.8.: TM TT LCH S PHT TRIN HH UNIX:. .: TM TT LCH S PHT TRIN HH UNIX:.-------------------- --------------------1982 System III AT&T's UNIX System Group (USG) a ra System III.SunOS 1.0, HP-UX, Ultrix-11.1983 System V Computer Research Group (CRG), UNIX System Group (USG) hp nht thnh UNIX System Development Lab.AT&T cng b System V, phin bn u tin c h tr.Hn 45.000 bn Unix.1984 4.2BSD University of California at Berkeley a ra 4.2BSD.X/Open thnh lp.1984 SVR2 System V Release 2.Hn 100.000 bn UNIX c ci trn ton th gii.9.: TM TT LCH S PHT TRIN HH UNIX:. .: TM TT LCH S PHT TRIN HH UNIX:.-------------------- --------------------1986 4.3BSD NFS (Network File System). AIX c pht hnh. Hn 250.000 bn Unix. 1987 SVR3 System V Release 3.Hn 750.000 bn Unix.1988 Chun POSIX.1 (Portable Operating System Interface for Unix).Open Software Foundation (OSF) v UNIX International (UI) thnh lp.1989 SVR4UNIX System V Release 4 thng nht System V, BSD v Xenix. Hn 1.2 triu bn Unix.10.: TM TT LCH S PHT TRIN HH UNIX:. .: TM TT LCH S PHT TRIN HH UNIX:.-------------------- --------------------1991 UNIX System Laboratories (USL) tr thnh cng ty do AT&T lm s hu chnh.Linus Torvalds bt u pht trin Linux.Solaris 1.0.1992 SVR4.2 USL pht hnh UNIX System V Release 4.2.Solaris 2.0.1993 4.4BSD 4.4BSD phin bn cui cng ca Berkeley.Thng 6, Novell mua USL.Late 1993SVR4.2MP Novell chuyn thng hiu "UNIX" v Single UNIX Specification cho X/Open.Thng 12, Novell a ra SVR4.2MP.1994 Single UNIX SpecificationX/Open cng b Single UNIX Specification nhm tch thng hiu UNIX khi cc m ngun.11.: TM TT LCH S PHT TRIN HH UNIX:. .: TM TT LCH S PHT TRIN HH UNIX:.-------------------- --------------------1995 UNIX 95 X/Open a ra UNIX 95 thc thi Single UNIX Specification.1997 Single UNIX Specification, Version 2Version 2 of the Single UNIX Specification bao gm h tr Thi gian thc (realtime), a lung v b x l t 64-bit tr ln.IRIX 6.4, AIX 4.3 v HP-UX 11.1998 UNIX 98 The Open Group cng b UNIX 98. 12.: TM TT LCH S PHT TRIN HH UNIX:. .: TM TT LCH S PHT TRIN HH UNIX:.-------------------- --------------------1999 UNIX at 30 UNIX trn 30 tui. Linux 2.2 kernel.The Open Group cng IEEE cng xem xt li POSIX v Single UNIX Specification.Nhng hi tho u tin ca LinuxWorld.Tru64 UNIX2001 Single UNIX Specification, Version 3Version 3 ca Single UNIX Specification l kt qu hp nht vi POSIX ca IEEE.Linux 2.4 kernel. AIX 5L.Tng gi tr lin quan n dng Unix vt 25 t USD.2003 ISO/IEC 9945:2003Ni dung ca Version 3 of the Single UNIX Specification tr thnh chun quc t.Solaris 9.0.Linux 2.6 kernel.13.: CY TIN HA CA HH UNIX :. .: CY TIN HA CA HH UNIX :.-------------------- --------------------140.2. Lch s h iu hnh Linux0.2. Lch s h iu hnh Linux- Nm 1991, Linus Torvalds bt u pht trin mt Kernel HH c tn l Linux. - Trong cng ng Linux, nhiu t chc khc nhau kt hp cc thnh phn khc c sn thnh bn phn phi (distribution). l cc nh phn phi (distributors). - Cc bn phn phi thng dng gm c Linuxca Red Hat, Mandrake, SuSE, Caldera, Corel v Debian. Vit Nam c Linux VN v VietKey Linux.- C nhng s khc nhau gia cc bn phn phi , nhng tt c cc bn phn phi u da trn cng nn tng: Kernel ca Linux v cc th vin ca GNU (http://www.gnu.org/)15- Kernel ca Linux c phn phi di giy php GNU GPL (General Public License) v m ngun ca n c phn phi t do ti mi ngi.- Phin bn Kernel cui hin nay l 2.6 (2.6.19 phn phi ngy 26/11/2006 ti trang Web: http://www.kernel.org/pub/linux/kernel/v2.6/)- Ngoi Kernel, c nhiu phn mm v dch v c xy dng chy trn Linux (Software Packages)- Ngi dng c xu th la chn Linux Kernel vi mt s ng dng cn thit cho mnh v l ngun gc ca cc Linux Distribution.16Linus TorvaldsLinus Torvalds1969 Sinh tiHelsinki, Phn Lan. 1983 Richard Stallman sng lp the Free Software Foundation (GNU project). 1986 Thit k The Unix Operating System ca Marice J. Bach c cng b. 1988. Vo i hc . Nhng tng ban u ca Minix. 1990Nhng bi hc u tin v lp trnh C. 1991Bt u pht trin Linux.Tham kho thit k caMarice J Bach. Thng 10, cng b bn chnh thc ca Linux (bn 0.02) mi ch c Bash Shell vGCC. 1992Thng 1, Linux0.12. Chuyn sang dng General Public License.Thng 3, Linux0.95. 17Linus TorvaldsLinus Torvalds1994Version 0.99 sau l Version 1.0 c cng b trn Internet.Cuc cch mng WEB i cng vi Linux.1995Thng 1,FreeBSD 2.0. Red Hat c gim c iu hnh mi lRobert Yong(ngi sng lp Linux Journal). 1996Con gi u lng ca Linus ra i. S pht trin ca Linux c chm li. Thng 12, Linux 2.0. 1997Linus tip xc vi Microsoft: Kt thc gian on hn lm ti Phn Lan (t 1988-1997, ng 10 nm hc tp v nghin cu ti University of Helsinki). Nay v Bay Area (Santa Clara) lm vic vi Transmeta (Paul Allen ca Microsoft l mt trong nhng ngi sng lp chnh). 180.3. Ti sao phi s dng Linux?0.3. Ti sao phi s dng Linux?- Linux l mt HH min ph (tnh min ph, tnh t do). Mi ngi u c th truy cp v thay i Linux. - Linux l mt h iu hnh mnh v tin cy (tnh n nh)- Trong thc t, Linux c th d dng ly v v nng cp, sa i cho ph hp (tnh mm do). Ti liu v HH ny c sn nhiu trn mng.- Ngi s dng khng cn b l thuc Windows hay nhng sn phm Microsoft khc vn hnh my tnh. Thay vo , c th chn bt k mt chng trnh ngun m no (tnh linh hot). iu ny m bo cho ngi dng Linux duy tr h thng ca h v nhng ci tin s khng ngng c pht trin. 19- Linux l mt HH 32-bit, thm ch ti 64-bit (tnh tng thch). Cng ng trn mng hin nay s dng HH ny nhiu, do c th yn tm rng chng ta lun c hu phng ng o v vng mnh sn sng tr gip trong khong thi gian sm nht (tnh nhn vn)= Linux thch hp cho nhng ngi mun i vo Linux thch hp cho nhng ngi mun i vo nghin cu HH chuyn nghip v l cng c tt cho nghin cu HH chuyn nghip v l cng c tt cho vic o to ti cc trng vic o to ti cc trng i hci hc..200.4. M hnh pht trin 0.4. M hnh pht trin210.5. Giy php GNU GPL (General Public License)0.5. Giy php GNU GPL (General Public License)- Giy php phn mm m ngun m (Open Source OS) cho php ngi dng c, truy cp, thay i v lm li m ngun ca mt sn phm phn mm (theo t chc OSI Open Source Initiative). Cc giy php phn mm c OSI ph chun v qun l ti http://www.opensource.org. Xem thm chi tit trong http://www.opensource.org/docs/osd-vietnamese.php/ - Open Source mang ngha t do nhiu hn l min ph.- Mi loi giy php c nhng iu khon quy nh ring. V d: BSD Licensing ch di 1 trang vi 3 iu khon cn phi tun th nhng trong khi th Mozilla Public License 1.1 di n 12 trang cp mi th t vic nh ngha thut ng n cch thc p dng giy php cho chnh ph.22- Mt trong nhng iu khon quan trng l: Nu ta thay i m ngun th phi lp li ti liu v cc thay i v nh km m ngun theo phn mm.- Khng c thng bo bn quyn ca mnh (copyright) mc d thay i m ngun ca chng trnh.- Xem thm thng tin ti http://www.linux.org/info/gnu.html- Ngi ta cn ni GNU GPL l Copyleft thay cho khi nim Copyright.23Ni dung chnh ca GNU GPLTc giv n gib n quy n i v i v i ph n m m g c. Ng i sd ng c thsao chp v phn ph i ch ng trnh d i b t chnh th c no v gi cty . Ng i sd ng c ththay i m t ph n c a ch ng trnh v phn ph i thay i c a mnh cng ton bph n m m cho ng i khc, v i i u ki n ni r ph n mnh thay i. N u nh ng thay i khng thtch r i ton bph n m m th GNU GPL smr ng sang nh ng thay i . Ng i sd ng khng c thng bo b n quy n. Ph i m b o cung c p m ngu n khi bn m t s n ph m theo GNU GPL ng i khc c thsd ng v/ho c bn ti p. Ng i dng kti p c y quy n l i nhc a ng i tr c. 24TH MC THAM KHO250.6. Cch pht m ng chun0.6. Cch pht m ng chunLinux thng c pht m vi i ngn ging mi v trng m ti nguyn m u tin: LIH-nucks LIH-nucks. Tc gi Linus Torvalds pht m t ny nh sau: Bng ting Thy in:http://www.linux.org/info/sounds/swedish.au-Nghe c: SWEDISH SWEDISH Bng ting Anh:http://www.linux.org/info/sounds/english.au-Nghe c: ENGLISH ENGLISH - Xem thm thng tin ti:http://www.linux.org/info/gnu.html260.7. Cc bn phn phi ca HH Linux0.7. Cc bn phn phi ca HH Linux- Cc bn phn phi ca Linux bao gm: Tp hp cc phn mm (Software Packages) Chng trnh ci t (Installer) Cc cu hnh ca ring nh sn xut (Re-configure) Trnh qun l v cp nht gi phn mm (Update/Patch) Cc phn mm thng mi khc (Commercial Software) Ti liu hng dn, h tr ngi dng (User Guide)27- Mt s Linux Distro chnh (thng dng - c nhiu ngi dng v h tr): RedHat Mandrake SuSE DebianSlackwareKnoppixLindows v.v+ Trong c mt vi Linux Distro thuc dng LiveCD, ngha l chy trc tip trn a CD-ROM m khng cn thng qua qu trnh ci t vo my tnh (k thut ny s dng b nh RAM phc v trong qu trnh thc thi. V d Knoppix l mt Linux LiveCD n nh v c nhiu ngi dng, thch hp cho qu trnh ging dy Linux).28FEDORA CORE LINUX D n m ngun m c Red Hat ti tr, cng b thng 9/2003 Nhng thnh qu cu cng ng c th c dng cho Red Hat Enterprise Linux Cc phin bn ph bin: 4, 5, 6 Tham kho: http://fedora.redhat.com290.8. Ci t HH Linux0.8. Ci t HH Linux Giai on chun b trc khi ci t - Mc tiu: Nm c mt s yu cu cn thit nhm phc v tt trong qu trnh ci t.Yu cu phn cng: (Ti thiu) CPU 386 hoc mi hn. Dung lng b nh: 16MB Dung lng cng: ~ 100MB nu ch s dng Console Mode (~1000MB nu ci RedHat 9.0)~ 500MB nu s dng Graphic Mode (~1500MBnu ci RedHat 9.0) CD-ROM a mm 1.44MBYu cu phn mm: B ci t RED HAT Linux 9.0 (6 disks: CD1-CD6) a mm khi ng Linux300.8. Cch ci t HH Linux (tip theo)0.8. Cch ci t HH Linux (tip theo) To a mm khi ng- Mc tiu: To a mm khi ng Linux trong trng hp khng th khi ng t a CD-ROM hoc ROM-BIOS khng h tr khi ng t CD-ROM. Cc bc tin hnh: Kim tra c tp tin boot.img trong th mc Images ca CD1 khng? Thc thi rawrite.exe ghiboot.img ny ra a mm. Tin hnh khi ng t a mm va to. c nhng thng tin hng dn chi tit hn tham khoReadme trong CD1hoc vo trang ch ca RedHat ti a ch: http://www.redhat.com/ c nhng ch dn c th hn trong qu trnh ti nh a (Disk Image).310.8. Cch ci t HH Linux (tip theo)0.8. Cch ci t HH Linux (tip theo) Cc bc ci t chnhSaukhikhingtFloppyDiskhocCDDisk,mnhnhci tshinramtbngthngboyucuchnMODEcit. Nhn ENTER chn MODE mc nh l ha) Language: Chn English Next Keyboard: Chn loi bn phm hin c Mouse: Tng t nh mc Keyboard Next320.8. Cch ci t HH Linux (tip theo)0.8. Cch ci t HH Linux (tip theo)Install Type: Chn loi ci t Workstation: Loi ci t cho my trm v PC thng thng Server System: Ci t cho my ch dch v (Web, Mail, ) Laptop: Loi ci t dnh cho my tnh xch tay Custom System: Kiu ci t cho php la chn. Disk Partition: C ba la chn: Automatically: Qu trnh ci t hon ton t ng Manually partition with Disk Druid: S dng trnh phn hoch a dng Graphic Mode (nh Partition Magic) Manually partition with FDISK: S dng trnh chia a dng Text Mode (Nh FDISK ca MS-DOS)330.8. Cch ci t HH Linux (tip theo)0.8. Cch ci t HH Linux (tip theo)LILO(LinuxLoader):mcnhhocchnGRUB(GRand Unified Bootloader) Network Card: Khai bo cc thng s cho NICFirewall:mcnh(cthchnHIGHtngcngtnhnng bo mt) Language Section: Chn loi ngn ng th hin (ENGLISH) Time Zone: Chn Vit Nam (hoc vng khc)AccountInformation:Nhpmtkhuchoroot(usercquyncao nht trn h thng). Sau Add thm vi user khcAuthenticationConfiguration:ChnkiuxcthcNnmc nh340.8. Cch ci t HH Linux (tip theo)0.8. Cch ci t HH Linux (tip theo) Package Group Selection: chn cc gi phn mm cn ci t.XConfiguration:Chnloivideocard.ThngthngRED HAT s t ng d tm. Monitor Configuration: Tng t nh video cardCustomizeGraphicConfiguration:Chnloigiaodinmc nh lc ng nhp (mc nh l Graphic) tuy nhin nu RED HAT khngnhndincVideoCardthbnnnchnTextMode. Driver thch hp s ci sau. About to install: Nhn Next Installing Packages: i qu trnh ci t hon ttBootDiskCreation:Toammcuhtrongtrnghp Linux b li khng boot cExit:KtthcqutrnhInstall.Mytnhstkhingli (Phi rt cc da hin ang c trong cc a ra)35Kt thc chng 0Kt thc chng 0Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging.36Chng 1:Chng 1: C bn v h thng LinuxC bn v h thng LinuxCITD - VNUHCMBao g m cc ph n sau: 1. Chu n btr c khi ci t 2. a c ng v phn vng a 3. Qui t c ki m sot a c a Linux 4. Tm hi u qu trnh kh i ng c a Linux v i cc HH khc 5. ng d n v cch truy xu t a 6. T ng tc hth ng v cchng nh p 371.1. Chun b trc khi ci t1.1. Chun b trc khi ci t- Linux l mt HH c tnh mm do, khng i hi cu hnh phn cng cao. Tuy nhin, cho hot ng c tt th cn phi c mt s yu cu ti thiu nh sau: B X L INTEL PENTIUM II OR III 32MB RAM CNG CN TRNG 2 GB 10 GB DISPLAY ADAPTER C DUNG LNG B NH 2 MB 4 MB.- Hin nay c nhiu bn phn phi khc nhau nh: RedHat Mandrake SuSE Debian v.v...381.2. a cng v phn vng a1.2. a cng v phn vng a1.2.1. a cng v phn vng a- a cng c thit k c nhiu HH cng tn ti.- a cng c th c chia lm nhiu phn vng (thng gi l partition).- Mi HH s c ci trn mt phn vng ring bit v c ton quyn (Full Control) nh dng h thng lu tr (File System) do HH quy nh. Hnh 1-1 di y l phn vng a cng ci t cc HH khc nhau:39A. a cng 10GB, cha ci HH noB. a cng gm 1 vng 10GB ci ton b HH DOS/Win98C. a cng gm 1 vng 3GB ci HH DOS/Win98 v 7GB cn li cha dngD. a cng gm 1 vng 3GB ci HH DOS/Win98, mt vng 2GB ci HH Linux v 5Gb cn li ci HH Windows NT/2000/XP10GB10GBDOS/WIN983GBDOS/WIN987GB3GBDOS/WIN982GB LINUX5GBWinNT/2000A B C DHnh 1.1 Phn vng a v HH40- V mt vt l th ta ch c th phn chia a cng thnh 4 phn vng chnh (gi l Primary Partition). Do vy, nu s dng phn vng chnh th cao nht l ta ch c th ci c 4 HH ln trn cng mt a cng (gii hn ny do sector khi ng MBR - Master Boot Record quy nh).- khc phc gii hn k trn co th dng Extended Partition. Thc ra, phn vng m rng ny cng l phn vng chnh nhng vi tnh nng c th m rng cho php chia tip thnh nhiu phn vng con bn trong. Mi phn vng con nh vy c gi l Logic Partition. Hnh 1.2 cho thy s khc bit gia Primary Partition v Extended Partition.- Do vy, nu c nhu cu nhiu hn 4 partition, c th to ra phn vng EXTENDED413GBDOS/Win2GB1GB 1.5GB 0.5GB1.5GB0.5GBPrimary Partition (3GB)Extended Partition (5GB)Cha phn vngPrimary Partition (1.5GB)Cha phn vngLogicalPartitionHnh 1.2 Phn vng trn cng 10 GB421.2.2. Phn vng ca DOS v Windows- Trn HH thng dng nh DOS v Windows th khi nim tn a c t bng cc k t ch ci thng dng nh: C:, D:, E:, F:, v.v... Trong a C: chnh l Primary Partition (v thng thng th ngi ta thng ly tn a chnh ci t HH) - Thng thng, nhng a khc C: nh D:, E:, F: u l tn a gn cho phn vng Logic- Hnh 1.3 di y l m hnh phn vng thng thy trn cc my ci WindowsC: 2GBWindows 98C: 2GBWindows 98D:G:E: F:Primary PartitionExtended PartitionC: 2GBWindows 98D: WinNTG:E: F:A B CHnh 1.3Phn vng ca HH Windows43- Nu my ch c a C: th c th l ch c mt phn vng Primary.- Nu my c thm D:, E:, F:, th c ngha l bn c phn vng Extended v bn trong cc a D:, E:, F: l nhng phn vng Logic ca Extended Partition.- xem c cu hnh phn vng trn a cng vt l, s dng lnh FDISK FDISK ca MS-DOS.441.2.3. Phn vng ca Linux- Trn HH Windows th yu cu ci t th ch cn c 1 Primary Partition. Tuy nhin, trnHH Linux th yu cu ti thiu l hai phn vng (Primary Partition hoc Logic Partition): Phn vng gc cha nhn (kernel) v h thng file gi l root partition (hay cn gi l Linux Native Partition). Bt buc phi c khi ci t Phn vng tm gi l swap partition dng l khng gian hon i khi b nh vt l y Windows s dng tp tin (.swp, .tmp hay pagefile.sys) lu tr b nh o, trong khi Linux s dng nguyn hn 1 phn vng ... Kch thc ca phn vng SWAP ny c nn bng 2 ln dung lng b nh vt l 45- Windows s dng k t C gn cho phn vng chnh trong DOS, thay vo Linux s dng k t / gn cho phn vng gc ni Linux c ci t v lu tr file.C:\ ~ /C:\ ~ /461.2.4. Ci t Linux chung vi WindowsWindowsA. a cng vi d liu b phn tn B. a cng vi d liu c sp xp li v chia vngWindowsLinuxHnh 1.5Sp xp d liu cho vic ci t47- Yu cu: Phi gim phn mnh trn a cng d nh s ci t Windows (bng trnh Defragment ca Windows hoc SpeedDisk ca Norton) nhm mc ch sp xp d liu li thnh mt nhm (gim phn mnh).- Nu phn vng cha Linux cn qu t m trong khi phn vng cha Windows hin ti li qu nhiu (ch l Linux khi ci t phi c t nht 2 phn vng) th ta tin hnh thay i kch thc ca phn vng cha Windows bng trnh Partition Magic ca hng PowerQuest (chng trnh ny c nh gi l tt v khng lm mt d liu khi Phn hoch li a)481.3. Quy tc kim sot a ca Linux1.3. Quy tc kim sot a ca Linux- Ht nhn (kernel) ca Linux xy dng c ch truy xut tt c cc loi a v thit b u dng tp tin. a mm l fd ( a mm th 1 {A:} l fd0; a mm th 2 {B:} l fd1, ) a cng vt l th nht hda (theo chun SCSI c gi l sda) a cng vt l th hai hdb (theo chun SCSI c gi l sdb) a cng vt l th ba hdc (theo chun SCSI c gi l sdc)- Cc phn vng Primary (k c Extended) c nh s t 1 4. Cc phn vng Logic (bn trong Extended) c nh s bt u t s 5 tr i.- Nhng thng tin v phn vng v cch truy xut c Linux tothnh 1 tp tin lu trong th mc /dev. Hnh 1.6 cho thy cch t tn phn vng trong Linux49 /dev/hda1 Phn vng chnh cha DOS/Windows /dev/hda2 Phn vng m rng (cha cc phn vng logic) /dev/hda5 Phn vng logic /dev/hda6 Phn vng logic /dev/hda7 Phn vng logic+ Ci t v kt gn phn vng, tham kho trong hnh 1.7 v hnh 1.8.hda1hda5Linuxhda6swaphda7hda2Hnh 1.6Phn vng v cch t tn ca Linux50.: MT S MN HNH DEMO VIC GN CC K HIU PHN VNG :. .: MT S MN HNH DEMO VIC GN CC K HIU PHN VNG :.Hnh 1.7 - Hnh 1.8Ci t v kt gn phn vng511.4. Qu trnh khi ng ca Linux vi cc HH khc1.4. Qu trnh khi ng ca Linux vi cc HH khc- Mc tiu: Tm hiu qu trnh khi ng ca mt HH mc tng qut v mc vt l trn a cng v a mm.1.4.1. a mm v qu trnh khi ng- a l tp hp cc cung t (sector) c to ra trong qu trnh nh dng (FORMAT). Thng thng, mi sector s c dung lng l 512 bytes.- on trnh khi ng HH c t sector u tin (c gi l BOOT SECTOR)- Mt s HH thng dng hin nay hin thc c trn a mm l MS-DOS, MENUOS (UNIX-based)52- Mi HH c cch ring t on khi ng vo Boot sector. V d, MS-DOS dng lnh nh sau: FORMAT A: /S SYS A:Boot sectora mmHnh 1.9Boot Sector ca a mm531.4.2. Qu trnh khi ng t a cng- Nh a mm, khi khi ng t a cng th BIOS (Basic Input / Output System) s tm n sector u tin ca a cng np on trnh s khi ng my tip theo.- Sector u tin ca a cng gi l MBR (Master Boot Record). Khc vi Boot Sector trn a mm, MBR cha thc s np HH no c, u tin n s xc nh bn trong cng hin ti c bao nhiu phn vng v h iu hnh no ang chim gi phn vng . Mi phn vng s c mt c hiu (Flag) cho bit phn vng c c u tin kch hot (Active) khi khi ng hay khng. Ch c phn vng chnh (Primary) mi c nh du kch hot v trn ton b a cng th ch c duy nht mt phn vng c nh du l c kch hot trong cng mt thi im (trng hp c nhiu HH trn cng 1 cng).54- Hnh 1.10 di y s cho thy HH Windows v Linux c ci t hai phn vng khc nhau.Windows WindowsActiveLinuxMBRBoot SectorBoot SectorMBRBoot SectorHnh 1.10Boot Sector khi ng ca tng phn vng55- Nh vy th vi nhiu HH c ci t trn cng mt cng th lm th no nh du (Active) cho mi phn vng m mnh mun khi ng? N GIN nht l s dng cng c sn c nh FDISK cho vic chuyn i trng thi ny, ...- C mt s chng trnh chim gi MBR (thng gi l Boot Manager/Boot Loader). Nhng chng trnh ny s hin th menu cho php ngi dng chn la gia cc HH C trnh Boot Loader ny s np Boot Sector tng ng vi phn vng cha HH c chn.- Cc bn ci t Linux u cung cp sn cc trnh Boot Loader c tn l LILO (The Linux boot Loader) hoc GRUB (GRand Unified Boot loader). C mt s la chn sau:564 Install Boot Loader record on Floppy: y c xem l trng hp an ton v LILO s ci ln Sector u tin ca a mm khng nh hng g n MBR ca a cng. Boot Loader s c khi ng t a mm, tip theo c thng tin v phn vng ca Linux v cui cng l np ht nhn cha HH (Hnh 1.10.1)4 Install Boot Loader record on MBR: LILO chim ton quyn iu khin khi khi ng t cng v xc nh danh sch cc HH hin c trong cc phn vng ngi dng la chn (Hnh 1.10.2)4 Install Boot Loader record on first sector of boot partition: Cho php trnh LILO ci vo Boot sector ca phn vng cha HH khi ng (v d Linux). Nu c trnh qun l nh Boot Magic hay System Commander, nn chn chc nng ny bo tn cc trnh qun l trn (Hnh 1.10.3)4 Install Boot Loader record on Extended partition: LILO c ci vo sector u tin ca phn vng m rng (khng ci vo sector u tin ca phn vng Logic)57.: MT S MN HNH DEMO VIC CI T BOOT LOADER:. .: MT S MN HNH DEMO VIC CI T BOOT LOADER:.Hnh 1.10.1Install Boot Loader record on Floppy58.: MT S MN HNH DEMO VIC CI T BOOT LOADER:. .: MT S MN HNH DEMO VIC CI T BOOT LOADER:.Hnh 1.10.2Install Boot Loader record on MBR59.: MT S MN HNH DEMO VIC CI T BOOT LOADER:. .: MT S MN HNH DEMO VIC CI T BOOT LOADER:.Hnh 1.10.3Install Boot Loader record on first sector of boot partition601.5. ng dn v cch truy xut a trong Linux1.5. ng dn v cch truy xut a trong Linux- Trn DOS/Windows, cc a C:, D:, E:,... lm gc cho mi ng dn truy xut cc tp tin:C:\documents\myletter.txtDin gii: C:\documents\myletter.txt l ng dn tuyt i n tp tin myletter.txt trong th mc documents ca a C:- Trn Unix/Linux, k hiu / lm k t i din cho th mc gc, ng thi l k t lm du phn cch th mc:/documents/myletter.txtDin gii: /documents/myletter.txt l ng dn tuyt i n tp tin myletter.txt trong th mc documents ca th mc gc /61 Linux khng c khi nim a nh trong DOS/Windows m s dng php kt gn (mount) phn vng (thit b) vi mt th mc bt k (Hnh 1.11) DOS/Windows khng c c h tp tin ca Linux nn khng gn cho phn vng ny k hiu a no (C mt s driver b sung dng truy cp Linux Partition t Windows)A:DOS PrimaryC:LinuxD: E:Hnh 1.11Phn vng v k hiu a trong DOS62.: QUY TRNH KT GN A V PHN VNG TRONG LINUX :. .: QUY TRNH KT GN A V PHN VNG TRONG LINUX :.Hnh 1.12. Kt gn a v phn vng trong Linux- Hnh 1.12 A l danh sch cc phn vng v a c Linux lu thnh cng dng file trong th mc /dev/fd0, /dev/had1,...A. Cc phn vng cha c kt gn vi th mc gc sau khi Linux khi ngB. Cc phn vng sau khi c kt gn vi th mc gc63- Nu mun truy xut cc phn vng hda1, hda5, hda6 , hda7 hay a mm fd0 (nhng phn vng ny khng phi thuc dng Linux Partition), phi thc hin bc KT GN bng lnh mountV d: (c thc hin di quyn root - ngi dng c quyn cao nht)#mount /dev/fd0/a_drive Kt gn a mm ( a mm c i din bng tp tin /dev/fd0) v cho php truy xut nh vi th mc/a_drive#mount /dev/hda1/mydos Kt gn phn vng th 1 ca a cng u tin v cho php truy xut nh vi th mc /mydos#mount /dev/hda6/data Kt gn v cho php truy xut phn vng hda6 nh truy xut th mc /data#mount /dev/hda7 /programs Kt gn v cho php truy xut phn vng hda7 nh truy xut th mc /programs- Khi khng mun s dng thit b (c gn bng lnh mount), c th tho kt gn bng lnh umountV d: (c thc hin di quyn root)#umount /a_drive#umount /data641.6. Tng tc vi h thng v c ch ng nhp 1.6. Tng tc vi h thng v c ch ng nhp1.6.1. Tng tc vi h thng- C hai la chn khi tng tc vi h thng Linux:4 Giao din dng lnh (Console - Command Line).- Tng t nh DOS Prompt/Command Prompt- Shell l mt chng trnh thng dch chu trch nhim tip nhn lnh do ngi dng a vo t bn phm. C nhiu dng Shell nhng thng dng l C Shell, Korn Shell v Bash Shell. Hnh 1.12.1 cho thy mt s giao din Shell thng dng ca Linux4 Giao din ho (GUI - Graphic User Interface).- Tng t nh trong Windows - c m trch bi X-Window vi GUI dng GNOME v KDEHnh 1.12.2 gii thiu mt s giao din GUI ca Linux65.: MT S MN HNH GIAO DIN :. .: MT S MN HNH GIAO DIN :.Hnh 1.12.1Giao tip bng console trong Linux66.: MT S MN HNH GIAO DIN :. .: MT S MN HNH GIAO DIN :.Hnh 1.12.2Giao tip bng graphic trong Linux671.6.2. ng nhp- Yu cu phi c USERNAME v PASSWORD (c cp bi root - ngi qun tr h thng)- Du hiu phn loi ti khon ngi dng: root (super-user) du nhc c dng# - ton quyn username (normal-user)du nhc c dng$ - gii hn quyn- Linux l HH a chng, a nhim, a ngi dngTrn cng mt my, c th ng nhp vi nhiu ti khon khc nhau (c ti 7 console o phc v cho qu trnh ng nhp v lm vic).S dng t hp phm Alt + F1 Alt + F7 hon chuyn gia cc console.68- Hnh 1.13 s cho thy mn hnh ng nhp dng Console Mode.- Hnh 1.14 s cho thy mn hnh ng nhp dng Graphic Mode.- Do tnh a nhim, Linux c th chy nhiu chng trnh cng lc ngay t dng lnh.69.: MN HNH NG NHP GIAO DIN CONSOLE :. .: MN HNH NG NHP GIAO DIN CONSOLE :.Hnh 1.13ng nhp t dng lnh70.: MN HNH NG NHP GIAO DIN GRAPHIC :. .: MN HNH NG NHP GIAO DIN GRAPHIC :.Hnh 1.14ng nhp qua GUI71.: MINH HA CHC NNG MULTI-USER :. .: MINH HA CHC NNG MULTI-USER :.Hnh 1.15Cc console o - Chc nng multi-user72Kt thc chng 1Kt thc chng 1Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging..: CNG NGH LINUX :..: CNG NGH LINUX :.Ging vin:Ging vin:TS. T Tun (Vin CNTT, BQP) TS. T Tun (Vin CNTT, BQP)Email: [email protected] Email: [email protected] l k thut:Tr l k thut:Nguyn Vn Phc, V Mnh Cng Nguyn Vn Phc, V Mnh CngMn hc: Mn hc:KHA 3 KHA 3CHNG TRNH O TO THC S CNTT QUA MNG CHNG TRNH O TO THC S CNTT QUA MNGI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TIN2Chng 2:Chng 2: Cc tp lnh LinuxCc tp lnh LinuxCITD - VNUHCMBao g m cc ph n sau: 1. So snh DOS/Windows v Linux2. Ki n trc Linux 3. Hth ng thm c 4. Phn quy n b o vv truy xu t t p tin 5. Qu n l ti n trnh 6. T p l nh cb n 7. Trnh qu n l thm c (MC) 8. Cc t p tin kh i ng 32.1. So snh DOS/Windows v Linux2.1. So snh DOS/Windows v Linux2.1.1. Ging nhau Giao din ngi dng thn thin a chng, a nhim, a ngi dng Cu trc th bc ca th mc Khi ng chng trnh t dng lnh hoc GUI42.1.2. Khc nhau Linux l HH m ngun m Linux phn bit ch HOA/thng C ch Shell Command Line thng thng khng thng bo g mi khi thc thi xong lnh Du phn cch v ng dn th mc (/thay cho \trong DOS/Windows) Linux yu cu phi t thuc tnh x (eXecute) cho tp tin thc thi52.2. Kin trc Linux2.2. Kin trc Linux2.2.1. H thng tp tin6- Trn DOS/Windows, nh dng v to h tp tin: C:\>format a: /s- Trn Linux, nh dng v to h tp tin cn 3 bc:+ Lnh nh dng:#fdformat /dev/fd0+ Lnh to h thng file:#mkfs /dev/fd0+ Lnh to a khi ng:#mkbootdisk /dev/fd07- Cc lnh thng dng ca Linux:- V d:#ls la /home = Lit k y ni dung th mc /home #cat test.txt = Hin th ni dung tp tin test.txt trong thmc hin hnh82.2.2. Tin trnh (Process)- L chung trnh trong thi gian vn hnh.- Cc tin trnh ng hnh, dng chung CPU:Hnh 2.1H iu hnh phn chia thi gian kim sot cc tin trnh9- V d trong mi trng ho (Graphic Mode), va c th nghe nhc li va c th son tho vn bn. Trong ch Console Mode, va c th chy chng trnh x l thut ton nn file li va c th ra lnh in vn bn ra my in.- Thc t, cc tin trnh c thc thi mt cch tun t ch khng song song. Mi thi im, CPU ch c kh nng x l c mt ch th lnh duy nht.10- Hu ht cc HH u m phng kh nng x l song song (Parallel Processing) bng k thut iu phi tin trnh (Time Schedule). CPU s c iu phi xoay vng, mi tin trnh chim gi mt thi gian ca CPU rt ngn sau HH s can thip v tm dng CPU c kh nng lm vic vi tin trnh khc. - DOS l loi HH n nhim v khng c kh nng iu phi tin trnh.11- Mc d dng k thut thng tr (TSR), DOSkhngc xem l HH a nhim, a tin trnh.122.3. H thng th mc2.3. H thng th mc- Cc th mc chnh ca Linux:132.4. Phn quyn bo v v truy xut tp tin2.4. Phn quyn bo v v truy xut tp tin2.4.1. Cc quyn truy xut trn tp tin- Do Linux l HH a nhim, a ngi dng, cng mt thi im khi ang son tho tp tin hay thc thi mt chng trnh, c th ngi khc t xa kt ni qua h thng mng tm cch truy xut tp tin ang s dng.- Quyn thao tc tp tin v th mc c quy nh vi nhng thuc tnh sau:14O r: Read Only =Thuc tnh ch c (khng c quyn ghi/xa)O w:Write =Thuc tnh ghi (hiu chnh ni dung)O x: Execute =Thuc tnh thc thi (chy chng trnh)O -: None =Khng c quyn trn i tng Hnh di trnh by ni dung cc th mc v tp tin c thit lp quyn (set permission) trong th mc c nhn (Home Directory) ca ngi dng tn l nev15- Ch n cc thuc tnh sau:- C u tin ch du hiu. Nu l - c ngha y l tp tin thng thng. Cn nu d th y l mt Directory (th mc). Mt s trng hp khc nh pipe l p, cn socket l s.- C 3 i tng chnh l owner, group, other v mi i tng ng vi 3 quyn c th read, write, execute- Thit lp (thay i) thuc tnh bo mt cho tp tin v th mc bng lnh CHMOD = Phi thc hin bng quyn ca ROOT ACCOUNT16- V d sau s tin hnh thay i quyn sn c ca tp tin apple.txt:# chmod u+rw-x apple.txt # chmod g+r-wx apple.txt # chmod o+r-wx apple.txt 172.4.2. Cc i tng c truy xut- Khi to ra mt th mc (hoc tp tin) bn thn ta l ngi s hu (Owner)- Mc nh quyn c thit lp l read - write ~ rw- Da vo quyn ngi s hu thi khng Trng hp mun chia s vi ngi khc, cn thit lp quyn cho nhm (Group)V d: (Gi s tp tin testfile nm trong th mc hin hnh)#ls -l testfilerwx rw- --- 1 root books 444 Feb 14 22:24 testfileNhm books c quyn c, ghi (rw), nhng khng c quyn thc thi (x)- Mt s lnh lin quan n ng nhp v ti khon:18USER ACCOUNT COMMAND LINESUSER ACCOUNT COMMAND LINES====q q--------------------g g====19 T o nhm books: # groupadd books T o ti kho n ng i dng mk: # useradd mk g books d /home/mk p 1234mk# su mk$pwd/home/mk202.4.3. Quyn c ghi v thc thi- Nu khng c quyn x (execute), th khng th chuyn vo th mc ny bng lnh CD, cng khng c quyn chuyn vo cc th mc con bn di.212.4.4. Thay i quyn truy xut vi lnh CHMOD- Qua lnh chmod ta c th thay i quyn r-w-x ca i tng nh user (cn gi l owner), group (nhm) hay other (ngi dng khc) i vitp tin (hoc th mc).- Quyn truy xut tp tin cn ph thuc vo th mc cha n Quyn truy xut tp tin cn ph thuc vo th mc cha n. V d nh ta c mt tp tin info trong th mc VIDU. Nu thit lp quyn vi tp tin cho other l --x (ch execute) nhng vi th mc VIDU ta li thit lp cho other l --- (khng c tnh nng execute) th tp tin info i vi ngi dng khng phi owner v group th KHNG c quyn thc thi.- S dng tin t + hay - thm hoc bt quyn trn i tng c th (V d 1) - C th tin hnh thay i quyn da trn cc gi tr s (V d 2)22- V d 1:Thc hin lnh lit k th mc hin ti#ls l-rwx rwx r-x 4root mk 4096 May 2 15 : 07testfile y root v mk c ton quyn trn testfile. Tuynhin other ch c quyn Read v ExecuteTin hnh thit lp vic g b quyn Execute v Write ca owner (hay cn gi l user)#chmod u-xw testfile#ls l-r-- rwx r-x 4root mk 4096 May 215 : 07testfile23- V d 2: Da theo bng sau: Nu tp tin info cn thit lp quyn {r-x r-- -w-} ng vi nhng m s tnh theo cch sau:4 r-xowner {r = 4; w = 0; x = 1} 4 + 0 + 1 = 54 r--group {r = 4; w = 0; x = 0} 4 + 0 + 0 = 44 -w-other {r = 0; w = 2; x = 0} 0 + 2 + 0 = 2Vy gi tr cn t cho info l 542Dng lnh:#chmod 542 info242.5. Qun l tin trnh2.5. Qun l tin trnh2.5.1. nh hng xut nhp- Cc tin trnh thng nhn d liu u vo X L v GHI kt xut ra mt thit b (mn hnh, tp tin, my in,)* Linux quy nh c bn u vo l bn phm stdin* Linux quy nh c bn u ra l mn hnh stdoutV d: Lnh ls l a kt qu ra mn hnh:#ls l - rwx rwx r-x 4 root mk4096 May 215 : 07testfile25- Thay v kt xut ra mn hnh c th a kt xut ra tp tin d qun l sau ny.- C ch chuyn hng xut nhp:* Du chuyn hng > cho kt xut u ra* Du chuyn hng data.txt S dng lnh more hin th d liu ca u vo theo tng trang mn hnh (trng hp s trang hin th qu nhiu)#more < bigfile.txt- C th s dng du >> ni thm d liu vo cui tp tin hin c V d:#ls l >> data.txt272.5.2. Kim sot tin trnh2.5.2.1. Xem thng tin v tin trnh- Cn kim sot c cng vic cc tin trnh.- Mun xem tin trnh ang chy, s dng lnh ps- Lnh ps c rt nhiu ty chn, trong tu chn a l yu cu lit k ht tt c cc tin trnh. #ps -a- Hnh 2.5.2.1.a v Hnh 2.5.2.1.b cho thy tt c cc tin trnh ang vn hnh (dng Background hoc Foreground - Hu cnh hoc Tin cnh)- th hin dng cy cc tin trnh ang hin c trn h thng, ta s dng lnh pstree28TASK MANAGER AND PROCESS VIEWERTASK MANAGER AND PROCESS VIEWERHnh 2.5.2.1.bCa s Windows Task Manager trong HH MS WindowsHnh 2.5.2.1.aMn hnh th hin cc Processtrong HH Linux29- Ct thng tin bn tri PID do lnh ps hin th (hoc trn Windows l ct th hai t tri sang bn cnh ct Image Name) L s nh danh cho mi tin trnh.- Mi tin trnh u c HH cung cp mt m s duy nht l PID (Process Identifier)- Cc lnh x l tin trnh trong Linux u da vo s PID ny tng tc v iu khin cc tin trnh ang chy.302.5.2.2. Tin trnh tin cnh- M t: Khi ang trn du nhc ca h thng (# hay $) v gi thc thi mt chng trnh v chng trnh ny s tr thnh tin trnh i vo hot ng di s kim sot ca h thng.- Du nhc h thng s khng hin th trong khi tin trnh ang chy.Ch khi no tin trnh hon thnh tc v v chm dt th HH (Shell) s tr li du nhc ngi dng tip tc thc thi cc tc v khc.- y l c ch ca tin trnh hot ng ch TIN CNH- V d: #ls R /Lnh s thc thi cng vic lit k ton b tp tin v th mc (tham s R-Recursive) ca HH bt u t th mc gc /- Qu trnh lit k ny din ra c th lu v hin ra trc tip trn mn hnh. Sau khi lnh trn thc hin xong th HH lc ny mi tr li du nhc cho ngi dng Cn n kh nng HU CNH ca HH.312.5.2.3. Tin trnh hu cnh- M t: Nhm mc ch a nhng tin trnh chim nhiu thi gian (hoc t tng tc vi ngi dng) ra hot ng hu cnh (chy ngm bn trong h thng khng cn xut hin)- Thao tc n gin: Ta ch cn cho du & sau mi cu lnh- Du nhc ca h thng hin th sn sng triu gi mt chng trnh khc (tin trnh trc vn ang chy)- V d:#ls -R / > allfiles.txt &[1] 23978Tin trnh c a vo hu cnh (th 1) vi m s PID l 23978322.5.2.4. Tm dng tin trnh- Nu tin trnh no ang chy v cn a vo hu cnh (do phi ch i vic kt thc ca tin trnh y lu v khi thc thi lnh khng dng du &) Bm Ctrl + Z- Khi mt chng trnh ang chy v nhn c tn hiu ngt do bm t hp phm Ctrl + Z, tin trnh c tm dng v a vo hu cnh. Tuy hu cnh, nhng tin trnh ny ang trong tnh trng PAUSE v n ch thc thi tip khi cho php. V d:#ls -R / > allfiles.txt^Z[1]+Stopped ls -R / > allfiles.txt#- Lnh ps -af xem y thng tin v cc tin trnh ang chy.332.5.2.5. nh thc tin trnh- Dng lnh jobs hin th trng thi cc tin trnh trong hu cnh: #jobs[1] +Stopped ls R / > allfiles.txt- Kt qu cho thy tc v [1] ang trng thi dng. tin trnh trn tip tc hot ng hu cnh, s dng lnh bg:#bg 1ls R / > allfiles.txt#jobs[1] +Running ls R / > allfiles.txt342.5.2.6. Hy tin trnh- C nhng trng hp nh: Tin trnh b treo hoc lp trong mt vng lp v tn Cn phi Hy tin trnh- Nu khng hy kp thi Chim ti nguyn h thng v ch (chm h thng)- S dng lnh kill tin hnh hy b tin trnh. Lnh kill i sau vi tham s l s hiu ca tin trnh (PID)- Lnh kill thng hay i chung vi lnhps af35- V d:#ls R / > allfiles.txt^Z#ps afUID PID PPID C STIME TTY TIME CMDroot 3822 3821 0 Arp19 tty1 00:00:00 [bash]root 2453 2452 30 11:03 pts/3 00:00:01 ls R /root 2458 2459 10 11:03 pts/3 00:00:00 ps af#kill 2453#ps afUID PID PPID C STIME TTY TIME CMDroot 3822 3821 0 Arp19 tty1 00:00:00 [bash]root 2458 2459 10 11:03 pts/3 00:00:00 ps af- i vi mt s tin trnh c cp u tin cao (High Priority), khng th s dng lnh kill mc nh c th dng tin trnh c S dng thm tham s -9 c th hy c tin trnh c cp u tin cao#kill 9 2453362.5.2.7. Giao tip gia cc tin trnh- Cc tin trnh cn phi giao tip vi nhau trao i thng tin. - Nh lnh ls dng lit k v thng tin ca tp tin v th mc ra mn hnh nhng lng ls trn khng c tnh nng dng mn hnh (nu s dng vt qu 25 dng). Tuy nhin, lnh more li c th lm c iu ny C th kt hp hai lnh ny li thng qua ch th | thc thi c ch ng ng.- V d sau minh ha qu trnh chuyn d liu do lnh ls xut ra sang cho lnh more x l v phn trang bng ng ng#ls R | more/binbootdevetc--More--25 dng t ng ngt - s dng phm SpaceBar tip tc372.6. Tp lnh c bn2.6. Tp lnh c bn2.6.1. Nhm lnh h thng- Bao gm mt s lnh nh sau:- Thng tin chi tit v mi lnh, s dng lnh man 382.6.2. Nhm lnh qun l ti khon ng nhp- Bao gm mt s lnh nh sau:- Thng tin chi tit v mi lnh, s dng lnh man 392.6.3. S dng ti liu hng dn man- Ti liu hng dn man s a ra nhng tr gip cn thit v lnh cng nh chc nng cc tp tin cu hnh h thng.- S dng lnh man bng cch: #man Trong session l phn on chc nng c HH chia ra vi nhiu ch khc nhau, session c th khng c vn c (mc nh s tm t kho trong phn on 1) 40.: S dng ti liu hng dn man trong Console mode :. .: S dng ti liu hng dn man trong Console mode :.Hnh 2.2Hng dn s dng lnh ch console41.: S dng ti liu hng dn man trong Graphic mode :. .: S dng ti liu hng dn man trong Graphic mode :.(GNOME MODE) (GNOME MODE)Hnh 2.3Hng dn s dng lnh ch Graphic GNOME MODE42.: S dng ti liu hng dn man trong Graphic mode :. .: S dng ti liu hng dn man trong Graphic mode :.(KDE MODE) (KDE MODE)Hnh 2.4Hng dn s dng lnh ch Graphic KDE MODE432.6.4. Cc lnh x l tp tin v th mcTp tin v th mc l hai i tng c cp nhiu nht trong th gii UNIX/Linux.2.6.4.1. Kt gn a v th mc- Lnh mount gip cc kt gn phn vng hay nhng thit b vt l thnh mt th mc trong cy th mc thng nht ca HH bt u t gc / (thng thng trong th mc /mnt)44- C php lnh:#mount t vfstype Trong : devicefile: ng dn n tp tin thit b (nh a mm l /dev/fd0, a CD-ROM l /dev/cdrom v cc phn vng /dev/hda1, /dev/hda2,) directory: th mc c kt gn vfstype: Cc kiu h thng tp tin- V d: #mount t iso9660 /dev/cdrom /mnt/cdrom- g kt gn trc #umount 452.6.4.2. Sao chp v xa tp tinSAO CHP TP TIN- S dng lnh cp- Lnh cp ny tng ng vi lnh copy ca MS-DOS- C php lnh:#cp - Ghi ch: Lnh ny c th sao chp nhn bn mt file trong th mc hin hnh.XO TP TIN- S dng lnh rm- Lnh rm ny tng ng vi lnh del ca MS-DOS- C php lnh:#rm 462.6.4.3. Di chuyn v i tn tp tin (hoc th mc)DI CHUYN TP TIN (HOC TH MC)- S dng lnh mv- Lnh mv ny tng ng vi lnh move ca MS-DOS- C php lnh:#mv I TN TP TIN (HOC TH MC)- S dng lnh rename (hoc lnh mv)- C php lnh:#mv 472.6.4.4. To tp tin v th mcTO TP TIN- S dng lnh cat (hoc touch)- Lnh cat ny tng ng vi lnh copy con ca MS-DOS- C php lnh:#cat> (ch c du >) kt thc qu trnh nhp Nhnphm Ctrl + D hoc Ctrl + ]TO TH MC- S dng lnh mkdir- Lnh mkdir ny tng ng vi lnh md ca MS-DOS- C php lnh:#mkdir 482.6.4.5. Xem v chnh sa ni dung tp tinXEM TP TIN- S dng lnh cat (hoc vi)- Lnh cat ny tng ng vi lnh type ca MS-DOS- C php lnh:#catCHNH SA NI DUNG TP TIN- S dng lnh vi- Lnh vi ny tng ng vi lnh edit ca MS-DOS- C php lnh:#vi 492.6.4.6. To lin kt ttLIN KT MM- S dng lnh ln -s- Cha thng tin tr n tp tin vt l. C chc nng chnh l truy xut nhanh tp tin m khng cn phi vo ni cha tp tin y- C php lnh:#ln -s -V d: To tp tin mybin tr n th mc /bin nh sau:#lns/binmybin- S dng lnh ls l xem li:#ls l mybinlrwxrwxrwx 1 mkbooks4 May 3 16:41 mybin /bin50LIN KT CNG- S dng lnh ln- Chc nng l to phin bn mi ca tp tin vt l ban u. Tp tin mi v tp tin vt l ban u thc cht l mt. Nu xa tp tin vt l ban u d liu s khng b mt, ch mt khi khng cn lin kt cng no tham chiu n ni dung chung na.#ls l test*-rw-rw-r-- 1mk books 20 May 3 18:41testfile#ln testfile test1#ls l test*-rw-rw-r-- 2mkbooks 20 May 3 20:41test1-rw-rw-r-- 2mkbooks 20 May 3 18:41testfile512.7. Trnh qun l th mc (MC)2.7. Trnh qun l th mc (MC)Hnh 2.5.aTrnh qun l file mc (Midnight Commander)52Midnight CommanderMidnight CommanderHnh 2.5.bTrnh qun l file mc trong X-Window532.8. Cc tp tin khi ng2.8. Cc tp tin khi ng- HH MS-DOS/Windows c hai tp tin autoexec.bat v config.sys dng thc thi mt s chng trnh t ng v thit lp cu hnh.- HH Linux cng c chc nngnh vy.-Tin trnh u tin c khi ng l init (vi PID l 1). Tin trnh ny gi tip cc tin trnh con khc.- Tp tin cu hnh ca init c tn /etc/inittab cha dng sau:inid : 3 : initdefault :- Cp 3 m bo ch a ngi dng vi giao din dng lnh. Cp 5 dng X-Window.54- Tp tin th hai l .bash_profile- Thng thng tp tin ny thng t trong Home Directory ca mi user (trong th mc /home/). Hoc i vi user root th c t ti th mc /root- Ni dung ca tp tin .bash_profile:#.bash_profile# Get the aliases and functionsif [ -f ~/.bashrc ]; then~/.bashrcfi# User specific environment and startup programsPATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH:$HOME/binBASH_ENV=$HOME/.bashrcUSERNAME=rootexport USERNAME BASH_ENV PATH55Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging.Kt thc chng 2Kt thc chng 256Chng 3:Chng 3: Lp trnh h v (SHELL)Lp trnh h v (SHELL)CITD - VNUHCMBao g m cc ph n sau: 1. Linux v Shell2. Sd ng Shell nhngn ngl p trnh 3. C php ngn ngShell 4. D l i (Debug) c a Script 5. Hi n thmu s c 6. Xy d ngng d ng b ng ngn ngScript 573.1. Linux v Shell3.1. Linux v Shell- Khi bt u lp trnh trn UNIX hay Linux bng C hay bng nhng ngn ng khc chng ta phi tin hnh tip cn v tm hiu khi nim SHELL- Do HH thng cung cp cc hm hay dch v chng trnh ng dng triu gi, nn chng ta vi t cch l mt nh lp trnh cn phi hiu tng tn nhng dch v y.58- triu gi cc hm h thng ca ht nhn, ngoi vic xy dng cc chng trnh v bin dch chng ra m nh phn (file thc thi) HH triu gi th HH cn cung cp cho ta kh nng giao tip vi ht nhn (kernel) thng qua trnh din dch trung gian.- Trn mi trng MS-DOS shell chnh l tp tin command.com. Chnh t shell ny cung cp cc tp lnh nh copy, del, v.v thnh cc li triu gi DOS cp thp (ngt 21h).- Ngoi ra, DOS cn cung cp vic iu khin t ng ha HH bng cc lnh b (batch) trong tp tin .bat nhng khng mnh bng Linux.59- Hnh 3.1 di y l m hnh tng tc gia Shell, chng trnh ng dng, h X-Window v ht nhn ca HH. Hnh 3.1Tng tc gia Shell, Applications, X-Window, Kernel60-Mt s Shell thng dng nh sau:- Chun thng c s dng hin nay l Bash Shell. Thng thng khi ci t, trnh ci t s t bash l shell khi ng- Tn shell ny c tn l bash c t trong th mc /bin613.2. S dng Shell nh ngn ng lp trnh3.2. S dng Shell nh ngn ng lp trnh- C hai cch vit chng trnh iu khin shell G chng trnh trc tip ngay dng lnh (k c cc lnh iu khin if, for, case, v.v) Gp cc cu lnh vo mt tp tin v yu cu shell thc thi tp tin ny nh l mt chng trnh (Ghi nh l phi t quyn execute cho tp tin ny mi c th thc thi c)3.2.1. iu khin Shell t dng lnh- Thc hin v d: Gi s trn cng chng ta c rt nhiu file ngun .c. Cng vic t ra l tm v hin th tt c cc file ngun cha chui main().62- M ngun thc thi cng vic nh sau:#for file in *>do> if grep l main() $file> then> more $file> fi>done- Trong v d trn, lnh fordo s kt thc bng lnh done. HH s nhn bit c v bt u thc thi tt c nhng g ta g vo bt u t lnh for (Khi mt lnh cha hon chnh th shell s chuyn thnh >)- Nh trn,file l mt bin ca shell, trong khi * l mt tp hp i din cho cc tn tp tin s tm thy trong th mc hin hnh.- Mt cch khc thc thi lnh trn l:#for file in *; do; if grep l main() $file; then; more $file; fi; done633.2.2. iu khin Shell bng tp tin kch bn (Script file)- Tin hnh to mt tp tin bng lnh cat nh sau:#cat > first.sh#!/bin/sh#Vi du ve Script file for file in *doif grep l main() $filethenmore $filefidoneexit 0- Lu tp tin trn li v tin hnh thit lp quyn thc thi cho tp tin trn#chmod+xfirst.sh64- Nh v d bn trn th ta thy du # c hai chc nng (Trong on thn chng trnh) # Chc nng l khai bo y l dng ch thch (comment) #! Chc nng l ch th yu cu shell hin ti triu gi shell sh nm trong th mc /bin (Ch cp k hiu #!)- Dng lnh exit c chc nng yu cu Script sau khi thc thi s tr v m li iu ny nn c th hin trong qu trnh lp trnh.- Trong UNIX/Linux, khng yu cu phi t phn m rng cho tn tp tin cng nh chng trnh. Tuy nhin, c th s dng phn m rng l .sh d nhn din y l dng tp tin script ca shell (tng t nh tp tin .bat ca MS-DOS)- bit c mt tp tin c phi l Script hay l nh dng khc, ta s dng lnh file - V d:#file first.sh653.2.3. Thc thi Script file- Thng thng cc chng trnh thc thi shell thng c t ti /bin. Do , c th thc thi c cc Shell Script th ta triu gi trnh Shell vi tn tp tin Script lm i s.#/bin/sh first.sh- Tuy nhin, thc hin lnh trn mt cch ngn ngn ta c th s dng theo phng cch nh sau:#first.sh- Cng c th lnh trn khng thc hin thnh cng v ta s nhn c cu thng bo li Command Not Found Nguyn nhn do bin mi trng PATH thng khng cha ng dn ti v tr th mc hin hnh.#PATH=$PATH:.- Hoc cng c th thc hin t ng (mi ln login) bng cch a dng PATH=$PATH:. vo cui ca tp tin .bash_profile ca ngi dng.663.3. C php ngn ng Shell3.3. C php ngn ng Shell3.3.1. S dng bin- Thng thng, bin khng cn phi khai bo trc khi s dng bin s t ng to v khai bo khi ln u tin tn bin xut hin (bin lc ny cha gi tr kiu chui)- Ch s phn bit ch HOA/thng. V d:foo, Foo, FOO l ba bin khc nhau.- ly ni dung ca tn bin s dng du $- V d:#xinchao=Hello#echo $xinchaoHello#xinchao=I am here#echo $xinchaoI am hereCh sau du =, khng c c bt k khong trng no khc. Nu gn ni dung chui c cha khong trng hy dng du .67- S dng lnh read c gi tr nhp liu do ngi dng nhp vo (nh hm readln() trong ngn ng Pascal hoc scanf() trong ngn ng C++)- V d:#read yournameNguyen Van An#echo $yournameNguyen Van An#read yournameNguyen Van Ba#echo Hello $yournameHello Nguyen Van Ba683.3.1.1. Du bc chui (quoting)- Du nhy kp c dng trong trng hp chui ca ngi dng nhp vo c khong trng. Tuy nhin, bn trong du nhy kp, k hiu $ vn c hiu lc.- Du nhy n c hiu lc mnh hn. Nu nh tn bin c k t $ t trong chui c du nhy n n s b v hiu ha. Nu mun hin th du $ s dng du \ trong chui.- V d 3-1: variables.sh- Tm li, nu mun thay th ni dung bin trong mt chui du nhy kp. Cn nu mun hin th ton b ni dung chui du nhy n.693.3.1.2. Bin mi trng (Environment Variable)- Khi trnh shell khi ng t ng cung cp mt s bin c khai bo v gn gi tr mc nh BIN MI TRNG - Cc bin mi trng ny thng c vit hoa phn bit vi cc bin do ngi dng nh ngha. Mt s bin mi trng ch yu sau:703.3.1.3. Bin tham s (Parameter Variable)- Mc ch l tip nhn tham s trn dng lnh cho vic x l- Mt s bin mi trng di y:71- V d sau s cho thy c s khc nhau ca hai bin $* v $@#IFS=^#set foo bar bam#echo $@foo bar bam#echo $*foo^bar^bam#unset IFS#echo $*foo bar bam Lnh set thit lp 3 tham s dng lnh l foo bar bam. Nhng tham s ny nh hng n bin mi trng $* v $@- Bin $# s cha s tham s dng lnh:#echo $#3- Tham kho V d 3-2: try_variables.sh723.3.2. iu kin- Kh nng kim tra iu kin v a ra quyt nh r nhnh thch hp ty theo iu kin lun l ng hay sai l nn tng c bn ca tt c cc ngn ng lp trnh3.3.2.1. Lnh test hoc []- S dng lnh [] hoc test kim tra iu kin boolean (True or False)- Lnh [] trng n gin d hiu, thng c dng nhiu v rng ri hn lnh test- Cch s dng hai lnh trn l tng ng nhauif test f hello.c if [ -f hello.c ]then then fi fi Ch l phi t khong trng gia lnh [] v biu thc kim tra73- Lnh test c iu kin trong cho php kim tra mt trong 3 kiu sau: So snh chui (Cn tham kho thm) So snh ton hc (Cn tham kho thm) So snh iu kin trn tp tin (Cn tham kho thm)743.3.3. Cu trc iu khin- Shell cung cp cho ta cu trc iu khin tng t cc ngn ng lp trnh khc (v thm ch cn mnh v uyn chuyn hn)3.3.3.1. Lnh if- Chc nng: Kim tra iu kin ng hay sai thc thi biu thc thch hp. y l lnh c s dng nhiu nht trong cc chng trnh (d l chng trnh ln hay nh)- Cu trc:if then

else

fi- Tham kho V d 3-3: if_control.sh753.3.3.2. Lnh elif- Chc nng: Cng tng t nh if kim tra iu kin ng hay sai thc thi biu thc thch hp. Lnh ny cho php kim tra iu kin ln th 2 bn trong else- Tham kho V d 3-4: elif_control.sh3.3.3.3. Vn pht sinh vi cc bin- Xt li V d 3-4 ta s thy nu nh ta khng nhp gi tr cho bin timeofday l yes hoc no lc thng bo u tin (ch vic g Enter) th lc ny xem nh ta to chui rng cho bin timeofday- Lc ny dng if u tin s tr thnh if [ =yes ] shell lc ny s khng bit so snh chui yes vi ci g??? Li: [: =: unary operator expected- Tham kho V d 3-5: elif_control2.sh763.3.3.4. Lnh for- Chc nng: thc hin vic lp li mt s ln cng vic vi cc gi tr xc nh.- Cu trc:for in do

done- Tham kho V d 3-6: for_loop.sh- Ci tin v d trn vi vic m rng bin thnh tp hp s dng trong lnh for Yu cu trong v d ny l in ra tt c cc tp tin c phn m rng l .sh v c k t u tin l f- Tham kho V d 3-7: for_loop2.sh773.3.3.5. Lnh while- Chc nng: C chc nng nh lnh for nhng nhm p ng c vic lp trong mt tp hp ln hoc s ln lp khng bit trc.- Cu trc:while do

done- Tham kho V d 3-8: password.sh- Bng cch s dng bin m v biu thc so snh s hc trong v d trn (V d 3-8). Lnh while hon ton c th thay th c lnh for trong trng hp tp d liu ln- Tham kho V d 3-9: while_for.sh- C php $( ( ) ) dng nh gi v c lng c biu thc. Ta c th thay th c php trn bng lnh expr Tuy nhin expr khng hiu qu bng $( ( ) )783.3.3.6. Lnh until- Chc nng: C chc nng nh lnh while nhng iu kin b o ngc li. Vng lp s b dng nu iu kin kim tra l ng- Cu trc:until do

done- Tham kho V d 3-10: until_user.sh- Cch thc hin lnh nh sau:#./until_user.sh minhkhai (vi minhkhai l tn ngi dng ng nhp vo h thng.793.3.3.7. Lnh case- Chc nng: C chc nng l cho php ta so khp ni dung ca bin vi mt mu chui (pattern) no . Khi mt mu c so khp th tng ng s c thc hin.- Cu trc:case inmu chui [ | mu chui] ...) ;;mu chui [ | mu chui] ...) ;;...esac- Tham kho V d 3-11: case1.sh- Tham kho V d 3-12: case2.sh- Tham kho V d 3-13: case3.sh803.3.4. Danh sch thc thi lnh- Shell cung cp cho ta c php danh sch AND v OR c th kt ni cc lnh li vi nhau theo th t kim tra trc khi ra mt quyt nh no 3.3.4.1. Danh sch AND- Chc nng: Cho php thc thi mt chui lnh k nhau. Lnh sau ch thc hin khi lnh trc thc thi v tr v m li thnh cng- Cu trc: && && ...- Tham kho V d 3-14: and_list.sh813.3.4.2. Danh sch OR- Chc nng: Cng nh lnh AND l thc thi mt dy cc lnh NHNG nu c mt lnh tr v l TRUE th vic thc thi dy lnh s dng li- Cu trc: || || ...- Kt qu cui cng ca danh sch OR ch ng (TRUE) khi c mt trong cc tr v TRUE- Khc vi && l gi lnh tip theo khi cc lnh trc l TRUE cn vi || th gi lnh tip theo trong chui lnh khi lnh trc l FALSE- Tham kho V d 3-15: or_list.sh823.3.5. Hm (Function)- Shell cho php ta t to lp cc hm hay th tc triu gi bn trong Script- Ta c th gi cc script con khc bn trong script chnh tuy nhin vic ny thng lm tiu tn ti nguyn v khng hiu qu bng triu gi hm- Cu trc:tn hm() {

. . .

}- Tham kho V d 3-16: my_function.sh833.3.5.1. Bin cc b v bin ton cc- Khai bo bin cc b (ch c hiu lc bn trong hm) dng t kho local. Do vy, nu khng c t kha trn th bin ch c hiu l ton cc (global)- Phm vi lu tr ca bin ton cc khng cn hiu lc khi hm kt thc- Bin ton cc c nhn thy v c th thay i bi tt c cc hm trong cng script.- Tham kho V d 3-17: function2.sh3.3.5.2. Hm v cch truyn tham s- Shell khng cung cp chc nng khai bo tham s cho hm.- Vic truyn tham s cho hm tng t truyn tham s trn dng lnh- V d: Truyn tham s cho foo() foo tham s 1, tham s 2, ...- Tham kho V d 3-18: get_name.sh843.3.6. Cc lnh ni ti ca Shell- Ngoi cc lnh iu khin c gii thiu bn trn, shell cn cung cp cho ta mt s lnh ni ti khc (built-in) ~ cc lnh ni tr ca MS-DOS3.3.6.1. Lnh break- Chc nng: Thot khi vng lp for, while hoc until bt k iu kin thot ca cc lnh ny c din ra hay khng.- Tham kho V d 3-19: break.sh3.3.6.2. Lnh continue- Chc nng: Thng c dng bn trong vng lp, lnh ny yu cu vng lp quay ngc li thc hin bc lp k tip m khng cn thc thi cc khi lnh cn li- Tham kho V d 3-20: continue.sh853.3.6.3. Lnh :- Chc nng: L mt lnh rng (NULL). i lc lnh ny c dng vi ngha logic l TRUE. Vic dng lnh : s thc thi nhanh hn vic so snh true. Nh while : s nhanh hn while true- Ghi ch: Mt s shell phin bn c s dng lnh : nh l mt ch thch lnh ~ nh #- Tham kho V d 3-21: colon.sh3.3.6.4. Lnh . (thc thi)- Chc nng: Dng thc thi mt script bn trong shell hin hnh. ng thi khi thc thi chnh lnh . s gi nguyn nhng thay i v mi trng m cc bin tc ng ln (do khi thc thi mt script, shell s lu li ton b bin mi trng v to ra mi trng mi - sub shell - script c th hot ng v cc thng s ca bin mi trng s c khi phc li khi script chm dt - bng lnh exit())- Tham kho V d 3-22: dot_command.sh863.3.6.5. Lnh eval- Chc nng: Cho php thc hin mt lnh ng ph thuc vo bin- V d 1:$ foo=10$ x=foo$ y=$$x$ echo $y Kt qu in ra l $foo87- V d 2:$ foo=10$ x=foo$ eval y=$$x$ echo $yKt qu in ra l 10- V d 3: Gi s tp tin run cha cc lnh:$ L1=./input_timer.exe$ L2=./count_ctrl2.exe$ eval $L$188 Dng cc lnh sau thc hin lnh c sn theo s th t:$ ./run1$ ./run2- V d 4: C th to lp th mc vi tn ng m khng cn n eval:$ mkdir /backups/$(date +%F%H.%M.%S)Th mc mi vi tn dng /backups/2005-05-2308.30.25 c to lp.893.3.6.6. Lnh exec- Chc nng: Dng gi mt lnh bn ngoi khc. Thng thng lnh exec s gi mt shell ph khc vi shell m script ang thc thi.- Mc nh th exec s triu gi lnh exit khi kt thc lnh Do nu ta gi lnh exec ngay t dng lnh th sau khi thc thi lnh xong (do gi tip lnh exit) ta s b thot ra khi shell hin hnh v quay tr v mn hnh ng nhp.- Tham kho V d 3-23: exec_demo.sh3.3.6.7. Lnh exit n- Chc nng: Dng thot ra khi shell ang gi v tr v m li n- Tng t nh trn nu nh ta gi exit ngay t dng lnh th ta s thot ra khi shell hin hnh v quay v mn hnh ng nhp.- M li: tham kho thm trong gio trnh.- Tham kho V d 3-24: test_exists.sh903.3.6.8. Lnh export- Chc nng: Do khi thc thi mt shell th cc bin mi trng u c lu li. Nh vy, khi khai bo v s dng cc bin trong mt script th cc bin ny ch c gi tr ca shell triu gi script . Do vy, lnh export c cp y cho php cc bin c th thy c tt c cc script trong shell ph hay cc script c triu gi t shell khc.- Lnh export c chc nng nh khai bo bin ton cc- Tham kho V d 3-25: export2.sh- Tham kho V d 3-26: export1.sh3.3.6.9. Lnh expr- Chc nng: c lng gi tr i s truyn cho n nh l mt biu thc v thng c dng trong vic tnh ton kt qu ton hc i t chui sang s. Ch : Biu thc c lnh expr t trong cp du ` `913.3.6.10. Lnh printf- Chc nng: Tng t nh lnh printf ca th vin C- Danh sch cc k t c bit dng chung vi du \, gi l chui thot- nh dnh s v chui bng k t %923.3.6.11. Lnh return- Chc nng: Tr v gi tr ca hm- Nu lnh khng c tham s th s tr v m li ca lnh va thc hin3.3.6.12. Lnh set- Chc nng: Dng thit lp gi tr cho cc bin mi trng nh $1, $2, $3,... Ngoi ra, lnh ny cn c chc nng loi b nhng khong trng khng cn thit v t ni dung ca chui truyn cho n vo cc bin tham s#setThis isparameter#echo $1This#echo $3parameter- Tham kho V d 3-27: set_use.sh933.3.6.13. Lnh shift- Chc nng: Di chuyn ni dung cc tham s mi trng $1, $2, $3, v.v... xung mt v tr. (Do ta ch c ti a 9 tham s $1..$9)- Nu gi tham s $10 th s c hiu l $1 v 0- Tham kho V d 3-28: using_shift.sh3.3.6.14. Lnh trap- Chc nng: Dng by mt tn hiu (signal) do h thng gi n Shell trong qu trnh thc thi script- Tn hiu y thng thng l mt thng ip ca h thng gi n chng trnh yu cu hay thng bo mt cng vic no m h thng s thc hin. V d: Ngt INT thng c gi khi nhn CTRL+C- Tham kho V d 3-29: use_trap.sh943.3.6.15. Lnh unset- Chc nng: Loi b bin khi mi trng Shell- Lnh unset rt t c s dng- V d:#!/bin/shfoo=Hello Worldecho $foounset fooecho $foo- Kt qu chng trnh s in ra chui rng (do lc ny bin foo khng tn ti na)953.3.7. Ly v kt qu ca mt lnh- Khi vit cc lnh cho script, i lc ta thng c nhu cu ly v kt qu hay xut kt qu cho lnh tip theo. Tng t nh vic ta gi thc thi mt lnh v mun ly kt qu tr v ca lnh lm ni dung lu tr vo bin- V d 3-30: use_command.sh3.3.7.1. c lng ton hc- Vic s dng lnh expr bn trn theo nh gi l thng thc thi chm v khng hiu qu. Cc shell mi hin ti cung cp cho ta c php $((...)) dng c lng biu thc bn trong (...) thay cho lnh expr Cch ny hiu qu hn nhiu so vi lnh expr- V d 3-31: evaluate.sh963.3.7.2. M rng tham s- K thut di y dng thc thi cu trc mng:1_tmp = Hello2_tmp = There3_tmp = Worldforiin123doecho ${i}_tmpdoneKt qu l ni dung 3 bin 1_tmp, 2_tmp, 3_tmp c a ra mn hnh.97- Mt s phng php m rng v thay th tham s dng x l chui:${param:-default} Nu param=null, kt qu l default${#param} di ca param (s k t)${param%word} Loi b chui con ngn nht bn phi param so khp vi word (param khng thay i)${param%%word} Loi b chui con di nht bn phi param so khp vi word (param khng thay i)98${param#word} Loi b chui con ngn nht bn tri param so khp vi word (param khng thay i)${param##word} Loi b chui con di nht bn tri param so khp vi word (param khng thay i)V d:i tn tp tin hng lot:forfilenamein t*.vbdomv$filename${filename%.vb}.txtdone99- V d 3-32: param_expansion.sh- V d 3-33: giftojpg.sh1003.3.8. Ti liu HERE- Trn UNIX/Linux cung cp c ch t ng ha m phng vic nhp liu g vo t bn phm bng ti liu here (Here Document)- Ta ch cn cc phm hay chui cn g trong mt tp tin v chuyn hng tp tin ny cho lnh cn thc thi. N s tip nhn v c ni dung tp tin nh nhng g ta g vo t bn phm.- Tham kho V d 3-34: cat_here.sh- Tham kho V d 3-35: auto_edit.sh1013.4. D li (Debug) ca Script3.4. D li (Debug) ca Script- Do script l lnh vn bn c shell thng dch nn vic d li khng kh nh cc chng trnh bin dch nh phn- Qu trnh d li th shell s in ra s th t ca dng gy li. Ta cng c th thm vo lnh echo in ra ni dung ca cc bin c kh nng gy li cho chng trnh- Ta c th dng set t mt s ty chn cho shell hoc t thm tham s khi gi shell thc thi script1023.5. Hin th mu sc3.5. Hin th mu sc- Mc ch chnh l scrips c h tr cho php ta hin th c tt c mu sc ln mn hnh m khng cn phi c s h tr ca ngn ng bin dch nh C/C++3.5.1. Mu ch- Thng thng khi thc hin lnh ls -l ta s thy * tp tin thc thi c hin th bng mu xanh l cy* tp tin nn c mu * tp tin thng thng mu trng xm* tn file hnh nh (gif, jpg, v.v...) mu hng* v.v...- V d:#echo e \033[35mHello Color \033[0m Hello Color#echo e \033[32m Green \033[34m Blue Green Blue-Tham kho cc m iu khin thm trong gio trnh (p.113)103- V d: In ra vn bn vi cc mu khc nhau #for color in 30 31 32 33 34 35 36 37#do # echo e \033[${color}m This is color text #done#echo e \033[0m3.5.2. Thuc tnh vn bn(c thm p.114)- V d:#echo e \033[33;1m This is bold and red text \033[0m This is bold and red text 3.5.3. Mu nn (c thm p.114)-V d:#echo e \033[42;31m Red and Green \033[0m Red and Green1043.6. Xy dng mt ng dng bng ngn ng Script3.6. Xy dng mt ng dng bng ngn ng Script- Xy dng chng trnh qun l a CD (chng trnh c thc thi bng ngn ng ca Shell. Tham kho V d 3-36: cd_app.sh3.6.1. Phn tch yu cu- Chng trnh phi c kh nng chn vo mt tuyn tp CD mi- To c danh sch mi cc bi ht- Sa i cp nht mi cc bi ht- Xa cc bi ht c- Lit k danh sch cc bi ht ang c trong b su tp3.6.2. Thit k ng dng- Xy dng menu d dng cho vic la chn- Lu tr d liu dng vn bn- La chn cch lu thng tin v CD trong mt tp tin v c quan h vi thng tin v tn bi ht c lu trong tp tin khc (do y l cch tun th theo m hnh quan h CSDL).105Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging.Kt thc chng 3Kt thc chng 3.: CNG NGH LINUX :..: CNG NGH LINUX :.Mn hc: Mn hc:KHA 3 KHA 3CHNG TRNH O TO THC S CNTT QUA MNG CHNG TRNH O TO THC S CNTT QUA MNGI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TINGing vin:Ging vin:TS. T Tun (Vin CNTT, BQP) TS. T Tun (Vin CNTT, BQP)Email: [email protected] Email: [email protected] l k thut:Tr l k thut:Nguyn Vn Phc, V Mnh Cng Nguyn Vn Phc, V Mnh Cng2Chng 4:Chng 4: Nhp mn lp trnh LinuxNhp mn lp trnh LinuxCITD - VNUHCMBao g m cc ph n sau: 1. Linux v Unix2. C ng ng GNU v General Public License 3. L p trnh trn Linux 4. Ch ng trnh Unix v Linux 5. Ch ng trnh Linux u tay helloworld.c 6. Tm trgip vtrnh bin d ch 7. Pht tri n ch ng trnh v i ngn ngC 8. Thvi n lin k t trn Linux 34.1. Linux v Unix4.1. Linux v Unix- Unix c nh gi l mt HH mnh, n nh. Trc y c xem l mt HH m ngun m v t khi Sun Microsystems nng cp ln thnh mt sn phm thng mi mt dn tnh m ca HH Unix.- Cc dng sn phm Server ca Microsoft v ang cnh tranh vi cc dng tng ng thuc h UNIX (nh FreeBSD,Linux, Debian, SCO Unix,)- Theo dng lch s th vi vic k tha v pht huy nhng tnh nng ni bt ca mt HH qua th thch - UNIX {m ngun m + tnh n nh} Linux c ng h v c s dng bi cng ng trn ton th gii4- Mt s tnh nng khc ca HH Linux so vi HH Unix: L ht nhn cung cp cc chc nng cn thit ti thiu ca HH ta Unix (Linux ging Unix gn 98%) L mt sn phm c gi tr do Unix khng c phin bn chy trn h my PC vi kin trc Intel5 Chng trnh vit trn Unix u c th chy tt trn Linux v ngc li Linux c pht trin da trn vic tn dng nhng u im v khc phc nhng khuyt im ca cc HH ta UNIX Linux ngy nay c s dng rng ri v chnh do yu t ph bin trn c s h tr gip ca kh nhiu cng ng ngi dng trn th gii64.2. Cng ng GNU v General Public License4.2. Cng ng GNU v General Public License - Ngoi HH, cn c cc chng trnh ng dng phc v cho yu cu ca ngi dng- Cng ng Open Source xy dng nhiu ng dng c kh nng chy c trn Unix/Linux v nhn chung theo xu hng hin i nhm li ko ngi dng Linux theo phng chm Windows c g ~ Linux c tng ng nh vy7- GNU {GNUs Not UNIX} GNU theo nguyn gc ting Anh l linh dng u b l biu tng ca t chc cng ng m ngun m- Tham kho cc phn mm ng dng min ph ti a ch http://www.gnu.org/software/software.html - Khi s dng cc phn mm ca t chc GNU th cn phi tun th mt s quy nh ca t chc trn Giy php chng nhn GPL cn gi l copyleft thay cho copyright cho cc chng nhn bn quyn thng mi8- Mt s b cng c bin dch C/C++:Trnh bin dch Trnh bin dch ngha nghagcc Trnh bin dch Cg++ Trnh bin dch C++gdb Trnh g liGNU make Trnh qun l m ngun v qun l th vinGNU Emacs Trnh son tho vn bnbash H v Shell h tr c ch dng lnhBison B phn tch tng thch yacc ca UNIX94.3. Lp trnh trn Linux4.3. Lp trnh trn Linux- Nguyn thy Unix c vit bng C v phn ln cc ng dng trn Unix c vit bng C- Ngoi C l la chn duy nht, c th s dng Pascal, Assembly hoc Perl xy dng cc chng trnh cho LinuxAda C C++Eiffel Forth FortranIcon Java JavaScriptLisp Modula 2 Modula 3Oberon Objective C PascalPerl PostScript PrologPython Scheme SmalltalkSQL Tcl / Tk UNIX Bourne Shell104.4. Chng trnh Unix v Linux4.4. Chng trnh Unix v Linux- Chng trnh trn Unix v Linux tn ti hai dng: Dng thc thi (tp tin nh phn) Dng thng dch (tp tin script) File chng trnh thc thi ~ nh tp tin .exe ca MS-DOS/Windows File script l nhng ch th lnh c thc thi bi shell hay trnh thng dch no (Perl, Python, Tcl, ...) tng t nh cc tp tin .bat ca MS-DOS, VBScript v JavaScript ca Windows Script Host- Cc file script v chng trnh nh phn u c kh nng v mnh ngang nhau Do vy, lc thc thi kh phn bit c u l lnh gi chng trnh nh phn v u l lnh thc hin script- Khi chng trnh c gi, Linux s tm ng dn n ni cha tp tin chng trnh trong bin mi trng PATH. Thng thng, bin ny cha cc ng dn sau /bin, /user/bin, /usr/local/bin11- i vi ngi qun tr h thng, c thm mt s ng dn tr n th mc /sbin, /usr/sbin- Unix/Linux s dng du : phn cch cc ng dn trong bin mi trng PATH, trong khi MS-DOS dng du ;- V d:PATH = /bin: /user/bin: /usr/local/bin:.:124.5. Chng trnh Linux u tay (4.5. Chng trnh Linux u tay (Helloworld.cHelloworld.c))- Dng trnh son tho bt k (trong Console Mode) son tho source code nh: vi cat Dng chc nng Edit trong mc (Midnight Commander) v.v...- Cch s dng: vi helloworld.c cat > helloworld.c- Mt giao din khc tng t nh trong Turbo C ca Borland th s dng trnh son tho wpe (cho php kt hp chc nng bin dch ca cc, gcc, pascal)- Tham kho V d 4-1: helloworld.c13Windows Programming Environment Windows Programming Environment (WPE)(WPE)==== -------------------- ====Hnh 4.1Trnh wpe trong ch Console14Windows Programming Environment Windows Programming Environment (WPE)(WPE)==== ---------- ---------- ====Hnh 4.2Trnh wpe trong ch X-Windows15- S dng gcc (hoc cc) bin dch nh sau:#gcc helloworld.c -o helloworld#./helloworldHello World#164.6. Tm tr gip v trnh bin dch4.6. Tm tr gip v trnh bin dch- Trong trnh gcc c rt t ty chn (-o, -g, -l, -I, v.v...).- S dng lnh man tham kho thm mt s tu chn khc.- Trong b chng trnh GNU cng km theo chng trnh info c u im l hng dn s dng phn mm rt chi tit. Cch thc dng lnh info nh man.174.7. Pht trin chng trnh vi ngn ng C4.7. Pht trin chng trnh vi ngn ng C- S dng ngn ng C lm ngn ng chnh trong chng trnh- Ngn ng lp trnh C khng ph thuc vo HH no4.7.1. Chng trnh trn Linux- Cn nm r v tr t ti nguyn xy dng chng trnh nh trnh bin dch, file th vin, cc file header khai bo hm v cu trc d liu, ...- Trnh bin dch gcc thng c t trong /usr/bin hoc usr/local/bin. Khi bin dch, gcc cn nhiu file h tr nh cc tp tin th vin lin kt (trong /lib hoc /usr/local/lib), cc file C header (trong /usr/include hoc /usr/local/include), v.v...- Chng trnh sau khi bin dch c th t bt k u trn h thng min l HH c th tm thy trong bin mi trng PATH hoc theo ng dn tuyt i trong dng lnh.184.7.2. Cc file header- File header trong C cha nh ngha cc hm, cc hng cng vi nhng cu trc d liu cn cho qu trnh bin dch- V d mt khai bo header trong C:#include - Trnh bin dch s tm file header c tn l types.h trong th mc /usr/include/sys- i vi cc hm lp trnh ho X-Window, cc file header nm trong th mc /usr/include/X11- S dng ty chn -I ch ra th mc cha cc file header ca ring mnh (khc vi th mc mc nh ca h thng).- V d:#gcc I /usr/mypro/include test.c -o test- Xem thng tin v cc hm trong th vin #man 194.7.3. Cc file th vin- to ra chng trnh thc thi, cn c cc file th vin- Trong Linux, cc file th vin thng l .a, .so, .sa v c bt u bng tip u ng lib. V d: libutil.a hoc libc.so y l tn cc th vin trong Linux- C 2 loi th vin lin kt: Lin kt ng (Dynamic) Lin kt tnh (Static)- Khi bin dch, thng thng chng trnh lin kt (ld) s tm th vin trong 2 th mc chun /usr/lib v /lib204.8. Th vin lin kt trn Linux4.8. Th vin lin kt trn Linux- Hnh thc n gin nht ca th vin l tp hp cc file i tng .o do trnh bin dch to ta bc bin dch vi ty chn -c#gcc -c helloworld.c- Lc ny trnh bin dch cha to ra file thc thi m to ra file i tng helloworld.o (file ny cha m my ca chng trnh c t chc li ~ cc file .o ny tng t nh cc file .obj do trnh bin dch C sinh ra trn DOS hoc Windows)- to ra file thc thi, thc hin bc cui cng (gi linker ld)#gcc helloworld.o -o helloworld- Nu khng dng kho chuyn -c th trnh bin dch s thc hin c hai bc trn ng thi.214.8.1. Th vin lin kt tnh- L cc th vin khi lin kt trnh bin dch s ly ton b m thc thi ca hm trong th vin a vo chng trnh chnh.- Chng trnh s dng th vin lin kt tnh ny chy c lp vi th vin sau khi bin dch.- Do khi cn sa cha hoc nng cp Bin dch li- Tham kho V d 4-2: fred.c- Tham kho V d 4-3: bill.c- Tin hnh bin dch to ta 2 file i tng .o#gcc -c fred.c bill.c- To file tiu khai bo cc hm nguyn mu ca ngi s dng- Tham kho V d 4-4: lib.h- Chng trnh chnh triu gi 2 hm trn: V d 4-5: program.c22 Sau khi bin d ch thnh cc t p tin .o, c n t o t p tin th c thi nhsau: # gcc program.o bill.o fred.o o program Cch t o thvi n lin k t tnh: # ar cvr libfoo.a bill.o fred.o Bin d ch v h p nh t v i thvi n lin k t tnh: # gcc program.c o program L. -lfoo234.8.2. Th vin lin kt ng4.8.2.1. To v s dng th vin lin kt ng .so- Th vin lin kt tnh c nhc im: Phi nhng m nh phn km theo chng trnh khi lin kt, dn n tnh trng tn khng gian a nu nh c chng trnh yu cu s dng mt hm nhiu ln (v d nh hm printf()) Phi bin dch v/hoc lin kt li khi mun nng cp (hoc b sung tnh nng mi)- Th vin lin kt ng khc phc c hai vn trn do cc hm th vin lin kt ng c np trong thi gian thi hnh v c th c dng chung gia nhiu tin trnh. a hm vo th vin lin kt ng cn dng ty chn -fpic (hoc fPIC), vit tt ca Position Independence Code24- V d sau s bin dchfred.c v bill.c thnh cc tp tin .o c kh nng a c vo th vin lin kt ng:# gcc -c -fpic fred.c bill.c- Tip n to th vin lin kt ng t cc file i tng .o trn bng cch s dng ty chn -shared (do th vin lin kt ng c to ph thuc vo kin trc ca HH):# gcc -shared bill.o fred.o -o libfoo.so- Cch s dng th vin lin kt ng vi chng trnh chnh:# gcc program.c -o program-L. -lfoo- Vi cc tu chn -L. v -lfootrnh bin dch v lin kt gcc s tm th vin libfoo.so hoc libfoo.a trong th mc hin hnh v to ra file thc thi program.- Th vin .so c u tin s dng so vi .a. Nu khng tm thy file th vin .so trn th.a mi c xem xt n.25V d minh ha v th vin lin kt trn Windows V d minh ha v th vin lin kt trn Windows ==== ---------- ---------- ====264.8.2.2. Thc thi gi lin kt mun- Th vin lin kt ng phi nm trong /lib, /usr/lib, /usr/local/lib hoc th mc vi ng dn ch bi bin mi trng LD_LIBRARY_PATH- V d:# export LD_LIBRARY_PATH=/myprog/lib:/other/lib:.# ./program- C th ch ng gi v np cc hm th vin lin kt ng m khng cn nh vo HH. y c gi l hm lin kt mun- Ba hm lin kt mun chnh l: dlopen() dlsym() dlclose()27- Cc hm trn c khai bo nh sau:#include void *dlopen (const char* lib_file, int mode);void *dlsym (void * handle, const char* funct_name);int dlclose (void *handle);- Hm dlopen() yu cu ng dnlib_file ti th vin .so cn np.- Hm dlsym() yu cu con tr n th vin np v tr v trc bi hm dlopen()- Hm dlclose() gii phng th vin tr n bi handle do dlopen() np trc - Tham kho V d 4-6: program2.c28Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging.Kt thc chng 4Kt thc chng 429Chng 5:Chng 5: X l tp tin v th mcX l tp tin v th mcCITD - VNUHCMBao g m cc ph n sau: 1. Hth ng t p tin trong Linux2. Cc cch xl tp tin trong Linux3. Thvi n xu t nh p chu n (Standard I/O Library) 4. Hm truy xu t c p th p 5. Xl thm c 305.1. H thng tp tin trong Linux5.1. H thng tp tin trong Linux- Tt c cc tp tin v th mc c t chc theo dng cy duy nht- Gc ca cy th mc gi l root v c k hiu l /- Cho d my tnh c nhiu a (hoc nhiu phn vng, nhiu thit b) tt c c kt gn vo cc nhnh ca cy th mc chnh- Thao tc kt gn c thc hin bi lnh mount - Hnh 5-1 cho thy th mc /home/soft l th mc c gn kt vi mt phn vng ca a cng th 2 31- Thc t, th mc trong Linux c xem nh mt tp tin c thuc tnh d.a cng 1a cng 2usr etc home devminhkhaisoftbook.docofficehelps.txtHnh 5.1H thng th mc trong Linux32Hnh 5.1.aMt cu trc th mc trong Linux335.2. Cc cch x l 5.2. Cc cch x l tp tin tp tin trong Linuxtrong Linux- C hai cch truy xut file: Truy xut file s dng vng m (stream file): Da vo cc hm th vin chun stdio Truy xut file cp thp (low-level): Da vo cc li gi h thng- Hnh 5.2 l m hnh truy xut phn cng da vo th vin chun v cc li gi h thng.34ng dng (Application)stdio LibraryLi gi h thng (System Call)KERNELDevice DriversThit b phn cng(Hardware Devices)gi hmKhng gian ngi dng(User Space)Khng gian h thng(Kernel Space)Hnh 5.2Cch triu gi v truy xut thit b phn cng355.3. Th vin xut nhp chun (Standard I/O Library)5.3. Th vin xut nhp chun (Standard I/O Library)- c khai bo trong stdio.h- Th vin ny tun theo chun ANSI c th s dng chng hu nh trn cc HH. fopen(), fclose() fread(), fwrite() fflush() fseek() v.v...- Tt c cc hm trn u s dng con tr ti cu trc FILE5.3. Th vin xut nhp chun (Standard I/O Library)5.3. Th vin xut nhp chun (Standard I/O Library)- c khai bo trong stdio.h- Th vin ny tun theo chun ANSI c th s dng chng hu nh trn cc HH khc nhau: fopen(), fclose() fread(), fwrite() fflush() fseek() v.v...- Tt c cc hm trn u s dng con tr ti cu trc FILE365.3.1. ng m tp tin- S dng hm fopen() v fclose()- V d:/*Khai bo cc bin con tr ti cu trc FILE*/FILE* f_read;FILE* f_write;FILE* f_readwrite;FILE* f_append;/*M tp tin data.txt c*/f_read=fopen(/home/ch12/data.txt, r);if (!f_read) { /*Khng m c tp tin*/perror(Khong mo duoc file de doc...);exit(1);}37/* M tp tin logfile trong th mc hin hnh ghi. Nu cha c, tp tin mi c to; Nu c, ni dung c b xa */f_write=fopen(logfile.txt, w);/* M /usr/local/db/users c v ghi */f_readwrite=fopen(/usr/local/db/users, rw);/* M /var/adm/messages ni thm d liu vo cui */f_append=fopen(/var/adm/messages, a);/* ng tp tin ang m */if (!fclose(f_readwrite)) {perror(Khong the dong file duoc...);exit(1);} 385.3.2. c t tp tin- Sau khi m tp tin v c con tr n cu trc FILE, c th thc hin vic c d liu bng nhiu hm th vin.- V d:int c;char buf[200];c=fgetc(f_read); // c 1 k t hoc c EOFif (fread(buf, 120, 1, f_read) != 1) { // c 1 khi k tperror(Khng c c !);}if (feof(f_read)){printf(Gp EOF !);}395.3.3. Ghi vo tp tin- Gi s f_readwrite l con tr n cu trc FILE c fopen() vi ch ghi l w.- V d:int c;char buf[201];// Ghi k t a ra tp tinc=a; fputc(f_readwrite);// Ghi mt chui k t ra tp tin strcpy(buf, Hello World !);fputs(buf, f_readwrite);// y d liu cn li trong vng m ra tp tinfflush(f_readwrite);405.3.4. Di chuyn v tr c/ghi trong tp tin- Dng hm fseek() phi hp vi ftell().- V d:fseek(f_read, 20L, SEEK_SET); // Chuyn n v tr 20fseek(f_read, 10L, SEEK_CUR); // i 10 v tr tnh t v tr hin thi// Ghi nh v tr hin thi. Chuyn n v tr cch cui file 50 byte// Ghi chui Hello World ! k t v tr , sau v ch clong old_position=ftell(f_readwrite);if (fseek(f_readwrite, -50L, SEEK_END) < 0){perror(Khng chuyn n c !); exit(1);}fputs(Hello World !, f_readwrite);fseek(f_readwrite, old_position, SEEK_SET) ;415.4. Hm truy xut cp thp5.4. Hm truy xut cp thp- S m t (File Descriptor) c dng tham chiu ti tp tin.5.4.1. c/ghi tp tin#include #include #include #include // Cc bin cha s m t tp tin tr v bi hm open()int fd_read;int fd_write;int fd_readwrite;int fd_append;42size_t rc;char buf[20];fd_read=open(/data/vb1.txt, O_RDONLY);rc=read(fd_read, buf, 20); // c 20 bytesif (rc == 0){printf(Gp EOF);}else if (rc < 0){perror(Khng c c !);exit(1);}else {printf(c c %d bytes, rc);}close(fd_read);43fd_readwrite=open(/data/food.db, O_RDWR);if (fd_readwrite < 0){perror(Khng m c !);exit(1);}rc=write(fd_readwrite,Hello World !, strlen(Hello World !))if (rc < 0){perror(Khng ghi c !);exit(2);}close(fd_readwrite);445.4.2. Kim tra quyn trn tp tinHm access()dng kim tra quyn truy cp tp tin:#include // Kim tra quyn c/ghiif (access(/data/data.db, R_OK | W_OK) == 0)printf(C quyn c-Ghi);elseprintf(Khng c quyn c-Ghi);455.4.3. Thit lp quyn trn tp tinHm chmod() dng thit lp quyn truy cp tp tin:#include #include // Cho php Ch s hu quyn c-Ghi// Cho php Nhm c c, cn nhng ngi Khc c quyn Ghiif (chmod(/data/data.db, S_IRUSR | S_IWUSR|S_IRGRP|S_IWOTH) == -1){perror(Khng thit lp quyn c !);elseprintf(Thit lp quyn c );465.4.4. Ly thng tin v tp tinHm stat() dng ly thng tin v tp tin:#include #include #include struct stat file_status;if (stat(/data/data.db, &file_status) == 0){if (S_ISDIR(file_status.st_mode)) printf(Th mc !);if (S_ISLNK(file_status.st_mode)) printf(Soft Link !);if (S_ISREG(file_status.st_mode)) printf(Normal File!);}else perror(Khng xc nh c trng thi !)475.4.5. i tn tp tin#include if (rename(/data/data.db, /data/data.bak) == -1){perror(Khng i tn c !)}5.4.6. Xa tp tin#include if (unlink(/data/data.db) == -1){perror(Khng xa c !)}485.4.7. To lin kt mm#include if (symlink(/data/data.db, /luu/data.lnk) == -1){perror(Khng to c lin kt mm !)}5.4.8. To lin kt cng#include if (link(/data/data.db, /luu/data.db) == -1){perror(Khng to c lin kt cng !)}495.5. X l th mc5.5. X l th mcLinux c cc hm ring dng x l th mc:#include #include // M th mc vi kt qu l con tr ti cu trc DIRDIR *opendir(const char * name);// c mt u mcstruct dirent readdir(DIR *dirp);// ng th mcint closedir(DIR *dirp);// V tr hin hnh ca con tr u mclong int telldir(DIR *dirp);50// Chuyn n u mc theo s hiulong int seekdir(DIR *dirp, long int loc);// To th mc#include #include int mkdir(const char *path, mode_t mode);// Xa th mc#include int rmdir(const char *path);// Chuyn i th mc lm vicint chdir(const char *path);// Nhn ng dn ca th mc lm vic (hin thi)char *getcwd(char *buff, size_t size);51V d:#include #include #include #include DIR *dp; struct dirent *entry;struct stat statbuf;if ((dp = opendir(/data)) == NULL){perror(Khng m c th mc); exit(1);}while ((entry = readdir(dp)) != NULL){stat(entry->d_name, &statbuf);if (S_ISDIR(statbuf.st_mode)){ /* L th mc con */}else {/* L tp tin */};}closedir(dp);52Chng 6:Chng 6: Tng tc vi mi trng LinuxTng tc vi mi trng LinuxCITD - VNUHCMBao g m cc ph n sau: 1. i s truyn cho chng trnh2. Bin mi trng3. Thi gian v ngy thng536.1. i s truyn cho chng trnh6.1. i s truyn cho chng trnh6.1.1. Phn tch i s dng lnhChung trnh chnh vit bng C c th cha hm main() vi c t:int main(int argc, char *argv[])i s trn dng lnh thng dng truyn thng tin t ngoi vo:# args ilrvHi Linuxf /data/vb.txtChng trnh sau in ra tt c cc gi tr i s m hm main() nhn c:54#include int main(int argc, char *argv[]){int arg;for(arg = 0; arg < argc; arg++) {if(argv[arg][0] == '-') printf("option: %s\n", argv[arg]+1); else printf("argument %d: %s\n", arg, argv[arg]); }return(0);}556.1.2. Hm getopt()Hu ch cho vic phn tch i s dng lnh. V d:getopt(argc, argv, if:lr);s phn tch v xem i, -l, -r, -f l cc ty chn, trong f c d liu km theo.#include #include int main(int argc, char *argv[]){ int opt;56 while ((opt = getopt(argc, argv, "if:lr")) != -1) { switch(opt) { case 'i': case 'l': case 'r':printf("option: %c\n", opt);break; case 'f': printf("filename: %s\n", optarg); break;case ':': printf("option needs a value\n");break;

57 case '?': printf("unknown option: %c\n", optopt); break; } } for (; optind < argc; optind++)printf("argument: %s\n", argv[optind]);return(0);}

586.2. Bin mi trng6.2. Bin mi trngTruy xut v thit lp bin mi trng bng cc hm:#include char *getenv(const char *name);int putenv(const char *string);Trong , name cha tn bin mi trng cn truy xut, string cha chui theo mu: varname=value596.3. Thi gian v ngy thng6.3. Thi gian v ngy thng- Ly v gi tr thi gian cp thp (s giy k t 0 gi 1970) bng hm time():#include time_t time(time_t *loc);Trong , loc l tham bin dng nhn kt qu tr v ca hm- So snh gia 2 thi im bng hm difftime():#include double difftime(time_ttime1, time_ttime2);60- Hm gmtime() dng truy xut ngy/thng/nm v gi c th:#include struct tm *gmtime(const time_t timeval);V d:#include #include int main(){struct tm *tm_ptr; time_tthe_time;61(void) time(&the_time);tm_ptr = gmtime(&the_time);printf("Raw time is %ld\n", the_time);printf("gmtime gives:\n"); printf("date: %02d/%02d/%02d\n", tm_ptr->tm_year, tm_ptr->tm_mon, tm_ptr->tm_mday);printf("time: %02d:%02d:%02d\n",tm_ptr->tm_hour, tm_ptr->tm_min, tm_ptr->tm_sec); return(0);}62Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging.Kt thc chng 6Kt thc chng 6.: CNG NGH LINUX :..: CNG NGH LINUX :.Mn hc: Mn hc:KHA 3 KHA 3CHNG TRNH O TO THCCHNG TRNH O TO THC S S CNTT QUA MNG CNTT QUA MNGGing vin:Ging vin:TS. T Tun (Vin CNTT, BQP) TS. T Tun (Vin CNTT, BQP)Email: [email protected] Email: [email protected] l k thut:Tr l k thut:Nguyn Vn Phc, V Mnh Cng Nguyn Vn Phc, V Mnh CngI HC QUC GIA TP. H CH MINH I HC QUC GIA TP. H CH MINHTRNG I HC CNG NGH THNG TIN TRNG I HC CNG NGH THNG TIN2Chng 7:Chng 7: X l tin trnh trong LinuxX l tin trnh trong LinuxCITD - VNUHCMBao g m cc ph n sau: 1. Khi qut vti n trnh trong Linux 2. Cch ho t ng c a ti n trnh 3. C u trc ti n trnh 4. T o l p ti n trnh 5. c thng tin vcc ti n trnh 37.1. Khi qut v tin trnh trong Linux7.1. Khi qut v tin trnh trong Linux- Mc tiu: Nm vng c ch hot ng ca cc HH a nhim thng qua khi nim tin trnh (Process)- im ni bt ca cc HH ta Unix l kh nng chy ng thi nhiu chng trnh (Multi-Programming).- HH xem mi n th m lnh m n iu khin l Tin trnh.- Mt ng dng c th bao gm nhiu tin trnh kt hp vi nhau.4- Cc tin trnh cng hot ng chia s thi gian CPU, c th dng chung vng nh v cc ti nguyn h thng khc.- Cc lnh ca Linux thc t l nhng tin trnh ring l, c kh nng kt hp v truyn d liu cho nhau thng qua c ch giao tip lin tin trnh IPC (Inter-Process Communications)- Chng ta s bit cch to, hy, tm dng tin trnh trong Linux. ng thi, tm hiu su c ch ng b ha v giao tip gia cc tin trnh.5- Khng nh mi trng n nhim ch c mt tin trnh hot ng, mi trng a nhim c ti nguyn rt hn hp.- Khi h thng yu cu, tin trnh phi trong trng thi sn sng nhng quyn x l CPU cho cc tin trnh khc bt k thi im no.- Tin trnh c nh ngha: L mt thc th iu khin on m lnh c ring mt khng gian a ch, c ngn xp ring, c bng cha ccm t tp tin ang m v c bit l c mt nh danh PID (Process Identifier) duy nht trong ton b h thng vo thi im tin trnh ang chy.6- Nhiu tin trnh c th thc thi trn cng mt my vi cng mt HH, cng mt ngi dng (hoc nhiu ngi dng ng nhp khc nhau). V d: Shell Bash l mt tin trnh c th thc thi lnh ls hay cp (trong khi bn thn hai lnh trn l nhng tin trnh c th hot ng tch bit khc)- Hai tin trnh khc nhau khng th xm phm vng nh ca nhau Tuy nhin, chia s d liu gia hai tin trnh c th s dng vng khng gian a ch chung.77.2. Cch hot ng ca tin trnh7.2. Cch hot ng ca tin trnh- Trong mi trng HH Linux, mt tin trnh c cc trng thi sau:Running (ang chy): Tin trnh chim quyn x l CPUWaiting (Ch): Tin trnh b HH tc quyn x l CPUSuspend (Tm dng): HH tm dng tin trnh Sleeping- Ti dng lnh,c th bm Ctrl-Z tm ngng tin trnh sau dng lnh bg a n vo hu trng sau dng fg chuyn ln mt trc.- Hm fork() nhn bn mt tin trnh.- Hm system() to lp tin trnh mi.- Hm exec() dng thay th tin trnh hin hnh.87.3. Cu trc tin trnh7.3. Cu trc tin trnh- Cch thc qun l tin trnh ca Linux: Hai user neil v rick cng ng nhp v chy chng trnh grep ng thi HH lc ny s qun l v np m truy cp chng trnh grep vo hai vng nh khc nhau v gi mi phn vng nh l mt tin trnh. Hnh 7.1 ngi dng neil chy chng trnh grep tm chui abc trong tp tin treck.txt cn ngi dng rick chy chng trnh grep tm chui cde trong tp tin somefile.docHnh 7.1Tin trnh qun l bi HHneil$grep abc treck.txtPID 101CodeDataS=abcLibraryfiledesM lnh grepTh vin Crick$grep cde somefile.docPID 102CodeDataS=cdeLibraryfiledestreck.txt somefile.docKhng gian ca H iu hnh9- Dng lnh ps cho php xem thng tin v cc tin trnh m Linux ang kim sot (c th s dng thm tham s -af lit k chi tit thng tin v cc tin trnh):Hnh 7.1.aLit k thng tin v cc tin trnh trn h thng10- Mi tin trnh c gn cho mt nh danh gi l PID (Process Identifier)- PID l mt s nguyn dng c gi tr t 2 32768- Tin trnh init c gi v chy ngay khi ta khi ng HH. y l tin trnh qun l v to ra mi tin trnh con khc C PID l 1- Cch thc gn PID: Khi mt tin trnh mi yu cu khi ng, HH s chn ly mt gi tr s nguyn trong khong 2 32768 (s nguyn ny cha b tin trnh ang chy no chim gi) v cp pht cho tin trnh ny. Khi tin trnh chm dt, HH s thu li s PID cp pht cho tin trnh khc trong ln sau.- Trn Unix/Linux, th mc /proc cha cc file lu tr thng tin v nhng tin trnh ang chy.- Theo quy c, mi tin trnh hot ng trong khng gian a ch o c lp do h thng cp pht 4GB (c lin quan n phn vng SWAP c cp Chng 1)117.3.1. Bng thng tin tin trnh- HH lu tr mt cu trc danh sch bn trong h thng gi l bng tin trnh (Process Table).- Bng tin trnh qun l tt c cc PID ca h thng cng vi thng tin chi tit v cc tin trnh ang chy.- Bng tin trnh ta nh bng ca CSDL lu cc record l thng tin v tin trnh. Trong , s PID thng c s dng lm kha chnh v nh ch mc truy xut thng tin.- Trong cc phin bn Unix/Linux c, gii hn khng c c hn 256 tin trnh chy ng thi. Tuy nhin, trn cc h Unix/Linux c phin bn mi hin nay s tin trnh l khng gii hn ch ph thuc vo b nh sn c.127.3.2. Xem thng tin ca tin trnh- S dng lnh ps hin th thng tin chi tit v cc tin trnh (Xem li Hnh 7.1.a)- Lnh trn lit k nhiu tin trnh, k c nhng tin trnh chy ch haX-Window.- Cc thng tin v kt xut ca lnh psnh sau: UID: Tn ngi dng gi tin trnh PID: S nh danh m h thng cung cp cho tin trnh PPID: S nh danh ca tin trnh cha (init c PID l 1) STIME: Thi im bt u a tin trnh vo chy TIME: Khong thi gian chim dng CPU ca tin trnh CMD: Ton b dng lnh triu gi tin trnh TTY: Ch ra mn hnh Terminal o ni gi thc thi tin trnh137.3.3. Cc tin trnh h thng- S dng lnh ps vi tham s l -ax xem cc tin trnh ca h thng- Xt tin trnh dng u: Cc tin trnh h thng ( y l init) khng gn vi terminal no ht nn ct TTY ca tin trnh init s c gi tr l ?- Tin trnh cui cng khi m init gi trc khi chuyn giao quyn iu khin cho Shell l tin trnh getty (Trnh yu cu nhp username / password lc ng nhp).147.3.4. iu phi tin trnh- Cc HH a nhim, a tin trnh nh Unix/Linux (hay c MS Windows NT/2000/XP/2003,) iu c trch nhim iu phi s hot ng ng b ca cc tin trnh.- B iu phi tin trnh (Process Scheduler) ca HH lin tc xoay vng v cung cp mt thi gian cc tin trnh thc hin mt phn cng vic ca n. Thng thng, khong thi gian cho php tin trnh chim gi CPU l rt nh.15- Khng mt tin trnh no c chim ton b CPU sut thi gian di gy nh hng n cc tin trnh khc.- Mi tin trnh c th c cp mt u tin (Priority) nht nh.- u tin ca tin trnh c th iu chnh c bng lnh renice 167.4. To lp tin trnh7.4. To lp tin trnh7.4.1. Gi tin trnh mi bng hm system()- Gi mt chng trnh khc bn trong mt chng trnh ang thc thi bng hm system() #include int system(const char *cmdstr)- Hm ny gi lnh cha trong cmdstrv ch lnh chm dt mi quay v ni gi hm, tng ng vi vic gi shell thc thi lnh:$ sh c 17- Hm system() tr v:M li 127 nu khng th khi ng shell v thc thi lnh cM li 1 nu gp li khcNgc li m tr v s l m do sau khi thc thi tr v- V d 7-1: system.c187.4.2. Thay th tin trnh hin hnh vi hm exec()- Hm exec() s thay th ton b nh ca tin trnh hin ti {tin trnh A} (bao gm m lnh, d liu, bng m t file) bng nh ca mt tin trnh khc {tin trnh B}- Vic thay th ny ch gi li s PID ca tin trnh A- Hm thay th nh ca tin trnh bao gm tp cc hm sau:#include int execl(const char *path, const char *arg,...);int execlp(const char *file,const char *arg,...);int execle(const char *path, const char *arg,...,char *const envp[]);int execv(const char *path, char *const argv[]);int execvp(const char *file, char *const argv[]);int execve(const char *file, char *const argv[], char *const envp[]);- V d 7-2: pexec.c197.4.3. Nhn bn tin trnh vi hm fork()- Vic thay th tin trnh i khi cng bt li do tin trnh mi to ra chim ton b khng gian ca tin trnh c v khng cn kh nng kim sot tin trnh c na.- S dng hm fork() nhn bntin trnh.- Hm fork() s quay v ni gi hai ln vi hai gi tr tr v khc nhau.- Cch thc khai bo:#include #include pid_t fork()- Hnh 7.2 minh ha cch nhn bntin trnh bng fork()Hnh 7.2C ch nhn bn tin trnh ca fork()Khi to tin trnh chnhGi fork()M lnh k tip ca tin trnh ban u (tin trnh cha)M lnh thc thi tin trnh mi (tin trnh con)Tr v PID ca tin trnh conTr v tr 020- on m iu khin v s dng hm fork() thng c dng chun sau:pid_t new_pid;new_pid=fork(); /*Nhn bn tin trnh*/switch (new_pid) {case 1:printf(Can not fork new process); break;case 0:printf(This is child process);/*M lnh dnh cho tin trnh con*/break;default:printf(This is parent process);/* M lnh dnh cho tin trnh cha*/break;}- V d 7-3: fork_demo.c217.4.4. Kim sot v i tin trnh con- Hm fork() nhn bn tin trnh hin hnh thnh hai tin trnh cha v con hot ng c lp vi nhau.- i khi tin trnh cha phi i tin trnh con thc thi xong tc v th mi c tip tc thc thi.- Gii quyt vn ny bng hm wait()#include #include pid_t wait(int *status)pid_t waitpid(pid_t pid,int *status, int options)- S dng mt s macro c khai bo sn trong din dch mt s trng thi m hm wait() s tr v (Tham kho)- V d 7-4:wait_child.cvV d 7-5:wait_child2.c227.4.5. n x l tn hiu khi tin trnh con kt thc- Tin trnh cha c th n bt tn hiu SIGCHLD khi tin trnh con chm dt v gn cho n mt tc v thc thi no . Bng cch ny, tin trnh cha c th khng cn phi gi wait() ch tin trnh con kt thc mi c th thc thi c tc v tip theo.- Trong V d 7-6, hm catch_child() dng x l tn hiu (hay cn c gi l b x l tn hiu)- gn mt hm x l tn hiu cho mt tn hiu c th no gi hm h thng signal()- V d 7-6: child_signal.c237.4.6. Thay th hm system()- C th vit li hm system() m khng cn phi triu gi lnh thng qua shell ca h thng.- V d 7-7 kt hp s dng hm fork() vi hm thay th nh ca tin trnh execlp()- V d 7-7: system2.c247.4.7. B ri tin trnh con- L tnh hung khi c hai tin trnh cha v con cng hot ng c lp nhng tin trnh cha kt thc trc tin trnh con v n khi tin trnh con kt thc th s khng cn im tr v lin h vi tin trnh cha sinh ra n trc Tin trnh con trng thizombie (b ri)- Linux s t ng gn PPID ca tin trnh con (ang trng thi zombie) v gi tr 1 (tin trnh init)- V d 7-8: zombie_child.c257.4.8. Chuyn hng xut nhp ca tin trnh- Mi tin trnh c mt bng m t tp tin ring lu tr thng tin v cc tp tin ang m. C th tn dng k thut ny xy dng b lc d liu bng chuyn hng xut nhp.- Xt v d c d liu t lung nhp chun stdin sau chuyn i d liu nhp c thnh ch hoa.- V d 7-9:upper.c- V d 7-10:dataupper.c267.5. c thng tin v7.5. c thng tin v cc tin trnhcc tin trnh- Tt c cc thng tin m lnh ps tr v c ly trong th mc /proc - Khi mt tin trnh mi c to th h thng s to mt th mc con bn trong th mc /proc vi tn l s PID ca tin trnh v s t ng loi b th mc ny khi /proc khi tin trnh trn kt thc:/proc1 tin trnh init1062 tin trnh khc11231234. . .-Trong tng th mc con s thy mt s tp tin ghi li trng thi ca tin trnh.- C th xy dng mt Process Manager da trn thng tin ly t th mc /proc27- Thc hin lnh sau s thy thng tin v tin trnh init chi tit28Chn thnh cm nChn thnh cm n Cc anh/ch tham d bi ging.Cc anh/ch tham d bi ging. B phn Multi-media h tr chng B phn Multi-media h tr chng ti trong qu trnh thuyt ging.ti trong qu trnh thuyt ging.Kt thc chng 7Kt thc chng 729Chng 8:Chng 8: Lp trnh a lungLp trnh a lungCITD - VNUHCMBao g m cc ph n sau: 1. Khi ni m chung 2. Ki m tra shtrlu ng 3. T o l p v h y lu ng 4. Chlu ng k t thc 5. ng bha lu ng b ng Mutex 6. ng bha lu ng bng Bi n i u ki n 7. ng bha lu ng bng Semaphore8. t thu c tnh cho lu ng 9. H y bv ch m d t lu ng 308.1. Khi nim chung8.1. Khi nim chung- Lung (Thread) l mt phn ca tin trnh s hu ring ngn xp (stack) v thc thi c lp ngay trong m lnh ca tin trnh.- Trong mi tin trnh c th to ra nhiu lung hot ng song song vi nhau (nh cch tin trnh hot ng song song)- u im ca lung l hot ng trong cng khng gian a ch ca tin trnh.31- Tp hp nhm cc lung chia s chung vng nh ca mt tin trnh v c th s dng chung bin ton cc, vng nh heap, bng m t file, ca tin trnh.- Vic s dng lung trong tin trnh hn hn cch lp trnh tun t nhiu thao tc xut nhp (hoc hin th) c th c tch ri v phn cho lung chy c lp khi thc thi. V d trong mi trng GUI, vic copy d liu vo a chng trnh s c thit k mt lung c-ghi d liu, cn lung khc hin th ng h ct hoc Progress Bar.32- Khuyt im ca vic s dng lung l kh nng ngng hot ng ca mt lung c th nh hng n cc lung khc hoc ton b tin trnh ang hot ng. Nguyn nhn l lung dng chung vng nh v khng gian a ch ca tin trnh- Nu nh mt tin trnh c vn , n s b HH c lp hon ton m khng nh hng n cc tin trnh khc.- Tin trnh c th chy c trn nhiu my khc nhau