1. Trang chủ
  2. » Luận Văn - Báo Cáo

Lập trình nhân linux

61 76 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Lập Trình Nhân Linux
Tác giả Nhóm 8
Người hướng dẫn TS. Phạm Văn Hưởng
Trường học Học Viện Kỹ Thuật Mật Mã
Thể loại báo cáo
Năm xuất bản 2022
Thành phố Hà Nội
Định dạng
Số trang 61
Dung lượng 4,29 MB

Nội dung

Sự phát triển của phần mềm mã nguồn mở, nảy sinh một vấn đề là phải có những công cụ lập trình thích hợp trên nền tảng mã nguồn mở như các hệ điều hành linux, unix. Trước yêu cầu đó thì đã xuất hiện một công cụ lập trình rất hiệu quả là lập trình shell ,Linux kernel và module nhân. Linux kernel cũng giống như một thư viện giúp lập trình viên xây dựng các kernel module

Trang 1

BAN CƠ YẾU CHÍNH PHỦ

HỌC VIỆN KỸ THUẬT MẬT MÃ

BÁO CÁO BÀI TẬP LỚN LẬP TRÌNH NHÂN LINUX

Hà Nội,03-2022

Giảng viên hướng dẫn: TS

Sinh viên thực hiện:

Nhóm 8

Trang 2

LỜI MỞ ĐẦU

Hiện nay trong thời đại khoa học kỹ thuật phát triển, bên cạnh sự phát triển của cácphần mềm mã bản quyền, phần mềm mã nguồn đóng các phần mềm mã nguồn mởcũng có những bước phát triển mạnh mẽ Càng ngày càng có nhiều người tham gia vàothiết kế, lập trình mã nguồn mở Việc các phần mềm mã nguồn mở tung toàn bộchương trình của mình lên mạng làm cho phần mềm mã nguồn mở dễ dàng tiếp cậnhơn với mọi người, dễ dàng được phát triển hơn, được cả một cộng đồng đóng gópchung sức phát triển

Sự phát triển của phần mềm mã nguồn mở, nảy sinh một vấn đề là phải có nhữngcông cụ lập trình thích hợp trên nền tảng mã nguồn mở như các hệ điều hành linux,unix Trước yêu cầu đó thì đã xuất hiện một công cụ lập trình rất hiệu quả là lập trìnhshell ,Linux kernel và module nhân Linux kernel cũng giống như một thư viện giúplập trình viên xây dựng các kernel module Để tìm hiểu kỹ hơn về Linux Kernel vàngôn ngữ shell, nhóm em xin trình bày báo cáo về “Lập trình nhân Linux”

Nội dung báo cào gồm 2 phần:

 Phần 1: Giới thiệu chung

 Phần 2: Xây dựng chương trình

Trang 3

LỜI CẢM ƠN

Chúng em xin chân thành cảm ơn sự hướng dẫn của thầy Phạm Văn Hưởng,nhóm đã có thể hoàn thành tương đối tốt đề tài , đồng thời rút ra được các kinh nghiệmcho mình về nhiều mặt, thấy được những hạn chế và các lỗi cơ bản hay gặp trong quátrình làm bài tập lớn

Mặc dù đã cố gắng trong việc thực hiện đề tài, nhưng với những hạn chế về kiếnthức, kinh nghiệm cũng như thời gian biểu, sản phẩm của chúng em mới chỉ dừng lại ởmức tương đối ổn Bài tập lớn chắc chắn không thể tránh khỏi thiếu sót, nên chúng emrất mong nhận được đánh giá và góp ý của thầy/cô để chúng em có thể cải thiện kĩnăng của mình tốt hơn nữa trong tương lai

Chúng em xin chân thành cảm ơn!

Trang 4

MỤC LỤC

DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT i

DANH MỤC HÌNH VẼ ii

DANH MỤC BẢNG BIỂU iv

CHƯƠNG 1 GIỚI THIỆU CHUNG 1

1.1 Tổng quan về Linux 1

1.1.1 Linux là gì ? 1

1.1.2 Các phiên bản của hệ điều hành Linux 2

1.1.3 Ưu nhược điểm 2

1.1.4 Hiệu năng và ứng dụng 3

1.2 Tổng quan về lập trình Shell 4

1.2.1 Shell là gì? 4

1.2.2 Các loại Shell thông dụng 4

1.2.3 Chức năng của Shell 5

1.3 Tổng quan về Linux Kernel 5

1.3.1 Linux Kernel là gì? 5

1.3.2 Chức năng của Linux Kernel 6

1.4 Tổng quan về công cụ hỗ trợ 6

1.4.1 Phần mềm Visual Studio Code 6

1.4.2 Phần mềm Ubuntu 9

1.4.3 Makefile 11

CHƯƠNG 2 XÂY DỰNG CHƯƠNG TRÌNH 13

2.1 Lập trình Shell 13

2.1.1 Quản lý file 13

2.1.2 Lập lịch tác vụ 19

2.1.3 Thiết lập thời gian hệ thống 21

2.1.4 Cài đặt/gỡ bỏ chương trình tự động 23

2.2 Lập trình trong Ubuntu 24

2.2.1 Process 24

2.2.2 Quản lý file 26

2.2.3 Socket 30

2.2.4 Network 35

2.3 Xây dựng mô-đun nhân và tích hợp vào hệ thống 37

2.3.1 Chương trình 37

2.3.2 Đăng kí một device 39

2.3.3 Chương trình tương tác với driver 40

2.4 Build an Ubuntu IoT image 40

2.4.1 Tạo hình ảnh Linux với Buildroot 40

Trang 5

KẾT LUẬN 52 TÀI LIỆU THAM KHẢO 53

Trang 6

DANH MỤC KÍ HIỆU VÀ CHỮ VIẾT TẮT

IDE Integrated Development

EnvironmentGIT Graphical User Interface

DANH MỤC HÌNH V

Trang 7

Hình 1 1 Các phiên bản hệ điều hành Linux 2

Hình 1 2 Visual Studio Code 7

Hình 1 3 Ubutu 10

YHình 2 1 Code quản lý file

14 Hình 2 2 Kết quả thực thi chương trình Tạo mới file 14

Hình 2 3 Kết quả thực thi chương trình Tạo mới folder 15

Hình 2 4 Kết quả thực thi chương trình Xóa file 16

Hình 2 5 Kết quả thực thi chương trình Xóa folder 16

Hình 2 6 Kết quả thực thi chương trình tạo mới file hoặc folder 17

Hình 2 7 Kết quả thực thi chương trình Hiển thị danh sách file và thư mục 18

Hình 2 8 Kết quả thực thi chương trình Ddiefu hướng thư mục con hoặc cha 18 Hình 2 9 Kết quả thực thi chương trình Tạo mới tác vụ 20

Hình 2 10 Kết quả thực thi chương trình tạo List tác vụ 21

Hình 2 11 Kết quả thực thi chương trình Lập lịch tác vụ 21

Hình 2 12 Kết quả thực thi thiết lập thời gian hệ thống 21

Hình 2 13 Kết quả thực thi chương trình Thiết lập thời gian hệ thống 23

Hình 2 14 Kết quả thực thi Cài đặt chương trình tự động 23

Hình 2 15 Kết quả thực thi Gỡ bỏ chương trình tự động 24

Hình 2 16 Kết quả thực thi chương trình Xem process id của chương trình hiện tại 26

Hình 2 17 Kết quả thực thi chương trình lấy ra id process hiện tại 27

Hình 2 18 Kết quả thực thi lệnh liệt kê file 28

Hình 2 19 Kết quả thực thi chương trình Tạo file 29

Hình 2 20 Kết quả thực thi chương trình Xóa file 29

Hình 2 21 Kết quả thực thi hàm Đọc file 30

Hình 2 22 Kết quả thực thi chương trình Tcp 31

Hình 2 23 Kết quả thực thi chương trình Udp 32

Hình 2 24 Kết quả thực thi chương trình Raw 33

Hình 2 25 Kết quả thực thi chương trình Raw 34

Hình 2 26 Kết quả thực thi chương trình TCP6 35

Hình 2 27 Kết quả thực thi chương trình udp6 35

Hình 2 28 Kết quả thực thi chương trình raw6 36

Hình 2 29 Kết quả thực thi chương trình Network 38

Hình 2 30 Kết quả thực hiện lệnh đăng kí một device : 40

Trang 8

Hình 2 31 Kết quả thực thi chương trình xem id của device đã đăng kí 40

Hình 2 32 Kết quả thực thi chương trình Đăng ký 1 device 41

Hình 2 33 Kết quả thực thi chương trình tương tác với device 41

Hình 2 34 Cây thư mục Board 43

Hình 2 35 Kết quả định cấu hình hình ảnh tùy chỉnh 45

Hình 2 36 Make buildroot 46

Hình 2 37 Cài đặt môi trường khởi chạy máy ảo qemu 49

Hình 2 38 Chạy qemu 50

Hình 2 39 Kết quả thực thi ví dụ 51

Trang 9

DANH MỤC BẢNG BIỂU

Bảng 1 1 Bảng các loại Shell thông dụng 4

Trang 10

CHƯƠNG 1 GIỚI THIỆU CHUNG

1.1 Tổng quan về Linux

1.1.1 Linux là gì ?

Linux là một hệ điều hành máy tính được phát được phát triển dựa vào mô hình

“Phần mềm tự do” (free software) và việc phát triển phần mềm mã nguồn mở source software)

(open-Thành phần cơ bản của Linux là hạt nhân Linux (Linux kernel), là nhân hệ điềuhành được phát triển bởi Linus Torvalds và được công bố lần đầu tiên vào tháng 9 năm

1991 với phiên bản 0.01

Hầu hết các ngôn ngữ lập trình đều hỗ trợ Linux trực tiếp hoặc thông qua cácports bên thứ ba của cộng đồng Các công cụ phát triển ban đầu được sử dụng để xâydựng cả ứng dụng Linux và chương trình hệ điều hành được tìm thấy trong GNUtoolchain, bao gồm GNU Compiler Collection (GCC) và GNU Build System Trong số

đó, GCC cung cấp trình biên dịch cho Ada, C, C++, Go và Fortran Nhiều ngôn ngữlập trình có một bản triển khai tham khảo đa nền tảng hỗ trợ Linux, ví dụ như PHP,Perl, Ruby, Python, Java, Go, Rust và Haskell Phát hành lần đầu năm 2003, dự ánLLVM cung cấp một trình biên dịch mã nguồn mở đa nền tảng khác cho nhiều ngônngữ Trình biên dịch độc quyền cho Linux bao gồm Intel C++ Compiler, Sun Studio,

và IBM XL C/C++ Compiler BASIC dưới dạng Visual Basic được hỗ trợ dưới cáchình thức như Gambas, FreeBASIC, và XBasic, và BASIC nói chung nhưQuickBASIC hoặc Turbo BASIC dưới dạng QB64

Một tính năng phổ biến của các hệ thống tương tự Unix là bao gồm các ngôn ngữlập trình truyền thống có mục đích cụ thể như scripting, xử lý văn bản hay quản lý vàcấu hình hệ thống nói chung Các bản phân phối Linux hỗ trợ các shell script, awk, sed

và make Nhiều chương trình cũng có ngôn ngữ lập trình nhúng để hỗ trợ việc cấuhình hoặc dùng trong lập trình Ví dụ, biểu thức chính quy được hỗ trợ trong cácchương trình như grep và locate, MTA Sendmail truyền thống trên Unix chứa hệ thốngscripting Turing-đầy đủ của riêng nó, và trình soạn thảo văn bản nâng cao GNU Emacsđược xây dựng xung quanh trình một thông dịch Lisp thông dụng

Hầu hết các bản phân phối cũng bao gồm hỗ trợ cho PHP, Perl, Ruby, Python và cácngôn ngữ động khác Mặc dù không phổ biến bằng, nhưng đôi khi Linux cũng hỗ trợC# (thông qua Mono), Vala, và Scheme Guile Scheme đóng vai trò là một ngôn ngữscripting của các tiện ích hệ thống GNU, tìm cách làm cho các chương trình C nhỏ,tĩnh tuân theo quy tắc Unix có thể được mở rộng nhanh chóng và linh hoạt thông quamột hệ thống scripting với lập trình hàm Một số máy ảo Java và bộ công cụ phát triển

Trang 11

Java trên Linux, bao gồm JVM (HotSpot) nguyên thủy của Sun và Hệ thống J2SE REcủa IBM, cũng như nhiều dự án nguồn mở như Kaffe và JikeRVM.

GNOME và KDE là các môi trường desktop phổ biến và cung cấp mộtframework cho phát triển ứng dụng Những dự án này dựa trên các widget toolkitstương ưng là GTK và Qt, mặt khác chúng cũng có thể được sử dụng độc lập vớiframework lớn hơn mình Cả hai đều hỗ trợ nhiều ngôn ngữ Có một số môi trườngphát triển tích hợp có sẵn bao gồm Anjuta, Code::Blocks, CodeLite, Eclipse, Geany,ActiveState Komodo, KDevelop, Lazarus, MonoDevelop, NetBeans, và Qt Creator,trong khi các trình soạn thảo lâu đời như Vim, nano và Emacs vẫn còn phổ biến

1.1.2 Các phiên bản của hệ điều hành Linux

Linux hiện có khá nhiều các bản phân phối khác nhau như Fedora, Ubuntu,OpenSUSE là các phiên bản thương mại, trong khi Debian và Arch Linux là các phiênbản "hướng cộng đồng" Và tất cả đều có một đặc điểm chung là có một Linux kernelbên trong Linux thu hút các lập trình viên bởi tính linh hoạt, sức mạnh, tốc độ và phầnmềm quản lý package cho phép cài đặt phần mềm một cách dễ dàng

Hình 1 1 Các phiên bản hệ điều hành Linux

1.1.3 Ưu nhược điểm

 Ưu điểm

 Hoàn toàn miễn phí

Đây là ưu điểm nổi bật được người dùng ưa thích và chọn Linux Theo đó, bạnkhông cần tốn bất kỳ chi phí nào vẫn có thể toàn quyền sử dụng đầy đủ tínhnăng, kể cả các ứng dụng văn phòng như OpenOffice, LibreOffice

 Bảo mật cao

Trang 12

Với Linux, các mã độc, virus hay phần mềm độc hại đều bị ngăn chặn do tínhbảo mật của hệ điều hành này cực kỳ cao Nhờ thế, bạn có thể an tâm sử dụng.

 Có khả năng quản lý, điều phối nguồn tài nguyên của hệ thống

Giao diện hệ điều hành Linux đa dạng, có tính năng nâng cấp lên phiên bản mớiliên tục

 Khả năng linh hoạt tốt

Linux cho phép người dùng tùy ý điều chỉnh hệ điều hành theo mục đích sửdụng Điều này mang lại khá nhiều thuận tiện cho các lập trình viên và công typhát triển phần mềm

 Hoạt động “mượt” ngay cả với máy tính có cấu hình yếu

Các máy tính có cấu hình yếu hoàn toàn có thể vận hành ổn định, trơn tru khinâng cấp lên phiên bản mới của Linux Bởi hệ điều hành này tương đối gọnnhẹ, không tốn quá nhiều tài nguyên của máy tính

 Nhược điểm

Linux cũng như bất cứ hệ điều hành nào, nó cũng có một số mặt hạn chế nhất định:

 Số lượng ứng dụng chất lượng cao hỗ trợ trên Linux còn hạn chế

 Một số nhà sản xuất không phát triển driver hỗ trợ nền tảng Linux

 Khó làm quen, đặc biệt nếu bạn đã quá quen thuộc với Windows thì khi chuyểnsang Linux, bạn sẽ cần một khoảng thời gian để làm quen nó

1.1.4 Hiệu năng và ứng dụng

Hiệu năng của Linux trên desktop là một chủ đề gây tranh cãi, ví dụ vào năm

2007 Con Kolivas đã cáo buộc cộng đồng Linux tập trung hiệu năng trên các máy chủ.Ông đã từ bỏ việc phát triển nhân Linux vì thất vọng với sự thiếu tập trung vàodesktop, và sau đó trả lời phỏng vấn "nói tất cả" về chủ đề này Kể từ đó, một lượngphát triển đáng kể đã tập trung vào việc cải thiện trải nghiệm desktop Các dự án nhưsystemd và Upstart (đã dừng năm 2014) nhằm mục đích cho thời gian khởi độngnhanh hơn; các dự án Wayland và Mir nhằm mục đích thay thế X11 đồng thời tăngcường hiệu năng, bảo mật và giao diện của desktop

Nhiều ứng dụng phổ biến có sẵn cho nhiều hệ điều hành Ví dụ, MozillaFirefox, OpenOffice.org/LibreOffice và Blender có các phiên bản có thể tải xuống chotất cả các hệ điều hành chính Thêm vào đó, một số ứng dụng ban đầu được phát triểncho Linux, như Pidgin, và GIMP, đã được ported đến các hệ điều hành khác (bao gồmWindows và macOS) do mức độ phổ biến của chúng Ngoài ra, ngày càng nhiều ứngdụng desktop độc quyền cũng được hỗ trợ trên Linux, ví dụ như Autodesk Maya vàThe Foundry's Nuke trong lĩnh vực hoạt hình và hiệu ứng hình ảnh cao cấp Ngoài racòn có một số công ty đã ported các trò chơi của riêng họ hoặc của các công ty khác

Trang 13

sang Linux, với Linux cũng là một nền tảng được hỗ trợ trên cả hai dịch vụ phân phối

kỹ thuật số phổ biến Steam và Desura

Nhiều loại ứng dụng khác có sẵn cho Microsoft Windows và macOS cũng chạytrên Linux Thông thường, một ứng dụng tự do sẽ tồn tại với các chức năng của ứngdụng được tìm thấy trên một hệ điều hành khác hoặc ứng dụng đó sẽ có phiên bản hoạtđộng trên Linux, ví dụ như với Skype và một vài video games như Dota 2 vàTeamFortress 2 Ngoài ra, dự án Wine cung cấp một lớp tương thích Windows để chạy cácdứng dụng Windows chưa sửa đổi trên Linux Nó được tài trợ bởi các doanh nghiệpthương mại bao gồm CodeWeavers,nơi sản xuất một phiên bản thương mại của phầnmềm Từ 2009, Google cũng đã đóng góp tài chính cho dự án Wine, CrossOver, mộtgiải pháp độc quyền dựa trên dự án Wine nguồn mở, hỗ trợ chạy các phiên bảnWindows của Microsoft Office, các ứng dụng Intuit như là Quicken và QuickBooks,Adobe Photoshop CS2, và nhiều game phổ biến như World of Warcraft Trong cáctrường hợp khác, khi không có port Linux của một số phần mềm trong các lĩnh vựcnhư xuất bản trên desktop và âm thanh chuyên nghiệp, thì có phần mềm tương đương

có sẵn trên Cũng có thể chạy các ứng dụng được viết cho Android trên các phiên bảncủa Linux khác bằng Anbox

1.2 Tổng quan về lập trình Shell

1.2.1 Shell là gì?

Shell là chương trình giữa bạn và Linux (hay nói chính xác hơn là giữa bạn với nhânLinux) Mỗi lệnh bạn gõ ra sẽ được Shell diễn dịch rồi chuyển tới nhân Linux Nóimột cách dễ hiểu Shell là bộ diễn dịch ngôn ngữ lệnh, ngoài ra nó còn tận dụng triệt đểcác trình tiện ích và chương trình ứng dụng có trên hệ thống…

1.2.2 Các loại Shell thông dụng

Hiện nay có một số loại shell trong các hệ thống Unix, trong một số trường hợp trongmột hệ thống nào đó có thể có một hoặc nhiều shell cùng tồn tại Một số loại phổ biếnđang tồn tại như: Bourne shell, Korn shell, Cshell,Bash Mỗi loại có sự khác nhaunhưng tất cả đều cung cấp đầy đủ công cụ để thiết lập môi trường giao tiếp giữa người

sử dụng và Unix

Bảng 1 1 Bảng các loại Shell thông dụng

(non-root user)

Câu lệnh mặcđịnh (Root user)

Trang 14

Bourne Shell

(sh)

/bin/shand /sbin/sh

Ngoài ra còn có một số Shell khác như: ssh, nfssh, mcsh…

1.2.3 Chức năng của Shell

Việc thao tác với kernel cực kỳ phức tạp phải đòi hỏi có kỹ thuật cao, để giảm sự phứctạp cho người sử dụng và để bảo vệ kernel từ những sai sót của người sử dụng, shell đãđược xây dựng thành lớp bao quanh kernel Người dùng gửi yêu cầu tới shell, shell sẽbiên dịch lại và sau đó sẽ gửi lại đến kernel

Thông thường với UNIX có ba loại shell được sử dụng phổ biến, tất cả đều nhằm mụcđích cung cấp các chức năng sau

Torvalds đã tạo ra Linux kernel vào năm 1991 Ban đầu, ông đặt tên cho dự án làFreax (kết hợp giữa các từ “free”, “freak” và “UNIX”) Nhưng một đồng nghiệp khác

Trang 15

của Torvalds lại thích cái tên Linux (sau đó Linux trở thành tên gọi chính thức).Torvalds đã phát hành phiên bản Linux đầu tiên vào năm 1992 theo giấy phép copyleftGNU (giấy phép được tự do sao chép, chỉnh sửa, phân phối và không có tính độcquyền), trở thành một phần quan trọng trong thành công của dự án.

Phần lớn trải nghiệm desktop Linux đến từ dự án GNU, một sáng kiến cũ tạo ra hệđiều hành desktop gần như hoàn chỉnh Tất cả những gì nó cần là một kernel và Linux

đã đáp ứng nhu cầu đó Đây là lý do tại sao một số người gọi hệ điều hành này làGNU/Linux

Những desktop mã nguồn mở và miễn phí khác, như FreeBSD, trông giống với Linux

vì chúng chạy hầu hết các phần mềm GNU giống nhau

Do Linux kernel có sẵn theo giấy phép GNU, nên ít quan tâm đến việc tiếp tục pháttriển một kernel riêng biệt như một phần của dự án GNU Và thay vì tạo ra các kernelcạnh tranh khác, như trong Windows và macOS, nhiều công ty đã chọn sử dụng vàđóng góp cho Linux kernel

Linux kernel đã phát triển thành một dự án lớn chứa hàng triệu dòng code Hàng ngànngười và hơn một nghìn công ty đã đóng góp cho sự phát triển của kernel Đây là mộttrong những ví dụ nổi bật nhất về phần mềm mã nguồn mở và miễn phí trên thế giới

1.3.2 Chức năng của Linux Kernel

Trong khi Linux vẫn là một hệ điều hành desktop tương đối “kén” người dùng, thìkernel lại được sử dụng rộng rãi ở nhiều nơi Nhờ có Android, Linux kernel đã xuấthiện trên hầu hết các điện thoại thông minh, tất cả các loại thiết bị di động, bao gồmnhững thiết bị đeo trên người và camera

Linux là “linh hồn” của 500 siêu máy tính mạnh nhất và phần lớn cơ sở hạ tầngInternet Nói về đám mây có nghĩa là ta đang chủ yếu đề cập đến những máy chủ hỗtrợ Linux được kết nối với nhau

Raspberry Pi nhỏ bé là một máy tính hỗ trợ Linux, có kích thước chỉ bằng thẻ tín dụng,hoàn toàn mở để mọi người sửa đổi và sử dụng trong các dự án theo ý muốn

1.4 Tổng quan về công cụ hỗ trợ

1.4.1 Phần mềm Visual Studio Code

1.4.1.1 Giới thiệu phầm mềm Visual Studio Code

Visual studio là một phần mềm hỗ trợ đắc lực hỗ trợ công việc lập trình website Công

cụ này được tạo lên và thuộc quyền sở hữu của ông lớn công nghệ Microsoft Năm

1997, phần mềm lập trình nay có tên mã Project Boston Nhưng sau đó, Microsoft đãkết hợp các công cụ phát triển, đóng gói thành sản phẩm duy nhất

Trang 16

Hình 1 2 Visual Studio Code

Visual Studio là hệ thống tập hợp tất cả những gì liên quan tới phát triển ứng dụng,bao gồm trình chỉnh sửa mã, trình thiết kế, gỡ lỗi Tức là, bạn có thể viết code, sửa lỗi,chỉnh sửa thiết kế ứng dụng dễ dàng chỉ với 1 phần mềm Visual Studio mà thôi Không dừng lại ở đó, người dùng còn có thể thiết kế giao diện, trải nghiệm trongVisual Studio như khi phát triển ứng dụng Xamarin, UWP bằng XAML hay Blendvậy

1.4.1.2 Tính năng Visual Studio Code

Tính đến nay, Visual Studio vẫn được coi là phần mềm lập trình hệ thống hàng đầu,chưa có phần mềm nào có thể thay thế được nó Được đánh giá cao như vậy bởi VisualStudio sở hữu nhiều tính năng cực kỳ hấp dẫn Cụ thể:

 Đa nền tảng

Phần mềm lập trình Visual Studio của Microsoft hỗ trợ sử dụng trên nhiều nềntảng khác nhau Không giống như các trình viết code khác, Visual Studio sửdụng được trên cả Windows, Linux và Mac Systems Điều này cực kỳ tiện lợicho lập trình viên trong quá trình ứng dụng

 Đa ngôn ngữ lập trình

Không chỉ hỗ trợ đa nền tảng, Visual Studio cũng cho phép sử dụng nhiều ngônngữ lập trình khác nhau từ C#, F#, C/C++, HTML, CSS, Visual Basic,JavaScript,… Bởi vậy, Visual Studio có thể dễ dàng phát hiện và thông báo chobạn khi các chương trình có lỗi

Trang 17

 Hỗ trợ website

Visual Studio code cũng hỗ trợ website, đặc biệt trong công việc soạn thảo

và thiết kế web

 Kho tiện ích mở rộng phong phú

Mặc dù Visual Studio có hệ thống các ngôn ngữ hỗ trợ lập trình khá đa dạng.Nhưng nếu lập trình viên muốn sử dụng một ngôn ngữ khác, bạn có thể dễ dàngtải xuống các tiện ích mở rộng Tính năng hấp dẫn này được hoạt động như mộtphần chương trình độc lập nên không lo làm giảm hiệu năng của phần mềm

 Lưu trữ phân cấp

Phần lớn các tệp dữ liệu đoạn mã của Visual Studio đều được đặt trong các thưmục tương tự nhau Đồng thời, Visual Studio cũng cung cấp một số thư một chocác tệp đặc biệt để bạn lưu trữ an toàn, dễ tìm, dễ sử dụng hơn

 Kho lưu trữ an toàn

Với Visual Studio, bạn có thể hoàn toàn yên tâm về tính lưu trữ, bởi phần mềm

đã được kết nối GIT và một số kho lưu trữ an toàn được sử dụng phổ biến hiệnnay

 Hỗ trợ thiết bị đầu cuối

Phần mềm Visual Studio cũng tích hợp các loại thiết bị đầu cuối, giúp ngườidùng không cần chuyển đổi giữa hai màn hình hay trở về thư mục gốc khi thựchiện một thao tác cần thiết nào đó

Trang 18

vẫn được đánh giá cao về tính chuyên nghiệp Đặc biệt, tính năng này còn cóthể phát hiện tất cả các đoạn mã không đầy đủ, nhắc lập trình viên, gợi ý sửađổi, khai báo biến tự động trong trường hợp lập trình viên quên, giúp bổ sung

cú pháp còn thiếu,…

 Tính năng comment

Một tính năng cũng khá hay ho, hỗ trợ cho người lập trình trong trường hợp

“nhớ nhớ quên quên” đó là tính năng bình luận Tính năng này cho phép lậptrình viên để lại nhận xét, giúp dễ dàng ghi nhớ công việc cần hoàn thành,không bỏ sót công đoạn nào

1.4.1.3 Ưu nhược điểm

Được đánh giá là một trong những công cụ lập trình có 1 – 0 – 2, Visual Studio là mộtlựa chọn tuyệt vời dành cho các lập trình viên Đặc biệt là khi công cụ này còn sở hữunhững ưu điểm vượt trội hơn hẳn bất kỳ IDE nào khác như:

 Ít dung lượng

 Tính năng phong phú, đa dạng và mạnh mẽ

 Hỗ trợ nhiều nền tảng khác nhau (Linux, Windows, Mac)

 Hỗ trợ đa ngôn ngữ (HTML, CSS, C#, F#, C/C++, JSON, JavaScript,…)

 Tính năng Intellisense chuyên nghiệp

 Giao diện thân thiện dễ sử dụng

Cập nhật đa dạng phiên bản cho nhiều đối tượng sử dụng khác nhau,…

Tuy nhiên Visual Studio sẽ không phù hợp với những lập trình viên PHP bởi đây làmột ngôn ngữ mã nguồn mở, để có thể lập trình website hoặc web app bằng PHP tốtnhất thì bạn nên tham khảo các IDE dành riêng cho ngôn ngữ PHP tại http://free-php-editor.com/

Cho đến nay, nhà phát triển Microsoft vẫn đang không ngừng cải tiến và ứng dụng cáccông nghệ mới cho Visual Studio Bởi vậy, đây là “cánh tay đắc lực” hỗ trợ cho cácdevelopers, data administrators, testers và bất kỳ ai có nhu cầu tiếp cận, tìm hiểu về lậptrình đều có thể sử dụng Visual Studio

1.4.2 Phần mềm Ubuntu

1.4.2.1 Ubuntu là gì?

Ubuntu là một hệ điều hành trên máy tính, và nó được phát triển dựa trênLinux/Debian GNU Lần đầu được giới thiệu vào năm 2004, tính đến năm 2007,Ubuntu đây là phiên bản chiếm 30% số bản tùy biến của Linux được cài đặt trên máytính, và cũng là bản tuỳ biến Linux phổ biến nhất Công ty Canonical đã và đang chịu

Trang 19

trách nhiệm trong việc tài trợ Ubuntu, giúp cho hệ điều hành này có thể phát triểntrong tương lai.

Hình 1 3 Ubutu

Có ba loại phiên bản Ubuntu mà người dùng cần biết đến, bao gồm Ubuntuphiên bản thông thường, phiên bản hỗ trợ lâu dài (LTS) và các dự án khác Thôngthường, bạn nên sử dụng phiên bản hỗ trợ lâu dài để nhận được hỗ trợ trong vòng 3năm đối với máy tính để bàn và 5 năm đối với máy chủ

1.4.2.2 Một số tính năng chính của Ubuntu

 Thừa hưởng tính năng nổi bật của Linux: Vì đây là phiên bản hệ điều hànhphát triển dựa trên Linux, vậy nên sẽ thừa hưởng được các tính năng đặc biệtcủa Linux Chẳng hạn như khả năng tùy biến hiệu suất làm việc, tốc độ, cũngnhư khả năng bảo mật trước sự tấn công của malware hay virus

 Hỗ trợ người dùng trong việc cài đặt: Để kiểm tra sự tương thích của các phiênbản với máy tính, bạn có thể sử dụng đĩa chạy trực tiếp phiên bản đó của hệđiều hành, từ đó người dùng sẽ quyết định xem có thể cài đặt trên thiết bị của

họ hay không thông qua phần mềm Ubiquity

 Ngoài ra, người dùng sử dụng Windows có thể phân vùng lại đĩa cứng để càiđặt Ubuntu, và bạn cũng có thể gỡ bỏ nó khá dễ dàng.ngay cả khi đang sử dụngWindows

 Giao diện: Ubuntu hiện đang sử dụng giao diện đồ hoạ Unity, và giao diện nàyđược thiết kế ra với mục đích tối ưu diện tích màn hình sử dụng, đồng thờicũng mang lại trải nghiệm dùng thân thiện

Trang 20

 Ứng dụng: Hệ điều hành Ubuntu đã được cài sẵn các phần mềm mã nguồn mở,chẳng hạn như trình duyệt Internet Firefox, bộ ứng dụng văn phòng đến từLibreOffice (phiên bản Ubuntu 10.04 trở đi) hay trình tải file torrentTranmission Ngoài ra, hệ điều hành này cũng có một kho các ứng dụng miễnphí có tên là Ubuntu Software Center.

1.4.2.3 Ưu điểm của Ubuntu

Ưu điểm của hệ điều hành Ubuntu

 Không yêu cầu cấu hình mạnh: Thông thường, quá trình cài đặt Ubuntu trênmáy tính sẽ giao động từ 20 - 30 phút, tuỳ theo cấu hình của máy, và bạn chỉcần có thiết bị có dung lượng RAM từ 256MB trở lên Và cấu hình khuyêndùng thì chỉ cần RAM trên 384MB, và CPU là 700 MHz (x86)

 Có nhiều ứng dụng miễn phí: Bạn không cần tốn quá nhiều chi phí cho các ứngdụng, và chúng đều có mặt trên Ubuntu Software Center Chẳng hạn như bộứng dụng văn phòng LibreOffice miễn phí cũng đã được cài sẵn trên hệ điềuhành Ubuntu

 Khả năng tương tác sâu: Mặc dù đôi khi phải sử dụng các câu lệnh để tương tácvới thiết bị, nhưng nhờ vậy mà người dùng có thể điều khiển phần mềm mộtcách sâu hơn, từ đó hiệu quả công việc sẽ tốt hơn, nhất là khi so sánh với cácgiao diện đồ họa Đồng thời, đây là hệ điều hành mã nguồn mở, thế nên Ubuntu

có độ tùy biến cao

 Có tính bảo mật cao: Bạn không cần lo lắng quá nhiều về việc có cần cài đặtcác phần mềm diệt virus như trên Windows bởi vì số lượng malware hay viruskhá ít trên hệ điều hành Ubuntu

1.4.3 Makefile

1.4.3.1 Makefile là gì?

Makefile là một file dạng script chứa các thông tin:

 Cấu trúc project (file, sự phụ thuộc)

Trang 21

1.4.3.3 Nguyên lý biên dịch lại của Makefile

Việc compile lại project dựa vào hai yếu tố:

 Thời gian chỉnh sửa (date modified)

 Cây phụ thuộc trong Makefile

Có nghĩa là một khi Dependency thay đổi thì Target tương ứng cũng phải đượccompile lại

Trang 22

CHƯƠNG 2 XÂY DỰNG CHƯƠNG TRÌNH

2.1 Lập trình Shell

Lập trình shell để quản lý file, lập lịch tác vụ, thiết lập thời gian hệ thống, cài đặt/gỡ

bỏ các chương trình tự động

2.1.1 Quản lý file

2.1.1.1 Khái quát chức năng

Chương trình shell quản lý file bao gồm các chức năng sau:

 Tạo mới file , thư mục

 Chỉnh sửa thư mục và file

echo "help hiển thị danh sách lệnh"

echo "creatfile tạo một file mới"

echo "creatfolder tạo một folder mới"

echo "deletefile xóa một file"

echo "deletefolder xóa một folder"

echo "copy để copy"

echo "listfile để xem danh sách file"

echo "cdfile để dieu huong file"

Trang 23

Hình 2 1 Code quản lý file

2.1.1.3 Tạo mới file

Chương trình nhận vào tên file sau đó thực hiện tạo mới file thông qua lệnhtouch và thông báo tạo file thành công

echo "Tao file $name thanh cong"

Khi nhập lệnh creatfile sẽ thực hiện tạo file mới qua lệnh touch và hiển thị “Taofile $name thanh cong” với $name là tên file Còn khi ta creatfile nhưng không có tênfile sẽ hiển thị “Chua nhap ten file” Hay khi nhập một tên file đã có thì hiển thị “File

da ton tai” Như kết quả hình 2.2 dưới đây

Hình 2 2 Kết quả thực thi chương trình Tạo mới file

Trang 24

2.1.1.4 Tạo mới folder

Chương trình nhận vào tên thư mục sau đó thực hiện tạo mới thư mục thông qua lệnhmkdir và thông báo tạo thư mục thành công

echo "Tao thu muc $name thanh cong"

Hình 2 3 Kết quả thực thi chương trình Tạo mới folder

Trang 25

Hình 2 4 Kết quả thực thi chương trình Xóa file

echo "Xoa thu muc $name thanh cong"

Hình 2 5 Kết quả thực thi chương trình Xóa folder

2.1.1.7 Copy file hoặc folder

Chương trình nhận tên file/thư mục nguồn và nhận tên file/thư mục đích sau đó thựchiện lệnh cp để copy và thông báo copy thành công

Trang 26

echo "Copy file $name1 sang $name2 thanh cong"

Hình 2 6 Kết quả thực thi chương trình tạo mới file hoặc folder

2.1.1.8 Hiển thị danh sách file và thư mục

Chương trình nhận tên thư mục cần liệt kê danh sách hoặc sẽ liệt kê danh sách file ởthư mục hiện tại nếu không nhập tên thư mục

Trang 27

ls -l

else

ls -l $name

Hình 2 7 Kết quả thực thi chương trình Hiển thị danh sách file và thư mục

2.1.1.9 Điều hướng thư mục con hoặc cha

Chương trình nhận vào tên thư mục con muốn điều hướng đến hoặc sẽ điều hướng đếnthư mục cha nếu không nhập vào tên thư mục sau đó in ra đường dẫn đến thư mục

Trang 28

2.1.2 Lập lịch tác vụ

2.1.2.1 Khái quát chức năng

Chương trình lâp lịch tác vụ bao gồm các chức năng sau:

 Hiển thị list tác vụ

 Tạo mới tác vụ

 Xóa tác vụ

2.1.2.2 Chương trình

File task.sh thực hiện in 1 dòng chữ và viết vào file log.txt:

echo "crontab is running" >> / home/pink0508/Desktop/BTL_linux/bai1/log.txt

echo "Thiet lap thoi gian lap lich."

echo "Nhap phut"

read min

echo "Nhap gio"

read hour

echo "Nhap ngay tac vu chay hang thang (* cho tat ca cac ngay)."

echo "Neu muon chon ngay rieng le, hay nhap cac ngay ban muon, phan cachboi dau \",\""

read day

echo "Nhap thang tac vu chay (* cho tat ca cac thang)."

echo "Neu muon chon thang rieng le, hay nhap cac thang ban muon, phan cachboi dau \",\""

read month

echo "Nhap ngay tac vu chay trong tuan (* cho tat ca cac ngay)"

echo "Neu chon cac ngay rieng le, hay nhap cac ngay ban muon, phan cach boidau \",\""

echo "Chu Nhat la 0"

read dow

echo "Xac nhan thuc hien thao tac (Y/N)?"

Trang 29

else echo "Cancel\n"

Hình 2 9 Kết quả thực thi chương trình Tạo mới tác vụ

Trang 30

2.1.2.6 Kết quả thực thi chương trình

Hình 2 11 Kết quả thực thi chương trình Lập lịch tác vụ

2.1.3 Thiết lập thời gian hệ thống

Chương trình thiết lập thời gian hệ thống gồm:

 Thiết lập thời gian

 Thiết lập ngày-tháng- năm

 Hiển thị thời gian hiện tại

 Xem thời gian

Với lệnh “infor” sẽ trả về kết quả như hình dưới đây

Hình 2 12 Kết quả thực thi thiết lập thời gian hệ thống

Chương trình nhận lệnh “hour” và nhận vào tham số thời gian về giờ với định dạng

“hh:mm:ss” và cài đặt thời gian tạm thời sau đó in ra thời gian ra màn hình

Ngày đăng: 16/03/2024, 01:09

w