LPI Linux Essentials - oPhamThiDao/Devops GitHub Wiki
Linux và mã nguồn mở
1. Sự phát triển của Linux và các hệ điều hành phổ biến
- Giới thiệu về Linux:
Linux là tên gọi của một hệ điều hành máy tính và cũng là tên hạt nhân của hệ điều hành.
Phiên bản Linux đầu tiên do Linus Torvalds viết vào năm 1991, lúc ông vẫn còn là sinh viên của Đại học Helsinkin tại Phần Lan và rồi phiên bản Linux 1.0 ra đời vào năm 1994.
Một cách chính xác, thuật ngữ Linux
được sử dụng để chỉ Linux Kernel
và nó cũng là cái đầu tiền Linus tạo ra. Thực tế thì đó là tập hợp một số lượng lớn các phần mềm như máy chủ web, các ngôn ngữ lập trình, các hệ quản trị cơ sở dữ liệu, các môi trường desktop như GNOME và KDE và ứng dụng thích hợp cho công việc văn phòng như OpenOffice, LibreOffice.
- Mã nguồn mở:
Ý tưởng rằng Linux là mã nguồn mở có ý nghĩa rằng mã nguồn của hạt nhân và các chương trình là có sẵn miễn phí cho bất kỳ ai tải về, sửa đổi và phân phối lại.
Free Software Foundation (FSF) được tạo lên với ý tưởng này đã khiến cho Linux trở lên phổ biến ngay trong những ngày đầu.
Ví dụ về điều này: Unix, Window và Hệ điều hành lớn khác được phát triển nội bộ, mã nguồn và tài liệu rất kín đối với thế giới bên ngoài. Bạn không thể sửa đổi nó hoặc phân phối lại. Với Linux là mã nguồn mở, phát triển mở, mã nguồn có thể thay đổi và phân phối lại.
-
Phân phối:
-
Linux có một số bản phát hành Linux
flavors
- có các công cụ, ứng dựng khác nhau được biết đến như các bản phân phối.-
Linux Kernel: Một Linux Kernel là cốt lõi của mọi hệ điều hành Linux.
-
Core Unix Tools: Bộ công cụ GNU, X-Windows GUI, các công cụ khác để quản lý tài nguyên hệ thống và ổ đĩa quan trọng.
-
Phần mềm bổ sung (Supplemental Software): Các bản phân phối thông thường đã thêm vào phần mềm cho môi trường máy tính để bàn, công cụ năng suất.
-
Các tập lệnh khởi động (Startup Scripts): Các bản phân phối Linux truyền thống sử dụng các tập lệnh khởi động để bắt đầu các chức năng hệ điều hành chính. Điều này được chủ yếu thay thế bởi các dịch vụ hệ thống.
-
Trình cài đặt (Installers): Trình quản lý gói và tiện ích được sử dụng để cài đặt phần mềm.
-
-
Một vài bản phân phối Linux phổ biến:
- Centos
- Debian
- Fedora
- Gentoo
- OpenSuse
- Red Hat
- Slackware
- SUSE
- Ubuntu
- Arch
- Mint
-
Những hệ thống nhungs:
- Android
- Raspberry Pie
- Cable boxes
- smart TV’s
- smart phones
-
2. Các ứng dụng nguồn mở chính.
- Các ứng dụng Desktop:
- OpenOffice.org
- Libpre Office
- Audacity
- ImageMagick
- Blender
- Thunderbird
- Firefox
- GIMP
- X Windows GUI môi trường desktop: KDE, GNOME, LXDE, Unity, XFCE.
- Các ứng dụng server:
- Apache HTTPD - Phần mềm web được sử dụng phổ biến và rộng rãi nhất hiện nay.
- NGINX - Được web server sử dụng rộng rãi với tính năng cân bằng tải tích hợp.
- MySQL - Được database server mã nguồn mở sử dụng rộng rãi.
- NFS
- Samba
- Các cổng TCP chung:
Port Service các ứng dụng server 22 SSH OpenSSH 23 Telnet TelnetD 25 SMTP Postfix, Sendmail 53 DNS Bind 67 BOOTP, DHCP dnsmasq, dhcpd 80 HTTP Apache, NGINX 443 HTTPS Apache, NGINX - Các ứng dụng Mobile: ví dụ tuyệt vời là các ứng dụng chạy trên Android (nhúng Linux) chạy trên các trò chơi di động.
- Đây có thể là các ứng dụng thời tiết, thể dục, ...
- Các ứng dụng di động này thường được cài đặt và quản lý thông qua các cửa hàng.
- Các ngôn ngữ phát triển:
- Cathedral Model
- Đây là một phương pháp tổ chức phát triển
- Mỗi một lập trình viên được chỉ định một phần của dự án.
- Mã nguồn bị đóng trong quá trình phát triển và sau đó được phát hành công khai.
- Bazaar Mode
- Đây là hình thức phát triển ít tổ chức.
- Ý tưởng sử dụng nhiều nhà phát triền với sự cởi mở với hy vọng sẽ mang lại kết quả tốt hơn cho dự án.
- Đây là mot hình Linus Tovalds được sử dụng ngay khi bắt đầu bắt tay phát triền Linux Kernel.
- Các ngồn ngữ phổ biến:
- C
- Java
- Perl
- Python
- PHP
- Cathedral Model
- Các loại ngôn ngữ:
- Compiled Languages:
- Để biên dịch hoặc (chuyển đổi) một chương trình được viết từ mã nguồn sang mã máy được gọi là nhị phân (binary).
- Interpreted Languages:
- Được viết theo kiểu ngôn ngữ của con người.
- Mã Line-B-Line là một dòng tại 1 thời điểm và không phải từ ứng dụng được biên dịch hoàn chỉnh.
- Assembly Language:
- Mã cấp độ rất thấp như nhị phân (1 và 0)
- Compiled Languages:
- Công cụ quản lý package và kho lưu trữ:
- Sử dụng công tự visual và công cụ dòng lệnh.
- dpkg, apt-get, rpm, yum.
3. Các kỹ năng ICT và cách làm việc với Linux.
- Kỹ năng Desktop:
-
Mở chương trình - bạn có thể mở chương trình bằng các phương pháp/vị trí sau:
- Desktop Menus
- Desktop Icons
- Panels
- Context Menus
- Searching for Programs
- Terminals
-
Sử dụng dòng lệnh:
Một dòng lệnh Linux hay shell, đúng hơn nó là một chương trình giống như bất kì chương trình nào khác, đều phải khởi chạy theo một cách nào đó. Có ba phương thức thường được sử dụng cho việc này: Khởi động shell trong cửa sổ GUI được gọi là terminal -> Đăng nhập vào bảng điều khiển text-mode -> Đăng nhập vào máy tính từ xa bằng giao thức đăng nhập ở chế độ text-mode như telnet hoặc SSH. Shell mặc định trong hầu hết các bản phân phối Linux là Bourne-Again Shell (Bash) hoặc tên gọi cũ hơn là Bourne shell.
-
Các ngành sử dụng Linux: Điện toán đám mây và Ảo hóa (virtualization).
-
Finding Your Way on a Linux System
1. Các kiến thức cơ bản về dòng lệnh:
-
Shells:
-
Shell là một chương trình cung cấp giao diện giao tiếp giữa người dùng và hệ điều hành (OS). Shell chấp nhận các lệnh có thể đọc được từ người dùng và chuyển đổi chúng thành thứ mà Kernel có thể hiểu được. Hệ điều hành khởi động một shell cho mỗi người dùng khi người dùng đăng nhập hoặc mở cửa sổ terminal hoặc console.
-
Các loại Shell thông dụng:
Loại Mô tả sh Shell Bourne do Steven Bourne viết, đó là Shell nguyên thủy có mặt trên hầu hết các hệ thống Unix/Linux. Nó rất hữu dụng cho việc lập trình Shell nhưng nó không xử lý tương tác người dùng như các Shell khác. bash Bourne Again Shell - đây là phần mở rộng của sh, nó kế thừa những gì sh đã có và phá hủy những gì sh chưa có ... Nó có giao diện lập trình rất mạnh và linh hoạt ... Cùng với giao diện dễ dùng. Đây là shell được cài đặt mặc định trên các hệ thống Linux csh C Shell là một phần cải tiến của Unix, có tính năng kết hợp để sử dụng tương tác chẳng hạn như bí danh và lịch sử. Cú pháp và cách sử dụng nó rất giống với ngôn ngữ lập trình C zsh Z Shell - đây là shell được đánh giá mạnh nhất trong thời gian gần đây. Hỗ trợ rất nhiều những tính năng cực mạnh, nhưng việc cài đặt lại rất đơn giản. ksh Korn Shell là một superset của Bourne Shell, có các tính năng tương đương với tính năng trong C Shell nhưng nhanh hơn C Shell.
-
-
Chuyển đổi giữa các Shell:
Ctrl-Alt F1
Ctrl-Alt F6
- trở lại môi trường GUI bằngCtrl-Alt-F7
-
Cú pháp dòng lệnh:
ls -a
- hiển thị tất cả các tệp bao gồm cả tệp ẩn.ls -d
- sẽ chỉ liệt kê các thư mục.ls -l
- liệt kê dài các tệp và thư mục cùng với chuỗi quyền. chủ sở hữu, nhóm, kích thước thậm chí ngày tạo.la -R
- Hiển thị một nội dung thư mục recursively.- Hiển thị biến môi trường:
echo $PATH
- env - cũng hiển thị biến môi trường của hệ thống.
- Các lệnh cơ bản:
Lệnh chức năng halt Nó sẽ giúp bạn tắt hệ điều hành, nhưng điều quan trọng chỉ có root mới làm chạy được lệnh này reboot Nó cũng sẽ giúp tắt hệ điều hành tuy nhiên cũng sẽ re-starts lại OS và cũng chỉ OS mới chạy được init 0 Tắt OS chỉ root mới có thể làm điều này init 6 Tắt OS và sau đó khởi động lại và chỉ có root mới chạy được shutdown Có thể tắt máy hoặc khởi động lại tùy theo lựa chọn exit Điều này sẽ chấm dứt quá trình chạy hiện tại su người dùng thay thế hoặc super user. Bạn có thể chuyển đổi người dùng hiện tại sang một tài khoản khác echo lặp lại một dòng văn bản đến màn hình top Được dùng để hiển thị danh sách tất cả ứng dụng và tiến trình đang chạy trong hệ thống hiện tại which Hiển thị đường dẫn đầy đủ whoami Hiển thị username hiện tại đang đăng nhập netstat Hiển thị trạng thái của network và các đối tác hiện tại của nó route Được sử dụng để xem và thao tác bảng định tuyến hệ thống ifconfig Quản lý card mạng - hiển thị và sửa đổi cấu hình cài đặt NIC = chỉ có root mới chạy được lệnh này. ip addr Xem cài đặt NIC
-
Các file cấu hình của Shell:
- /etc/bashrc Non-Login Shell system-wide functions and aliases
- ~/.bashrc Non-Login Shell user-specific functions and alias
- /etc/profile Login Shell system-wide shell env config param
- ~/.bash_profile Login Shell user-specific shell preferences
- ~/.bash_login Login Shell user-specific shell preferences
- ~/.profile Login Shell user-specific shell preferences
- ~/.bash_logout Login Shell user-specific shell preferences