Macld DevOps,Linux,System Bài 1: Cơ Bản Bash Script

Bài 1: Cơ Bản Bash Script

Bài 1: Cơ Bản Bash Script – Hiểu và Viết Script Đầu Tiên trong DevOps

Bash Là Gì?

Bash (Bourne Again Shell) là một shell phổ biến trên Linux/Unix, vừa là nơi bạn gõ lệnh, vừa là ngôn ngữ script để tự động hóa.

  • Shell: Giao diện giữa bạn và hệ điều hành (VD: lscdrm).
  • Script: Tập hợp lệnh trong file để chạy tự động, tiết kiệm thời gian.

Ví dụ: Thay vì gõ df -h mỗi lần kiểm tra disk, ta có thể viết script để nó tự in kết quả – đơn giản nhưng hiệu quả.

Tại Sao Bash Quan Trọng trong DevOps?

  • Tự động hóa: Từ việc nhỏ như kiểm tra log đến lớn như deploy ứng dụng.
  • Nhẹ và nhanh: Không cần ngôn ngữ phức tạp như Python cho task cơ bản.
  • Tích hợp: Hầu hết tool DevOps (Docker, Git, CI/CD) đều hỗ trợ Bash.

Thực tế: Tôi dùng Bash để kiểm tra CPU server mỗi 5 phút, phát hiện vấn đề sớm hơn cả monitoring tool

Bắt Đầu với Bash Script

Viết Script Đầu Tiên

Viết script đơn giản nhất – in lời chào:

Tạo file hello.sh:

#!/bin/bash
echo "Hello World!"

Chạy script:

chmod +x hello.sh
./hello.sh
    • Kết quả: “Hello World!”.
  • #!/bin/bash: Shebang, bảo Bash chạy script này.
  • chmod +x: Cấp quyền thực thi.
  • ./hello.sh: Chạy file.

Biến trong Bash (Variables)

Biến dùng để lưu giá trị để dùng lại – cực kỳ hữu ích.

  • Khai báo và in:
    NAME="DevOps"
    echo "Xin chào, $NAME!"
    • Kết quả: “Xin chào, DevOps!”.
  • Biến môi trường:
    echo "User hiện tại: $USER"
    echo "Thư mục home: $HOME"
  • Gán lệnh vào biến:
    DATE=$(date)
    echo "Hôm nay là: $DATE"

Tips: Không có khoảng trắng quanh = khi gán biến (VD: NAME="DevOps", không phải NAME = "DevOps").

DevOps/System: Biến giúp lưu config như IP server, đường dẫn file – bạn sẽ thấy sức mạnh khi tích hợp CI/CD sau này.

Lệnh Cơ Bản Bash

echo: In ra màn hình.

echo "Dung lượng disk: $(df -h / | tail -1)"

$(...): Command substitution, chạy lệnh và lấy output.

read: Lấy input từ user.

read -p "Input your name!: " NAME
echo "Chào $NAME, welcome to DevOps!"

cat, ls, pwd: Lệnh Linux cơ bản.

cat /etc/hostname  # view hostname
ls /data           # Xem danh sách các file trong thư mục data
pwd                # print current folder

Thực tế: Tôi thường dùng echo kết hợp $(date) để thêm timestamp vào log – đơn giản mà hiệu quả.

Practice: Script Kiểm Tra Hệ Thống

Script Đầu Tiên Thực Tế

Tạo check_system.sh để kiểm tra thông tin hệ thống:

#!/bin/bash

# Information storage variable
HOST=$(hostname)
DISK=$(df -h / | tail -1 | awk '{print $5}')  # Lấy % disk usage
CPU=$(top -bn1 | grep "Cpu(s)" | awk '{print $2}')  # Lấy % CPU

# Print result
echo "Hostname: $HOST"
echo "Disk usage: $DISK"
echo "CPU usage: $CPU%"

Chạy và Test

chmod +x check_system.sh
./check_system.sh
  • Kết quả mẫu:
    root@ip-172-31-15-92:~# ./check-system.sh
    Hostname: ip-172-31-15-92
    Disk usage: 12%
    CPU usage: 0.0%

Giải thích:

  • hostname: Lấy tên máy.
  • df -h | tail -1: Lấy dòng cuối (root filesystem).
  • awk '{print $5}': Trích cột % usage.
  • top -bn1: Chạy 1 lần để lấy CPU.

DevOps: Script này là khởi đầu để bạn tự động kiểm tra server – thêm cron (bài 8) để chạy định kỳ.

Debug Cơ Bản

  • Nếu lỗi:
    bash -x check_system.sh
    • -x: In từng lệnh khi chạy, giúp dễ dàng debug
  • Kiểm tra cú pháp:
    bash -n check_system.sh
    • -n: Không chạy script, chỉ check lỗi cú pháp.

Thực tế: Tôi từng quên $ trước biến, -x giúp tôi phát hiện ngay trong 10 giây.

Ứng Dụng trong System/DevOps

Tự Động Hóa Nhỏ

  • Script kiểm tra disk:
    DISK=$(df -h / | tail -1 | awk '{print $5}' | cut -d'%' -f1)
    echo "Disk usage: $DISK%"

Chuẩn Bị cho Pipeline

  • Lưu output vào file:
    ./check_system.sh > system_status.txt
  • Dùng trong CI/CD để báo cáo trạng thái server trước deploy.

Case study: Một team dùng script tương tự để kiểm tra disk trước backup, tránh lỗi do đầy dung lượng.

Best Practice

  • Luôn bắt đầu bằng #!/bin/bash.
  • Dùng biến thay giá trị cứng (VD: $HOST thay vì “my-server”).
  • Comment rõ ràng để team đọc hiểu.

Kết Luận

Cơ Bản Bash Script trong System/DevOps là nền tảng để bạn bắt đầu tự động hóa với biến Bashlệnh cơ bản Bash, và script đơn giản. Thực hành với check_system.sh cho thấy Bash dễ học mà mạnh mẽ – chỉ cần vài dòng đã giải quyết được việc lặp lại. Bài tiếp theo, chúng ta sẽ khám phá Điều Kiện trong Bash – cách thêm logic để script thông minh hơn. Bạn đã sẵn sàng chưa?

Điều hướng chuỗi bài viết

>> Bài 2. Điều Kiện trong Bash DevOps: Xử Lý Logic Cơ Bản

Leave a Reply

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *