Dockerfile

Dockerfile

30.09.2024
Author: ADMIN

Dockerfile là một tập lệnh chứa các hướng dẫn để xây dựng một Docker image. Dưới đây là các thành phần chính và cách sử dụng chúng:

  1. FROM
FROM <image>:<tag>
  • Đây là lệnh bắt buộc và phải là lệnh đầu tiên trong Dockerfile (trừ ARG).
  • Xác định image cơ sở để bắt đầu xây dựng.
  • Ví dụ: FROM ubuntu:20.04 hoặc FROM python:3.9-alpine
  1. LABEL
LABEL <key>=<value>
  • Thêm metadata vào image.
  • Ví dụ: LABEL version="1.0" maintainer="example@email.com"
  1. ENV
ENV <key>=<value>
  • Đặt biến môi trường.
  • Ví dụ: ENV PATH=/usr/local/bin:$PATH
  1. ARG
ARG <name>[=<default value>]
  • Định nghĩa biến được sử dụng trong quá trình build.
  • Ví dụ: ARG VERSION=latest
  1. WORKDIR
WORKDIR /path/to/directory
  • Đặt thư mục làm việc cho các lệnh RUN, CMD, ENTRYPOINT, COPY và ADD tiếp theo.
  • Ví dụ: WORKDIR /app
  1. COPY
COPY <src> <dest>
  • Sao chép files hoặc thư mục từ máy host vào image.
  • Ví dụ: COPY . /app
  1. ADD
ADD <src> <dest>
  • Tương tự COPY, nhưng có thêm chức năng như giải nén tệp tar hoặc tải file từ URL.
  • Ví dụ: ADD https://example.com/big.tar.xz /usr/src/things/
  1. RUN
RUN <command>
  • Thực thi lệnh và tạo một layer mới.
  • Ví dụ: RUN apt-get update && apt-get install -y python3
  1. CMD
CMD ["executable","param1","param2"]
  • Cung cấp lệnh mặc định để chạy container.
  • Chỉ có thể có một CMD trong Dockerfile.
  • Ví dụ: CMD ["python", "app.py"]
  1. ENTRYPOINT
ENTRYPOINT ["executable", "param1", "param2"]
  • Cấu hình container để chạy như một executable.
  • Ví dụ: ENTRYPOINT ["python", "app.py"]
  1. EXPOSE
EXPOSE <port> [<port>/<protocol>...]
  • Khai báo cổng mà container sẽ lắng nghe khi chạy.
  • Ví dụ: EXPOSE 80 hoặc EXPOSE 80/tcp
  1. VOLUME
VOLUME ["/data"]
  • Tạo một mount point và đánh dấu nó là chứa dữ liệu được mount từ bên ngoài.
  • Ví dụ: VOLUME ["/var/log"]
  1. USER
USER <user>[:<group>]
  • Đặt user (hoặc UID) và tùy chọn USER group (hoặc GID) để chạy các lệnh tiếp theo.
  • Ví dụ: USER nginx
  1. HEALTHCHECK
HEALTHCHECK [OPTIONS] CMD command
  • Kiểm tra sức khỏe của container.
  • Ví dụ: HEALTHCHECK --interval=5m --timeout=3s CMD curl -f http://localhost/ || exit 1
  1. SHELL
SHELL ["executable", "parameters"]
  • Ghi đè shell mặc định được sử dụng cho lệnh shell form của RUN, CMD, ENTRYPOINT.
  • Ví dụ: SHELL ["/bin/bash", "-c"]
  1. STOPSIGNAL
STOPSIGNAL signal
  • Đặt tín hiệu hệ thống để gửi đến container để thoát.
  • Ví dụ: STOPSIGNAL SIGTERM

Một Dockerfile điển hình có thể kết hợp nhiều lệnh này để xây dựng một image phức tạp. Ví dụ:

FROM python:3.9-slim
LABEL maintainer="example@email.com"

ENV PYTHONUNBUFFERED 1

WORKDIR /app

COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt

COPY . .

EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

Mỗi lệnh trong Dockerfile tạo ra một layer mới trong image. Việc hiểu và sử dụng đúng các lệnh này sẽ giúp bạn tạo ra các Docker images hiệu quả và tối ưu.

Docker là gì?

Docker là gì?

30.09.2024
Author: ADMIN

Docker là một nền tảng mã nguồn mở được sử dụng để phát triển, vận chuyển và chạy các ứng dụng. Nó cho phép bạn tách biệt ứng dụng của mình khỏi cơ sở hạ tầng để có thể nhanh chóng phân phối phần mềm. Dưới đây là những điểm chính để hiểu về Docker:

  1. Containerization (Ảo hóa container):

    • Docker sử dụng công nghệ container để đóng gói một ứng dụng và tất cả các phụ thuộc của nó vào một “container” ảo.
    • Mỗi container là một đơn vị phần mềm tiêu chuẩn hóa, chứa mọi thứ cần thiết để chạy ứng dụng: mã, runtime, công cụ hệ thống, thư viện và cài đặt.
  2. Nhẹ và hiệu quả:

    • Khác với máy ảo truyền thống, các container Docker chia sẻ kernel của hệ điều hành máy chủ, làm cho chúng nhẹ hơn và sử dụng tài nguyên hiệu quả hơn.
  3. Tính nhất quán:

    • Docker đảm bảo rằng ứng dụng sẽ chạy giống nhau trong mọi môi trường, từ máy phát triển đến máy chủ sản xuất.
  4. Các thành phần chính:

    • Docker Engine: Nền tảng chạy và quản lý các container.
    • Docker Image: Bản mẫu chỉ đọc chứa hướng dẫn để tạo container.
    • Docker Container: Phiên bản chạy của một image.
    • Dockerfile: File văn bản chứa các lệnh để xây dựng một Docker image.
    • Docker Hub: Kho lưu trữ công cộng cho Docker images.
  5. Lợi ích:

    • Triển khai nhanh chóng và dễ dàng
    • Tính di động cao
    • Quản lý phiên bản và thành phần hiệu quả
    • Tái sử dụng và chia sẻ
    • Cô lập và bảo mật
  6. Ứng dụng:

    • Phát triển và kiểm thử phần mềm
    • Triển khai ứng dụng microservices
    • Tự động hóa quy trình CI/CD
    • Mở rộng quy mô ứng dụng

Docker đã trở thành một công cụ quan trọng trong ngành công nghiệp phần mềm, giúp đơn giản hóa quá trình phát triển, triển khai và quản lý ứng dụng trong các môi trường khác nhau.

Hãy xem xét một ví dụ cụ thể về việc sử dụng Docker để containerize một ứng dụng web đơn giản bằng Python Flask. Chúng ta sẽ đi qua các bước từ việc tạo ứng dụng đến việc chạy nó trong một container Docker.

  1. Tạo ứng dụng Flask đơn giản:

Đầu tiên, tạo một thư mục cho dự án và tạo file app.py:

 from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "Xin chào từ Docker container!"

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)
 
  1. Tạo file requirements.txt:
Flask==2.0.1
  1. Tạo Dockerfile:
# Sử dụng image Python chính thức làm base image
FROM python:3.9-slim

# Đặt thư mục làm việc trong container
WORKDIR /app

# Sao chép file requirements.txt vào container
COPY requirements.txt .

# Cài đặt các dependencies
RUN pip install --no-cache-dir -r requirements.txt

# Sao chép mã nguồn ứng dụng vào container
COPY . .

# Mở cổng 5000 để Flask app có thể truy cập được
EXPOSE 5000

# Chạy ứng dụng khi container được khởi động
CMD ["python", "app.py"]
  1. Build Docker image:

Mở terminal, di chuyển đến thư mục dự án và chạy lệnh:

docker build -t flask-hello-world .
  1. Chạy Docker container:

Sau khi build xong, chạy container với lệnh:

docker run -d -p 5000:5000 flask-hello-world

Bây giờ, bạn có thể truy cập ứng dụng tại http://localhost:5000 trên trình duyệt.

  1. Kiểm tra container đang chạy:
docker ps
  1. Dừng container:
docker stop <container_id>

Giải thích chi tiết:

  • Dockerfile định nghĩa cách xây dựng image:

    • FROM python:3.9-slim: Sử dụng image Python 3.9 nhẹ làm cơ sở.
    • WORKDIR /app: Đặt thư mục làm việc trong container.
    • COPY requirements.txt .: Sao chép file requirements vào container.
    • RUN pip install ...: Cài đặt các dependencies.
    • COPY . .: Sao chép toàn bộ mã nguồn vào container.
    • EXPOSE 5000: Khai báo cổng 5000 sẽ được sử dụng.
    • CMD ["python", "app.py"]: Xác định lệnh để chạy ứng dụng.
  • Lệnh docker build tạo một image từ Dockerfile.

  • Lệnh docker run tạo và chạy một container từ image:

    • -d: Chạy container ở chế độ detached (nền).
    • -p 5000:5000: Map cổng 5000 của máy host với cổng 5000 của container.

Ví dụ này minh họa cách Docker có thể được sử dụng để đóng gói một ứng dụng web đơn giản cùng với tất cả dependencies của nó, đảm bảo rằng nó có thể chạy một cách nhất quán trên bất kỳ môi trường nào có Docker.

Life Cycle Laravel

Life Cycle Laravel

27.09.2024
Author: ADMIN

Laravel, một framework PHP phổ biến, có một vòng đời (life cycle) riêng cho mỗi request. Hãy cùng xem qua các giai đoạn chính trong vòng đời của một request trong Laravel:

  1. Entry Point (Điểm vào)

Tất cả các requests đều đi qua file public/index.php:

<?php

use Illuminate\Contracts\Http\Kernel;
use Illuminate\Http\Request;

define('LARAVEL_START', microtime(true));

require __DIR__.'/../vendor/autoload.php';

$app = require_once __DIR__.'/../bootstrap/app.php';

$kernel = $app->make(Kernel::class);

$response = $kernel->handle(
    $request = Request::capture()
)->send();

$kernel->terminate($request, $response);
  1. Autoloading

Composer’s autoloader được load.

  1. Create Application Instance

Một instance của ứng dụng Laravel được tạo ra.

  1. Kernel

HTTP Kernel hoặc Console Kernel được tạo ra, tùy thuộc vào loại request.

  1. Service Providers
public function register()
{
    //
}

public function boot()
{
    //
}

Service Providers được đăng ký (register) và khởi động (boot).

  1. Middleware

Request đi qua global middleware:

protected $middleware = [
    \App\Http\Middleware\TrustProxies::class,
    \App\Http\Middleware\CheckForMaintenanceMode::class,
    \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class,
    \App\Http\Middleware\TrimStrings::class,
    \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class,
];
  1. Routing

Router xác định route phù hợp và chạy route middleware:

Route::get('/user', 'UserController@index')->middleware('auth');
  1. Controller

Controller xử lý request và trả về response:

public function index()
{
    return view('users.index', ['users' => User::all()]);
}
  1. Response

Response được gửi trở lại cho client.

  1. Termination

Sau khi response được gửi, các termination tasks được thực hiện:

$kernel->terminate($request, $response);

Hiểu rõ về vòng đời này sẽ giúp bạn can thiệp vào đúng thời điểm trong quá trình xử lý request, ví dụ như đăng ký service providers, thêm middleware, hoặc xử lý logic trong controllers.

Life Cycle JavaScript

Life Cycle JavaScript

27.09.2024
Author: ADMIN

Thực tế, JavaScript không có một “vòng đời” cụ thể như một số ngôn ngữ lập trình khác, nhưng chúng ta có thể nói về vòng đời của một script JavaScript khi nó được thực thi trong trình duyệt web. Dưới đây là mô tả về quá trình này:

  1. Tải trang (Page Load)
// Khi trang HTML được tải, các thẻ <script> được xử lý
<script src="myScript.js"></script>
  1. Phân tích cú pháp (Parsing)

JavaScript engine phân tích cú pháp của code.

  1. Biên dịch (Compilation)

Code được biên dịch thành bytecode.

  1. Thực thi (Execution)
// Code được thực thi từ trên xuống dưới
console.log("Hello, World!");
  1. Xử lý sự kiện (Event Handling)
// Các event listeners được đăng ký
document.getElementById("myButton").addEventListener("click", function() {
    console.log("Button clicked!");
});
  1. Asynchronous Operations
// Các hoạt động bất đồng bộ được xử lý
setTimeout(function() {
    console.log("This runs after 2 seconds");
}, 2000);
  1. Garbage Collection
// Bộ nhớ không còn sử dụng được giải phóng tự động
let obj = { name: "John" };
obj = null; // Đối tượng ban đầu có thể được thu gom rác
  1. Đóng trang (Page Unload)
// Có thể đăng ký các hàm để chạy khi trang đóng
window.addEventListener("beforeunload", function() {
    console.log("Page is about to unload");
});

Lưu ý rằng trong môi trường Node.js, vòng đời sẽ hơi khác, tập trung vào việc xử lý các module và event loop.

Hiểu về vòng đời này giúp bạn tối ưu hóa hiệu suất và quản lý tài nguyên tốt hơn trong ứng dụng JavaScript của mình.

AWS Region

AWS Region

27.09.2024
Author: ADMIN

AWS Region là gì?

AWS Region là một khu vực địa lý riêng biệt trên thế giới, nơi Amazon Web Services (AWS) triển khai và vận hành cơ sở hạ tầng điện toán đám mây của mình. Mỗi Region là một tập hợp các trung tâm dữ liệu được tổ chức thành các Availability Zones (AZs).

Đặc điểm chính của AWS Region:

  1. Độc lập về mặt địa lý: Mỗi Region hoàn toàn tách biệt và độc lập với các Region khác.

  2. Nhiều Availability Zones: Mỗi Region thường có ít nhất 3 AZs, đảm bảo tính sẵn sàng cao.

  3. Dịch vụ đa dạng: Hầu hết các dịch vụ AWS đều có sẵn trong mỗi Region, nhưng một số dịch vụ có thể chỉ khả dụng ở một số Region nhất định.

  4. Tuân thủ quy định: Các Region được thiết kế để đáp ứng các yêu cầu tuân thủ và quy định cụ thể của từng khu vực.

  5. Giá cả khác nhau: Chi phí sử dụng dịch vụ có thể khác nhau giữa các Region.

Tại sao AWS có nhiều Region?

  1. Giảm độ trễ: Đặt các dịch vụ gần với người dùng cuối giúp cải thiện hiệu suất.

  2. Tuân thủ quy định: Một số quốc gia yêu cầu dữ liệu phải được lưu trữ trong nước.

  3. Khả năng phục hồi sau thảm họa: Nhiều Region giúp tăng cường khả năng phục hồi và liên tục kinh doanh.

  4. Tối ưu hóa chi phí: Cho phép khách hàng chọn Region có chi phí phù hợp nhất.

Lựa chọn Region phù hợp:

Khi chọn Region, cần xem xét:

  1. Vị trí địa lý: Chọn Region gần nhất với người dùng cuối.

  2. Tuân thủ: Đảm bảo Region đáp ứng các yêu cầu pháp lý và quy định.

  3. Dịch vụ có sẵn: Kiểm tra xem các dịch vụ cần thiết có sẵn trong Region đó không.

  4. Chi phí: So sánh giá cả giữa các Region.

  5. Độ trễ: Đánh giá độ trễ mạng từ Region đến người dùng cuối.

Lưu ý quan trọng:

  • Dữ liệu và tài nguyên trong một Region không tự động sao chép sang Region khác.
  • Một số dịch vụ AWS có phạm vi toàn cầu (như IAM, Route 53), trong khi hầu hết các dịch vụ khác có phạm vi Region.
  • Luôn chọn đúng Region trước khi bắt đầu triển khai tài nguyên để tránh sai sót và tối ưu hóa hiệu suất.

Hiểu rõ về AWS Region sẽ giúp bạn thiết kế và triển khai các ứng dụng đám mây hiệu quả, đảm bảo tính sẵn sàng cao và tuân thủ các yêu cầu kinh doanh cũng như quy định pháp lý.

AWS S3

AWS S3

27.09.2024
Author: ADMIN

AWS S3 (Simple Storage Service) là một dịch vụ lưu trữ đối tượng được cung cấp bởi Amazon Web Services. Đây là một trong những dịch vụ cốt lõi và phổ biến nhất của AWS. Hãy tìm hiểu chi tiết về AWS S3:

AWS S3 là gì?

AWS S3 là dịch vụ lưu trữ đối tượng có khả năng mở rộng cao, cung cấp khả năng lưu trữ và truy xuất dữ liệu từ bất kỳ đâu trên web. S3 được thiết kế để cung cấp độ bền 99,999999999% (11 số 9) và khả năng sẵn sàng 99,99% cho dữ liệu của bạn.

Đặc điểm chính của AWS S3:

  1. Lưu trữ đối tượng: S3 lưu trữ dữ liệu dưới dạng đối tượng trong các “bucket”.

  2. Khả năng mở rộng: Có thể lưu trữ và truy xuất bất kỳ lượng dữ liệu nào, bất kỳ lúc nào.

  3. Độ bền cao: Được thiết kế để cung cấp độ bền 99,999999999%.

  4. Bảo mật: Cung cấp nhiều tính năng bảo mật mạnh mẽ.

  5. Linh hoạt: Hỗ trợ nhiều lớp lưu trữ khác nhau cho các nhu cầu khác nhau.

  6. Quản lý dễ dàng: Cung cấp giao diện quản lý trực quan và API đa dạng.

Các khái niệm cơ bản trong S3:

  1. Bucket: Là container chứa các đối tượng. Mỗi đối tượng được lưu trữ trong một bucket.

  2. Object: Là đơn vị cơ bản của dữ liệu được lưu trữ trong S3. Mỗi object bao gồm dữ liệu và metadata.

  3. Key: Là tên duy nhất được gán cho một object trong bucket.

  4. Versioning: Cho phép lưu trữ nhiều phiên bản của cùng một object.

  5. Storage Classes: Các lớp lưu trữ khác nhau cho các nhu cầu truy cập và chi phí khác nhau.

Các lớp lưu trữ S3:

  1. S3 Standard: Cho dữ liệu truy cập thường xuyên.
  2. S3 Intelligent-Tiering: Tự động tối ưu chi phí cho dữ liệu có mẫu truy cập không xác định.
  3. S3 Standard-IA: Cho dữ liệu truy cập ít thường xuyên.
  4. S3 One Zone-IA: Tương tự Standard-IA nhưng chỉ lưu trữ trong một AZ.
  5. S3 Glacier: Cho lưu trữ dài hạn với chi phí thấp.
  6. S3 Glacier Deep Archive: Cho lưu trữ dài hạn với chi phí cực thấp.

Ứng dụng phổ biến của S3:

  1. Lưu trữ và phân phối nội dung
  2. Backup và khôi phục dữ liệu
  3. Lưu trữ dữ liệu cho phân tích Big Data
  4. Lưu trữ log files
  5. Hosting website tĩnh
  6. Lưu trữ dữ liệu gốc cho các ứng dụng cloud-native

Tính năng bảo mật:

  • Mã hóa phía máy chủ và phía khách hàng
  • Quản lý quyền truy cập bằng IAM và bucket policies
  • Versioning để bảo vệ khỏi xóa hoặc ghi đè ngoài ý muốn
  • MFA Delete để ngăn chặn xóa dữ liệu không mong muốn

AWS S3 là một dịch vụ cực kỳ linh hoạt và mạnh mẽ, được sử dụng rộng rãi trong nhiều ứng dụng và giải pháp cloud. Hiểu rõ về S3 sẽ giúp bạn tận dụng tối đa khả năng lưu trữ và quản lý dữ liệu trong môi trường AWS.

Config S3

Task 1: Tạo Bucket trên S3

  1. Truy cập Storage >> S3 từ menu Services

2. Tại giao diện của S3, nhấn chọn Create bucket và điền lần lượt vào các trường sau cho bucket details.

  • Bucket name: đặt tên cho bucket (S3 bucket name mang tính định danh trên tất cả các region của AWS nên phải duy nhất và không trùng lặp).

  • Region: Chọn Singapore (ap-southeast-1)

  • Object ownership: Chọn ACLs enabled

    • Object ownership: Chọn Object writer (anh em nhớ chọn Object Owner, ngược lại sẽ không có quyền chỉnh sửa bucket ACL)

  • Với thiết lập Block Public Access, để đơn giản anh em bỏ check và xác nhận vào mục acknowleadge nhé (thao tác này đồng nghĩa bật mode public cho bucket).


A screenshot of a computer

Description automatically generated

A screenshot of a computer screen

Description automatically generated

A screenshot of a bucket

Description automatically generated

Những phần khác giữ nguyên như mặc đinh và nhấn Create bucket.

3. Sau khi quá trình taọ bucket hoàn tất, hệ thống sẽ tự động chuyển đến giao diện chứa danh sách tất cả các bucket đang có trong tài khoản AWS của bạn.

A screenshot of a computer

Description automatically generated

Task 2: Upload object lên S3 Bucket

  1. Nhấn vào bucket name để, ngay tại tab Object, nhấn vào upload.

A screenshot of a computer

Description automatically generated

  1. Tại giao diện kế tiếp, nhấn add file và chọn một hoặc nhiều file từ local và nhấn Upload.

A screenshot of a computer

Description automatically generated

3. Sau khi quá trình upload hoàn tất sẽ hiện thông báo kèm danh sách các object tương tự như ví dụ bên dưới.

 

A screenshot of a video

Description automatically generated

Task 3: Thay đổi quyền trên Bucket

1. Từ danh sách các object đã tải lên ở phần trước, anh em thử nhấn vào một file bất kỳ, ví dụ Amazon-S3.png để xem chi tiết các thành phần của object này như owner, size, link, …

2. Anh em tìm và copy Object URL (đây là http endpoint của một đối tượng)

A screenshot of a computer

Description automatically generated

3. Tiếp theo, bạn thử mở tab trình duyệt khác và truy cập Object URL này sẽ nhận được thông báo AccessDenied như bên dưới.

 

A screenshot of a computer

Description automatically generated

Lý do khá đơn giản, mặc dù bucket đã được thiếp lập chế độ public lúc khởi tạo nhưng theo mặc định các object sau khi tải lên vẫn ở mode private.

4. Quay lại giao diện Object details của file Amazon-S3.png, chuyển sang tab Permissons, nhấn Edit để thực hiện chỉnh sửa quyền.

A screenshot of a computer

Description automatically generated

5. Tại đây, anh em có thể tùy biến quyền cho một số nhóm khác nhau. Ví dụ trong bài lab này mình sẽ gán quyền read only lên Object Amazon-S3.png cho tất cả (everyone).

A screenshot of a computer

Description automatically generated

Nhớ xác nhận vào checkbox I understand the effects of these changes on
this object, sau đó nhấn Save changes để cập nhật thay đổi.

6. Bây giờ, thử lại bước 3 – truy cập Object URL sẽ hiện được nội dung ảnh Amazon-S3.png từ trình duyệt web.

Task 4: Tạo Bucket Policy

Trong Task 3, anh em chỉ gán quyền cho một object nhất định. Trong phần này, nếu có nhu cầu gán quyền tương tự cho tất cả các đối tượng có trong bucket thì sẽ làm thế nào? Câu trả lời là ta sẽ tạo một Bucket policy.

1. Quay trở lại giao diện chứa danh sách bucket, nhấn chọn vào bucket name hiepsharing-saa-b-1, vẫn chuyển sang tab Permissions.

2. Kéo xuống tại mục Bucket policy, nhấn Edit để mở trình soạn thảo Bucket policy editor (dĩ nhiên trống không 😆 ).

Lưu ý: Bucket policy được trình bày dưới dạng ngôn ngữ JSON nên anh em có thể chủ động nghiên cứu thêm bằng 2 công cụ Policy examples hoặc Policy generator được AWS  cung cấp.

Hoặc đơn giản trong bài lab này, anh em có thể copy và dán JSON bên dưới vào và thay thế phần Resources bằng chính Bucket ARN của anh em.

ras.vending là bucket name

Với nội dung JSON  trên, mình muốn tạo ra một bucket  policy cho phép mọi người có quyền truy cập tất cả các object có trong bucket ras.vending

A screenshot of a computer

Description automatically generated

Xem kỹ lại cú pháp của JSON, nếu không có lỗi gì (Errors: 0), nhấn Save changes để tạo policy.

Task 5: Kiểm tra hoạt động của Bucket Policy

1. Sau khi thiết lập bucket policy thành công, quay lại danh sách các object đã tải lên ở phần trước, tick chọn vào file test_upload.txt (chưa cấu hình object permission trước đó), nhấn Copy URL.

A screenshot of a computer

Description automatically generated

2. Mở một tab trình duyệt khác và dán Object URL để truy cập vào nội dung file test_upload.txt trên bucket hiepsharing-saa-b-1. Kết quả như minh họa bên dưới chứng tỏ bucket policy chúng ta tạo ở phần trước thành công.

 

Tạo một bản sao của một branch

Tạo một bản sao của một branch

27.09.2024
Author: ADMIN

Tất nhiên! Việc tạo một bản sao chính xác của một branch là một tác vụ khá đơn giản trong Git. Đây là cách bạn có thể tạo một branch mới có tên develop-backup từ branch develop hiện tại:

  1. Đảm bảo rằng bạn có phiên bản mới nhất của repository:
git fetch --all
  1. Tạo branch mới develop-backup từ develop:
git branch develop-backup develop

Hoặc, nếu bạn muốn chuyển sang branch mới ngay lập tức:

git checkout -b develop-backup develop
  1. Đẩy branch mới lên remote repository (nếu cần):
git push -u origin develop-backup

Đây là quy trình đầy đủ:

# Đảm bảo bạn có phiên bản mới nhất của repository
git fetch --all

# Tạo branch mới develop-backup từ develop
git branch develop-backup develop

# Kiểm tra các branch
git branch -a

# Nếu bạn muốn chuyển sang branch mới
git checkout develop-backup

# Đẩy branch mới lên remote repository (nếu cần)
git push -u origin develop-backup

Sau khi thực hiện các bước này, cấu trúc của repository của bạn sẽ như sau:

main <- base <- develop
main <- base <- develop-backup

Trong đó develop-backup là một bản sao chính xác của develop tại thời điểm bạn tạo nó.

Lưu ý:

  1. Branch develop-backup sẽ không tự động cập nhật khi develop thay đổi. Nó là một snapshot của develop tại thời điểm bạn tạo nó.
  2. Nếu bạn muốn develop-backup luôn được cập nhật với develop, bạn sẽ cần phải merge hoặc rebase develop vào develop-backup thường xuyên.
  3. Hãy chắc chắn rằng việc tạo và đẩy một branch mới lên remote repository phù hợp với quy trình làm việc của team bạn.

Với cách này, bạn sẽ có một bản sao chính xác của develop trong develop-backup, cho phép bạn thực hiện các thử nghiệm hoặc thay đổi mà không ảnh hưởng đến branch develop gốc.

Ví dụ về Merge và Rebase

Ví dụ về Merge và Rebase

27.09.2024
Author: ADMIN

Hôm nay, DevEliteBlog sẽ cung cấp cho bạn một số ví dụ về merge rebase, từ cơ bản đến nâng cao. Chúng ta sẽ bắt đầu với các tình huống đơn giản và dần dần chuyển sang các tình huống phức tạp hơn.

Ví dụ 1: Merge cơ bản

Giả sử bạn có một branch feature và muốn merge nó vào main.

# Đang ở branch feature
git checkout main
git merge feature

# Nếu không có conflict, Git sẽ tự động tạo một merge commit

Ví dụ 2: Rebase cơ bản

Thay vì merge, bạn muốn rebase branch feature lên main để giữ lịch sử commit tuyến tính.

git checkout feature
git rebase main

# Nếu có conflicts, Git sẽ dừng lại để bạn resolve
# Sau khi resolve, tiếp tục rebase
git add .
git rebase --continue

Ví dụ 3: Merge với conflicts

Khi merge gặp conflicts, bạn cần resolve chúng thủ công.

git checkout main
git merge feature

# Git báo conflicts
# Mở các file bị conflict và resolve
git add .
git commit -m "Merge feature branch and resolve conflicts"

Ví dụ 4: Rebase tương tác

Sử dụng rebase tương tác để chỉnh sửa, gộp, hoặc xóa các commit trước khi merge.

git checkout feature
git rebase -i main

# Một editor sẽ mở ra, cho phép bạn chọn hành động cho mỗi commit
# Sau khi chỉnh sửa, lưu và đóng editor
# Git sẽ thực hiện rebase theo chỉ dẫn của bạn

Ví dụ 5: Cherry-pick

Chọn một commit cụ thể từ một branch khác để áp dụng vào branch hiện tại.

git checkout main
git cherry-pick <commit-hash>

# Nếu có conflicts, resolve chúng
git add .
git cherry-pick --continue

Ví dụ 6: Merge với squash

Gộp tất cả các commit từ feature branch thành một commit duy nhất khi merge vào main.

git checkout main
git merge --squash feature
git commit -m "Merge feature branch with all changes squashed"

Ví dụ 7: Rebase với branch phức tạp

Giả sử bạn có một branch dài hạn (long-running branch) cần được cập nhật với main.

git checkout long-running-feature
git rebase main

# Resolve conflicts cho mỗi commit
# Có thể có nhiều lần phải resolve conflicts
git add .
git rebase --continue

# Lặp lại cho đến khi rebase hoàn tất

Ví dụ 8: Merge với chiến lược tùy chỉnh

Sử dụng chiến lược merge khác nhau để kiểm soát cách các thay đổi được kết hợp.

git checkout main
git merge -X theirs feature  # Ưu tiên thay đổi từ branch feature
# hoặc
git merge -X ours feature    # Ưu tiên thay đổi từ branch hiện tại (main)

Ví dụ 9: Rebase onto

Chuyển một chuỗi commit từ một branch sang một branch khác.

# Giả sử bạn có cấu trúc: main <- base <- feature
git rebase --onto main base feature

# Điều này sẽ chuyển các commit từ base đến feature lên main

Ví dụ 10: Merge với subtree

Merge một project khác vào project hiện tại như một subdirectory.

git remote add project-b <url-to-project-b>
git fetch project-b
git checkout -b project-b-branch project-b/main
git checkout main
git merge --allow-unrelated-histories --squash -s subtree --no-commit project-b-branch
git commit -m "Merge Project B as a subdirectory"

Những ví dụ này bao gồm các tình huống từ cơ bản đến nâng cao trong việc merge và rebase code giữa các branch. Khi thực hành, hãy nhớ rằng rebase có thể thay đổi lịch sử commit, vì vậy cần cẩn thận khi sử dụng nó trên các branch đã được push lên remote repository. Luôn đảm bảo bạn hiểu rõ những gì mình đang làm và có backup nếu cần thiết.

Khái niệm Repository trong Git

Khái niệm Repository trong Git

27.09.2024
Author: ADMIN

Ở bài này, tôi sẽ giải thích chi tiết và sâu hơn về khái niệm repository trong Git.

Repository trong Git

Repository (thường được gọi tắt là “repo”) là một cấu trúc dữ liệu chứa toàn bộ lịch sử của dự án, bao gồm tất cả các phiên bản của mọi file và thư mục. Đây là thành phần cốt lõi của Git, nơi mà tất cả các thao tác quản lý phiên bản diễn ra.

Các loại Repository

  1. Local Repository: Được lưu trữ trên máy tính cá nhân của bạn.
  2. Remote Repository: Được lưu trữ trên một server từ xa, thường là các dịch vụ như GitHub, GitLab, hoặc Bitbucket.
  3. Bare Repository: Một loại repository đặc biệt không có working directory, thường được sử dụng làm central repository trên server.

Cấu trúc của một Repository

Một Git repository bao gồm hai phần chính:

  1. Working Directory: Nơi bạn thực hiện các thay đổi trên file.
  2. Git Directory (.git): Nơi Git lưu trữ metadata và object database của dự án.

Chi tiết về Git Directory (.git)

.git/
├── HEAD
├── config
├── description
├── hooks/
├── info/
├── objects/
├── refs/
  • objects/: Lưu trữ tất cả nội dung của database.
  • refs/: Lưu trữ các con trỏ đến các commit objects (branches, tags, remotes).
  • HEAD: Con trỏ đến branch hiện tại.
  • config: File cấu hình cụ thể cho repository.
  • description: Chỉ sử dụng bởi GitWeb, mô tả repository.
  • hooks/: Chứa các script hook.
  • info/: Chứa các file cấu hình global.

Cách Git lưu trữ dữ liệu trong Repository

Git sử dụng mô hình lưu trữ dựa trên content-addressable filesystem. Điều này có nghĩa là cốt lõi của Git là một key-value data store đơn giản.

  1. Blob (Binary Large Object): Đại diện cho nội dung của một file.
  2. Tree: Đại diện cho một thư mục, chứa references đến blobs và trees khác.
  3. Commit: Đại diện cho một trạng thái cụ thể của repository tại một thời điểm.

Mỗi object được lưu trữ với một key là hash SHA-1 của nội dung và header của nó.

Các trạng thái của file trong Repository

  1. Untracked: File chưa được Git theo dõi.
  2. Tracked: File đã được Git theo dõi.
    • Unmodified: File không có thay đổi so với commit gần nhất.
    • Modified: File đã được sửa đổi nhưng chưa được staged.
    • Staged: File đã được đánh dấu để commit trong lần tiếp theo.

Làm việc với Repository

  1. Khởi tạo Repository:

    git init
    
  2. Clone một Repository:

    git clone <url>
    
  3. Thêm file vào Staging Area:

    git add <file>
    
  4. Commit các thay đổi:

    git commit -m "Commit message"
    
  5. Kiểm tra trạng thái Repository:

    git status
    
  6. Xem lịch sử commit:

    git log
    

Branching và Merging trong Repository

Branches cho phép bạn phát triển các tính năng cách ly với nhau. Khi một tính năng hoàn thành, nó có thể được merge vào branch chính.

  1. Tạo branch mới:

    git branch <branch-name>
    
  2. Chuyển đổi giữa các branch:

    git checkout <branch-name>
    
  3. Merge branch:

    git merge <branch-name>
    

Remote Repository

Remote repositories cho phép nhiều người cùng làm việc trên một dự án.

  1. Thêm remote:

    git remote add <name> <url>
    
  2. Fetch từ remote:

    git fetch <remote>
    
  3. Pull từ remote:

    git pull <remote> <branch>
    
  4. Push lên remote:

    git push <remote> <branch>
    

Tầm quan trọng của Repository

Repository là trung tâm của Git, cho phép:

  • Theo dõi lịch sử thay đổi
  • Hỗ trợ làm việc song song thông qua branching
  • Tạo điều kiện cho việc hợp tác thông qua remote repositories
  • Cung cấp khả năng rollback và recovery

Hiểu sâu về cách Git repository hoạt động sẽ giúp bạn sử dụng Git hiệu quả hơn và giải quyết các vấn đề phức tạp trong quản lý mã nguồn.

Ví dụ

Tôi sẽ cung cấp một số ví dụ cụ thể về cách sử dụng Git repository trong các tình huống thực tế. Những ví dụ này sẽ giúp bạn hiểu rõ hơn về cách Git repository hoạt động và cách sử dụng nó trong quy trình phát triển phần mềm.

Ví dụ 1: Khởi tạo và làm việc với Local Repository

Giả sử bạn đang bắt đầu một dự án mới có tên là “my-awesome-project”.

# Tạo thư mục dự án
mkdir my-awesome-project
cd my-awesome-project

# Khởi tạo Git repository
git init
# Tại điểm này, chưa có file nào trong repository

# Tạo file README.md
echo "# My Awesome Project" > README.md
# Trạng thái: README.md là Untracked

# Kiểm tra trạng thái
git status
# Sẽ hiển thị README.md là Untracked

# Thêm file vào staging area
git add README.md
# Trạng thái: README.md chuyển từ Untracked sang Staged

# Commit thay đổi
git commit -m "Initial commit: Add README"
# Trạng thái: README.md chuyển từ Staged sang Unmodified (Tracked)

# Tạo branch mới cho tính năng
git branch feature-login

# Chuyển sang branch mới
git checkout feature-login

# Tạo file mới cho tính năng đăng nhập
echo "function login() { /* TODO */ }" > login.js
# Trạng thái: login.js là Untracked

# Thêm và commit file mới
git add login.js
# Trạng thái: login.js chuyển từ Untracked sang Staged
git commit -m "Add basic login function"
# Trạng thái: login.js chuyển từ Staged sang Unmodified (Tracked)

Ví dụ 2: Làm việc với Remote Repository

Giả sử bạn muốn chia sẻ dự án của mình trên GitHub.

# Thêm remote repository
git remote add origin https://github.com/username/my-awesome-project.git
# Không ảnh hưởng đến trạng thái của file

# Push code lên GitHub
git push -u origin main
# Không thay đổi trạng thái local, nhưng đồng bộ hóa với remote

# Giả sử có người khác đã thêm một file mới trên GitHub

# Lấy các thay đổi mới nhất từ remote
git fetch origin
# Không thay đổi trạng thái file local

# Merge các thay đổi vào branch local
git merge origin/main
# Nếu có file mới, nó sẽ ở trạng thái Unmodified (Tracked)

# Tạo một thay đổi mới
echo "New feature idea" >> ideas.txt
# Trạng thái: ideas.txt là Untracked

# Thêm, commit và push thay đổi
git add ideas.txt
# Trạng thái: ideas.txt chuyển từ Untracked sang Staged
git commit -m "Add new feature idea"
# Trạng thái: ideas.txt chuyển từ Staged sang Unmodified (Tracked)
git push origin main
# Không thay đổi trạng thái local, nhưng đồng bộ hóa với remote

Ví dụ 3: Xử lý Conflicts

Giả sử bạn và đồng nghiệp cùng chỉnh sửa một file.

# Bạn chỉnh sửa file README.md trên branch của mình
echo "## New Section" >> README.md
# Trạng thái: README.md chuyển từ Unmodified sang Modified
git add README.md
# Trạng thái: README.md chuyển từ Modified sang Staged
git commit -m "Add new section to README"
# Trạng thái: README.md chuyển từ Staged sang Unmodified

# Đồng thời, đồng nghiệp của bạn cũng chỉnh sửa README.md và push lên remote

# Khi bạn cố gắng push, sẽ xảy ra conflict
git push origin main
# (Lỗi: rejected - remote contains work that you do not have locally)

# Pull các thay đổi về
git pull origin main
# Trạng thái: README.md chuyển sang Modified với conflict markers

# Git sẽ báo conflict. Mở file README.md và sửa conflict
# Trong quá trình sửa, README.md vẫn ở trạng thái Modified

# Sau khi sửa xong, add và commit
git add README.md
# Trạng thái: README.md chuyển từ Modified sang Staged
git commit -m "Merge changes and resolve conflicts in README"
# Trạng thái: README.md chuyển từ Staged sang Unmodified

# Cuối cùng, push lên remote
git push origin main
# Không thay đổi trạng thái local, nhưng đồng bộ hóa với remote

Ví dụ 4: Sử dụng Git Stash

Giả sử bạn đang làm việc trên một tính năng nhưng cần chuyển sang fix một bug gấp.

# Đang làm việc trên tính năng mới
echo "New feature code" >> feature.js
# Trạng thái: feature.js chuyển từ Unmodified (hoặc Untracked nếu là file mới) sang Modified

# Có yêu cầu fix bug gấp, nhưng chưa muốn commit code hiện tại
git stash
# Trạng thái: Tất cả các file Modified và Staged được lưu vào stash và working directory trở về trạng thái sạch (Unmodified)

# Chuyển sang branch main để fix bug
git checkout main

# Fix bug
echo "Bug fix" >> bugfix.js
# Trạng thái: bugfix.js là Untracked
git add bugfix.js
# Trạng thái: bugfix.js chuyển từ Untracked sang Staged
git commit -m "Fix critical bug"
# Trạng thái: bugfix.js chuyển từ Staged sang Unmodified

# Quay lại làm việc trên tính năng
git checkout feature-branch
git stash pop
# Trạng thái: Các file được stash trước đó quay trở lại trạng thái Modified hoặc Staged như trước khi stash

Những ví dụ này minh họa cách Git repository được sử dụng trong các tình huống phát triển phần mềm thực tế, từ việc khởi tạo dự án, làm việc với remote repositories, xử lý conflicts, đến sử dụng các tính năng tiện ích như git stash. Hy vọng những ví dụ này giúp bạn hiểu rõ hơn về cách Git repository hoạt động trong thực tế.

Tổng quan về Git

Tổng quan về Git

27.09.2024
Author: ADMIN

Git là gì?

Git là một hệ thống quản lý phiên bản phân tán (Distributed Version Control System - DVCS) được phát triển bởi Linus Torvalds vào năm 2005. Nó được sử dụng rộng rãi trong phát triển phần mềm để theo dõi các thay đổi trong mã nguồn.

Các khái niệm cơ bản của Git

  1. Repository (Kho chứa): Nơi lưu trữ toàn bộ lịch sử và metadata của dự án.
  2. Commit: Một snapshot của các thay đổi tại một thời điểm cụ thể.
  3. Branch (Nhánh): Một phiên bản độc lập của repository.
  4. Merge: Kết hợp các thay đổi từ các branch khác nhau.
  5. Remote: Phiên bản của repository được lưu trữ trên server.
  6. Clone: Tạo một bản sao local của repository từ remote.
  7. Pull: Lấy và merge các thay đổi từ remote vào local repository.
  8. Push: Đẩy các thay đổi local lên remote repository.

Cấu trúc thư mục .git

Thư mục .git chứa tất cả thông tin cần thiết cho repository của bạn và lịch sử của nó. Dưới đây là cấu trúc và giải thích về các thành phần chính:

.git/
├── HEAD
├── config
├── description
├── hooks/
├── info/
├── objects/
├── refs/

HEAD

File này chứa tham chiếu đến branch hiện tại. Thông thường, nó chứa một tham chiếu như:

ref: refs/heads/main

config

File này chứa cấu hình cụ thể cho repository, bao gồm thông tin về remote repositories, branch tracking, và các cài đặt Git khác.

description

File này được sử dụng bởi GitWeb và thường không được sử dụng.

hooks/

Thư mục này chứa các script hook có thể được kích hoạt tự động khi các sự kiện Git nhất định xảy ra.

info/

Thư mục này chứa file exclude, cho phép bạn chỉ định các file mà Git nên bỏ qua mà không cần thêm chúng vào file .gitignore.

objects/

Đây là nơi Git lưu trữ nội dung của tất cả các file, commit, và tree. Các object được lưu trữ dưới dạng nén và được đặt tên bằng hash SHA-1.

  • blob: Đại diện cho nội dung của một file.
  • tree: Đại diện cho một thư mục, chứa tham chiếu đến các blob và tree khác.
  • commit: Đại diện cho một snapshot cụ thể của repository.

refs/

Thư mục này chứa các tham chiếu đến các commit object. Nó bao gồm:

  • heads/: Chứa các local branch.
  • remotes/: Chứa các remote branch.
  • tags/: Chứa các tag.

Các lệnh Git cơ bản

  1. git init: Khởi tạo một repository mới.
  2. git clone <url>: Tạo bản sao của một remote repository.
  3. git add <file>: Thêm file vào staging area.
  4. git commit -m "message": Tạo một commit mới.
  5. git status: Kiểm tra trạng thái của working directory.
  6. git log: Xem lịch sử commit.
  7. git branch: Liệt kê, tạo hoặc xóa các branch.
  8. git checkout: Chuyển đổi giữa các branch hoặc commit.
  9. git merge: Kết hợp các branch.
  10. git pull: Lấy và merge các thay đổi từ remote.
  11. git push: Đẩy các thay đổi lên remote.

Git là một công cụ mạnh mẽ với nhiều tính năng phức tạp hơn, nhưng những điều trên đã bao gồm các khái niệm và lệnh cơ bản nhất. Khi bạn làm quen với những điều này, bạn có thể tìm hiểu thêm về các tính năng nâng cao như rebasing, cherry-picking, và quản lý submodules.

5 Công Cụ CSS Đáng Kinh Ngạc

5 Công Cụ CSS Đáng Kinh Ngạc

15.09.2024
Author: ADMIN

Trong thế giới phát triển web ngày nay, hiệu quả và tiết kiệm thời gian là những yếu tố quan trọng giúp các nhà phát triển tạo ra các sản phẩm chất lượng cao. Với sự phát triển nhanh chóng của công nghệ, các công cụ CSS đã trở thành trợ thủ đắc lực giúp tối ưu hóa quy trình thiết kế và phát triển giao diện người dùng. Những công cụ này không chỉ giúp bạn tiết kiệm thời gian mà còn mở ra những khả năng sáng tạo không giới hạn. Trong bài viết này, chúng tôi sẽ giới thiệu 5 công cụ CSS đáng kinh ngạc mà bạn nên biết, giúp bạn làm việc hiệu quả hơn và tập trung vào những khía cạnh sáng tạo của dự án. Hãy cùng khám phá cách những công cụ này có thể biến đổi cách bạn làm việc với CSS và nâng cao chất lượng sản phẩm của bạn.

  1. Animated CSS Background
    Với công cụ này, bạn có thể nhanh chóng tạo và tùy chỉnh hình nền CSS động cho trang web của mình. Nó bao gồm tổng cộng ba trình tạo hình nền khác nhau.

  2. Transition Style
    Công cụ này cho phép bạn dễ dàng sao chép các hình ảnh động chuyển tiếp CSS tuyệt vời từ một bộ sưu tập các hiệu ứng cố định. Chỉ cần nhấp vào một ví dụ và mã CSS sẽ tự động được sao chép cho bạn

  3. Fancy Border Radius
    Công cụ này cho phép bạn tạo ra các hình dạng đẹp mắt, thú vị chỉ bằng cách sử dụng thuộc tính border-radius. Chỉ với vài cú nhấp chuột, bạn có thể tạo ra các hình dạng tròn độc đáo và nhận ngay mã CSS
  4. CSS Filters Generator
    Công cụ này cho phép bạn tạo và xem trước các bộ lọc ảnh theo phong cách Instagram thuần CSS. Xem ngay hiệu ứng và sao chép mã CSS để nâng cao hình ảnh trong dự án của bạn.
  5. 10015.io
    Trang web này cho phép người dùng tạo và điều chỉnh các yếu tố giao diện như gradient, box shadows, borders, và nhiều thuộc tính CSS khác thông qua một giao diện đồ họa trực quan.
Tất cả các lệnh Linux

Tất cả các lệnh Linux

15.09.2024
Author: ADMIN

Dưới đây là danh sách các lệnh Linux phổ biến, chia thành các nhóm dựa trên mục đích sử dụng. Tuy nhiên, đây chỉ là một phần nhỏ trong tổng số các lệnh Linux, vì hệ điều hành này rất phong phú và linh hoạt.

  1. Quản lý tệp và thư mục
    Lệnh Chức năng
    ls Liệt kê các tệp và thư mục trong thư mục hiện tại.
    cd Chuyển đến một thư mục khác.
    pwd Hiển thị đường dẫn thư mục hiện tại.
    cp Sao chép tệp hoặc thư mục.
    mv Di chuyển hoặc đổi tên tệp/thư mục.
    rm Xóa tệp hoặc thư mục.
    mkdir Tạo thư mục mới.
    rmdir Xóa thư mục trống.
    touch Tạo tệp rỗng hoặc cập nhật thời gian truy cập tệp.
    find Tìm kiếm tệp/thư mục trong hệ thống.
    locate Tìm nhanh tệp/thư mục bằng cơ sở dữ liệu.
    cat Hiển thị nội dung tệp.
    more Hiển thị nội dung tệp (cuộn từng trang).
    less Hiển thị nội dung tệp với khả năng cuộn lên/xuống.
    head Hiển thị các dòng đầu tiên của tệp.
    tail Hiển thị các dòng cuối cùng của tệp.
  2. Quản lý người dùng và nhóm
    Lệnh Chức năng
    useradd Tạo người dùng mới.
    userdel Xóa người dùng.
    usermod Thay đổi thông tin người dùng.
    passwd Thay đổi mật khẩu người dùng.
    groupadd Tạo nhóm mới.
    groupdel Xóa nhóm.
    groups Hiển thị các nhóm mà người dùng thuộc về.
    whoami Hiển thị tên người dùng hiện tại.
    su Đổi sang người dùng khác.
    sudo Thực hiện lệnh với quyền quản trị.
  3. Quản lý tệp nén và lưu trữ
    Lệnh Chức năng
    tar Tạo và giải nén các tệp .tar.
    gzip Nén hoặc giải nén các tệp .gz.
    unzip Giải nén các tệp .zip.
    zip Nén các tệp vào định dạng .zip.
    bzip2 Nén hoặc giải nén các tệp .bz2.
  4. Quản lý tiến trình
    Lệnh Chức năng
    ps Hiển thị các tiến trình đang chạy.
    top Hiển thị danh sách các tiến trình theo thời gian thực.
    htop Phiên bản nâng cấp của top (cần cài đặt).
    kill Kết thúc một tiến trình theo ID.
    killall Kết thúc tất cả tiến trình theo tên.
    bg Chạy tiến trình ở chế độ nền.
    fg Đưa tiến trình chạy nền trở về chế độ foreground.
  5. Quản lý quyền và tệp
    Lệnh Chức năng
    chmod Thay đổi quyền truy cập tệp/thư mục.
    chown Thay đổi chủ sở hữu tệp/thư mục.
    chgrp Thay đổi nhóm sở hữu của tệp/thư mục.
    umask Đặt quyền mặc định cho tệp/thư mục mới tạo.
  6. Quản lý mạng
    Lệnh Chức năng
    ping Kiểm tra kết nối mạng đến một máy chủ cụ thể.
    ifconfig Hiển thị hoặc cấu hình giao diện mạng (được thay thế bằng ip).
    ip Cấu hình các thông số mạng như IP, gateway, etc.
    netstat Hiển thị thông tin mạng, kết nối hiện tại, và trạng thái cổng.
    ss Thay thế netstat, cung cấp thông tin chi tiết về kết nối mạng.
    curl Gửi yêu cầu HTTP, tải về hoặc tải lên tệp từ máy chủ.
    wget Tải tệp từ máy chủ thông qua giao thức HTTP, FTP.
    scp Sao chép tệp từ máy chủ từ xa thông qua SSH.
    ssh Kết nối tới máy chủ từ xa qua giao thức SSH.
  7. Quản lý đĩa và hệ thống tệp
    Lệnh Chức năng
    df Hiển thị dung lượng ổ đĩa đã sử dụng.
    du Hiển thị dung lượng thư mục hoặc tệp đang sử dụng.
    mount Gắn kết hệ thống tệp vào hệ thống.
    umount Tháo hệ thống tệp khỏi hệ thống.
    fdisk Quản lý phân vùng ổ đĩa.
    mkfs Tạo hệ thống tệp mới trên một phân vùng.
    fsck Kiểm tra và sửa chữa lỗi hệ thống tệp.
  8. Hệ thống và thông tin hệ thống
    Lệnh Chức năng
    uname Hiển thị thông tin về hệ điều hành.
    uptime Hiển thị thời gian hệ thống đã hoạt động.
    dmesg Hiển thị tin nhắn hệ thống từ kernel.
    who Hiển thị người dùng hiện đang đăng nhập.
    last Hiển thị lịch sử đăng nhập của người dùng.
    hostname Hiển thị hoặc đặt tên máy chủ.
    shutdown Tắt hệ thống.
    reboot Khởi động lại hệ thống.
    date Hiển thị hoặc đặt ngày và giờ hệ thống.
    history Hiển thị lịch sử các lệnh đã sử dụng.
    alias Tạo bí danh (shortcut) cho các lệnh.
    uname Hiển thị thông tin hệ thống (kernel, kiến trúc).
  9. Quản lý phần mềm
    Lệnh Chức năng
    apt-get Quản lý gói phần mềm trên hệ thống Debian/Ubuntu.
    yum Quản lý gói phần mềm trên hệ thống CentOS/Fedora.
    dnf Thay thế cho yum trong các hệ thống mới hơn của Red Hat.
    pacman Quản lý gói phần mềm trên hệ thống Arch Linux.
    snap Quản lý các ứng dụng snap (Ubuntu).
    dpkg Quản lý các gói phần mềm trên Debian/Ubuntu.
  10. Các lệnh tiện ích khác
    Lệnh Chức năng
    echo In chuỗi ký tự ra màn hình.
    clear Xóa màn hình terminal.
    man Hiển thị tài liệu hướng dẫn (manual) của lệnh.
    env Hiển thị các biến môi trường.
    export Đặt biến môi trường.
    xargs Chuyển đầu vào thành đối số cho một lệnh khác.
    grep Tìm kiếm chuỗi ký tự trong tệp hoặc đầu ra của lệnh.
    awk Xử lý và phân tích các tệp văn bản.
    sed Biên tập văn bản trực tiếp từ dòng lệnh.
    tee Đọc dữ liệu từ đầu vào và ghi ra tệp cũng như đầu ra chuẩn.

Đây chỉ là một phần nhỏ trong số hàng ngàn lệnh có sẵn trên Linux. Tuy nhiên, những lệnh trên sẽ giúp bạn thực hiện hầu hết các tác vụ cơ bản và quản trị trên hệ thống Linux.