bài tập lap trinh shell
Trang 1Giảng viên: Đào Thị Ngọc Hân Email: daothingochan2012@gmail.com
Điện thoại: 0987.999.338 Địa chỉ: P408 - nhà A1
Bộ môn Công nghệ Phần mềm Khoa Công nghệ Thông tin Trường Đại học Xây dựng
Trang 2Thông tin về môn học
Thông tin về môn học –– Lập trình Linux Lập trình Linux
60 tiết = 36 tiết lý thuyết + 24 tiết thực hành
Điểm chuyên cần: 5 điểm
5đ đi học đầy đủ & Ý thức tốt *(ĐD/tổng)
Hình thức thi cuối kỳ:
Lý thuyết (trắc nghiệm – 30 phút): 40% tổng số điểm
Thực hành (trên máy – 60 phút): 60% tổng số điểm
Không sử dụng tài liệu
Trang 3Tài liệu tham khảo
Beginning Linux Programming 4th
Edition, Neil Matthew, Richard
Stones, Express Wrox, 2007
Lập trình Linux - Tập 1, Nguyễn Phương Lan, Hoàng Đức Hải, NXB Giáo Dục, 2004
Trang 4Tài liệu tham khảo
Ubuntu Server Guide
https://help.ubuntu.com
Linux Bible 2010 Edition,
Christopher Negus
Trang 5Các tài liệu khác
Trang 7Nội dung
Giới thiệu về hệ điều hành Linux
Hướng dẫn cài đặt HĐH Linux - Ubuntu
Kiến trúc chung của Unix / Linux
Đường dẫn và cách truy xuất ổ đĩa trong Linux
Tương tác với hệ thống Linux
Trang 81.1 Giới thiệu về hệ điều hành Linux
Hệ điều hành:
Hệ điều hành là một phần mềm chạy trên máy tính,
cách dễ dàng
Trang 91.1.1 Lịch sử hệ điều hành Linux
–– Linux & chặng đường 20 năm Linux & chặng đường 20 năm
Kernel HĐH có tên là “Linux”
Với suy nghĩ: “chỉ làm theo sở thích, không tham vọng vĩ
đại hay chuyên nghiệp như GNU”
“Tôi đang xây dựng một hệ điều hành miễn phí cho dòng
máy AT-386(486) Công việc bắt đầu từ tháng 4 và cho đến nay đã sẵn sàng Do hệ điều hành của tôi tương tự như Minix, tôi muốn nhận được mọi thông tin phản hồi về những thứ mọi người thích hay không thích ở hệ điều hành Minix.”
Trang 10 Hiện nay: 70% các sàn giao dịch chứng khoán sửdụng Linux, các máy chủ của Amazon, Facebook,Twitter, eBay, Google đều chạy Linux
Top 500 Super Computer
Trang 13Bắt đầu phát triển Linux.
Tham khảo thiết kế của Marice J Bach
Tháng 10, công bố bản “chính thức” của Linux (bản 0.02) mới chỉ có Bash Shell và GCC.
1992
Tháng 1, Linux 0.12 Chuyển sang dùng General Public License.
Tháng 3, Linux 0.95.
Trang 14Version 0.99 sau đó là Version 1.0 được công bố trên Internet.
Cuộc cách mạng WEB đi cùng với Linux.
1995
Tháng 1, FreeBSD 2.0.
Red Hat có giám đốc điều hành mới là Robert Yong
(người sáng lập Linux Journal)
1996
Con gái đầu lòng của Linus ra đời Sự phát triển của Linux có chậm lại.
Tháng 12, Linux 2.0.
1997
Linus tiếp xúc với Microsoft: Kết thúc gian đoạn hàn lâm tại Phần Lan (từ
1988-1997, đúng 10 năm học tập và nghiên cứu tại University of Helsinki) Nay về Bay Area (Santa Clara) để làm việc với Transmeta (Paul Allen của Microsoft là một trong những người sáng lập chính).
1998 …
Trang 151.1.3 Tại sao phải sử dụng Linux?
Linux là một HĐH miễn phí (tính tính miễn miễn phí, phí, tính tính tự tự do do) Mọi người đều có thể truy cập và thay đổi Linux.
Linux là một hệ điều hành mạnh và tin cậy (tính tính ổn ổn định định)
Trong thực tế, Linux có thể dễ dàng lấy về và nâng cấp, sửa đổi cho phù hợp (tính tính mềm mềm dẻo dẻo) Tài liệu về HĐH này
có sẵn nhiều trên mạng.
Người sử dụng không còn bị lệ thuộc Windows hay những sản phẩm Microsoft khác để vận hành máy tính Thay vào đó, có thể chọn bất kỳ một chương trình nguồn
mở nào (tính tính linh linh hoạt hoạt) Điều này đảm bảo cho người dùng Linux duy trì hệ thống của họ và những cải tiến sẽ không ngừng được phát triển
Trang 16 Linux là một HĐH 32-bit, thậm chí 64-bit (tính tính tương tương thích thích) Cộng đồng trên mạng hiện nay sử dụng HĐH này nhiều, do đó
có thể yên tâm rằng chúng ta luôn có “hậu phương” đông đảo
và vững mạnh sẵn sàng trợ giúp trong khoảng thời gian sớm nhất (tính tính nhân nhân văn văn)
Linux Linux thích thích hợp hợp cho cho những những người người muốn muốn đi đi vào vào nghiên
nghiên cứu cứu HĐH HĐH chuyên chuyên nghiệp nghiệp và và là là công công cụ cụ tốt tốt cho
cho việc việc đào đào tạo tạo tại tại các các trường trường đại đại học học
Trang 171.1.4 Mô hình phát triển
Trang 181.1.5 Giấy phép GNU
1.1.5 Giấy phép GNU –– GPL (General Public License) GPL (General Public License)
Giấy phép phần mềm mã nguồn mở (Open Source – OS) cho phép người dùng đọc, truy cập, thay đổi và làm lại mã nguồn của một sản phẩm phần mềm (theo tổ chức OSI – Open Source Initiative).
Các giấy phép phần mềm được OSI phê chuẩn và quản lý tại http://www.opensource.org.
Xem thêm chi tiết trong vietnamese.php/
http://www.opensource.org/docs/osd- Open Source mang ý nghĩa “tự do” nhiều hơn là “miễn phí”.
Mỗi loại giấy phép có những điều khoản quy định riêng.
Ví dụ: BSD Licensing chỉ dài 1 trang với 3 điều khoản cần phải tuân thủ nhưng Mozilla Public License 1.1 dài đến 12 trang đề cập mọi thứ từ việc định nghĩa thuật ngữ đến cách thức áp dụng giấy phép cho chính phủ.
Trang 19 Một trong những điều khoản quan trọng là: Nếu ta thay đổi mã nguồn thì phải lập lại tài liệu về các thay đổi và đính kèm mã nguồn theo phần mềm.
Không được thông báo bản quyền của mình (copyright) mặc dù đã thay đổi mã nguồn của chương trình.
Xem thêm thông tin tại
http://www.linux.org/info/gnu.html
Người ta còn nói GNU GPL là “Copyleft” để thay cho khái niệm “Copyright”.
Trang 21Nội dung chính của GNU
Nội dung chính của GNU GPL GPL
Tác giả vẫn giữ bản quyền đối với với phần mềm gốc.
Người sử dụng có thể sao chép và phân phối chương trình dưới bất cứ hình thức nào và giá cả tùy ý.
Người sử dụng có thể thay đổi một phần của chương trình và phân phối thay đổi của mình cùng toàn bộ phần mềm cho người khác, với điều kiện nói rõ phần mình thay đổi.
Nếu những thay đổi không thể tách rời toàn bộ phần mềm thì GNU GPL sẽ mở rộng sang những thay đổi đó.
Người sử dụng không được thông báo bản quyền.
Phải đảm bảo cung cấp mã nguồn khi bán một sản phẩm theo GNU GPL để người khác có thể sử dụng và/hoặc bán tiếp Người dùng kế tiếp có đầy đủ quyền lợi như của người trước.
Trang 221.1.6 Cách phát âm đúng chuẩn
Linux thường được phát âm với “i” ngắn giọng mũi và trọng âm tại nguyên
âm đầu tiên: LIH LIH nucks nucks.
Tác giả Linus Torvalds phát âm từ này như sau:
Bằng tiếng Thụy Điển:
Trang 23Linux là gì?
Có rất nhiều tên gọi ~ Linux & phần mềm nguồn mở
HĐH có thể chia ra 4 thành phần chính: nhân, cấu trúc (hệ thống) tập tin, trình dịch lệnh người dùng và các tiện ích.
Nhân là thành phần chính, nòng cốt của HĐH, điều khiển kiến trúc phần cứng & điều khiển việc thực hiện chương trình.
Cấu trúc tập tin (hệ thống tập tin) là hệ thống lưu tập tin trên các thiết bị lưu
Trình dịch lệnh (hệ vỏ - shell) là chương trình tổ chức giao tiếp giữa máy tính và người dùng.
Tiện ích là các chương trình riêng lẻ, thực hiện các công việc dịch vụ.
“Hệ điều hành dựa trên nhân Linux”
Trang 24 Kernel của Linux được phân phối dưới giấy phép GNU GPL (General Public License) và mã nguồn của nó được phân phối tự do tới mọi người.
Phiên bản Kernel cuối hiện nay là Kernel: 3.3 (18 March 2012)
Trang 251.1.7 Các bản phân phối của HĐH Linux
Các bản phân phối của Linux bao gồm:
Tập hợp các phần mềm (Software Packages)
Chương trình cài đặt (Installer)
Các cấu hình của riêng nhà sản xuất (Re-configure)
Trình quản lý và cập nhật gói phần mềm (Update/Patch)
Các phần mềm thương mại khác (Commercial Software)
Tài liệu hướng dẫn, hỗ trợ người dùng (User Guide)
Trang 26để phục vụ trong quá trình thực thi).
Trang 27 Pieces 2 Slides\Gldt.svg
Trang 28 More
Trang 301.2 Cài đặt HĐH Linux
Giai đoạn chuẩn bị trước khi cài đặt
Yêu cầu phần cứng: (Tối thiểu)
CPU 386 hoặc mới hơn.
Dung lượng bộ nhớ: 256MB
Dung lượng ổ cứng: 2GB
Ổ đĩa CD-ROM
Yêu cầu phần mềm:
Bộ cài đặt Ubuntu 11.10, 12.10 (file iso, 695MB) hoặc đĩa CD
Nếu không có ổ đĩa CD-ROM thì cần phần mềm tạo ổ đĩa ảo
Cài đặt để học tập:
Máy tính đang sử dụng với HĐH Windows
Bộ cài đặt Ubuntu 11.10 (695MB, file iso)
Phần mềm tạo ổ đĩa ảo (ví dụ: Ultra ISO)
Mount bộ cài đặt Ubuntu vào ổ đĩa ảo
Mở wubi.exe
Để tùy chọn Hệ điều hành khởi động có thể dùng EasyBCD 2.0
Trang 321.3.1 Nhân là gì?
system functions
Trang 33Phân loại nhân
It includes code only necessary to allow the system to provide major functionality.
Inter-process Communication
Some memory management
Low level process management & scheduling
Low level input / output
It includes all the necessary functions.
Such as Linux and …
Trang 34Monolithic vs Microlithic
Performance Flexible
Modular Easy to implement
Trang 351.3.2 Kernel Architecture Overview
Trang 36File System
retrieving and updating this information
as : open, read, write, …
FAT16, FAT32, NTFS
ext2, ext3
Trang 37 Manage the cataloging of the file system
Used to access the peripheral devices
Trang 38So sánh với hệ thống file của Windows
Boot Block : information needs to boot the system
Super Block : File System Specifications
Trang 39an i-number
access the file
Trang 40Inode (Cont.)
Trang 41Directories
Trang 42Virtual File System
program and the file system implementations
Trang 43Virtual File System (Cont.)
and inodes (the same way as the Ext2)
Trang 44Virtual File System (Cont.)
Trang 45Process Management
(time slice)
Trang 46Process Management (Cont.)
the result of a fork system call
processes (Parent and Child)
Trang 48Process Structure (cont.)
task_struct data structure in the system
This means that the maximum number of processes in the system is limited by the size of the task vector
Trang 50Device Driver
hardware from user
into every application, the code is kept in the Linuxkernel
All HW devices look like regular files.
Trang 51Memory Management
limitation
Trang 52Virtual memory
Trang 53Physical and Virtual memory
Trang 54Swap memory
manner similar to memory
Trang 55Network layers
Trang 56Linux network layers
Trang 57BSD socket layer
Used in networking and IPC.
Trang 58What is socket?
Trang 59INET socket layer
operation which is registered with BSD socket layer
Trang 61User Space
trình của người sử dụng
Hệ thống tránh việc các tiến trình thuộc không gian User Space ảnh hưởng lẫn nhau
Chỉ có tiến trình của kernel mới có thể truy cập vào tiến trình của người dùng
Trang 62Kernel Space
gọi hệ thống
Trang 63System Call
nhau
được truyền từ User Space tới Kernel Space
kernel khi nó thực hiện lời gọi hệ thống
Trang 64Mối quan hệ giữa User Space và Kernel Space
Trang 651.3.3 Kernel Functional Overview
Trang 66Tổng quan về chức năng của nhân
Cung cấp cơ chế bộ nhớ ảo
Hệ thống tập tin trừu tượng
Trừu tượng những chi tiết
khác biệt của các loại thiết bị
bằng cách giới thiệu một giao
diện tập tin chung cho tất cả
Giao tiếp liên tiến trình
Hỗ trợ giao tiếp giữa các tiến trình trên một máy tính
Trang 67Tổng quan về chức năng của nhân
Trang 68Các phiên bản Linux kernel
Stable (ổn định): Phiên bản ở mức sản phẩm phù hợp cho việc triển khai rộng rãi
Development (phát triển): Phiên bản thử nghiệm với nhiều cải tiến được đưa vào
Trang 69Quá trình phát triển phiên bản
bản Development
không cho thêm mới tính năng,
chỉ cho chỉnh sửa tính năng đã có
đóng băng: chỉ chấp nhận các hiệu chỉnh lỗi
tiên của chuỗi phiên bản stable mới
Trang 70Short history of major Linux kernel releases
Trang 71Mã nguồn của Linux kernel
cộng đồng phát triển
Phân phối những thay đổi trên mã nguồn
Dùng để nâng cấp version mà không download toàn bộ mã nguồn version mới
Trang 72 System calls & glibc
Input / output Control
Cần hiểu hệ thống kiến trúc kernel
Device drivers
Trang 731.4 Đường dẫn và cách truy xuất ổ đĩa trong Linux
Cấu trúc cây thư mục
Trên DOS/Windows, các ổ đĩa C:, D:, E:, làm gốc cho mọi đường
dẫn truy xuất các tập tin:
C
C::\\Users Users\\NgocHan NgocHan\\Documents Documents\\myletter myletter txt txt
Trên Unix/Linux, ký hiệu “/” làm ký tự đại diện cho thư mục gốc,
đồng thời là ký tự làm dấu phân cách thư mục:
/home/ngochan/Documents/myletter
/home/ngochan/Documents/myletter txt txt
Diễn giải: /home/ngochan/Documents/myletter.txt là đường dẫn
tuyệt đối đến tập tin myletter.txt trong thư mục Documents của người dùng ngochan thuộc thư mục home dưới thư mục gốc /
Trang 75 Ví dụ: nếu ta có 2 đĩa cứng a và b, một đĩa mềm vàmột ổ CD-ROM Hãy giả sử rằng ổ đĩa thứ nhất có 2phân vùng (partition) là a1 và a2, ổ đĩa thứ 2 chỉ cómột phân vùng là b.
ổ cứng a, phân vùng a1 (hda1): ổ đĩa C
ổ cứng a, phân vùng a2 (hda2): ổ đĩa D
ổ đĩa mềm: /mnt/floppy
ổ CD-ROM: /mnt/cdrom -> mỗi ổ đĩa sẽ được gắn kết (mount) vào trong cây thư mục (Tree Directory) giống như là một thư mục bình thường
Trang 771.5 Tương tác với hệ thống và cơ chế đăng nhập
1.5.1 Tương tác với hệ thống
Có hai lựa chọn khi tương tác với hệ thống Linux:
Giao diện dòng lệnh (Console - Command Line).
Tương tự như DOS Prompt/Command Prompt
Shell là một chương trình thông dịch chịu trách nhiệm tiếp nhận lệnh do người dùng đưa vào từ bàn phím Có nhiều dạng Shell nhưng thông dụng là C Shell, Korn Shell và Bash Shell.
Giao diện đồ hoạ (GUI - Graphic User Interface).
Tương tự như trong Windows
Được đảm trách bởi X-Window với GUI dạng GNOME, Unity và KDE
Trang 781.5.2 Đăng nhập
Yêu cầu phải có USERNAME và PASSWORD (được cấp bởi root
-người quản trị hệ thống)
Dấu hiệu phân loại tài khoản người dùng:
root (super-user) dấu nhắc có dạng # - toàn quyền
username (normal-user) dấu nhắc có dạng $ - giới hạn quyền
Linux là HĐH đa chương, đa nhiệm, đa người dùng
Trên cùng một máy, có thể đăng nhập với nhiều tài khoản khác nhau (có
tới 7 console ảo phục vụ cho quá trình đăng nhập và làm việc).
Sử dụng tổ hợp phím Alt + F1 Alt + F7 để hoán chuyển giữa các
console.
Do tính đa nhiệm, Linux có thể chạy nhiều chương trình cùng lúc ngay từ dòng lệnh.
Trang 802.1 Đăng nhập hệ thống Linux
Trang 812.1.1 Truy cập vào máy tính đã cài đặt HĐH Linux
hiện dấu nhắc mời đăng nhập hệ thống:
Trang 822.1.2 Sử dụng Putty để truy cập vào máy Linux
Khi đó, màn hình kết nối như trang sau:
Chọn Open, sau đó login vào máy như đang dùng một terminal của hệ thống Linux
Trang 832
3
Trang 84Hiển thị trên Putty
login as: ngochan
ngochan@192.168.228.170's password:
Welcome to Ubuntu 11.10 (GNU/Linux 3.0.0-12-generic i686)
* Documentation: https://help.ubuntu.com/
New release '12.04 LTS' available.
Run 'do-release-upgrade' to upgrade to it.
Last login: Wed Oct 03 20:55:36 2012 from 192.168.228.1 ngochan@ubuntu:~$
Trang 852.1.3 Thoát khỏi hệ thống
Dùng lệnh exit hoặc logout
# shutdown –h now
$ sudo shutdown –h now
# shutdown –r now
Trang 862.2 Quản lý tập tin
Tổ chức hệ thống tập tin trên Linux
Các lệnh di chuyển giữa các thư mục, liệt kê tập tin
Các lệnh thao tác trên các tập tin và thư mục
Nội dung các tập tin
Quyền truy cập tập tin
Xuất nội dung thông báo
Xem hướng dẫn sử dụng lệnh
Trang 872.2.1 Tổ chức hệ thống tập tin trên Linux
/etc Cấu hình hệ thống cục bộ theo máy
/usr/bin Chứa hầu hết các lệnh người dùng
/dev Các tập tin thiết bị
/usr/man Chứa các tài liệu trực tuyến
/usr/include Chứa các tập tin include chuẩn của C
/var/log Các tập tin lưu giữ thông tin làm việc hiện hành của người
dùng /home Chứa các thư mục con là thư mục chủ của các user
/usr/lib Chứa các tập tin thư viện của các chương trình người dùng
• Khi truy cập vào hệ thống, thư mục làm việc của người dùng được xem như là thư mục chủ
• Ví dụ : Thư mục chủ của ngochan sẽ là /home/ngochan
• Nếu đường dẫn bắt đầu bằng dấu “/”, hệ thống xem đó như là một tên đường dẫn đầy đủ bắt đầu từ thư mục gốc.
Trang 882.2.2 Các lệnh liệt kê tập tin, di chuyển
mình thì phải chọn đúng tên lệnh Tên lệnh là bắtbuộc phải có khi gõ lệnh
các tham số có thể có hoặc không có, được viếttheo quy định mà ta sử dụng, nhằm cung cấp thôngtin về các đối tượng mà lệnh tác động tới