Linux

Ngày 2: Kiến thức cơ bản về Linux

Giới thiệu:

Chúng ta đã kết thúc ngày thứ nhất sau khi tìm hiểu về ngôn ngữ lập trình Go. Và hôm nay chúng ta sẽ tiếp tục tìm hiểu những kiến thức cơ bản về Linux.

Bức tranh lớn: DevOps và Linux

Linux và DevOps có văn hóa và nhiều quan điểm rất giống nhau; cả hai đều tập trung vào khả năng tùy biến và khả năng mở rộng. Cả hai khía cạnh này của Linux đều có tầm quan trọng đặc biệt đối với DevOps.

Rất nhiều công nghệ bắt đầu với Linux, đặc biệt nếu chúng liên quan đến phát triển phần mềm hoặc quản lý cơ sở hạ tầng.

Cũng như rất nhiều dự án mã nguồn mở, đặc biệt là các công cụ DevOps, được thiết kế để chạy trên Linux ngay từ đầu.

Từ góc độ DevOps hoặc bất kỳ góc độ nào từ việc vận hành, bạn sẽ tiếp xúc với Linux nếu không muốn nói là chủ yếu. Có một nơi dành cho WinOps nhưng phần lớn thời gian bạn sẽ quản lý và triển khai các máy chủ Linux.

Tôi đã sử dụng Linux hàng ngày trong vài năm nhưng máy tính để bàn của tôi luôn là macOS hoặc Windows. Tuy nhiên, khi tôi bắt đầu làm việc dưới role Cloud Native hiện tại, tôi đã cố gắng đảm bảo máy tính xách tay của tôi hoàn toàn chạy trên Linux, và mặc dù tôi vẫn cần Windows cho các ứng dụng trong công việc và rất nhiều thiết bị âm thanh và video gear của tôi không chạy trên Linux, tôi đã buộc mình phải dùng một máy tính chạy trên Linux để hiểu rõ hơn về những thứ mà chúng ta sẽ tiếp xúc trong ngày thứ 2 này.

Xem thêm: Linux cho người mới bắt đầu

Bắt đầu

Tôi không khuyến nghị bạn làm giống như tôi vì có nhiều tùy chọn dễ dàng hơn nhưng tôi sẽ nói rằng việc thực hiện điều đó buộc bạn phải học nhanh hơn cách làm cho mọi thứ hoạt động trên Linux.

Trong phần lớn thời gian bài viết này tôi sẽ triển khai máy ảo (Virtual Machine) sử dụng Virtual Box trên máy Windows của mình. Tôi cũng sẽ triển khai một bản phân phối Linux (Linux distro), trong khi phần lớn các máy chủ Linux mà bạn sẽ quản lý có thể sẽ là các máy chủ không có GUI và mọi thứ đều dựa trên shell. Tuy nhiên, như tôi đã nói ở phần đầu, rất nhiều các công cụ mà chúng ta đã đề cập trong suốt 90 ngày bắt đầu chạy trên Linux. Do đó, tôi cũng khuyến khích bạn tham gia vào việc sử dụng Linux với máy tính của bạn để có cùng một trải nghiệm học tập với tôi.

Xem thêm: Điện toán đám mây

Đối với phần còn lại của bài này, chúng ta sẽ tập trung vào việc thiết lập và chạy một máy ảo Ubuntu Desktop trong Virtual Box. Đầu tiên, hãy tải xuống Virtual Box và download Ubuntu ISO bản mới nhất và tiếp tục hoàn thiện môi trường của của chúng ta. Nó không được coi là DevOps đúng không?

Một lý do tốt khác để sử dụng hầu hết các bản phân phối Linux là chúng miễn phí và là phần mềm mã nguồn mở. Chúng ta cũng đang chọn Ubuntu vì nó có lẽ là bản phân phối được sử dụng rộng rãi nhất được triển khai bỏ qua các thiết bị di động và máy chủ RedHat Enterprise dành cho doanh nghiệp. Tôi có thể sai nhưng với CentOS, tôi nghĩ rằng Ubuntu có một vị trí cao trong danh sách và nó cực kỳ đơn giản.

Xem thêm: Tạo Linux/Ubuntu bằng VMWare

Giới thiệu HashiCorp Vagrant

Vagrant là một tiện ích CLI quản lý vòng đời của các máy ảo của bạn. Chúng ta có thể sử dụng vagrant để khởi động và tắt các máy ảo trên nhiều nền tảng khác nhau bao gồm vSphere, Hyper-v, Virtual Box và cả Docker. Sẽ có nhiều các nhà cung cấp khác nhưng chúng ta sẽ tiếp tục với Virtual Box.

Điều đầu tiên chúng ta cần làm là cài đặt Vagrant trên máy của bạn, khi truy cập trang tải xuống, bạn sẽ thấy tất cả các hệ điều hành được liệt kê để bạn lựa chọn tại trang download của HashiCorp Vagrant. Tôi đang sử dụng Windows nên đã download tệp nhị phân cho hệ thống của mình và cài đặt tệp này lên hệ thống của mình.

Tiếp theo, chúng ta cũng cần cài đặt Virtual Box. Một lần nữa, phần mềm này cũng có thể được cài đặt trên nhiều hệ điều hành khác nhau và một lý do chính đáng để chọn 2 công nghệ này là vì chúng ta có thể sử dụng trên hầu hết tất cả các hệ điều hành.

Cả hai đều khá dễ đề cài đặt và đều có những cộng đồng tuyệt vời xung quanh chúng, vì vậy hãy liên hệ nếu bạn gặp vấn đề.

VAGRANTFILE đầu tiên

VAGRANTFILE mô tả loại máy chúng ta muốn triển khai. Nó cũng định nghĩa cấu hình và khởi tạo máy này.

Khi nói đến việc lưu các tệp này và sắp xếp các VAGRANTFILE của bạn, tôi có xu hướng đặt chúng vào các thư mục của chúng trong không gian làm việc của mình. Bạn có thể thấy bên dưới giao diện này trên hệ thống của tôi. Hy vọng rằng bạn cũng sẽ thử sử dụng Vagrant và thấy sự dễ dàng khi muốn thay đổi hệ thống, rồi cuối cùng bạn sẽ nghiện vọc vạch các bản distro khác nhau của Linux cho Máy tính để bàn Linux.

Hãy cùng nhìn lại VAGRANTFILE đó và xem những gì chúng ta đang xây dựng.

Vagrant.configure("2") do |config|
    config.vm.box = "chenhan/ubuntu-desktop-20.04"
        config.vm.provider :virtualbox do |v|
        v.memory  = 8096
        v.cpus    = 4
        v.customize ["modifyvm", :id, "--vram", "128"]
    end
end

Đây là một VAGRANTFILE đơn giản. Chúng ta muốn nói rằng chúng ta muốn có một box cụ thể, một box có thể là hình ảnh công khai hoặc bản dựng riêng của hệ thống mà bạn đang tìm kiếm. Bạn có thể tìm thấy một danh sách dài các box công khai có sẵn tại đây trong danh mục công khai của Vagrant box

Dòng tiếp theo, chúng ta nói rằng chúng ta muốn sử dụng một nhà cung cấp cụ thể và trong trường hợp này là VirtualBox. Chúng ta cũng muốn bộ nhớ của máy là 8GB và số lượng CPU là 4. Theo kinh nghiệm của tôi, bạn có thể sẽ phải thêm dòng sau nếu bạn gặp sự cố hiển thị. Tôi sẽ tăng bộ nhớ này lên đến 128MB nhưng nó hoàn toàn phụ thuộc vào cấu hình hệ thống của bạn.

v.customize ["modifyvm", :id, "--vram", ""]

Tôi cũng đã đặt một bản sao của tệp vagrant cụ thể này trong thư mục Linux

Tạo Linux Desktop

Bây giờ chúng ta đã sẵn sàng để khởi động và chạy máy tính của mình trong terminal của máy trạm. Tôi đang sử dụng PowerShell trên máy Windows của mình. Điều hướng đến thư mục dự án và là nơi ta đặt VAGRANTFILE. Bạn có thể nhập lệnh vagrant up và nếu mọi thứ diễn ra bình thường, bạn sẽ thấy một cái gì đó như thế này.

Một điều nữa cần bổ sung ở đây là network sẽ được đặt thành NAT trên máy ảo của bạn. Ở giai đoạn này, chúng ta không cần biết về NAT và tôi dự định sẽ nói về nó sâu hơn khi trong phần Network. Hãy coi rằng đây là cài đặt đơn giản để đưa máy ảo vào mạng của bạn, đây cũng là chế độ kết nối mạng mặc định trên Virtual Box. Bạn có thể tìm hiểu thêm trong Virtual Box documentation
Sau khi hoàn tất quá trình vagrant up, chúng ta có thể sử dụng vagrant ssh để truy cập vào terminal của máy ảo mới của mình.

Đây là nơi chúng ta sẽ khám phá trong vài ngày tới. Tôi cũng muốn đi sâu vào một số tùy biến cho máy trạm dành cho nhà phát triển của bạn mà tôi cũng đã làm và nó giúp cuộc sống của bạn đơn giản hơn nhiều khi sử dụng nó hàng ngày và tất nhiên, bạn có thực sự thích DevOps khi bạn sử dụng một terminal tiêu chuẩn và không cool ngầu?

Để xác nhận trong Virtual Box, bạn sẽ thấy lời nhắc đăng nhập khi bạn chọn máy ảo của mình.

Nếu bạn đã đi được đến đây và đang tự hỏi “TÊN NGƯỜI DÙNG & MẬT KHẨU LÀ GÌ?”

  • Username = vagrant
  • Password = vagrant

Các lệnh Linux cho DevOps

Tôi cũng đã đề cập rằng với VM được tạo của chúng ta, chúng ta có thể sử dụng vagrant ssh và có quyền truy cập vào “box” mà chúng ta đã tạo. Bạn cần phải ở trong cùng thư mục mà chúng ta đã tạo vagrant box từ đó.

Đối với SSH, bạn sẽ không cần tên người dùng và mật khẩu, bạn sẽ chỉ cần điều đó nếu bạn quyết định đăng nhập vào Virtual Box console.

Chúng ta muốn có được kết quả như sau:

Câu lệnh

Tôi không thể trình bày tất cả các lệnh trong bài viết này, có nhiều trang và tài liệu đề cập đến những điều này nhưng nếu bạn đang ở terminal của mình và muốn tìm hiểu các tùy chọn cho một lệnh cụ thể, chúng ta có trang man viết tắt cho manual (hướng dẫn sử dụng). Sử dụng câu lệnh này để xem qua từng lệnh mà chúng ta đề cập trong bài này để biết thêm các tùy chọn cho từng lệnh. Chúng ta có thể chạy man man để được trợ giúp cho các chính cách trang hướng dẫn. Nhập để thoát khỏi các trang đó.

sudo nếu bạn đã quen thuộc với Windows và nhấp chuột phải, chọn Run as administrator, chúng ta có thể coi sudo tương tự với hành động đó. Khi bạn chạy một lệnh với lệnh này, bạn sẽ chạy nó dưới quyền root, nó sẽ yêu cầu mật khẩu trước khi chạy lệnh.

Đối với một công việc thực hiện một lần như cài đặt ứng dụng hoặc dịch vụ, bạn có thể cần lệnh sudo đó nhưng nếu bạn có một số nhiệm vụ cần giải quyết và bạn muốn được thực hiện dưới quyền sudo một lúc? Đây là nơi bạn có thể sử dụng sudo su, giống như sudo, bạn sẽ được yêu cầu nhập mật khẩu root của mình. Trong một máy ảo thử nghiệm như của chúng ta, điều này có thể chấp nhật được nhưng tôi thấy không ổn nếu chúng ta ở dưới quyền root quá lâu, những điều tồi tệ có thể xảy ra. Để thoát khỏi quyền này, bạn chỉ cần gõ vào exit

Tôi thấy mình luôn sử dụng lệnh clear, lệnh clear thực hiện chính xác những gì nó nói, nó sẽ xóa màn hình của tất cả các lệnh trước đó, đưa dấu nhắc lệnh của bạn lên đầu và trả lại cho bạn một không gian làm việc sạch. Với Windows, tôi nghĩ là cls trong .mdprompt.

Bây giờ chúng ta hãy xem xét một số lệnh giúp chúng ta có thể tạo một thứ trong hệ thống của mình và có thể quan sát được chúng trong terminal. Trước hết, chúng ta có mkdir cho phép chúng ta tạo một thư mục trong hệ thống của mình. Có thể tạo một thư mục trong thư mục chính có tên Day15 mkdir Day15

Với cd, chúng ta có thể thay đổi thư mục. Để di chuyển vào thư mục mới tạo của mình, chúng ta có thể thực hiện việc này với lệnh cd Day15 cũng có thể sử dụng tab để tự động hoàn thành câu lệnh với thư mục có sẵn. Chúng ta có thể quay lại vị trí lúc mới bắt đầu bằng câu lệnh cd. .

Chắc hẳn chúng ta ai cũng đã từng đi vào rất sâu trong hệ thống tệp của mình đến một thư mục mà không biết chúng ta đang ở đâu. pwd cung cấp cho chúng ta địa chỉ của thư mục làm việc, pwd có vẻ như là viết tắt của mật khẩu (password) nhưng nó là viết tắt của print working directory (in ra thư mục làm việc).

Chúng ta đã biết cách tạo thư mục nhưng làm thế nào để có thể tạo một tệp? Chúng ta có thể tạo tệp bằng cách sử dụng lệnh touch. Nếu chúng ta dùng lệnh touch Day15, thao tác này sẽ tạo một tệp có tên là Day15. Bỏ qua mkdir, chúng ta sẽ gặp lại điều này sau.

ls Tôi có thể chuyển nhà vào đây, bạn sẽ sử dụng lệnh này rất nhiều. Câu lệnh này sẽ liệt kê tất cả các tệp trong thư mục hiện tại. Hãy xem liệu chúng ta có thể thấy tệp mà chúng ta vừa tạo không.

Làm cách nào chúng ta có thể tìm tệp trong Linux? locate sẽ cho phép chúng ta tìm kiếm hệ thống tệp của mình. Nếu chúng ta sử dụng locate Day15, nó sẽ báo lại vị trí của tệp. Nếu bạn biết rằng tệp tồn tại nhưng bạn nhận được kết quả tìm kiếm rỗng thì hãy chạy lệnh sudo updatedb để lập chỉ mục tất cả các tệp trong hệ thống tệp, sau đó chạy lại lệnh locate. Nếu bạn không có sẵn gói lệnh locate, bạn có thể cài đặt nó bằng lệnh sau sudo apt install mlocate

Còn việc di chuyển tệp từ vị trí này sang vị trí khác thì sao? Lệnh mv sẽ cho phép bạn di chuyển các tệp của mình. Ví dụ mv Day15 90DaysOfDevOps sẽ di chuyển tệp của bạn vào thư mục 90DaysOfDevOps.

Chúng ta đã di chuyển tệp của mình nhưng nếu muốn đổi tên tệp thì sao? Chúng ta có thể làm điều đó bằng lệnh mv một lần nữa… Gì cơ!!!? đúng vậy, chúng ta chỉ cần sử dụng mv Day15 day15 hoặc chúng ta có thể sử dụng mv day15 AnotherDay để đổi tên tệp, hãy sử dụng ls để kiểm tra lại.

Đủ rồi, bây giờ hãy loại bỏ (xóa) tệp và thậm chí có thể là thư mục mà chúng ta đã tạo. Hãy dùng lệnh rm, chỉ cần rm AnotherDay sẽ xóa tệp AnotherDay trong thư mục hiện tại. Chúng ta cũng sẽ sử dụng khá nhiều rm -R sẽ chạy và sử dụng đệ quy thông qua một thư mục hoặc vị trí. Chúng ta cũng có thể sử dụng rm -R -f để xóa tất cả các tệp đó một cách bắt buộc (force). Spoiler nếu bạn chạy rm -R -f / và thêm sudo vào, bạn có thể nói lời tạm biệt với hệ thống của mình….!

Chúng ta đã xem xét việc di chuyển tệp nhưng nếu tôi chỉ muốn sao chép tệp từ thư mục này sang thư mục khác, nó rất giống với lệnh mv, lệnh cp (copy), chúng ta có thể sử dụng cp Day15 Desktop

Chúng ta đã tạo các thư mục và tệp nhưng chưa đặt thêm bất cứ nội dung nào vào thư mục của mình, chúng ta có thể thêm nội dung theo một số cách nhưng một cách dễ dàng là echo. Chúng ta cũng có thể sử dụng echo để in ra nhiều thứ trong terminal của mình. Tôi sử dụng echo để in ra các biến hệ thống để biết liệu chúng có được cài đặt hay chưa. Chúng ta có thể sử dụng echo "Xin chào #90DaysOfDevOps" > Day15 và thao tác này sẽ thêm nó vào tệp của chúng ta. Chúng ta cũng có thể thêm vào tệp của mình bằng cách sử dụng echo "Commands are fun!" >> Day15

Một trong những lệnh mà bạn sẽ sử dụng rất nhiều! cat viết tắt của nối (concatenate). Chúng ta có thể sử dụng cat Day15 để xem nội dung bên trong tệp. Rất hữu ích khi bạn muốn đọc nhanh các tệp cấu hình.

Nếu bạn có một tệp cấu hình phức tạp và bạn muốn hoặc cần tìm thứ gì đó trong tệp đó một cách nhanh hơn so với việc phải đọc từng dòng thì lệnh grep là bạn của bạn, nó cho phép chúng ta tìm kiếm tệp cho một từ cụ thể bằng cách sử dụng cat Day15 | grep "#90DaysOfDevOps"

Nếu bạn giống tôi và sử dụng lệnh clear rất nhiều thì bạn có thể sẽ bỏ lỡ một số lệnh đã chạy trước đó, chúng ta có thể sử dụng history để tìm ra tất cả các lệnh mà chúng ta đã chạy. history -c sẽ xóa lịch sử.

Khi bạn chạy history và muốn chọn một lệnh cụ thể, bạn có thể sử dụng !3 để chọn lệnh thứ 3 trong danh sách.

Bạn cũng có thể sử dụng history | grep "Command" để tìm kiếm lệnh nào đó cụ thể.
Trên các máy chủ, để theo dõi thời điểm một lệnh được thực thi, việc thêm ngày và giờ vào từng lệnh trong tệp lịch sử có thể sẽ hữu ích.

Biến hệ thống sau kiểm soát hành vi này:

HISTTIMEFORMAT="%d-%m-%Y %T "

Bạn có thể dễ dàng thêm vào bash_profile của mình:

echo 'export HISTTIMEFORMAT="%d-%m-%Y %T "' >> ~/.bash_profile

Có thể sẽ tốt hơn nếu cho phép tệp lịch sử có kích thước lơn hơn lớn hơn:

echo 'export HISTSIZE=100000' >> ~/.bash_profile
echo 'export HISTFILESIZE=10000000' >> ~/.bash_profile

Cần thay đổi mật khẩu của bạn? passwd sẽ cho phép chúng ta thay đổi mật khẩu. Lưu ý rằng khi bạn thêm mật khẩu của mình theo cách này thì khi mật khẩu bị ẩn, nó sẽ không hiển thị trong history tuy nhiên nếu lệnh của bạn có -p PASSWORD thì mật khẩu này sẽ hiển thị trong history của bạn.

Chúng ta cũng có thể muốn thêm người dùng mới vào hệ thống của mình, có thể thực hiện việc này với useradd. Chúng ta phải thêm người dùng bằng lệnh sudo của mình, và có thể thêm người dùng mới bằng sudo useradd NewUser

Tạo nhóm mới cũng yêu cầu sudo và chúng ta có thể sử dụng sudo groupadd DevOps nếu chúng ta muốn thêm người dùng mới của mình vào nhóm đó, việc này có thể được thực hiện bằng cách chạy sudo usermod -a -G DevOps -a là add (thêm vào) và –là tên nhóm.

Làm cách nào để chúng ta thêm người dùng vào nhóm sudo, đây sẽ là một trường hợp rất hiếm khi xảy ra nhưng câu lệnh để làm điều này là usermod -a -G sudo NewUser

Quyền

Đọc (read), viết (write) và thực thi (execute) là các quyền chúng ta có trên tất cả các tệp và thư mục trên hệ thống Linux.

Danh sách đầy đủ:

  • 0 = None ---
  • 1 = Execute only --X
  • 2 = Write only -W-
  • 3 = Write & Execute -WX
  • 4 = Read Only R--
  • 5 = Read & Execute R-X
  • 6 = Read & Write RW-
  • 7 = Read, Write & Execute RWX

Bạn cũng sẽ thấy 777 hoặc 775 và các số này đại diện cho các số giống như danh sách ở trên nhưng mỗi số đại diện cho mỗi đối tượng User – Group – Everyone(Người dùng – Nhóm – Mọi người)

Hãy xem tập tin của chúng ta. ls -al Day15 bạn có thể thấy 3 nhóm nêu trên, user và group có quyền đọc và ghi (read & write) nhưng mọi người chỉ có quyền đọc read.

Chúng ta có thể thay đổi điều này bằng cách sử dụng chmod, bạn có thể thấy sẽ điều này khi tạo nhiều tệp nhị phân trên hệ thống của mình và cần cung cấp quyền thực thi cho các tệp nhị phân đó. chmod 750 Day15 và bây giờ chạy lệnh ls -al Day15. Nếu bạn muốn chạy lệnh này cho toàn bộ thư mục thì sử dụng -R để làm điều đó một cách đệ quy.

Vậy còn nếu muốn thay đổi chủ của tập tin? Chúng ta có thể sử dụng chown cho thao tác này, nếu muốn thay đổi quyền sở hữu của Day15 từ người dùng vagrant thành NewUser, chúng ta có thể chạy lệnh sudo chown NewUser Day15 và một lần nữa -R có thể sử dụng để làm điều này một cách đệ quy.

Một lệnh mà bạn sẽ có thể sẽ gặp nhiều là awk. Lệnh này được sử dụng trong thực tế khi bạn chỉ cần dữ liệu cụ thể từ một đầu ra. Giống như chạy lệnh who chúng ta sẽ nhận được các dòng có thông tin, nhưng nếu chỉ cần tên người dùng, chúng ta có thể chạy who | awk '{print $1}' để chỉ lấy của cột đầu tiên của danh sách đó.

Nếu bạn đang muốn đọc các luồng dữ liệu từ đầu vào tiêu chuẩn (stdin – standard input), thì hãy tạo và thực thi các dòng lệnh; nghĩa là nó có thể lấy đầu ra của một lệnh và dùng nó làm đối số của một lệnh khác. xargs là một công cụ hữu ích cho trường hợp sử dụng này. Ví dụ: nếu tôi muốn có danh sách tất cả tài khoản người dùng Linux trên hệ thống, tôi có thể chạy cut -d: -f1 < /etc/passwd và lấy danh sách dài như bạn thấy bên dưới.

Nếu tôi muốn thu gọn danh sách đó, tôi có thể sử dụng xargs trong một lệnh như thế này cut -d: -f1 < /etc/passwd | sort | xargs

Tôi cũng không đề cập đến lệnh cut, lệnh này cho phép chúng ta xóa các phần khỏi mỗi dòng của tệp. Nó có thể được sử dụng để cắt các phần của một dòng theo vị trí byte, ký tự và trường. Lệnh cut -d " " -f 2 list.txt cho phép chúng ta xóa chữ cái đầu tiên mà và chỉ hiển thị số. Có rất nhiều kết hợp có thể được sử dụng với lệnh này, tôi chắc chắn rằng đã có lúc tôi đã dành quá nhiều thời gian để sử dụng lệnh này trong khi có thể trích xuất dữ liệu nhanh hơn theo cách thủ công.

Ngoài ra, cần lưu ý nếu bạn nhập một lệnh và bạn không muốn thực thi nó nữa và muốn bắt đầu lại, chỉ cần nhấn control + C và thao tác này sẽ hủy dòng lệnh đó và giúp bạn bắt đầu lại từ đầu.

Quản lý Hệ thống Linux, Hệ thống Tệp & Lưu trữ

Tính cho đến thời điểm này, chúng ta đã có cái nhìn tổng quan ngắn gọn về Linux và DevOps. Sau đó chúng ta đã thiết lập môi trường thử nghiệm của mình sử dụng Vagrant, cuối cùng chúng ta đã đề cập đến một phần nhỏ các lệnh được sử dụng hàng ngày khi làm việc với terminal.
Hôm nay, chúng ta sẽ xem xét ba phần chính khi quản lý hệ thống Linux thông qua các bản cập nhật, cài đặt phần mềm, thư mục hệ thống được sử dụng để làm gì và cuối cùng là tìm hiểu về lưu trữ (storage).

Xem thêm: Tự động hóa quản lý cấu hình (Configuration management)

Quản lý Ubuntu & Phần mềm

Điều đầu tiên chúng ta sẽ xem xét cách cập nhật hệ điều hành của mình. Hầu hết các bạn đã quen với quy trình này với Windows và macOS, quy trình này sẽ hơi khác trên máy tính và máy chủ sử dụng Linux.

Chúng ta sẽ xem xét trình quản lý gói apt, nó sẽ sử dụng trên Ubuntu VM để cập nhật và cài đặt phần mềm.

Nói chung, ít nhất là trên các máy trạm của nhà phát triển, tôi chạy lệnh này để đảm bảo mình luôn có các bản cập nhật mới nhất vào thời điểm hiện tại từ các kho lưu trữ trung tâm (central repositories), trước khi cài đặt bất kỳ phần mềm nào.

sudo apt-get update

Bây giờ chúng ta đã cập nhật Ubuntu VM với các bản cài đặt mới nhất. Bây giờ chúng tôi muốn cài thêm một số phần mềm ở đây.

Hãy chọn figlet – một chương trình tạo biểu ngữ văn bản.

Nếu chúng tôi nhập figlet trong terminal, bạn sẽ thấy rằng chúng ta chưa cài đặt nó trên hệ thống của mình.

Mặc dù vậy, bạn sẽ thấy rằng hệ thống cung cấp cho chúng ta một số tùy chọn cài đặt apt mà chúng ta có thể thử. Điều này có thể thực hiện do trong kho lưu trữ mặc định có một chương trình gọi là figlet. Hãy thử sudo apt install figlet

Bây giờ chúng ta có thể sử dụng ứng dụng figlet như bạn có thể thấy bên dưới.

Nếu chúng ta muốn xóa phần mềm đó hoặc bất kỳ cài đặt phần mềm nào của mình, chúng ta cũng có thể thực hiện việc đó thông qua trình quản lý gói apt.

sudo apt remove figlet

Có các kho lưu trữ của bên thứ ba mà chúng ta cũng có thể thêm vào hệ thống của mình, những kho lưu trữ mà chúng ta có quyền truy cập ngay lập tức là các kho lưu trữ mặc định của Ubuntu.

Ví dụ: nếu chúng ta muốn cài đặt vagrant trên Ubuntu VM, chúng ta sẽ không thể thực hiện ngay được và bạn có thể thấy điều này khi thực hiện câu lệnh đầu tiên. Chúng ta sau đó thêm khóa để có thể tin tưởng kho lưu trữ HashiCorp, và cuối cùng là thêm kho lưu trữ của họ vào hệ thống của chúng ta.

Sau khi chúng ta thêm kho lưu trữ HashiCorp, chúng ta có thể tiếp tục và chạy sudo apt install vagrant và cài đặt vagrant trên hệ thống.

Có rất nhiều tùy chọn khi cài đặt phần mềm, các tùy chọn khác nhau cho trình quản lý gói, được tích hợp trong Ubuntu, chúng ta cũng có thể sử dụng snaps để cài đặt phần mềm của mình.

Hy vọng rằng điều này mang lại cho bạn cảm nhận về cách quản lý cài đặt hệ điều hành và phần mềm trên Linux.

Xem thêm: Thêm ổ đĩa vào Ubuntu server ảo

Giải thích về hệ thống tệp

Linux được tạo thành từ các tệp cấu hình, nếu bạn muốn thay đổi bất cứ điều gì thì bạn thay đổi các tệp cấu hình này.

Trên Windows, bạn có ổ C: và đó là thứ mà chúng ta coi là gốc. Trên Linux, chúng ta có / đây là nơi chúng ta sẽ tìm các thư mục quan trọng trên hệ thống Linux của mình.

/bin – Viết tắt của binary, thư mục bin là nơi các tệp nhị phân mà hệ thống của bạn cần, các tệp thực thi và công cụ hầu như sẽ được tìm thấy ở đây.

/boot – Tất cả các tệp mà hệ thống của bạn cần để khởi động. Làm thế nào để khởi động và khởi động từ ổ đĩa nào.

/dev – Bạn có thể tìm thấy thông tin thiết bị tại đây, đây là nơi bạn sẽ tìm thấy các con trỏ tới các ổ đĩa của mình sda sẽ là ổ đĩa hệ điều hành chính của bạn.

/etc Có thể là thư mục quan trọng nhất trên hệ thống Linux của bạn, đây là nơi chứa phần lớn các tệp cấu hình của bạn.

/home – đây là nơi bạn sẽ tìm thấy các tệp và thư mục của người dùng. Chúng ta có thư mục vagrant của chúng ta. Đây là nơi bạn sẽ tìm thấy các thư mục Documents và Desktop mà chúng ta đã làm việc trong khi tìm hiểu các lệnh lệnh.

/lib – Chúng tôi đã đề cập rằng /bin là nơi chứa các tệp nhị phân và tệp thực thi của chúng tôi, và /lib là nơi bạn sẽ tìm thấy các thư viện dùng chung cho các tệp đó.

/media – Đây là nơi chúng tôi sẽ tìm thấy các thiết bị di động.

/mnt – Đây là điểm gắn kết tạm thời. Chúng tôi sẽ đề cập sâu hơn trong phần tiếp theo về lưu trữ.

/opt – Optional software packages (gói phần mềm tùy chọn). Bạn sẽ nhận thấy ở đây rằng chúng tôi có một số phần mềm virtual box và vagrant được lưu trữ ở đây.

/proc – Kernel & thông tin về process, tương tự như /dev

/root – Để có quyền truy cập, bạn cần sudo vào thư mục này. Thư mục home của root.

/run – Placeholder cho trạng thái ứng dụng.

/sbin – Sudo bin, tương tự như thư mục bin nhưng các công cụ này dành cho những người dùng có đặc quyền nâng cao trên hệ thống.

/tmp – tệp tạm thời.

/usr – Nếu chúng tôi với tư cách là người dùng đã cài đặt các gói phần mềm, gói phần mềm đó thường sẽ được cài đặt ở vị trí /usr/bin.

/var – Các ứng dụng của chúng tôi được cài đặt trong thư mục bin. Chúng tôi cần một nơi nào đó để lưu trữ tất cả các tệp logs, đó chính là /var

Lưu trữ (Storage)

Khi đề cập tới một hệ thống Linux hoặc bất kỳ hệ thống nào, chúng ta có thể muốn biết các ổ đĩa có sẵn và chúng tôi có bao nhiêu dung lượng trống trên các đĩa đó. Một vài lệnh sau đây giúp xác định và sử dụng cũng như quản lý bộ lưu trữ.

lsblk Liệt kê các thiết bị khối (List Block devices). sda là đĩa vật lý của chúng ta và sau đó sda1, sda2, sda3 là các phân vùng của chúng ta trên đĩa đó.

df cung cấp thông tin chi tiết về các phân vùng đó, dung lượng tổng, dung lượng đã sử dụng và dung lượng khả dụng. Bạn có thể sử dụng thêm các flag trong câu lệnh này. Tôi thường sử dụng df -h để lấy đầu ra dữ liệu đễ đọc hơn.

Nếu bạn đang thêm một đĩa mới vào hệ thống của, bạn sẽ cần định dạng đĩa trong trình quản lý đĩa (disk management), trong Linux terminal, bạn có thể thực hiện việc này bằng cách sử dụng lệnh sudo mkfs -t ext4 /dev/sdb với sdb liên quan đến đĩa mới được thêm.

Sau đó, chúng ta sẽ cần mount (gắn) đĩa mới được định dạng để nó có thể sử dụng được. Điều này được thực hiện trong thư mục /mnt đã đề cập trước đó và chúng ta sẽ tạo một thư mục ở đó bằng câu lệnh sudo mkdir NewDisk, sau đó là sudo mount /dev/sdb newdisk để mount đĩa vào vị trí đó.

Cũng có thể là bạn sẽ cần unmount một ổ đĩa khỏi hệ thống của mình một cách an toàn thay vì chỉ xoá nó khỏi cấu hình. Chúng ta có thể làm điều này với sudo umount /dev/sdb

Nếu bạn không muốn unmount ổ đĩa đó và bạn sẽ sử dụng nó làm cơ sở dữ liệu hoặc cho mục đích lâu dài khác thì bạn muốn khi khởi động lại hệ thống, nó vẫn ở đó. Để có thể làm được điều này, chúng ta cần thêm đĩa này vào tệp cấu hình /etc/fstab của mình để nó tồn tại, nếu không, nó sẽ không thể sử dụng được khi máy khởi động lại và bạn sẽ phải thực hiện lại các bước thủ công như ở trên. Dữ liệu sẽ vẫn sẽ ở trên đĩa nhưng nó sẽ không tự động mount lại trừ khi bạn cài đặt trong tệp cấu hình.

Sau khi bạn chỉnh sửa tệp cấu hình fstab, bạn có thể kiểm tra hoạt động bằng lệnh sudo mount -a nếu không có lỗi thì các thay đổi của bạn sẽ vẫn ở đó dù khởi động lại hệ thống.

Text Editors – nano vs vim

Phần lớn các hệ thống Linux của bạn sẽ là máy chủ và chúng sẽ không có GUI. Tôi cũng đã đề cập trong phần trước rằng Linux chủ yếu được tạo thành từ các tệp cấu hình, để thực hiện các thay đổi, bạn cần có khả năng chỉnh sửa các tệp cấu hình đó để quản lý hệ thống.

Có rất nhiều tùy chọn ngoài kia nhưng tôi nghĩ có lẽ chúng ta nên đề cập đến hai trình soạn thảo văn bản trên terminal phổ biến nhất. Tôi đã sử dụng cả hai trình chỉnh sửa này và đối với tôi, tôi thấy nano dễ sử dụng hơn cho các thay đổi nhanh nhưng xét về các chức năng, vim là editor với nhiều chức năng hơn.

nano

  • Không có sẵn trên mọi hệ thống.
  • Dễ để bắt đầu hơn

Nếu bạn chạy nano 90DaysOfDevOps.txt, chúng ta sẽ có một tệp mới không có gì trong đó, từ đây chúng tôi có thể thêm văn bản của mình và hướng dẫn bên dưới là những gì chúng ta muốn thay đổi tệp đó.

Bây giờ chúng ta có thể sử dụng control x + enter và sau đó chạy ls để có thể thấy tệp văn bản mới của chúng ta.

Bây giờ chúng ta có thể chạy cat đối với tệp đó để đọc tệp của mình. Sau đó, chúng ta có thể sử dụng cùng nano 90DaysOfDevOps.txt đó để thêm văn bản bổ sung hoặc sửa đổi tệp của bạn.

Bây giờ chúng ta có thể chạy cat đối với tệp đó để đọc tệp của mình. Sau đó, chúng ta có thể sử dụng cùng nano 90DaysOfDevOps.txt đó để thêm văn bản bổ sung hoặc sửa đổi tệp của bạn.

vim

Có thể coi đây là trình soạn thảo văn bản phổ biến nhất? Là anh em của trình soạn thảo văn bản UNIX vi từ năm 1976, chúng ta có rất nhiều chức năng với vim.

  • Được hỗ trợ trên hầu hết mọi bản phân phối Linux.
  • Vô cùng đầy đủ! Bạn có thể tìm thấy một khóa học kéo dài 7 giờ chỉ bao gồm vim.

Chúng ta có thể chuyển sang vim bằng lệnh vim hoặc nếu muốn chỉnh sửa tệp txt của mình, chúng ta có thể chạy lệnh vim 90DaysOfDevOps.txt nhưng trước tiên bạn sẽ thấy thiếu các menu trợ giúp ở phía dưới so với nano

Câu hỏi đầu tiên có thể là “Làm cách nào để thoát vim?” đầu tiên là nhấn escape và nếu chúng ta không thực hiện bất kỳ thay đổi nào thì nhập :q

Bạn bắt đầu ở chế độ normal, có các chế độ command, normal, visual, insert, nếu muốn thêm văn bản, chúng ta sẽ cần chuyển từ normal sang insert bằng phím i, nếu bạn đã thêm/sửa văn bản và muốn lưu lại những thay đổi này, nhấm escape và sau đó là :wq

Bạn có thể xác nhận bằng lệnh cat để kiểm tra xem bạn đã lưu các thay đổi đó chưa.

Có một số chức năng thú vị của vim cho phép bạn thực hiện các tác vụ đơn giản rất nhanh nếu bạn biết các phím tắt, bản thân việc đó có thể được coi là một bài học. Giả sử chúng ta đã thêm một danh sách các từ được lặp lại và bây giờ chúng ta cần thay đổi danh sách đó, có thể đó là tệp cấu hình và tên mạng đã được lặp lại nhiều lần. Chúng ta muốn nhanh chóng thay đổi điều tên mạng cho tệp cấu hình. Tôi đang sử dụng từ “Day” cho ví dụ này.

Bây giờ chúng ta muốn thay thế từ đó bằng 90DaysOfDevOps, có thể thực hiện việc này bằng cách nhấn ESC và nhập :%s/Day/90DaysOfDevOps

Kết quả khi bạn nhấn enter là từ “Day” được thay thế bằng “90DaysOfDevOps”.

Copy và Paste thực sự khiến tôi mở rộng tầm mắt. Copy không phải là copy mà là yank. Chúng ta có thể sao chép bằng yy trên bàn phím ở chế độ normalđẻ paste trên cùng một dòng, paste trên một dòng mới.

Bạn cũng có thể xóa những dòng này bằng cách chọn số dòng bạn muốn xóa, sau đó là dd

Cũng có thể đôi khi bạn sẽ cần tìm kiếm trong một tệp, chúng ta có thể sử dụng grep như đã đề cập trong ngày hôm trước nhưng cũng có thể sử dụng vim. Sử dụng /word và thao tác này sẽ tìm kết quả khớp đầu tiên, để chuyển qua phần tiếp theo, bạn sẽ sử dụng phím n, v.v.

Đối với vim, những điều này thậm chí còn chưa phải là giớt thiệu qua về công cụ này. Lời khuyên mà tôi có thể đưa ra là hãy bắt tay vào sử dụng vim bất cứ khi nào có thể.

Một câu hỏi phỏng vấn phổ biến là trình soạn thảo văn bản yêu thích của bạn trong Linux là gì và tôi sẽ đảm bảo rằng bạn có ít nhất kiến ​​​​thức này về cả hai trình soạn thảo trên để có thể trả lời, nano là một câu trả lời không tệ vì nó đơn giản. Ít nhất thì bạn cũng thể hiện được khả năng hiểu trình soạn thảo văn bản là gì. Nhưng hãy thực hành với chúng để thành thạo hơn.

Một con trỏ khác để điều hướng trong vim, chúng ta có thể sử dụng H,J,K,L cũng như các phím mũi tên của mình.

1 2Next page

Related Articles

Leave a Reply

Your email address will not be published. Required fields are marked *

Back to top button