880 likes | 1.06k Views
Thá»±c hà nh Unix, Linux Ngô Thanh Nguyên Bá»™ môn Hệ thống và Mạng máy tÃnh Khoa Khoa há»c và kỹ thuáºt máy tÃnh Email: ntnguyen@cse.hcmut.edu.vn. Assignment 1: Các giải thuáºt định thá»i và láºp trình multiprocess, multithread, IPC
E N D
Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính Khoa Khoa học và kỹ thuật máy tính Email: ntnguyen@cse.hcmut.edu.vn Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Assignment 1: Các giải thuật định thời và lập trình multiprocess, multithread, IPC Assignment 2: Quản lí bộ nhớ và I/O Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tài liệu tham khảo • http://www.cse.hcmut.edu.vn/~c506001/ • Nguyễn Phương Lan, Hoàng Đức Hải: “Lập trình Linux, tập 1” • Linux manual • Internet Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Nộidung • Giới thiệu • Khái niệm cơ bản về người dùng – account • Các lệnh cơ bản trong Linux • Hệ thống file, lệnh thao tác trên hệ thống file • Đổi hướng xuất nhập, pipe • Trình soạn thảo vi (visual interpreter) • Lập trình Shell Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Nộidung • Giớithiệu • Kháiniệmcơbảnvềngườidùng – account • Cáclệnhcơbảntrong Linux • Hệthống file, lệnhthaotáctrênhệthống file • Đổihướngxuấtnhập, pipe • Trìnhsoạnthảo vi (visual interpreter) • Lậptrình Shell Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Giới thiệu • Thực hành trên hệ điều hành *nix • Cóthểlogin trực tiếp hay dùng chương trình telnet/ssh đểkết nối đến máy *nix • Mỗi người dùng phải cómột tài khoản (account) đểsửdụng hệthống. Mỗi tài khoản gồm có: • Tênsửdụng (username) • Mậtkhẩu (password) • Thưmụclàmviệc (home directory) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Login và logout Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Đăng nhập hệ thống • Linux • Tại dấu nhắc của hệ thống, gõ username và password • Windows • Dùng ssh để kết nối đến máy chủ Linux từ xa • PuTTY Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Đăng xuất hệ thống • exit,Ctrl + Dhoặcđóng cửa sổ PuTTY • Tất cảcác quátrình đang chạy đều kết thúc (ngoại trừcác quátrình được thực hiện với lệnh nohup) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Một số chú ý • Hệthống *nix phân biệt chữhoa vàchữ thường. • Nếu đăng nhập từcác máy Windows, cần tắt các chương trình gõ tiếng Việt(Unikey,Vietkey…). • Đểxoáký tự trước đó, cóthểdùng phím Backspace trong một số trường hợp không dùng phím Delete được. Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Nộidung • Giớithiệu • Kháiniệmcơbảnvềngườidùng – account • Cáclệnhcơbảntrong Linux • Hệthống file, lệnhthaotáctrênhệthống file • Đổihướngxuấtnhập, pipe • Trìnhsoạnthảo vi (visual interpreter) • Lậptrình Shell Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Các lệnh cơ bản • Một lệnh *nix cơ bản có định dạng như sau <command_name> <options> <arguments> • Ví dụ: $ls –l /etc $cd /tmp (no option) $whoami (no option and argument) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Danh định (identifier) • Mỗi người dùng cómột danh định duy nhất trong hệthống.Đối với người dùng, danh định chính làusername duy nhất trong hệthống. • Đối với hệthống, một danh định người dùng bao gồm: • UID (user identifier) • GID (group identifier) • Lệnhhiểnthịthông tin về UID và GID: id • Lệnh cho biết danh định: whoamihoặcwho am i • Vídụ $who am i a01 pts/1 Apr 2 14:38 $whoami a01 Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Thư mục home,thư mục hiệnhành • Mỗi người dùng trong hệthống đều cómột thư mục home và người đócótoàn quyền trong đó • Thư mục home Dùng lệnhechođểhiển thịbiến môi trườngHOME: $echo $HOME /home/a01 • Thư mục làm việc (hay thư mục hiện hành) $pwd /home/a01 Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Hiển thị người dùng có mặt trong hệ thống • Lệnh who $who root pts/1 Aug 17 15:02 (172.28.12.14) mpi pts/2 Aug 17 15:05 (172.28.10.143) a01 pts/8 Aug 17 14:25 (172.28.11.192) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Thay đổi mật khẩu • Lúc đầu, người dùng log on vào hệthống cóthểkhông cần mật khẩu. Tuy nhiên, người dùng phải thay đổi sau đó. • Dùng lệnh passwd để thay đổi mật khẩu $ passwd Newpassword: Confirmnew password: Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Để được trợ giúp • Dùng lệnhman(manual) đểxem trợgiúp cho một lệnh hay một hàm nào đó. • Một sốphím chức năng trong lệnh man -Kết thúc: q-Về trang trước:b-Vềtrang sau: f • Ví dụ $ man passwd Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Nộidung • Giớithiệu • Kháiniệmcơbảnvềngườidùng – account • Cáclệnhcơbảntrong Linux • Hệthống file, lệnhthaotáctrênhệthống file • Đổihướngxuấtnhập, pipe • Trìnhsoạnthảo vi (visual interpreter) • Lậptrình Shell Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Cấu trúc hệ thống file Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Một số thư mục quan trọng • / • /bin • /boot • /dev • /etc • /home • /lib • /lost+found • /mnt • /sbin • /tmp • /usr • /var Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Các kiểu file • Directory • là file đặc biệt, chứa thông tin của các file khác. • thựcchấtlà 1 file. • Ordinary file • làfile thông thường, chương trình hoặc dữliệu. • Special file • làfile đặc biệt, tương ứng với các thiết bị(devicefile) • Dùng lệnh file path_name đểbiết path_name làloại file gì. Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Dạo chơi trong cây thư mục • Dùng lệnh cd (change directory) $ cd <pathname> pathname = đường dẫn tương đối (tính từ thư mục hiện hành) hoặc tuyệt đối (tính từ thư mục gốc) • Thư mục đặc biệt: • Thư mục hiện hành:. • Thư mục cha:.. • Thư mục home:~hoặc~username Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Ví dụ $cd /tmp(move to /tmp directory) $cd ../home/a01 (then you are in your home) $pwd /home/a01 ... $cd(move back to your home) ... $cd /etc/sysconfig/network-scripts $pwd /etc/sysconfig/network-scripts Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Liệt kê nội dung thư mục • Dùng lệnh ls (listing directory): ls [option] path_name • Ví dụ $ ls addr.c env.c fork.c lockf.c pipe1.c a.out exec1.c forkex.c lockf.h Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Mộtsốtùychọncủalệnhls • -a/A liệt kê các file ẩn • -dchỉliệt kê tên của thư mục, không liệt kê nội dung • -F liệtkêcác file vàchobiếtkiểucủa file qua kýhiệu ở cuối • Không cóký hiệu gì:file thường • ‘/’ directories • ‘*’ executable files • “@” linked files • -ichobiếtsốinodecủa file • -lliệt kê đầy đủthông tin về file/thư mục • -Rliệt kê các thư mục conđệquy • -t sắpxếptheothờigiancậpnhật Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Ví dụ • Hiển thị đầy đủthông tin: $ls –l total 8 drwxr-xr-x 15 a01 student 512 Aug 10 2000 floppy -rw-r--r– 1 a01 student 58984 Mar 9 2000 arch.tar Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Ví dụ $ ls -a . .libs .rhosts io.c .. .login 1.c nohup.out .cshrc .netscape debugging.html .desksetdefaults .profile fork.c (Các file/thư mục ẩn cótên bắt đều bằng dấu chấm, vídụ: .lib, .rhosts,.login) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Ví dụ $ ls -R .: Desktop examples ex.tar ./Desktop: Autostart kontrol-panel Linux Documentation Printer ./examples: c cmd ./examples/c: addr.c env.c fork.c lockf.c pipe1.c procinfo.c sig1.c a.out exec1.c forkex.c lockf.h pipe2.c sema.c sig2.c ./examples/cmd: 1.txt case.sh Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Wildcards • Wildcardslàcác ký tựdùng đểthay thếcho các mẫu tương ứng với tên file hay thư mục. • Wildcards: * ? […] • Vídụ: $ls p*.pas p10.pas p1.pas p2.pas p5.pas $ls p?.pas p1.pas p2.pas p5.pas $ls p[1-3].pas p1.pas p2.pas Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Các lệnhtrên file vàthư mục • Tạo thư mục: mkdir • Xoá file hay thư mục: rm • Copy: cp • Di chuyển: cd Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tạo thư mục • Dùnglệnhmkdir mkdirpath_name • Vídụ: $pwd /export/home/a01 $mkdir examples $ls –aF ./ .bash_logout .bashrc .emacs ex.tar .screenrc ../ .bash_profile Desktop/ examples/ .kde/ .wl Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tạo cây thư mục con • Vídụcần tạo 3 thư mục a, b, c như sau a/b/c • Dùng 3 lệnh mkdir $mkdir a $mkdir a/b $mkdir a/b/c • Dùng một lệnh mkdir $mkdir –p a/b/c Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Xoá file hay thư mục • Xoá thư mục rỗng (không chứa thư mục con hay file) rmdir path_name(s) • Xoá thư mục không rỗng rm –r path_name(s) • Xoá file rm –option file_name(s) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Copy • Copy files: cp [-option] from(s) to • Copy thư mục cp -r from(s) to • Vídụ: $cp /etc/passwd . $cp p*.pas /tmp $cp /etc/sysconfig/network-sripts /tmp Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Di chuyển/đổi tên file/thư mục • Dùng lệnh mv (move): mv [option] filename dest_file mv [option] directory dest_dir mv [option] filename dest_dir • Ví dụ: $mv examples lab1 Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Làm việc trên file • Tạo files • Hiển thị nội dung files • Tìm kiếm file • Tìm kiếm trong nội dung của file Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tạo file • Tạo file vànhậpvàonội dung cat > name_of_file • Sau khi nhập nội dung, gõ <Enter> đểxuống dòng. • Ấn Ctrl-d đểghi nội dung soạn thảo vào file vàkết thúc thao tác. • Vídụ $cat > test.txt <Enter> this is my file <Enter> Ctrl + D $ • Tạo file rỗng (0 bytes) bằnglệnh touch touch new_file Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tạo file • Dùnglệnhcat: cat filename • Với file cónội dung dài, dùnglệnhmore: more filename • Dấu nhắc--More--(nn%) xuất hiện bên dưới màn hình. • Cóthểdùng các phím điều khiển trong lúc đang xem nội dung file • space bar hiểnthịtrangkếtiếp • <RETURN> hiểnthịdòngkếtiếp • q thoátkhỏilệnh more • bvề trang trước. • h xemtrợgiúp. Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Hiểnthịnội dung file • Hiển thịndòng đầu tiêncủa mộttext file,dùng lệnh head head -n filename (nếu n=10, cóthểbỏoption –n đi:head filename) • Hiển thị ndòng sau cùng của một text file, dùng lệnh last last -n filename (nếu n=10, cóthểbỏ option –n đi: last filename) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tìm kiếm một file • Tìmkiếmmột file tronghệthống file (file system), dùnglệnhfind find pathname -name filename -print (Cóthểdùng wildcard đặt trong dấu nháy kép) • Vídụ $find / -name “*.cpp” -print • Cũng cóthể định vịmột file bằng các lệnh which, whereis, locate (lưu ý làcác lệnh này chỉtìm trong phạm vi biến môi trường PATH hoặc xxxPATH) • Vídụ $ which find $ locate ls Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Tìmkiếmtrongnội dung của file • Tìm một chuỗi ký tự trong một text file bằng lệnh grep pattern filename(s) pattern: chuỗi ký tựcần tìm kiếm. Nếu chuỗi cóký tự đặc biệt thìphải đặt trong dấu nháy đơn. • Ví dụ $ grep UNIX /usr/man/man*/* $ grep -n '[dD]on\'t' notes $ grep a01 /etc/passwd Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Các quyền trên file và thư mục • Hệthống *NIX bảo vệcác file và thư mục thông qua các quyền thiết lập trên đó. • Có 3 quyền: • r–read - đọc • w–write –ghi • x–execute -thựcthi • Các quyền được áp dụng trên 3 nhóm người dùng, kíhiệu bằng ba kítự tương ứng u, g, o • u = owner user = chủsởhữu • g= group = những người cùng nhóm với chủsởhữu • o= others = tất cảnhững người khác Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Phânquyền • Các quyền áp dụng cho 3 nhóm người dùng kết hợp lại thành 9 bit như sau: rwxrwxrwx user group other • Cóthểxemthông tin vềquyềntruycậpbằnglệnhls -l Vídụ $ls -l -rwxr-xr-x Vớivídụtrên: • Chủsởhữu cóquyềnr(đọc),w(ghi),vàx(thực thi). • Cácthànhviêncùngnhómvớichủsởhữucóquyềnr và x. • Những người khác cóquyền rvàx. Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Thay đổi các quyền trên file và thư mục • Dùng lệnh chmod. chmod access_mode file(s) • Quyền truy cập có thể thiết lập theo 2 dạng • Dạng dùng ký hiệu (symbolic): [ugo][+ -=][rwx] • Dạng dùng số bát phân (octal): [0-7][0-7][0-7] Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Phân quyền • Dạngsốbátphân Octal Binary Permissions 0 000 --- 1 001 --x 2 010 -w- 3 011 -wx 4 100 r-- 5 101 r-x 6 110 rw- 7 111 rwx Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Ví dụ $mkdir perm $touch test $ls –l total 110 drwxr-xr-x 15 a01 other 512 Aug 10 2001 perm -rw-r--r-- 1 a01 other 0 Aug 10 2001 test $chmod o-rx perm $chmodg+w perm $ls -al total 1170 drwxrwx--- 15 a01other 512 Aug 10 2001 perm -rw-r--r-- 1 a01other 0 Aug 10 2001 test Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Ví dụ $chmod 750 perm $chmod 700 test $ls -al total 1170 drwxr-x--- 15 a01 other 512 Aug 10 2001 perm -rwx------ 1 a01 other 0 Aug 10 2001 test Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM
Thay đổi quyền mặc định • Khi một file/thư mục được tạo ra, nó được gán một quyền hạn đã được định nghĩa trước • Người dùng cóthểthay giátrịmặc định này bằng cách thay đổi mặt nạquyền(file-creationmode mask). • Hiển thị mặt nạ quyền: $umask 022 • Thay đổi mặt nạquyền: umask nnn ("n”:0..7) Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM