H iu hnh Linux
Phn 1: S dng Linux
TDE - HCM Thc hnh H iu hnh Linux 2
ng nhp vo Linux
V d mn hnh ng nhp:pc29 login: bctruongpassword: bctruong123[bctruong@pc29 bctruong]$
bctruong v bctruong123 l thng tin username v password cp trong h thng (lu Linux c phn bit ch hoa v ch thng).pc29 l tn my tnh (hostname)K hiu $ l du nhc lnh (bash shell)K hiu # l du nhc lnh ca user root
TDE - HCM Thc hnh H iu hnh Linux 3
ng nhp vo Linux (tt)
Cc loi user account trn Linux:root: Admin account, tng t account Administrator trn WinNT/200xdaemon, shutdown, ftp, apache, : System account dng khi thc thi chng trnh. Khng th ng nhp bng cc account ny.lan, viet, tuan, : User account, mi account thng c cp mt th mc lm vic (home directory), v d /home/tuan
TDE - HCM Thc hnh H iu hnh Linux 4
ng nhp vo Linux (tt)
Thng tin v user account:uid: M ngi dng (User ID)gid: M nhm ngi dng (Group ID)username, passwordHome directory: C cha mt s file chun:
.bash_profile: Thc thi mi khi user login, thng dng t bin mi trng PATH.bash_logout: Thc thi mi khi user logout..bash_history: Cha cc dng lnh user g.
TDE - HCM Thc hnh H iu hnh Linux 5
ng nhp vo Linux (tt)
ngh v password an ton:T 8 k t tr lnKhng dng cc t trong t inKhng t trng vi usernameCha c ch, s v k t c bitKhng ghi chp ra giyNn thay i theo nh k
Trnh ng nhp bng ti khon root:=> Nga vic v tnh lm hng h thng
TDE - HCM Thc hnh H iu hnh Linux 6
ng nhp vo Linux (tt)
To mt user account mi:pc29 login: rootpassword: password# useradd tuan -> to user tuan# passwd tuan -> t mt khuChanging password for user tuanNew password: passwordRetype new password: password# exit -> thot khi rootLu : password khng hin th khi nhp
TDE - HCM Thc hnh H iu hnh Linux 7
ng nhp vo Linux (tt)
ng nhp bng user account va to:pc29 login: tuanPassword: nhtuan123
$ passwd -> i mt khu (nu cn)
Xem username ca mnh:$ whoamituan$ who am ituan pts/0 May 18 18:29
TDE - HCM Thc hnh H iu hnh Linux 8
ng nhp vo Linux (tt)
Xem cc user ang login:$ whotuan pts/0 May 18 18:29root tty01 May 15 15:18root tty03 May 15 15:17
K hiu terminal ni trc tip vo my:tty01, tty02, tty03,
K hiu terminal gi lp (pseudo terminal):pts/0, pts/1, pts/2,
TDE - HCM Thc hnh H iu hnh Linux 9
ng nhp vo Linux (tt)
Xem chi tit cc user ang login:$ w15:10:41 up 4 days, 5:29, 3 users, load average: 0.91, 0.73, 0.35
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHATtuan pts/0 10.1.1.3 18:29 .0s .01s .01s wroot tty01 - 15:18 2:0 .03s .00s wroot tty03 - 15:17 5:23 0s 0s w
PCPU: Thi gian chng trnh WHAT chyJCPU: Tng thi gian cc chng trnh ca user ang chy
TDE - HCM Thc hnh H iu hnh Linux 10
Thot khi Linux
Logout:$ logout hoc$ exit
Khi ng li my:$ reboot hocNhn t hp phm Ctrl Alt - Del
Tt my:$ poweroff hoc$ shutdown h now
TDE - HCM Thc hnh H iu hnh Linux 11
Cc lnh Linux c bn
S dng ty chn trn dng lnh:Lnh lit k ni dung th mc:$ ls$
Lit k tt c cc file, k c file n:$ ls a./ .bash_history .kermrc .lessrc
TDE - HCM Thc hnh H iu hnh Linux 12
Cc lnh Linux c bn (tt)
S dng ty chn trn dng lnh: (tt)Lit k chi tit tt c file:$ ls altotal 10drwxr-xr-x 3 tuan users 1024 Dec 21 ./drwxr-xr-x 6 root root 1024 Dec 14 ../-rw-r--r-- 1 tuan users 163 Dec 7 .kermrc-rw-r--r-- 1 tuan users 34 Jun 6 .less-rw-r--r-- 1 tuan users 114 Nov 23 .lessrcdrwxr-xr-x 2 tuan users 1024 Dec 7 .term/
C th thay i trt t cc ty chn:$ ls la -> cho kt qu tng ng lnh trn$ ls a -l -> cho kt qu tng ng lnh trn
TDE - HCM Thc hnh H iu hnh Linux 13
Cc lnh Linux c bn (tt)
S dng ty chn trn dng lnh: (tt)Lit k theo th t thi gian file (gim dn):$ ls alttotal 10drwxr-xr-x 3 tuan users 1024 Dec 21 ./drwxr-xr-x 6 root root 1024 Dec 14 ../drwxr-xr-x 2 tuan users 1024 Dec 7 .term/-rw-r--r-- 1 tuan users 163 Dec 7 .kermrc-rw-r--r-- 1 tuan users 114 Nov 23 .lessrc-rw-r--r-- 1 tuan users 34 Jun 6 .less
t: Vit tt t sort by time
TDE - HCM Thc hnh H iu hnh Linux 14
Cc lnh Linux c bn (tt)
S dng ty chn trn dng lnh: (tt)Lit k theo th t thi gian file (tng dn):$ ls altrtotal 6-rw-r--r-- 1 tuan users 34 Jun 6 .less-rw-r--r-- 1 tuan users 114 Nov 23 .lessrcdrwxr-xr-x 2 tuan users 1024 Dec 7 .term/-rw-r--r-- 1 tuan users 163 Dec 7 .kermrcdrwxr-xr-x 6 root root 1024 Dec 14 ../drwxr-xr-x 3 tuan users 1024 Dec 21 ./
Ty chn r dng xut kt qu theo th t ngc liLu ty chn r khc vi R dng khi lit k c nhng th mc con bn trong.
TDE - HCM Thc hnh H iu hnh Linux 15
Cc lnh Linux c bn (tt)
S dng tham s dng lnh:Lit k chi tit th mc /usr/local/src:$ ls l /usr/local/src
Lit k th mc cha:$ ls ..
Lit k th mc lm vic ca user:$ ls ~
TDE - HCM Thc hnh H iu hnh Linux 16
Cc lnh Linux c bn (tt)
Chuyn hng nhp/xut (redirection):D liu u ra t command1 c chuyn cho u vo ca command2 thng qua pipe:command1 | command2
K hiu | c th tm thy phm \Lit k th mc theo tng trang bng cch s dng pipe:$ ls /usr/local/src | more
TDE - HCM Thc hnh H iu hnh Linux 17
Cc lnh Linux c bn (tt)
Chuyn hng nhp/xut: (tt) gi kt qu thc thi lnh ra file, s dng k hiu >Lit k mt th mc ra file output.txt trn a:$ ls /usr/local/src > output.txt
Sau , c th xem ni dung output.txt:$ more output.txt hoc$ less output.txt hoc$ tail output.txt -> Ch xem 10 dng cui
TDE - HCM Thc hnh H iu hnh Linux 18
Cc lnh Linux c bn (tt)
Chuyn hng nhp/xut: (tt)K hiu > lun to mt file mi hoc thay th ni dung file c b sung thm ni dung m khng ghi ln file c, s dng k hiu >>B sung danh sch user ang lm vic vo file output.txt:$ who >> output.txt
TDE - HCM Thc hnh H iu hnh Linux 19
Cc lnh Linux c bn (tt)
Quy c m t lnh Linux:Ch khng nm trong cc du [], , {} c gi nguyn:$ ls [-l]
Ch trong [] l ty chn (khng bt buc):$ ls [-l]
Du v ch bn trong c thay bng on ch tng ng:$ more
nu l output.txt -> more output.txt
TDE - HCM Thc hnh H iu hnh Linux 20
Cc lnh Linux c bn (tt)
Quy c m t lnh Linux: (tt)Du {} ni ch c chn mt trong nhiu gi tr lit k bn trong:$ hostname { | -F }-> hostname hoc-> hostname F Du | dng phn cch cc la chn vi nhau
Du m t nhiu tham s tng t:$ more [filenames ]-> more file1 file2 file3 file4 file5
TDE - HCM Thc hnh H iu hnh Linux 21
Cc lnh Linux c bn (tt)
Tr gip v lnh Linux:Xem ti liu m t lnh (manual):$ man -> xem help ca command$ man k -> tm dng cha keyword
Xem hng dn cc lnh shell (lnh ni tr):$ help
Ti liu LDP (Linux Documentation Project)http://www.tldp.org
TDE - HCM Thc hnh H iu hnh Linux 22
Cc lnh Linux c bn (tt)
S dng k t thay th (wildcard):K t *:$ ls /home/tuan/*.txtinput.txt output.txt vanban.txt
K t ?:$ ls /home/tuan/??put.txtinput.txt
S dng tnh nng autocomplete:$ pass* $ passwd$ pass $ passwd
TDE - HCM Thc hnh H iu hnh Linux 23
Cc lnh Linux c bn (tt)
Bin mi trng (environment variables):Bin mi trng c nh ngha ring cho tng user, tng phin lm vic. Xem cc bin mi trng:$ env hoc $ setHOME=/home/tuanLOGNAME=tuanPATH=/usr/local/bin:/usr/binSHELL=/bin/bash
PATH l ni shell s tm lnh thc thi
TDE - HCM Thc hnh H iu hnh Linux 24
Cc lnh Linux c bn (tt)
Bin mi trng: (tt)t bin mi trng:$ PATH = .:/usr/bin:/home/tuan$ export PATHTng ng vi:$ export PATH = .:/usr/bin:/home/tuan
Thit lp t ng bin mi trng khi login:Gi lnh trn trong file ~/.bash_profile
(~ l k hiu th mc lm vic ca user)Thc thi li file .bash_profile:$ source ~/.bash_profile
TDE - HCM Thc hnh H iu hnh Linux 25
Cc lnh Linux c bn (tt)
Tin trnh (process):L cc chng trnh ang thc thi bi h thng hoc ngi s dng.Xem cc process ta ang chy:$ ps -> Vit tt t process statusPID TTY STAT TIME COMMAND41 pts/0 S 0:00 bash
134 pts/0 R 0:00 psPID: Process ID (t 0 -> 65565)TTY: Terminal chy processDu -: Login shell (bash)
TDE - HCM Thc hnh H iu hnh Linux 26
Cc lnh Linux c bn (tt)
Tin trnh (process): (tt)Xem chi tit cc process ta ang chy:$ ps -uUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDtuan 26509 0.0 0.1 4328 1416 pts/0 S 09:18 0:00 -bashtuan 26575 0.0 0.0 2592 640 pts/0 R 09:21 0:00 ps -u
STAT: Process Status (S=Sleeping, R=Running)Xem tt c cc process ang chy:$ ps a -> Xem cc process trn terminal ny$ ps ax -> Xem tt c process$ ps aux -> Xem chi tit tt c process$ ps axf -> Xem c quan h gia cc process
TDE - HCM Thc hnh H iu hnh Linux 27
Cc lnh Linux c bn (tt)
Tin trnh (process): (tt)ps vi ty chn l:$ ps lF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD0 S 508 26509 26508 0 75 0 - 1083 wait4 pts/0 0 bash0 R 508 26746 26509 0 80 0 - 779 - pts/0 0 ps
PPID: Parent Process ID
bash (PID=26509)
init (PID=1) ps (PID=26746)
PPID = bash PID
gi
Tt c cc process
TDE - HCM Thc hnh H iu hnh Linux 28
Cc lnh Linux c bn (tt)
Tin trnh (process): (tt)Hy tin trnh: Lnh kill
Dng khi khng th kt thc chng trnh bng cch thng thng hay t hp phm Ctrl-C, qBc 1: Login vo rootBc 2: Dng ps u tm PID ca process cn killBc 3: $ kill Bc 4: Dng ps u kim tra li; nu khng cn -> bc 8; nu vn cn nhng vi PID mi -> bc 6.
TDE - HCM Thc hnh H iu hnh Linux 29
Cc lnh Linux c bn (tt)
Tin trnh (process): (tt)Hy tin trnh: (tt)
Bc 5: Nu process vn cn, kill vi ty chn -9:$ kill -9
Dng ps u kim tra li; nu process vn cn -> bc 7; nu process mt -> bc 8Bc 6: Process xut hin li vi PID mi -> do parent process sinh ra -> cn kill parent process.Bc 7: Dng ps l tm PPID v kill parent process theo cc bc nu.Bc 8: Process b kill. Cn logout khi root:$ exit
TDE - HCM Thc hnh H iu hnh Linux 30
Cc lnh Linux c bn (tt)
Chuyn thnh user khc:Thay v phi logout khi user hin ti v login li t u vi user mi, ta dng lnh su:Chuyn thnh user root:$ su -> Vit tt t super userPassword: -> Nhp password ca root
Chuyn thnh user root (vi profile ca root):$ su Password: -> Nhp password ca root
Chuyn thnh user (khc root):$ su [-]
TDE - HCM Thc hnh H iu hnh Linux 31
Cc lnh Linux c bn (tt)
Tm kim chui vi lnh grep:Lnh grep (Global Regular Expression Parser) tm v hin th cc dng cha chui cn tm.Cng dng 1: Lc kt qu lnh:
| grep $ ls | grep put -> Lit k file c ch putinput.txt output.txt$ ps ax | grep bash -> Tm chnh xc6368 tty2 S 0:00 -bash
27514 pts/0 S 0:00 -bash27959 pts/0 S 0:00 grep bash
TDE - HCM Thc hnh H iu hnh Linux 32
Cc lnh Linux c bn (tt)
Tm kim chui vi lnh grep: (tt)Cng dng 2: Tm dng c cha chui con trong file:
grep $ grep Window input.txtX Window is a GUI of LinuxBut Windows is a Microsofts OS$ grep Window input.txtX Window is a GUI of Linux
TDE - HCM Thc hnh H iu hnh Linux 33
S dng h thng file
Phn loi file theo ni dung:D liu ngi dngD liu h thng: V d file /etc/passwdFile thc thi (chng trnh)
Tn file:Ti a 256 k tCha cc k t hoa, thng, s, du ., du -, du _, Mt s h thng ch phn bit 32 hay 64 k t u tin trong tn file
TDE - HCM Thc hnh H iu hnh Linux 34
S dng h thng file (tt)
Th mc:L mt loi file c bitQuy tc t tn tng t nh file
/
boot home etc
tuan duyen
/etc
/home/duyen
TDE - HCM Thc hnh H iu hnh Linux 35
S dng h thng file (tt)
Th mc lm vic (home directory):Mi user c cp mt th mc lu tr d liu ring ca mnh.Tn th mc thng trng tn username v t trong th mc /home.Home directory cn c k hiu l du ~:[tuan@pc29 /]$ cd ~ cd /home/tuan
User c ton quyn c ghi trong th mc nyMc nh cc user khng th c ghi c trong home directory ca nhau.
TDE - HCM Thc hnh H iu hnh Linux 36
S dng h thng file (tt)
Lnh in th mc hin hnh (pwd):cd /var/log
$ pwd -> vit tt t Print working dir/var/log
ng dn tng i v tuyt i:ng dn tng i: Cn c vo th mc hin hnhng dn tuyt i: ng dn y t th mc gc n file
TDE - HCM Thc hnh H iu hnh Linux 37
S dng h thng file (tt)
V d ng dn tng i:$ cd /var/log -> /var/log hin hnh$ more messages -> /var/log/messages$ more ./samba/smb.log
-> /var/log/samba/smb.log$more ../lib/mylib.txt
-> /var/lib/mylib.txtDu . k hiu th mc user ang ngDu .. k hiu th mc cha
TDE - HCM Thc hnh H iu hnh Linux 38
S dng h thng file (tt)
Lnh chuyn th mc (cd):$ pwd/home/tuan
$ cd .. -> Chuyn ra th mc cha /home$ pwd/home
$ cd .. -> Chuyn ra th mc cha /$ pwd/
TDE - HCM Thc hnh H iu hnh Linux 39
S dng h thng file (tt)
To file vn bn vi lnh cat:To file mi:$ cat > newfileHello WorldHeres some text^D
Xem li ni dung file:$ cat newfileHello WorldHeres some text
TDE - HCM Thc hnh H iu hnh Linux 40
S dng h thng file (tt)
To file vn bn vi lnh cat: (tt)B sung thm vo file:$ cat >> newfileSome more lines
Ni nhiu file thnh mt file:$ cat > anotherfileDiffrerent text$ cat newfile.txt anotherfile > bigfile
Lnh cat, vt tt ca concatenate ni cc input xut ra mt output.
TDE - HCM Thc hnh H iu hnh Linux 41
S dng h thng file (tt)
To th mc (mkdir):$ mkdir
Di chuyn (mv) v sao chp file (cp):$ mv $ cp
Di chuyn v sao chp vi wildcard:Di chuyn th mc:$ mvdir
TDE - HCM Thc hnh H iu hnh Linux 42
S dng h thng file (tt)
i tn file / th mc:$ mv
Xa file:$ rm
Nhc trc khi xa: ty chn i (interactive)$ rm i *duckrm: remove dead_duck? Yrm: remove guiduck? Nrm: remove lame-duck? y
TDE - HCM Thc hnh H iu hnh Linux 43
S dng h thng file (tt)
Xa th mc:Dng lnh rmdir xa th mc:$ rmdir
Ch xa c th mc trng (khng cn ni dung) xa ton b ni dung v cc th mc con bn trong (th mc cha trng):$ rm r
Ty chn r (recursive) duyt quy ton b th mc con bn trong
TDE - HCM Thc hnh H iu hnh Linux 44
S dng h thng file (tt)
Gii nn tp tin:$ gunzip onefile.gz -> onefile$ unzip onefile.zip -> onefile
Nn tp tin:$ gzip onefile -> onefile.gz$ zip onefile -> onefile.zip
Gii nn tp tin tar.gz:$ tar xvfz onefile.tar.gz
TDE - HCM Thc hnh H iu hnh Linux 45
S dng h thng file (tt)
Cc th mc quan trng:Th mc gc //home: Cha cc home directory ca cc user/bin (binaries): Cha cc chng trnh Linux c bn/usr: Cha cc phn mm, ti liu, /usr/bin: Cha cc chng trnh ci t/dev: Linux xem mi th l file, y l ni cha cc file thit b
$ cat /dev/cdrom > MyCDImage.isoThit b /dev/null: Dng nhn d liu rc
H iu hnh Linux
Phn 2: Qun tr Linux I
TDE - HCM Thc hnh H iu hnh Linux 47
Quyn truy cp file v th mc
Thuc tnh file:$ ls -l /usr/games-rwxr-xr-x 3 root root 4096 Feb 21 11:45 banner-r-xrwxr-x 3 root games 4096 Feb 21 11:44 fortune
7 trng thuc tnh cho mi file:Tp quyn truy xut (permission)S lin kt n file (link count)User ID s hu file owner (v d root)Nhm user ca file (v d games)Kch thc file (tnh theo byte)Ngy gi to fileTn file
TDE - HCM Thc hnh H iu hnh Linux 48
Quyn truy cp file v th mc (tt)
Ch s hu ca file (owner):L user to ra file :[tuan@pc29 tuan]$ mkdir thumuc1[tuan@pc29 tuan]$ ls ldrwxr-xr-x 2 tuan users 4096 11:44 thumuc1
Ch s hu ca thumuc1 l tuanOwner c th gn quyn truy cp file .root c th i owner ca file:# chown [root@pc29 tuan]# chown root thumuc1[root@pc29 tuan]# ls ldrwxr-xr-x 2 root users 4096 11:44 thumuc1
TDE - HCM Thc hnh H iu hnh Linux 49
Quyn truy cp file v th mc (tt)
Nhm ngi dng (group):Mi group c th cha nhiu user.Mt user c th thuc nhiu group nhng ch c mt nhm chnh (primary group).Thng thng nhm chnh ca mi user l mt group c trng tn vi User ID, v d: UID=tuan, Primary GID=tuan
ngha ca group:Dng khi cn cp quyn truy cp file cho mt nhm ngi.
TDE - HCM Thc hnh H iu hnh Linux 50
Quyn truy cp file v th mc (tt)
Nhm user ca file (group):L nhm chnh ca owner khi to file:[tuan@pc29 tuan]$ mkdir thumuc1[tuan@pc29 tuan]$ ls ldrwxr-xr-x 2 tuan users 4096 11:44 thumuc1
Nhm chnh (primary group) ca tuan l usersNhm ca thumuc1 l users
root c th i nhm ca file:# chgrp [root@pc29 tuan]# chgrp admins thumuc1[root@pc29 tuan]# ls ldrwxr-xr-x 2 tuan admins 4096 11:44 thumuc1
TDE - HCM Thc hnh H iu hnh Linux 51
Quyn truy cp file v th mc (tt)
Quyn truy cp file:3 quyn: c(r), ghi(w), thc thi(x)p dng cho3 i tng: owner, group, other (cc user khc)
Quyn truy cp th mc:3 quyn: lit k(r), ghi(w), chuyn vo(x)p dng cho3 i tng: owner, group, other (cc user khc
TDE - HCM Thc hnh H iu hnh Linux 52
Quyn truy cp file v th mc (tt)
r w xowner x x x
group x x x
other x x x
K hiu x:
Dng chui quyn: r,w,x: cho php - : cm
Dng bit quyn: 1: cho php 0 : cm
TDE - HCM Thc hnh H iu hnh Linux 53
Quyn truy cp file v th mc (tt)
=> Cn 9 bit biu din quyn cho mt fileBiu din dng chui quyn:
- r w x r w x r w x
owner group other- : filed : th mc
Biu din dng bit quyn:
1 1 1 1 1 1 1 1 1
owner group other
TDE - HCM Thc hnh H iu hnh Linux 54
Quyn truy cp file v th mc (tt)
Biu din quyn dng s:Quy i dng bit quyn sang h bt phn.V d:
rwxr-xr-x = 111101101 = 755owner c ton quyn, cc user cn li ch c c v thc thi
rwx------ = 111000000 = 700owner c ton quyn, cn li khng c quyn
r--rw---- = 100110000 = 460owner ch c, user trong nhm c quyn c ghi, cn li khng c quyn
TDE - HCM Thc hnh H iu hnh Linux 55
Quyn truy cp file v th mc (tt)
t quyn truy cp file:chmod
Dng specification th nht:chmod [u|g|o|a][+|-][r|w|x]
u: owner; g: group; o: other; a: c 3 i tng+: bt quyn; -: tt quynr: quyn r; w: quyn w; x: quyn x
Dng specification th hai:chmod
S bt phn biu din chui bit quyn trn
TDE - HCM Thc hnh H iu hnh Linux 56
Quyn truy cp file v th mc (tt)
Mt s v d t quyn file:$ chmod ugo-rw myfile hoc$ chmod a-rw myfile
=> Tt quyn c/ghi ca tt c user$ ls -l-rwxrwxrwx 1 root admins 640 05:40 myfiledr-xr-x-wx 2 root admins 4096 05:40 mydir$ chmod go-rw my*$ ls -l-rwx--x--x 1 root admins 640 05:40 myfiledr-x--x--x 2 root admins 4096 05:40 mydir
=> Tt quyn c/ghi ca cc user trong group v user khc
TDE - HCM Thc hnh H iu hnh Linux 57
Quyn truy cp file v th mc (tt)
Mt s v d t quyn file: (tt)$ ls -l-rw-r--r-- 1 tuan users 1024 myfile$ chmod 755 myfile$ ls -l-rwxr-xr-x 1 tuan users 1024 myfile
=> group v other khng c quyn ghi
$ chmod 644 myfile$ ls -l-rw-r--r-- 1 tuan users 1024 myfile
=> tt quyn ghi ca group v other, tt tt c quyn thc thi
TDE - HCM Thc hnh H iu hnh Linux 58
Quyn truy cp file v th mc (tt)
User c quyn c file th cng c quyn copy file. User s l owner ca file copy mi:$ whoamituan$ ls -l-rwxr-xr-x 1 root admins 100 myfile$ cp myfile ~$ ls l ~-rwxr-xr-x 1 tuan users 100 myfile
TDE - HCM Thc hnh H iu hnh Linux 59
Quyn truy cp file v th mc (tt)
User c quyn ghi trong th mc th cng c quyn xa cc file trong th mc , cho d cc file c t quyn ghi cho user hay khng:$ whoamituan$ groups users => xem danh sch group usersusers: duyen nam tuan viet$ ls -ladrwxrwx--- 2 root users 4096 .-rw------- 2 root root 916 file01$ rm file01
TDE - HCM Thc hnh H iu hnh Linux 60
Trnh thng dch lnh Shell
Shell l g?Chng trnh din dch cc lnh do user nhp t bn phm v chuyn cho Linux thc thi.Ta nh trnh command.com trong MS-DOS.Shell thng dng trn Linux hin nay l Bash(Bourne Again Shell).
TDE - HCM Thc hnh H iu hnh Linux 61
Trnh thng dch lnh Shell (tt)
Shell cha mt s lnh buit-in (ta nh lnh ni tr trong MS-DOS), v d pwd.Cc lnh khc u l nhng chng trnh thc thi nm trong cc th mc (ta nh lnh ngoi tr trong MS-DOS), v d cp,mv.
TDE - HCM Thc hnh H iu hnh Linux 62
Trnh thng dch lnh Shell (tt)
Sau khi user ng nhp (login), Linux s chy mt shell mi cho user lm vic.Khi user logout, shell ca user s kt thc.Shell thng l chng trnh u tin c chy sau khi user login.Loi shell lm vic ca mi user c nh ngha trong thuc tnh ca user account.
TDE - HCM Thc hnh H iu hnh Linux 63
Trnh thng dch lnh Shell (tt)
Cc loi shell truyn thng:Bourne shell (sh): Shell u tin v c mt trn mi h UNIX, h tr lp trnh shell rt tt.C shell (csh): C php lp trnh ta nh ngn ng C, h tr tng tc vi user tt.Korn shell (ksh): Kt hp cc u im ca Bourne shell v C shell, cung cp mi trng Bourne shell vi kh nng h tr tng tc vi user.
TDE - HCM Thc hnh H iu hnh Linux 64
Trnh thng dch lnh Shell (tt)
Shell trn Linux:bash: Phin bn m rng ca shtcsh: Phin bn m rng ca cshpdksh: Phin bn m rng ca ksh
Bourne Again Shell (bash):L shell mc nh trn LinuxTng thch Bourne shellB sung kh nng x l user input:
Auto-completion, wildcards, history, alias
TDE - HCM Thc hnh H iu hnh Linux 65
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Command-line Auto-completion:
Phm TAB, S dng wildcard:$ lsch1.doc ch2.doc ch3.doc ch4.doc ch5.doc$ lpr ch* hay$ lpr ch?.doc hay$ lpr ch[12345].doc hay$ lpr ch[1-5].doc
=> In t file ch1.doc cho n ch5.doc
TDE - HCM Thc hnh H iu hnh Linux 66
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Command history:
Lu li cc lnh user g trong file HISTFILE(mc nh l .bash_history) home directory ca user .Kch thc history quy nh bi bin HISTSIZE.User c th ly li cc lnh g bng phm mi tn ln v xung, tng t nh doskey trong MS-DOS.Xem history:$ history [s dng sau cng]
TDE - HCM Thc hnh H iu hnh Linux 67
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Alias: Thay cc lnh di bng tn (alias) ngn hn gim thao tc g phm.$ cd /usr/local/src/gbench1 (1)t tn cho lnh (1) l gb:
$ alias gb=cd /usr/local/src/gbench-1S dng: $ gbMt s alias mc nh trong RedHat bash:
alias ls=ls --color=ttyalias ll=ls -l --color=ttyalias mc='. /usr/share/mc/bin/mc-wrapper.sh'
TDE - HCM Thc hnh H iu hnh Linux 68
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Input redirection: V d:m s dng, s t, s k t trong mt on vn bn (c nhp t bn phm):
$ wcHello World!Ctrl-D1 2 13
Dng input redirection c on vn bn t file:$ wc < hello.txt1 2 13
TDE - HCM Thc hnh H iu hnh Linux 69
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Output redirection: Chuyn kt qu xut ca lnh ra file thay v in ra mn hnh. V d:$ ls > dirlist.txt
=> Lit k ni dung th mc vo file dirlist.txt$ find / -name *.txt > result.txt
=> Tm cc file *.txt k t th mc / v in kt qu + thng bo ra file result.txt
$ find / -name *.txt 2> /dev/null=> Tm cc file *.txt k t th mc /, ch in kt qu ra mn hnh, khng in thng bo li (kt qu t thit b xut li chun stderr (2) s b ct).
TDE - HCM Thc hnh H iu hnh Linux 70
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Pipe (|): Truyn d liu gia cc lnh output ca lnh ny s l input ca lnh k. V d:$ cat vidu.txtX Window is a GUI of LinuxBut Windows is a Microsofts OSOpenwin is from Sun Solaris$ cat vidu.txt | grep Window | wc l2
=> In s dng cha ch Window trong file vidu.txt
TDE - HCM Thc hnh H iu hnh Linux 71
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Prompt: bash dng 2 mc du nhc:
PS1: Du nhc lnh, mc nh l:[\u@\h \W]\$ chng hn: [tuan@pc29 usr]$
PS2: Du nhc ch nhp d liu, mc nh l >Mt s k t c bit dng cho prompt:
\$: K t $ hay # (i vi root)\\: K t \\d: Ngy thng\h: Hostname\n: Xung hng\s: Tn shell\w: Th mc hin hnh
TDE - HCM Thc hnh H iu hnh Linux 72
Trnh thng dch lnh Shell (tt)
Bourne Again Shell (bash): (tt)Thit lp Prompt cho shell:$ PS1=\t\\
=> Du nhc lnh s l:16:43:24\
TDE - HCM Thc hnh H iu hnh Linux 73
Qun tr h thng Linux
Gn kt (mount) h thng file:Mi h thng file trn Unix/Linux u phi mount mi c th s dng c.Mount l thao tc gn kt mt h thng file vo mt th mc no (mount point) trong cy th mc gc /.Mi truy cp n th mc mount point c hiu l truy cp vo h thng file mount.
TDE - HCM Thc hnh H iu hnh Linux 74
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)Trong qu trnh boot, lnh mount s c gi gn kt tt c cc h thng file ch nh trong file /etc/fstab.V d file /etc/fstab:/dev/hda1 / ext3/dev/hda2 swap swap/dev/cdrom /mnt/cdrom udf,iso9660/dev/fd0 /mnt/floppy auto
=> mount hda1 vo th mc gc, cdrom vo th mc /mnt/cdrom, a mm vo /mnt/floppy
TDE - HCM Thc hnh H iu hnh Linux 75
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)nh dng lnh mount nh sau:mount
filesystem l tn thit bmountpoint l tn th mc s gn kt vo thit b
Trng hp thit b cha c m t trong /etc/fstab hoc Linux khng t ng bit:mount t
fstype l kiu h thng file ca thit bMount a CDROM vo /mnt/cdrom:mount /dev/cdrom /mnt/cdrom
/dev/cdrom l tn thit b a CDROM 1
TDE - HCM Thc hnh H iu hnh Linux 76
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)Mount a mm vo th mc /mnt/floppy:$ mount /dev/fd0 /mnt/floppy
/dev/fd0 l tn thit b a mm 1Trng hp a mm format FAT12:
$ mount t msdos /dev/fd0 /mnt/floppy
Mount partition Win9x:$ mount t vfat /dev/hda1 /mnt/win
Gi s /dev/hda1 l partition ci Windows 9x ( C)=> c ghi trong th mc /mnt/win nh trn a C: ca Windows 9x
TDE - HCM Thc hnh H iu hnh Linux 77
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)Mount a USB:$ mount /dev/sda1 /mnt/usb
/dev/sda1 l tn thit b USB 1 (khe cm u tin)Trng hp my c /dev/sda l thit b SCSI HDD, tn thit b USB s l /dev/sdb,
Mount a SCSI vo th mc /mnt/temp$ mount /dev/sda1 /mnt/temp
/dev/sda1 l partition1 ca a SCSI HDD 1Vi lnh mount, mount point c th l bt c th mc no, tuy nhin thng thng nn t trong /mnt
TDE - HCM Thc hnh H iu hnh Linux 78
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)Mt s tn thit b:
/dev/fd0 l tn thit b a mm 1/dev/fd1 l tn thit b a mm 2/dev/cdrom l tn thit b CDROM 1/dev/cdrom1 l tn thit b CDROM 2/dev/hda1 l partition 1 ca HDD 1/dev/hda2 l partition 2 ca HDD 1/dev/hdb1 l partition 1 ca HDD 2/dev/hdb3 l partition 3 ca HDD 2/dev/sda1 l partition 1 a SCSI 1 hoc a USB 1/dev/sdb3 l partition 3 a SCSI 2 hoc a USB 3
TDE - HCM Thc hnh H iu hnh Linux 79
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)Cc kiu h thng file (fstype):
ext2: h thng file trn Linuxext3: h thng file trn Linuxiso9660: h thng file CDROMmsdos: h thng file FATvfat: h thng file FATntfs: h thng file NTFSnfs: Network File Systemsmbfs: h thng file trn cc SMB sharetmpfs: h thng file tm
TDE - HCM Thc hnh H iu hnh Linux 80
Qun tr h thng Linux (tt)
Gn kt (mount) h thng file: (tt)G gn kt CDROM:$ umount /mnt/cdrom hoc$ eject umount v y CDROM ra
Kim tra h thng file:Nn unmount h thng file trc khi kimGi lnh fsck:$ fsck $ fsck -A
H iu hnh Linux
Phn 3: Qun tr Linux II
TDE - HCM Thc hnh H iu hnh Linux 82
Thit b
Device (thit b):L nhng g gn vo my tnh chy Linux v gi nhn d liu vi h thng.V d: Terminal, hard disk, printer, CDROM, modem, UNIX/Linux i x mi th nh device.Trnh iu khin thit b (device driver) l mt phn trong kernel, cha tp lnh giao tip vi device.Device driver trong Linux cho php tho lp d dng, c lp vi phn mm h iu hnh.
TDE - HCM Thc hnh H iu hnh Linux 83
Thit b (tt)
C hai loi device trn Linux:Character device (thit b k t): Thit b nhp xut d liu dng mt ln mt k t. V d: terminal, printer, modem, Block device (thit b khi): Thit b nhp xut d liu theo tng khi ln d liu, c tc nhanh truyn hn thit b k t. V d hard disk, tape, Phn bit character v block device:$ ls -l /devcrw------- root root beep => c=characterbrw-rw---- root floppy fd0 => b=block
TDE - HCM Thc hnh H iu hnh Linux 84
Thit b (tt)
S major v minor ca thit b:Mi device c c trng bi 2 con s ny.S major phn bit cc kiu device (mi device driver khc nhau l mt kiu).S minor phn bit cc device cng kiu (khi h thng gn nhiu device ging nhau).
TDE - HCM Thc hnh H iu hnh Linux 85
Thit b (tt)
To device:mknod [option] device b|c|p|u major minor
option:-m [mode] t mode ca file thnh mode thay v gi tr mc nh l 0666.
b: block mode device, c: character mode devicep: FIFO device, u: unbuffered character mode device
Xa device:Dng lnh rm xa file thng thng
TDE - HCM Thc hnh H iu hnh Linux 86
Thit b (tt)
Printer device:Linux h tr parallel printer v serial printer. C hai loi u l character mode device.Tn cng my in (printer device), a ch cng v tn tng ng trn MS-DOS:/dev/lp0 0x03BC LPT1/dev/lp1 0x0378 LPT2/dev/lp2 0x0278 LPT3
lp0, lp1, lp2 l tn cc cng song song trn Linux.a ch cng c th thay i ty my
TDE - HCM Thc hnh H iu hnh Linux 87
Thit b (tt)
To printer device:Printer device c th to ra nh sau (nu h thng cha to sn):$ mknod m 620 /dev/lp0 c 6 0
=> To character device tn /dev/lp0 vi s major=6, minor=0, quyn truy cp file l 620major=6 l kiu thit b cng parallelminor=0 v y l device u tin, cc device k tip s nh s tng dn theo th t.
$ chown root.daemon /dev/lp0=> t owner=root, group=daemon cho file lp0Lu cch dng chown gn owner v group.
TDE - HCM Thc hnh H iu hnh Linux 88
Terminal
Terminal:L b thit b giao tip gia ngi s dng vi cc my tnh UNIX, d liu nhp xut dng k t.Terminal truyn thng:
L thit b phn cng hoc my PC chy phn mm gi lp (v d HyperTerminal trn Windows)Kt ni vo my tnh UNIX/Linux qua cng serial.
Terminal o: Chng trnh gi lp terminalKch hot qua cc t hp phm Alt-F1 -> Alt-F6Thm nhp qua mng bng trnh telnet, ssh
TDE - HCM Thc hnh H iu hnh Linux 89
Terminal (tt)
Login process:
boot Linux Chn mc khi ng (run level)Gi chng trnh getty khi to cc terminalinit
mingetty
login
bash shell
/etc/inittab
Thit lp thng s truyn thng vi terminalGi trnh login
Xc thc username v passwordGn bin mi trng TERMSau kt thc v m shell
/etc/passwd
~/.bash_profile
TDE - HCM Thc hnh H iu hnh Linux 90
Terminal (tt)
Tn cng serial, a ch cng v tn tng ng trn MS-DOS:/dev/ttyS0 0x03F8 COM1/dev/ttyS1 0x02F8 COM2/dev/ttyS2 0x03E8 COM3/dev/ttyS3 0x02E8 COM4
ttyS0, ttyS1, ttyS2, ttyS3 l tn cc cng serial trn Linux.a ch cng c th thay i ty my
TDE - HCM Thc hnh H iu hnh Linux 91
Terminal (tt)
To terminal device:Terminal c th to ra nh sau (nu h thng cha to sn):$ mknod m 660 /dev/ttyS0 c 4 64
=> To character device tn /dev/ttyS0 vi s major=4, minor=64, quyn truy cp file l 660major=4 l kiu thit b cng serialminor=64: y l device u tin, cc device k tip s nh s tng dn theo th t.
$ chown root.tty /dev/ttyS0
TDE - HCM Thc hnh H iu hnh Linux 92
Process
Process:L chng trnh n, chy trong mt virtual address space ring ca h thng.Chy nhiu process trn dng lnh shell:$ cat vidu.txt | grep Window | wc l$ cd /usr/games && banner
=> Du && dng phn cch cc lnh cn chy tun t.
TDE - HCM Thc hnh H iu hnh Linux 93
Process (tt)
Cc loi process:Interactive process: Yu cu user nhp d kin trong qu trnh thc thi, v d: text editor, shell, game, Batch process: Khng tng tc vi user khi thc thi, d kin u vo c cho trc.Daemon process: thng c kch hot vo lc boot my, chy ch background.
TDE - HCM Thc hnh H iu hnh Linux 94
Process (tt)
Lnh ps (process status):Xem chi tit cc process ca mnh:$ ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
tuan 13814 1.5 0.1 4344 1432 pts/0 S 18:00 0:00 bashtuan 13851 0.0 0.0 2600 648 pts/0 R 18:00 0:00 ps -u
Xem cc process ca mt user no :# ps u tuan
Xem chi tit tt c process trong h thng:# ps -aux
TDE - HCM Thc hnh H iu hnh Linux 95
Qun tr ngi dng
Ti khon superuser:L user account c UID = 0, thng l root.Nn to tng account cho tng cng vic qun tr trnh ng nhp vo root.
File /etc/passwd:File text lu c s d liu user account trn h thng.Ch c root mi c quyn ghi ln file ny.
TDE - HCM Thc hnh H iu hnh Linux 96
Qun tr ngi dng (tt)
File /etc/passwd: (tt)nh dng mi dng trong file:username:password:UID:GID: comment:home_directory:login_commandpassword: L m ha ca user passwordhome_directory: Thng l /home/login_command: Chng trnh cn gi ngay sau khi login thnh cng
Lu :H thng khng lu tr trc tip user password.H thng ch c th kim chng user password ch khng th gii m c user password.
TDE - HCM Thc hnh H iu hnh Linux 97
Qun tr ngi dng (tt)
V d file /etc/passwd:root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologindaemon:x:2:2:daemon:/sbin:/sbin/nologinsync:x:5:0:/sbin:/sbin/nologinhalt:x:7:0:halt:/sbin:/sbin/haltrpm:x:37:37::/var/lib/rpm:/bin/bashuucp:x:10:14:uucp:/var/spool/uucp:nobody:x:99:99:Nobody:/:/sbin/nologinftp:x:14:50:FTP:/var/ftp:/sbin/nologintuan:x:500:500::/home/tuan:/bin/bash
TDE - HCM Thc hnh H iu hnh Linux 98
Qun tr ngi dng (tt)
Trng password trong /etc/passwd: trng: Account c password rng.x: Password (m ha) lu trong /etc/shadow.
File /etc/shadow:Lu cc password m ha ca mi accountCh c root mi c quyn c ghi file nyV d dng cha password ca account tuan trong /etc/shadow:tuan:$1$/347I5oy$cfG13OXnR3tNKmRvraEyG.:12560:0:99999:7:::
TDE - HCM Thc hnh H iu hnh Linux 99
Qun tr ngi dng (tt)
Cc account h thng:root: superuser account (UID = 0)daemon: Dng chy cc system processbin: Owner cho cc file thc thiftp: Dng trong kt ni FTP
Trng password ca cc account nh daemon, bin, ftp l mt du *, th hin user khng c login bng account ny.
TDE - HCM Thc hnh H iu hnh Linux 100
Qun tr ngi dng (tt)
B sung user mi vo h thng: 2 cchSa trc tip file /etc/passwd:
Son tho file ny v b sung 1 dng cho user miTo home directory v t quyn s hu cho userCopy cc file khi ng (.bash_profile, ) vo home directory v t quyn s hu cho user.Lu : Sao lu li v cn thn khi dng cch ny
S dng lnh useradd:# useradd tuan
=> To user account tuan vi cc gi tr mc nh:home directory l /home/tuanlogin command (shell) l /bin/bashNhm chnh (primary group) l tuan, khng c nhm ph.
TDE - HCM Thc hnh H iu hnh Linux 101
Qun tr ngi dng (tt)
Thm thng s cho useradd:# useradd -d /tuan -s /bin/sh tuan
=> To user tuan c home directory l /tuan v shell lm vic l Bourne shell (/bin/sh)
# useradd g user tuan
=> To user tuan v t nhm chnh (primary group) ca tuan l nhm user
# useradd -g user -G teacher,admin tuan
=> To user tuan, t nhm chnh ca tuan l user, nhm ph l teacher v admin
File /etc/group: C s d liu user group
TDE - HCM Thc hnh H iu hnh Linux 102
Qun tr ngi dng (tt)
Sa i thng tin user: 2 cchSa trc tip file /etc/passwd, /etc/groupS dng lnh usermod:# usermod c Nguyen Van Tuan tuan
=> t thng tin comment cho account tuan# usermod G students,operators tuan
=> t nhm ph ca tuan l students v operator
# usermod -g admins tuan
=> i nhm chnh ca tuan thnh admins
TDE - HCM Thc hnh H iu hnh Linux 103
Qun tr ngi dng (tt)
Xa user khi h thng: 2 cchSa trc tip file /etc/passwd:
Xa dng thng tin user trong file /etc/passwdXa dng thng tin group trong file /etc/groupXa th mc lm vic ca user
S dng lnh userdel:# userdel tuan
=> Xa tuan khi h thng (xa c group tuan)# userdel r tuan
=> Xa user tuan v xa c home dir ca tuan
TDE - HCM Thc hnh H iu hnh Linux 104
Qun tr ngi dng (tt)
File /etc/group: (tt)nh dng mi dng trong file:group_name:password:GID:users_list
password: Thng l du *, x hoc trng, ch s dng mt s h thng yu cu user nhp password khi tham gia nhm.users_list: Danh sch cc user thnh vin ca nhm, cch nhau bi du phy (,).
V d file /etc/group:root:x:0:rootbin:x:1:root,bin,daemontuan:x:500:
TDE - HCM Thc hnh H iu hnh Linux 105
Qun tr ngi dng (tt)
Thm, sa, xa nhm ngi dng: 2 cchSa trc tip file /etc/groupDng lnh groupadd, groupmod, groupdel:# groupadd students
=> Thm nhm students vo h thng# groupmod -n sinhvien students
=> i tn nhm students thnh sinhvien# groupdel sinhvien
=> Xa nhm sinhvien
a thnh vin vo group:Dng lnh usermod trnh by trn
TDE - HCM Thc hnh H iu hnh Linux 106
Cu hnh RedHat vi setup
File cu hnh trong Linux:Hu ht d liu cu hnh trong Linux v cc ng dng u lu trong cc file cu hnh.File cu hnh thng l file vn bn, c phn m rng .conf v lu trong th mc /etc.Cu hnh ca h thng c thit lp bng cch hiu chnh cc file cu hnh.
Tin tch setup trong RedHat:Dng thit lp cc cu hnh c bn cho h thng thng qua giao din menu gn gi.Trnh setup s hiu chnh cc thng s trong cc file cu hnh tng ng ca h thng.
TDE - HCM Thc hnh H iu hnh Linux 107
Cu hnh RedHat vi setup (tt)
TDE - HCM Thc hnh H iu hnh Linux 108
Cu hnh RedHat vi setup (tt)
Trnh setup c 7 mc cu hnh sau:Xc thc (Authentification): authconfigTng la (Firewall): lokkitThit b chut (Mouse): mouseconfigMng (Network): netconfigMy in (Printer): printconfDch v h thng (System Services): ntsysvNgy gi h thng (Timezone): timeconfig
Mi mc tng ng vi mt chng trnh cu hnh c tn nu trn.
TDE - HCM Thc hnh H iu hnh Linux 109
Cu hnh RedHat vi setup (tt)
Cu hnh xc thc ngi dng:Xc thc qua NIS: Chn mc ny nu c s d liu user c lu tr tp trung trong mt NIS server trn mng.Xc thc qua LDAP: Chn mc ny nu c s d liu user c lu tr tp trung trong mt LDAP server trn mng.Xc thc qua Samba: Chn mc ny nu mun my Linux logon vo NT Domain nh mt my trm Windows NT.
TDE - HCM Thc hnh H iu hnh Linux 110
Cu hnh RedHat vi setup (tt)
Cu hnh Firewall:Chn High, Medium hoc No firewall ty theo nhu cu v an ninh ca h thng.
V d cc my ni trc tip vi Internet cn dng High firewall, cc my trm trong mng LAN c bo v c th khng cn firewall.
Chn Customize trong trng hp cn thit lp firewall nhng vn cho php truy cp vo mt s cng TCP/IP no nh HTTP, FTP, SSH.
TDE - HCM Thc hnh H iu hnh Linux 111
Cu hnh RedHat vi setup (tt)
Cu hnh Mouse:Chn ng loi mouse ang dng
Cu hnh Printer:Chn printer queue v cu hnh my in
Cu hnh Timezone:Chn time zone a phng
Cu hnh System Sevices:Chn cc service (thng l daemon) s chy t ng khi boot my
TDE - HCM Thc hnh H iu hnh Linux 112
Cu hnh RedHat vi setup (tt)
Mt s service quan trng:autofs: Dch v mount t ng khi bootcrond: Dch v nh thi thc thicups: Dch v in ndhcpd: DHCP Server - cp a ch IP nghttpd: Apache Web Serveriptables: Firewallkudzu: Dch v nhn din phn cngldap: LDAP Server dch v th mc
TDE - HCM Thc hnh H iu hnh Linux 113
Cu hnh RedHat vi setup (tt)
Mt s service quan trng: (tt)named: DNS Server phn gii tn minnetwork: Kch hot cc thit b mngnfs: NFS Server Network File Systemsmb: Samba kt ni Microsoft Networksquid: Proxy Serversshd: SSH Server cho php truy cp t xatelnet: Telnet Server cho truy cp t xavsftpd: FTP Serverxinetd: Qun l cc dch v Internet
TDE - HCM Thc hnh H iu hnh Linux 114
Cu hnh RedHat vi setup (tt)
Cu hnh Network:Mi my phi thit lp cc thng s:a ch IP theo quy nh ca ngi qun tr mng LAN (a ch thuc lp A, B hay C; netmask l bao nhiu).Gateway: Thit b/server ng vai tr ca ng kt ni ra cc mng LAN/WAN/Internet bn ngoi.Primary name server: phn gii tn min ra IP
V d phn gii www.yahoo.com -> 66.94.230.37Secondary name server: Server d phng cho Primary name serverDomain name (tn min): Tn my v tn min
TDE - HCM Thc hnh H iu hnh Linux 115
Cu hnh RedHat vi setup (tt)
Cu hnh Network (tt): V d
TDE - HCM Thc hnh H iu hnh Linux 116
Cu hnh RedHat vi setup (tt)
Cu hnh Network: Cc thng s mng (IP, netmask, gateway, DNS, domain) c thit lp bng 2 phng php
S dng a ch IP tnh:Thit lp bng tay cc thng s trn.Phi lin h vi qun tr mng LAN mi khi thit lp, thay i cu hnh mng cho my.Cc my trm phi thit lp li cu hnh khi c s thay i v cu hnh mng LAN.
TDE - HCM Thc hnh H iu hnh Linux 117
Cu hnh RedHat vi setup (tt)
Cu hnh Network: (tt)S dng a ch IP ng:
Cc thng s cu hnh mng c t ng thit lp thng qua mt DHCP Server.Ngi dng khng cn quan tm n vic thit lp cc thng s trn.Khi mng LAN thay i cu hnh, cc my trm s t ng c DHCP Server cp nht cu hnh.=> Phi duy tr mt DHCP Server (v c th c mt DHCP Server d phng) trn mng LAN.=> Chn option Use dynamic IP configuration (DHCP) trong phn cu hnh network ca setup.
TDE - HCM Thc hnh H iu hnh Linux 118
Cu hnh RedHat vi setup (tt)
Cu hnh Network: Xem thng tin cu hnh mng: Lnh ifconfig# ifconfigeth0 Link encap:Ethernet HWaddr 00:06:B5:8C:76:0C
inet addr:10.1.1.12 Bcast:10.1.255.255 Mask:255.255.0.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
eth1 Link encap:Ethernet HWaddr 00:03:74:E0:C4:17inet addr:10.2.1.12 Bcast:10.2.255.255 Mask:255.255.0.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
=> Xem thng tin tt c thit b mng# ifconfig eth0
=> Xem thng tin card mng 1# ifconfig eth1
=> Xem thng tin card mng 2
TDE - HCM Thc hnh H iu hnh Linux 119
Cu hnh RedHat vi setup (tt)
Cu hnh Network: (tt)Ngoi phng php dng setup cu hnh mng, c th hiu chnh trc tip cc file cu hnh /etc/sysconfig/network-scripts:
File ifcfg-eth0: Cu hnh cho thit b eth0DEVICE=eth0IPADDR=10.1.1.12NETMASK=255.255.0.0NETWORK=10.1.0.0ONBOOT=yesHWADDR=00:06:5b:8c:c4:17
TDE - HCM Thc hnh H iu hnh Linux 120
Cu hnh RedHat vi setup (tt)
Cu hnh Network: (tt)Kch hot thit b mng eth0:# ifconfig eth0 up hoc# ifup eth0
Tm ngng thit b mng eth0:# ifconfig eth0 down hoc# ifdown eth0
Ngoi ra, lnh ifconfig cn cho php thit lp cc thng s cu hnh mng v nhiu la chn khc.
TDE - HCM Thc hnh H iu hnh Linux 121
Thit lp cc service
Dch v h thng (service):Cc service c thc thi thng qua cc script t th mc /etc/rc.d/init.d/Ngoi ra cn c 7 th mc rc0.d rc6.d trong th mc /etc/rc.d/ cha cc lin kt n nhng script ny.
Cc service cho tng runlevel:Linux c 7 mc runlevel, khi boot my vo runlevel no, Linux s thc thi cc service trong th mc rc0.d .. rc6.d tng ng vi runlevel .
TDE - HCM Thc hnh H iu hnh Linux 122
Thit lp cc service (tt)
V d: Dch v web server httpdFile script: /etc/rc.d/init.d/httpdCc lin kt th mc /etc/rc.d/rc0.d .. rc6.d:
/etc/rc.d/rc3.d/K15httpd-> /etc/rc.d/init.d/httpd
/etc/rc.d/rc5.d/S85httpd-> /etc/rc.d/init.d/httpd
/etc/rc.d/rc1.d/K15httpd-> /etc/rc.d/init.d/httpd
K hiu K - u tin kt thc; S - bt u
TDE - HCM Thc hnh H iu hnh Linux 123
Thit lp cc service (tt)
B sung service mi:To hoc copy file script ca service vo /etc/rc.d/init.d: V d file sshd#!/bin/bash# Init file for OpenSSH server daemon# chkconfig: 2345 55 25 Ni dung file script
Dng chkconfig bt buc phi c, ngha nh sau:2345: sshd chy cc runlevel 2, 3, 4, 555: sshd c u tin bt u 55 (trong 100 service th sshd l service th 55 c start)25: sshd c u tin kt thc l 25
TDE - HCM Thc hnh H iu hnh Linux 124
Thit lp cc service (tt)
B sung service mi: (tt)Dng lnh chkconfig to cc lin kt tng ng trong /etc/rc.d/rc0.d rc6.d:# chkconfig --add
Kch hot service t ng chy khi boot:# chkconfig on
C th dng trnh setup, mc System Service kch hot service ( trnh by phn trc).
t li runlevel cho service (nu cn):# chkconfig --level
TDE - HCM Thc hnh H iu hnh Linux 125
Thit lp cc service (tt)
Xem thit lp ca service:chkconfig --list
# chkconfig --list sshdsshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off
Ngng kch hot service:chkconfig off
Xa b service:chkconfig --del
# chkconfig --del sshd
TDE - HCM Thc hnh H iu hnh Linux 126
Ci t phn mm trn RedHat
Phn mm dng source:Thng c ng gi v nn di dng .tar.gz
cd configure => Cu hnh phn mmmake => Bin dch phn mmmake install => Ci t phn mm vo
cc th mc h thngH thng phi c ci GCC (Gnome C Compiler)c file README, INSTALL ca phn mm bit chnh xc v cch ci t.
TDE - HCM Thc hnh H iu hnh Linux 127
Ci t phn mm trn RedHat (tt)
Phn mm dng RPM binary:Gi phn mm c phn m rng tn file:
. i386.rpm, .i686.rpm => Kin trc Intel
.sparc.rpm => Kin trc SunCi t mi:# rpm ivh
Nng cp:# rpm Uvh
Cc ty chn quan trng:--nodeps: b qua cc gi RPM lin quan--force: buc phi ci t
TDE - HCM Thc hnh H iu hnh Linux 128
Ci t phn mm trn RedHat (tt)
Phn mm dng RPM binary: (tt)Xem thng tin phn mm ci:# rpm -q # rpm -qi
G b phn mm (uninstall):# rpm e
gm tn v version ca phn mm, nu khng nh th dng rpm q xc nh.
Mt s lu khi ci t phn mm RPM:Nu c thng bo li v dependancy gia cc gi RPM, dng ty chn --nodeps b qua.
TDE - HCM Thc hnh H iu hnh Linux 129
Ci t phn mm trn RedHat (tt)
Phn mm dng RPM source:Gi phn mm c phn m rng tn file:
.src.rpm => Dng source codeDch RPM source sang RPM binary ri ci t:# rpm -ivh # cd /usr/src/redhat/SPECS# rpmbuild bb # cd /usr/src/redhat/RPMS/i386 ;Vi Intel# rpm -ivh
iu chnh file specs (nu cn thm ty chn bin dch) trc khi gi rpmbuild
H iu hnh Linux
Phn 4: Lp trnh Shell
TDE - HCM Thc hnh H iu hnh Linux 131
Chng trnh Shell
Chng trnh Shell:L file vn bn cha mt hoc nhiu lnh Linux cn thc thi mt lt.Cng dng:
Chy nhiu lnh c dng thng xuyn bng mt lnh n (chng trnh shell)T ng ha cng on ci t phn mmVit cc chng trnh ng dng n gin
Chng trnh Shell c vit bng cc trnh son tho vn bn thng thng nh vi,
TDE - HCM Thc hnh H iu hnh Linux 132
To chng trnh Shell
V d: Chng trnh backup ni dung th mc lm vic vo a mm:
Son tho chng trnh shell:# cat > backupmount t msdos /dev/fd0 /mnt/floppycp ~/* -R /mnt/floppy
Gn quyn thc thi:# chmod a+x backup
Chy chng trnh backup:# ./backup hoc # source backup
TDE - HCM Thc hnh H iu hnh Linux 133
S dng bin
Bin (variable) l phn t nh cha d liu dng khi thc thi chng trnh shell.Hai loi bin:
Bin do chng trnh shell t khai bo, bin mi trng, v d PATHBin quy c ca shell, v d: $1, $2,
Khai bo bin:Khng cn khai bo trcBin ca shell khng c kiu d liu: mt bin c th lu hoc chui k t hoc s nguyn,
TDE - HCM Thc hnh H iu hnh Linux 134
S dng bin (tt)
nh ngha bin v gn gi tr: v dCOUNT=5 -> Khai bo bin COUNT gi tr 5
Lu : vi Bash shell, khng c c khong trng cnh du =Mt cch gn khc: set COUNT = 5
Ly gi tr ca bin:Dng du $ trc tn binV d in gi tr bin COUNT ra mn hnh:
echo $COUNT
TDE - HCM Thc hnh H iu hnh Linux 135
S dng bin (tt)
Bin tham s dng lnh:L cc bin lu cc tham s c truyn trn dng lnh khi gi chng trnh shell.Quy tc t tn:
1: Tham s th 12: Tham s th 23: Tham s th 3
Ly gi tr: cng dng du $ trc tn bin$1, $2, $3,
TDE - HCM Thc hnh H iu hnh Linux 136
S dng bin (tt)
Bin tham s dng lnh (tt): v dChng trnh shell to 2 user account:# vi create-twouseradd $1useradd $2passwd $1passwd $2
Thc thi chng trnh:# create-two huyen hieu
=> To user huyen v hieu, sau t password
TDE - HCM Thc hnh H iu hnh Linux 137
S dng bin (tt)
Mt s bin quy c trong Shell:$#: S lng tham s dng lnh$?: M thot ca lnh va thc thi$0: Tn chng trnh shell (tham s 0)$*: Danh sch cc tham s dng lnh ($1 $2 )$@: Danh sch cc tham s dng lnh, t trong du nhy ($1 $2 )
TDE - HCM Thc hnh H iu hnh Linux 138
S dng du nhy
Du nhy kp (): biu din chui k t c cha khong trng$ mystring=Hello World$ echo $mystring => In bin mystringHello World
Bash s bo li khi khng dng nhy kp cho chui:
$ mystring=Hello World-bash: World: command not found
=> mystring vn khng c gn gi tr
TDE - HCM Thc hnh H iu hnh Linux 139
S dng du nhy (tt)
Du nhy n (): biu din chui k t c cha khong trng hay k t c bit khc$ mystring=Hello World$ echo $mystringHello World
ngha ca du nhy kp: che k t khong trng trong chui ngha ca du nhy n: che tt c k t c bit trong chui (gm c khong trng)
TDE - HCM Thc hnh H iu hnh Linux 140
S dng du nhy (tt)
Khi no s dng du nhy kp:$ mystring=Hello, I am $LOGNAME$ echo $mystringHello, I am tuan
=> Nhy kp khng che k t $ nn c thay th
Khi no s dng du nhy n:$ mystring=Hello, I am $LOGNAME$ echo $mystringHello, I am $LOGNAME
=> Nhy n che k t $ nn khng thay th
TDE - HCM Thc hnh H iu hnh Linux 141
S dng du nhy (tt)
Du s ngc \ (backslash): Dng che mt k t c bit.$ mystring=Hello\ World$ echo $mystringHello World
=> Du backslash che k t khong trng$ cost=\$2500$ echo $cost$2500
=> Du backslash che k t $
TDE - HCM Thc hnh H iu hnh Linux 142
S dng du nhy (tt)
Du nhy ngc (``): Dng ly kt qu thc thi ca lnh t bn trong.$ dir_content=`ls la /home/tuan`$ echo $dir_contentdrwxr-x--- 22 tuan tuan 4096 Jun 3 15:57 .drwxr-xr-x 25 tuan tuan 4096 Jun 3 16:49 ..-rw------- 1 tuan tuan 16595 Jun 4 19:44 .bash_history-rw-r--r-- 1 tuan tuan 24 Jun 11 2000 .bash_logout-rw-r--r-- 1 tuan tuan 271 Jun 3 10:09 .bash_profile-rw-r--r-- 1 tuan tuan 176 Aug 24 1995 .bashrc
=> Thc thi lnh ls v gn kt qu cho dir_content
TDE - HCM Thc hnh H iu hnh Linux 143
Lnh test
Dng nh gi mt biu thc iu kinC php: 2 dngtest expression hay[ expression ]
C 4 nhm ton t dng trong expression:Ton t s nguynTon t chui k tTon t fileTon t logic
TDE - HCM Thc hnh H iu hnh Linux 144
Lnh test (tt)
Ton t s nguyn:
expression nghaint1 eq int2 = true nu int1 = int2int1 ge int2 = true nu int1 int2
int1 le int2 = true nu int1 int2
int1 gt int2 = true nu int1 > int2
int1 lt int2 = true nu int1 < int2int1 ne int2 = true nu int1 int2
TDE - HCM Thc hnh H iu hnh Linux 145
Lnh test (tt)
Ton t chui:
expression nghastr1 = str2 = true nu str1 = str2str1 != str2 = true nu str1 str2
-n str = true nu str length > 0
str = true nu str null
z str = true nu str length = 0
TDE - HCM Thc hnh H iu hnh Linux 146
Lnh test (tt)
Ton t file:
expression nghad filename = true nu l th mcf filename = true nu l file thng
s filename = true nu kch thc khc 0
r filename = true nu file c c
w filename = true nu file ghi cx filename = true nu file thc thi c
TDE - HCM Thc hnh H iu hnh Linux 147
Lnh test (tt)
Ton t logic:
expression ngha! expr = true nu expr = false
expr1 -a expr2 = true khi expr1 v expr2 trueexpr1 -o expr2 =true khi expr1 hay expr2 true
TDE - HCM Thc hnh H iu hnh Linux 148
Cu trc iu kin
Pht biu if: dng 1if [ expression ]thencommands
fi
Pht biu if: dng 2if [ expression ]thencommands
elsecommands
fi
TDE - HCM Thc hnh H iu hnh Linux 149
Cu trc iu kin (tt)
Pht biu if: dng 3if [ expression ]thencommands
elif [ expression2 ]thencommands
elsecommands
fi
TDE - HCM Thc hnh H iu hnh Linux 150
Cu trc iu kin (tt)
V d pht biu if:File hello: Hin th cu helloif [ $1 = you ]thenecho Hi, how are you?
elseecho Hello $1
fi
Lu :Phi c khong trng cnh du [, ], =$1: chui k t tham s dng lnh th nhtT kha then phi vit xung hng
TDE - HCM Thc hnh H iu hnh Linux 151
Cu trc iu kin (tt)
V d pht biu if: (tt)File helpme: kim tra v c README.TXTif [ -r README.TXT ]thenless README.TXT
elif [ ! -f README.TXT ]thenecho Sorry, no help file!
elseecho Sorry, no read permission!
fi
TDE - HCM Thc hnh H iu hnh Linux 152
Cu trc iu kin (tt)
Pht biu case:case str1 instring1)commands;;string2)commands;;*)commands;;
esac
Pht biu case trong shell mnh hn C, Pascal ch c th so snh chui vi cc k t wild card.
TDE - HCM Thc hnh H iu hnh Linux 153
Cu trc iu kin (tt)
V d pht biu case:File readfile: c ni dung mt filecase $3 infirst)
head -n $2 $1;;last)
tail n $2 $1;;*)
cat $1;;esac
V d, c 10 dng cui file README.TXT:$ readfile README.TXT 10 last
TDE - HCM Thc hnh H iu hnh Linux 154
Cu trc lp
Pht biu for: dng 1for var1 in list1docommands
donelist1: danh sch cc gi tr cch nhau bi khong trng
list1 c th l mt bin hoc mt danh sch c nhp trc tip trong cu lnh.
var1: Ln lt nhn cc gi tr trong list1 ti mi ln lp
TDE - HCM Thc hnh H iu hnh Linux 155
Cu trc lp (tt)
Pht biu for: dng 2for var1docommands
done
var1: nhn gi tr t danh sch tham s dng lnhDng pht biu for ny tng ng vi:for var1 in $@
TDE - HCM Thc hnh H iu hnh Linux 156
Cu trc lp (tt)
V d pht biu for:File uppercase: i sang ch hoa ni dung cc file vn bn (tn file nhp t dng lnh)for filedotr a-z A-Z < $file > $file.caps
done
Lnh tr: Chuyn i cc k t (a..z sang A..Z) ca chui nhp t bn phm v in ra mn hnhV d: $ uppercase vb1 vb2 vb3
=> vb1.caps, vb2.caps, vb3.caps
TDE - HCM Thc hnh H iu hnh Linux 157
Cu trc lp (tt)
V d pht biu for: (tt)File uppercase2: version 2 ca uppercase danh sch file c sn (vb1, vb2, vb3)for file in vb1 vb2 vb3dotr a-z A-Z < $file > $file.caps
done
=> Dng dng 1 ca pht biu for.Lu khng c du nhy trong danh sch
TDE - HCM Thc hnh H iu hnh Linux 158
Cu trc lp (tt)
V d pht biu for: (tt)File uppercase3: version 3 ca uppercase danh sch file l mt binlist=vb1 vb2 vb3for file in $listdotr a-z A-Z < $file > $file.caps
done
=> Cng dng dng 1 ca pht biu for.
TDE - HCM Thc hnh H iu hnh Linux 159
Cu trc lp (tt)
Pht biu while:while expressiondocommands
doneexpression: biu thc lun l (gi tr true hay false)Vng while lp khi expression = true
Lnh expr: nh gi mt biu thc tonV d: $ expr 100 / 5 + 1 => In ra 21
Lnh shift: Dch chuyn tham s dng lnh qua tri ($2 => $1, $3 => $2, $4 => $3, )
TDE - HCM Thc hnh H iu hnh Linux 160
Cu trc lp (tt)
V d pht biu while:File param: In th t v gi tr cc tham s trn dng lnhcount=1while [ -n $* ]doecho Tham so thu $count = $1shiftcount=`expr $count + 1`
doneMi khi gi shift, bin $1 s ln lt mang gi tr tham s k tip
TDE - HCM Thc hnh H iu hnh Linux 161
Cu trc lp (tt)
Pht biu until:until expressiondocommands
doneexpression: biu thc lun l (gi tr true hay false)Vng until lp khi expression = falseLnh break: thot khi vng lp for, while, until, select
TDE - HCM Thc hnh H iu hnh Linux 162
Cu trc lp (tt)
V d pht biu until:File param2: version until ca paramcount=1until [ -z $* ]doecho Tham so thu $count = $1shiftcount=`expr $count + 1`
done
expression -z $* tr v true nu danh sch tham s dng lnh rng ( shift ht tham s)
TDE - HCM Thc hnh H iu hnh Linux 163
Lnh shift
Tc dng:Dch chuyn gi tr hin ti ca cc tham s dng lnh sang tri mt v tr
V d:$ command par1 par2 par3
=> $1 = par1, $2 = par2, $3 = par3Sau khi shift:
=> $1 = par2, $2 = par3, $3 = null
Shift nhiu v tr:shift n: Dch sang tri n v tr
TDE - HCM Thc hnh H iu hnh Linux 164
Lnh shift (tt)
V d: version 4 ca uppercase$ uppercase4 -i vidu.in -o vidu.out
while [ $1 ]do
if [ $1 = -i ] theninfile=$2shift 2
elif [ $1 = -o ]thenoutfile=$2shift 2
elseecho Program $0 does not recognize option $1break
fidonetr a-z A-Z $infile $outfile
TDE - HCM Thc hnh H iu hnh Linux 165
Pht biu select
To h thng menu dng lnh:select menuitem [in list_of_items]docommands
done
Du ngoc []: ty chn ca pht biu selectlist_of_items: bin hoc danh sch cha nhiu hn 1 phn t (menu item)Nu khng ch nh list_of_item, select s dng danh sch tham s dng lnh (nh for)
TDE - HCM Thc hnh H iu hnh Linux 166
Pht biu select (tt)
V d pht biu select:Hin th 3 menu pick1, pick2, pick3:select menuitem in pick1 pick2 pick3doecho Ban muon chon muc $menuitem?read resif [ $res = y -o $res = Y ]then
breakfi
done
Lnh read: c d liu user nhp t bn phm
TDE - HCM Thc hnh H iu hnh Linux 167
nh ngha th tc
Khai bo hm:function_name () {commands
}
Gi hm:function_name [param1 param2 ]
Hm khng hn ch s tham sTham s hm c th xem nh tham s dng lnh (truy xut bng $1, $2, dng shift, nh vi lnh)
M tr v:Gi lnh return [n]: n cha gi tr tr v (1 byte)
TDE - HCM Thc hnh H iu hnh Linux 168
nh ngha th tc (tt)
V d s dng hm:File tinhgiaithua: Chng trnh tnh giai tha#!/bin/bash# Ham giaithuagiaithua () {
if [ $1 -gt 1 ] ; thenPREV=`expr $1 - 1`giaithua $PREVRESULT=`expr $RESULT \* $1`
fi}# Chuong trinh chinhRESULT=1giaithua $1echo "Giai thua cua $1 = $RESULT"
Lu : Du nhn (*) phi thay bng \* shell khng hiu lm
TDE - HCM Thc hnh H iu hnh Linux 169
Mt s quy c khc
Mi file chng trnh shell nn bt u vi:#!/bin/bash
=> Thng bo y l Bash shellscript h thng nhn bit khi thc thi. Ngoi ra cc trnh son tho vn bn nh vicng h tr t mu ni dung.
Du chm phy (;):Dng phn cch nhiu lnh trn cng mt dng
Thot chng trnh shell:Gi lnh exit n vi n l m thot
Lnh continue, break:continue: b qua lnh cn li v sang bc lp kcontinue n: tip tc t n vng lp gn nhtbreak n: thot khi n vng lp gn lnh break nht
TDE - HCM Thc hnh H iu hnh Linux 170
Mt s quy c khc (tt)
Lnh export: Truyn gi tr bin xung cc shell con
$ DISPLAY=10.1.1.12:0.0; export DISPLAY
Lnh sed (stream editor): Hiu chnh d liu u vo, v d:
sed 1,2d vb.txt => xa dng 1 v dng 2 t vb.txtsed /bye/d vb.txt => xa dng c ch byesed s/bad/good vb.txt => thay t bad thnh goodsed -n /hello/p vb.txt => in nhng dng c t hellosed s/^M//g vb.dos > vb.unix => i vn bn DOS
-> UNIX
TDE - HCM Thc hnh H iu hnh Linux 171
Mt s quy c khc (tt)
Cu trc && (v):cmd1 && cmd2 tng ng viif cmd1 ; thencmd2 ; fi
Cu trc || (hay):cmd1 || cmd2 tng ng viif cmd1 ; then:
elsecmd2 ; fi
H iu hnh Linux
Phn 5: Lp trnh Linux
TDE - HCM Thc hnh H iu hnh Linux 173
Ngn ng C
Lch s:Pht trin bi Dennis Ritchie ti Bell Laboratories khi xy dng h thng UNIXCc phin bn UNIX u tin c vit bng Assembly v ngn ng B.C ra i nhm khc phc cc yu im ca B v tr thnh ngn ng thng dng nht.
u im:Chun ha trn nhiu nn tng, h iu hnhChng trnh thc thi nhanh
TDE - HCM Thc hnh H iu hnh Linux 174
GNU C Compiler
GNU C Compiler (GCC):L trnh bin dch C thng dng trn LinuxTng thch vi chun ANSI C
C php tng qut:gcc [options] [filenames]
Cc options s c p dng cho tng file trong filenames.
TDE - HCM Thc hnh H iu hnh Linux 175
GNU C Compiler (tt)
Lu v options:> 100 options trong GCCC nhiu options cha t 2 k t tr ln=> Khng th nhm nhiu options sau mt du => Mi option phi i vi mt du ringV d: 2 lnh sau c ngha khc nhau:gcc p g test.cgcc pg test.c
TDE - HCM Thc hnh H iu hnh Linux 176
GNU C Compiler (tt)
Bin dch chng trnh:gcc test.c
=> File thc thi tn a.outgcc -o thunghiem test.c
=> File thc thi tn thunghiemgcc -c test.c
=> File m i tng tn test.o. Sau lin kt cc file object thnh file thc thi.=> Dng option ny khi lin kt nhiu file
TDE - HCM Thc hnh H iu hnh Linux 177
GNU C Compiler (tt)
Option bin dch ti u:Mc nh: Chng trnh dch nhanh v d debug.-O v -O2: Chng trnh nh hn v chy nhanh hn.
Option debug v profile:-g: To thng tin debug trnh GNU debugger (gdb) s dng.-pg: To profile trnh gprof hin th thng tin timing khi chy chng trnh.
TDE - HCM Thc hnh H iu hnh Linux 178
GNU Debugger (gdb)
C php chung:gdb [filename]
=> Bt u debug mt file chng trnhTrc , file chng trnh cn c bin dch vi ty chn -g.
Cc lnh c bn trong gdb:file: np file chng trnh cn debugkill: dng debug chng trnhlist: xem cc phn source code
TDE - HCM Thc hnh H iu hnh Linux 179
GNU Debugger (gdb)
Cc lnh c bn trong gdb: (tt)break: t im dng (breakpoint) trong coderun: thc thi chng trnh cn debugnext: chy 1 dng code, khng chy vo trong cc hm.step: chy 1 dng code, chy vo trong cc hm trn dng .watch: hin th gi tr ca bin khi b thay iquit: thot khi gdb
TDE - HCM Thc hnh H iu hnh Linux 180
V d chng trnh C
Son tho file test.c:$ cat > test.c#include int main() {int n = 10;n += 2;printf(n = %i\n, n);return 0;
}Ctrl-Z Enter
TDE - HCM Thc hnh H iu hnh Linux 181
V d chng trnh C (tt)
Dch chng trnh test.c:$ gcc -g -o test test.c
=> file chng trnh test nm trong cng mt th mc vi test.cThm ty chn -g c th debug chng trnh
Thc thi chng trnh test:$ ./testn = 12
TDE - HCM Thc hnh H iu hnh Linux 182
V d chng trnh C (tt)
Debug chng trnh test:$ gdb testGNU gdb Red Hat Linux ()Copyright 2003 Free Software Foundation, Inc.
(gdb) list1 #include 2 int main() {3 int n = 10;4 n += 2;5 printf(n = %i\n, n);6 return 0;7 }
TDE - HCM Thc hnh H iu hnh Linux 183
V d chng trnh C (tt)
Debug chng trnh test: (tt)(gdb) break 4Breakpoint 1 at 0x804833f: test.c, line 4
(gdb) runStarting program: /home/tuan/testBreakpoint 1, main () at test.c:4
4 n += 2;
(gdb) watch nHardware watchpoint 2: n
TDE - HCM Thc hnh H iu hnh Linux 184
V d chng trnh C (tt)
Debug chng trnh test: (tt)(gdb) nextHardware watchpoint 2: nOld value = 10New value = 12main () at test.c:5
5 printf(n = %i\n, n);
(gdb) nextn = 12
7 return 0;
(gdb) kill(gdb) quit
TDE - HCM Thc hnh H iu hnh Linux 185
Mt s tin ch lp trnh C
xxgdb:Phin bn giao din ha (X Window) ca gdb
indent:nh dng m ngun theo quy tt thng nht
gprof:Cho bit mi hm c gi bao nhiu ln v phn trm thi gian thc thi ca hm.Cn bin dch chng trnh vi ty chn -pg
p2c:Chuyn m ngun Pascal thnh m ngun C
TDE - HCM Thc hnh H iu hnh Linux 186
Source Code Control
Mc ch:Qun l cc phin bn source code ca phn mm.Gip tm kim, cp nht, theo di cc phin bn khc nhau ca mt file source d dng.
Tin ch make:T ng bin dch, lin kt cc file source trong mt project phn mm.Th hin mi quan h ph thuc gia cc file source.
TDE - HCM Thc hnh H iu hnh Linux 187
Source Code Control (tt)
Tin ch make: (tt)Ch cp nht cc file c thay i sau ln bin dch sau cng.S dng mt file m t (Makefile) cha cc lut cn thc hin khi bin dch phn mm.Mi lut s sinh ra cc lnh cn thit cho qu trnh bin dch. Cc lnh c thc thi bi shell.
TDE - HCM Thc hnh H iu hnh Linux 188
Source Code Control (tt)
V d mt Makefile:Project someonehappy bao gm cc file sau:
2 file source: main.c, dothis.c3 file header: yes.h, no.h, maybe.h1 file th vin: /usr/happy/lib/likeatree.a1 file assembly: itquick.s
=> file chng trnh someonehappy
TDE - HCM Thc hnh H iu hnh Linux 189
Source Code Control (tt)
V d mt Makefile: (tt)Mi dung Makefile:someonehappy: main.o dothis.o /usr/happy/lib/likeatree.agcc o someonehappy main.o dothis.o itquick.o /usr/happy/lib/likeatree.a
main.o: main.cgcc -c main.c
dothis.o: dothis.cgcc -c dothis.c
itquick.o: itquick.sas -o itquick.o itquick.s
TDE - HCM Thc hnh H iu hnh Linux 190
Source Code Control (tt)
V d mt Makefile: (tt)Mi dung Makefile: (tt)fresh:rm *.o
maybe.h: yes.h no.hcp yes.h no.h /user/sue/
Thc thi make:$ make someonehappy hoc$ make
TDE - HCM Thc hnh H iu hnh Linux 191
Source Code Control (tt)
nh dng ca MakefileBao gm nhiu mc, mi mc c dng:: [dependents]
=> Nu file c hn so vi cc file [dependents] th make s thc thi .[dependents] l danh sch cc fileCc lnh trong cch nhau bi du chm phy (;) v khng c k t xung dngTrc phi l du cch TAB
TDE - HCM Thc hnh H iu hnh Linux 192
Source Code Control (tt)
Forcing recompiles:Khng mun make bin dch li mi khi copy file t ni ny qua ni khc=> S dng tin ch touch hay gi make vi ty chn -t
Kim tra Makefile:Gi make vi ty chn -n=> make s in ra cc thng bo nhng khng bin dch tht chng trnh
TDE - HCM Thc hnh H iu hnh Linux 193
Source Code Control (tt)
Macro:Tng t nh cc bin trong lp trnh shellV d:LIBFILES=/usr/happy/lib/likeatree.aobjects = main.o dothis.oCC = /usr/bin/cc1version=This is one version of someonehappy
OPTIONS =
Makefile cng coi cc bin mi trng shell nh macro.
TDE - HCM Thc hnh H iu hnh Linux 194
Source Code Control (tt)
Macro: (tt)Cc macro quan trng trong Makefile:CC: Trnh C CompilerCFLAGS: Cc c bin dch cho CC
Macro c th tham kho cc macro khc:LIB_DIR = /usr/happy/libLIB_FILES = ${LIB_DIR}/likeatree.aOBJS = main.o dothis.o itquick.osohappy: ${OBJS} ${LIB_FILES}${CC} -o sohappy ${OBJS} ${LIB_FILES}
TDE - HCM Thc hnh H iu hnh Linux 195
Source Code Control (tt)
Lut hu t:p dng chung mt mc ca Makefile cho cc target hay dependent c phn m rng cho trc => Khng cn to cho mi file mt mc ring trong Makefile.Mt s lut hu t mc nh ca make:.SUFFIXES: .o .c .s.c.o:$(CC) $(CFLAGS) c $ Cc hu t cn p dng lut.c.o:$(CC) $(CFLAGS) c $ Dch cc file *.c nu cc file *.o ca chng cha c cp nht$< i din cho mi dependent *.c (tng t $?)$@ i din cho mi target *.o