thực hành unix, linux ngô thanh nguyên bộ môn hệ thống và mạng máy tính

88
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: [email protected] 1 Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Upload: dyami

Post on 20-Jan-2016

54 views

Category:

Documents


2 download

DESCRIPTION

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: [email protected]. Assignment 1: Các giải thuật định thời và lập trình multiprocess, multithread, IPC - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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: [email protected]

1Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 2: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tuần Buổi Nội dung

1 TH1 Linux, các lệnh của Linux, lập trình Shell trên Linux

2 Lab1 Thực hành các lệnh và lập trình shell trên Linux

3 TH2 Ngôn ngữ C, C++, lập trình process, Makefile

4 Lab2 Lập trình multiprocess, Assignment 1

5 TH3 Lập trình pipe, signal, semaphore

6 Lab3 Thực hành lập trình với pipe, signal

7 TH4 Lập trình shared-memory, message-queue, thread

10 R1 Báo cáo Assignment 1

11 Lab4 Thực hành lập trình với semaphore, message-queue, Assignment 2

12 Lab5 Thực hành lập trình với shared-memory, thread

13 Lab6 Thực hành lập trình với Memory

14 Lab6’ Thực hành lập trình với Memory

15 Lab7 Thực hành lập trình với I/O

16 R2 Báo cáo Assigment 2

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 2

Assignment 1: Các giải thuật định thời và lập trình multiprocess, multithread, IPCAssignment 2: Quản lí bộ nhớ và I/O

Page 3: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tài liệu tham khảohttp://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 manualInternet

3Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 4: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

4Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 5: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

5Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 6: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Giới thiệuThự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ên sử dụng (username)Mật khẩu (password)Thư mục làm việc (home directory)

6Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 7: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Login và logout

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 7

Page 8: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Đăng nhập hệ thống

LinuxTại dấu nhắc của hệ thống, gõ username và password

WindowsDùng ssh để kết nối đến máy chủ Linux từ xaPuTTY

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 8

Page 9: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 9

Page 10: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 10

Page 11: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Đăng xuất hệ thống

exit, Ctrl + D hoặ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 11

Page 12: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 12

Page 13: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

13Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 14: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 14

Page 15: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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ệnh hiển thị thông tin về UID và GID: idLệnh cho biết danh định: whoami hoặc who am iVí dụ

$who am ia01 pts/1 Apr 2 14:38$whoamia01

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 15

Page 16: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Thư mục home, thư mục hiện hànhMỗ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 homeDùng lệnh echo đểhiển thị biến môi trường HOME:$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 16

Page 17: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Hiển thị người dùng có mặt trong hệ thống Lệnh who

$whoroot 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 17

Page 18: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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$ passwdNewpassword:Confirmnew password:

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 18

Page 19: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Để được trợ giúp Dùng lệnh man (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: fVí dụ

$ man passwd

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 19

Page 20: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

20Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 21: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Cấu trúc hệ thống file

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 21

Page 22: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 22

Page 23: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các kiểu file Directory

là file đặc biệt, chứa thông tin của các file khác.thực chất là 1 file.

Ordinary filelà file thông thường, chương trình hoặc dữ liệu.

Special filelà file đặc biệt, tương ứng với các thiết bị (device file)

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 23

Page 24: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 24

Page 25: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 25

Page 26: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Liệt kê nội dung thư mục Dùng lệnh ls (listing directory):

ls [option] path_name

Ví dụ$ lsaddr.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 26

Page 27: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Một số tùy chọn của lệnh ls-a/A liệt kê các file ẩn-d chỉ liệt kê tên của thư mục, không liệt kê nội dung-F liệt kê các file và cho biết kiểu của file qua ký hiệu ở cuối

Không có ký hiệu gì: file thường‘/’ directories‘*’ executable files“@” linked files

-i cho biết số inode của file-l liệt kê đầy đủ thông tin về file/thư mục-R liệt kê các thư mục con đệ quy-t sắp xếp theo thời gian cập nhật

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 27

Page 28: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Ví dụHiển thị đầy đủ thông tin:

$ls –ltotal 8drwxr-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 28

Page 29: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 29

Page 30: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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.ca.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 30

Page 31: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Wildcards Wildcards là 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*.pasp10.pas p1.pas p2.pas p5.pas$ls p?.pasp1.pas p2.pas p5.pas$ls p[1-3].pasp1.pas p2.pas

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 31

Page 32: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các lệnh trê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 32

Page 33: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tạo thư mục Dùng lệnh mkdir

mkdir path_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 33

Page 34: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tạo cây thư mục conVí 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 34

Page 35: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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ỗngrm –r path_name(s)

Xoá filerm –option file_name(s)

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 35

Page 36: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Copy Copy files:

cp [-option] from(s) to

Copy thư mụccp -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 36

Page 37: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Di chuyển/đổi tên file/thư mục Dùng lệnh mv (move):

mv [option] filename dest_filemv [option] directory dest_dirmv [option] filename dest_dir

Ví dụ:$mv examples lab1

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 37

Page 38: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Làm việc trên file Tạo filesHiển thị nội dung files Tìm kiếm fileTìm kiếm trong nội dung của file

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 38

Page 39: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tạo fileTạo file và nhập vào nội dung

cat > name_of_fileSau 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ằng lệnh touchtouch new_file

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 39

Page 40: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tạo fileDùng lệnh cat:

cat filenameVới file có nội dung dài, dùng lệnh more:

more filenameDấ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ển thị trang kế tiếp <RETURN> hiển thị dòng kế tiếp q thoát khỏi lệnh more b về trang trước. h xem trợ giúp.

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 40

Page 41: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Hiển thị nội dung fileHiển thị n dòng đầu tiên của một text file, dùng lệnh head

head -n filename

(nếu n=10, có thể bỏ option –n đi: head filename)

Hiển thị n dòng sau cùng của một text file, dùng lệnh lastlast -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 41

Page 42: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tìm kiếm một file Tìm kiếm một file trong hệ thống file (file system), dùng lệnh

findfind 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 42

Page 43: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tìm kiếm trong nội dung của fileTì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 43

Page 44: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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 - đọcw–write –ghix–execute -thực thi

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, ou = owner user = chủ sở hữug = group = những người cùng nhóm với chủ sở hữuo = others = tất cả những người khác

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 44

Page 45: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Phân quyề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:rwx rwx rwxuser group other

Có thể xem thông tin về quyền truy cập bằng lệnh ls -lVí dụ

$ls -l-rwxr-xr-x

Với ví dụ trên:Chủ sở hữu có quyền r (đọc), w (ghi), và x (thực thi).Các thành viên cùng nhóm với chủ sở hữu có quyền r và x.Những người khác có quyền r và x.

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 45

Page 46: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

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ạngDạ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 46

Page 47: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Phân quyền Dạng số bát phâ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 47

Page 48: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Ví dụ $mkdir perm$touch test$ls –ltotal 110drwxr-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$chmod g+w perm$ls -altotal 1170drwxrwx--- 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 48

Page 49: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Ví dụ $chmod 750 perm$chmod 700 test$ls -altotal 1170drwxr-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 49

Page 50: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Thay đổi quyền mặc địnhKhi 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ướcNgườ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-creation mode mask).Hiển thị mặt nạ quyền:

$umask022

Thay đổi mặt nạ quyền:umask nnn("n”:0..7)

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 50

Page 51: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các giá trị của mặt nạ quyền Octal number Access permissions given

0 rwx

1 rw

2 r-x

3 r--

4 -wx

5 -w

6 --x

7 ---

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 51

Page 52: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Ví dụ Thay đổi mặt nạ để các file được tạo ra sau đó không cho

những người ngoài chủ sở hữu truy cập:$ umask 077$ touch newfile ; ls –l

Thay đổi mặt nạ để các file được tạo ra sau đó không cho những người ngoài chủ sở hữu thay đổi nội dung:

$umask 022$ touch newfile2 ; ls –l

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 52

Page 53: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các phân quyền trên file/thư mục

Permission File Directory

r read a file list files in ...

w write a filecreate file in ...

rename file in ... delete file ...

x execute a shell script

read a file in ...write to a file in ...execute a file in ...

execute a shell script in ...

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 53

Page 54: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Qui trình kiểm tra quyền hạn Gọi UID1, GID1 là uid và gid của một quá trình, còn

UID2, GID2 là uid và gid của file/thư mục mà quá trình đó truy xuất

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 54

Page 55: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

55Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 56: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Đổi hướng xuất nhậpMỗi quá trình trong UNIX gắn với 3 thiết bị chuẩn được đánh

chỉ số (descriptor) tương ứng: Thiết bị nhập chuẩn: bàn phím (0)Thiết bị xuất chuẩn: màn hình (1)Thiết bị báo lỗi chuẩn: màn hình(2)

Các thiết bị chuẩn này có thể được thay thế bằng các file thông thường.

Tái định hướng cho lệnh bằng cách dùng các ký hiệu:< Tái định hướng thiết bị nhập> Tái định hướng thiết bị xuất>> Nối vào file được tái định hướng (thay vì tạo mới)

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 56

Page 57: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Đổi hướng nhập chuẩn command < input_file

Ví dụĐổi hướng nhập chuẩn cho lệnh sort$sort < /etc/passwd

Đổi hướng nhập chuẩn cho lệnh wc$wc -l < /etc/passwd

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 57

Page 58: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Đổi hướng xuất chuẩn command > output_file

Ví dụĐổi hướng xuất cho lệnh ls$ls –al /usr > /tmp/usrlist

Đổi hướng xuất và nhập cho lệnh sort:$sort < /etc/passwd > /tmp/userlist

Đổi hướng xuất cho lệnh cat$cat file1 file2 > file

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 58

Page 59: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nối thiết bị xuất chuẩn vào file

command >> output_file

Ví dụ$ls/ > dirlist$ls/etc >> dirlist

$date > log$who >> log

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 59

Page 60: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Kết nối các lệnh với nhau UNIX cho phép kết nối nhập xuất của các lệnh với nhau

thông qua các ống (pipe).

Một pipe có nhiệm vụ nhận dữ liệu xuất từ một lệnh và đưa vào như dữ liệu nhập cho lệnh kế tiếp theo dạng sau

command1 | command2 | command3

(Dấu sổ đứng | (vertical bar) dùng để chỉ định cho một pipe)

Có thể dùng pipe kết nối các lệnh với nhau để thực hiện các thao tác phức tạp hơn.

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 60

Page 61: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Ví dụ $who | sort

(xem danh sách có sắp xếp các user đang trong hệ thống)

$who | wc –l(đếm số người dùng đang trong hệ thống)

$ls -al /etc | more(liệt kê từng trang nội dung thư mục /etc)

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 61

Page 62: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Thực thi nhiều lệnh trên một dòng *NIX cho phép dùng các dấu chấm phẩy (;), dấu

ampersand (&) để viết nhiều lệnh trên cùng một dòng.

Vídụ$ cd /etc ; ls $ date ; cal ; who $ mkdir abc && cd abc && mkdir def

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 62

Page 63: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

63Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 64: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Trình soạn thảo vi vi (visual interpreter)Có hai chế độ hoạt động

Chế độ lệnh (command)Chế độ chèn (insert)

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 64

Page 65: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Hai chế độ hoạt động Chế độ lệnh:

Chế độ lệnh bắt đầu khi vào chương trình vi. Có thể thực hiện các thao tác di chuyển, thao tác trên các đối tượng text...

Muốn chuyển về chế độ lệnh, chỉ cần ấn ESC

Chế độ chèn:Cho phép nhập văn bản vào buffer .Có nhiều lệnh để

chuyển vào chế độ chèn như: a, A, i, I, o, OKhi ở chế độ chèn, cuối màn hình có chuỗi INSERT

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 65

Page 66: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Bắt đầu vi $vi test.txt~~~~‘test.txt’[New file]

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 66

Page 67: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các thao tác đơn giảnẤn ‘a’ (append) để vào chế độ chèn.Nhập vào văn bảnSau khi nhập xong, chuyển sang chế độ lệnh: ấn ESCLưu dữ liệu vào file và thoát khỏi vi

Lưu :w <Enter>Thoát :q <Enter>Vừa lưu và thoát :wq <Enter> hoặc ZZ

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 67

Page 68: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các lệnh di chuyểnh lùi 1 ký tự

j xuống 1 dòng

k lên 1 dòng

l qua phải 1 ký tự

:n di chuyển đến dòng n

G di chuyển đến cuối dòng

Tuy nhiên, trong Linux ta có thể dùng các phím mũi tên để di chuyển.

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 68

Page 69: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các lệnh chèn văn bảni chèn trước cursor

I chèn ở đầu dòng

a chèn sau cursor

A nối vào cuối dòng

o mở một dòng trống phía dưới

O mở một dòng trống phía trên

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 69

Page 70: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Tìm kiếm trên văn bảnTìm xuôi (forward)

:/pattern<Enter>

Tìm ngược (backward):?pattern<Enter>

Lặp lại lần tìm trước nLặp lại lần tìm trước chiều ngược lại N

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 70

Page 71: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các lệnh xoáXoá LệnhKí tự hiện hành DEL hoặc xXóa từ hiện hành dwXóa từ trước dbCả dòng ddXóa đến cuối dòng d$ Xóa đến đầu dòng d0Xóa n dòng kế tiếp nddUndo p hoặc uPaste p

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 71

Page 72: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Các thao tác khácGhi ra file :wGhi ra file có tên ‘filename’ :w filenameThoát vi (khi nội dung file chưa đổi) :qThoát và không ghi :q!Ghi và thoát :x! hoặc ZZ

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 72

Page 73: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Nội dungGiới thiệuKhái niệm cơ bản về người dùng – accountCác lệnh cơ bản trong LinuxHệ thống file, lệnh thao tác trên hệ thống fileĐổi hướng xuất nhập, pipeTrình soạn thảo vi (visual interpreter)Lập trình Shell

73Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM

Page 74: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lập trình ShellGiới thiệuĐiều khiển shellCú pháp ngôn ngữ shell

Sử dụng biếnCấu trúc điều khiểnHàmCác lệnh nội tại của shell

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 74

Page 75: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Giới thiệuDùng để kết hợp nhiều lệnh lại với nhau để tạo thành một

kịch bản có chức năng mạnh mẽ.Các loại shell trên Linux

sh (Bourne)csh, tcsh, zshbash (Bourne Again Shell)rc

Ta có thể dùng lệnh file để xem kiểu file của bash hay sh$file /bin/bash$file /bin/shKết luận??

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 75

Page 76: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Điều khiển ShellĐiều khiển shell từ dòng lệnh

$for file in *>do> if grep –l ‘cp –v’ $file> then> more $file> fi>done

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 76

Page 77: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Điều khiển ShellĐiều khiển shell bằng tập tin kịch bản (script file)

File first.sh#!/bin/shfor file in *do if grep –l ‘cp –v’ $file then more $file fidoneexit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 77

Page 78: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Thực thi scriptLấy tên file làm đối số của shell

$/bin/sh first.sh

Gọi trực tiếp từ dòng lệnh$chmod +x first.sh$./first.sh

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 78

Page 79: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Cú pháp ngôn ngữ shellSử dụng biến

$xinchao=Hello$echo $xinchaoHello$xinchao=“I am here”$echo $xinchaoI am here$xinchao=12+1$echo $xinchao12+1

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 79

Page 80: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Cú pháp ngôn ngữ shellCấu trúc điều khiển

ifforwhileuntilcase

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 80

Page 81: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lệnh ifCú pháp

if conditionthenstatements

elsestatements

fiVí dụ

#!/bin/shif [ $HOME = “/home/a01” ]thenecho “Hello a01”

elseecho “Guest”

fiexit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 81

Page 82: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lệnh forCú pháp

for variable in valuesdostatements

done

Ví dụ#!/bin/shfor user in a01 mpi griddoecho $user

doneexit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 82

Page 83: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lệnh whileCú pháp

while condition dostatements

doneVí dụ

#!/bin/shfoo=1while [ “$foo” –le 16 ]doecho “Here $foo”foo=$(($foo+1))

doneexit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 83

Page 84: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lệnh untilCú pháp

until conditiondostatements

doneVí dụ

#!/bin/shfoo=1until [ “$foo” –eq 10 ]doecho “Here $foo”foo=$(($foo+1))

doneexit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 84

Page 85: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lệnh caseCú pháp

case variable inpattern [ | pattern ] … ) statements;;pattern [ | pattern ] … ) statements;;…

esac

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 85

Page 86: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Lệnh caseVí dụ

#!/bin/shecho “Is it morning? Please answer yes or no”read timeofdaycase “$timeofday” in

“yes” | “y” | “Yes” | “YES” )echo “Good Morning”;;

[nN]* )echo “Good Afternoon”;;

* )echo “Please answer yes or no”exit 1;;

esacexit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 86

Page 87: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Cú pháp ngôn ngữ shellHàm

#!/bin/shfoo() {echo “Function foo is executing”

}echo “script is starting”fooecho “script ended”exit 0

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 87

Page 88: Thực hành Unix, Linux Ngô Thanh Nguyên Bộ môn Hệ thống và Mạng máy tính

Cú pháp ngôn ngữ shellCác lệnh nội tại của shell

==> Tự tìm hiểYu

Khoa KH&KTMT - Đại học Bách Khoa Tp. HCM 88

break exec return

continue exit n set

Lệnh : (lệnh rỗ\ng) export ship

Lệnh . (lệnh thực thi) expr trap

eval printf unset