Lập trình, Linux

Hướng dẫn Viết Bash Script Để Hiển Thị Thông Tin Hệ Thống Linux

Giới thiệu

Bash script là một công cụ mạnh mẽ giúp tự động hóa các tác vụ quản trị hệ thống Linux. Một trong những kịch bản hữu ích nhất là hiển thị thông tin hệ thống Linux. Với bài viết này, bạn sẽ học cách tạo một script bash hiển thị các thông tin quan trọng của hệ thống Linux như tên máy chủ, thời gian hoạt động (uptime), dung lượng ổ cứng, thông tin RAM và địa chỉ IP. Bài viết này được viết rất dễ hiểu và đầy đủ.

Tại sao cần viết Bash Script hiển thị thông tin hệ thống Linux?

Việc theo dõi và kiểm tra tình trạng của máy chủ Linux là rất cần thiết đối với các quản trị viên hệ thống (SysAdmin) và DevOps. Việc tự động hóa quy trình này giúp tiết kiệm thời gian và tránh lỗi do thao tác thủ công. Dưới đây là một số lý do chính để tạo bash script hiển thị thông tin hệ thống:

  • Theo dõi trạng thái hệ thống: Biết được thời gian hoạt động (uptime), dung lượng disk, bộ nhớ và tài nguyên CPU.
  • Chủ động xử lý sự cố: Phát hiện sớm các vấn đề như dung lượng disk, bộ nhớ đầy, thiếu tài nguyên.
  • Tự động hóa: Tự động nhận thông tin qua email, để thông báo hoặc công cụ giám sát hệ điều hành.
  • Tiết kiệm thời gian: Thay vì bạn phải chạy nhiều lệnh thủ công, bạn chỉ cần chạy một script để nó hiển thị các thông tin cho bạn.

Bash Script Hiển Thị Thông Tin Hệ Thống Linux

Sau đây là một kịch bản bash được viết đầy đủ, giúp bạn kiểm tra các thông tin quan trọng về hệ thống Linux.

Nội dung của file script: system_info.sh

# Display the currently logged-in user

echo "Current User: $(whoami)"

# Display the operating system name and version

echo "Operating System: $(cat /etc/os-release | grep '^PRETTY_NAME=' | cut -d '=' -f2 | tr -d '\"')"

# Display the system uptime

echo "System Uptime: $(uptime -p)"

# Display the kernel version

echo "Kernel Version: $(uname -r)"

# Display the system architecture

echo "Architecture: $(uname -m)"

# Display the IP address of the system

echo "IP Address: $(hostname -I | awk '{print $1}')"

# Display the total disk space, used space, and available space

echo "Disk Space Information:"

df -h / | awk 'NR==2 {print "Total Size: " $2 ", Used: " $3 ", Available: " $4}'

# Display the total memory, used memory, and available memory

echo "Memory Information:"

free -h | awk 'NR==2 {print "Total: " $2 ", Used: " $3 ", Available: " $4}'

# Display information about the CPU model

echo "CPU Information: $(lscpu | grep 'Model name:' | sed 's/Model name:[ \t]*//')"

# Display a list of users currently logged into the system

echo "Logged-in Users:"

who

echo "Listening Ports:"

ss -tuln | awk '$2 == "LISTEN" {print $1, $2, $4, $5}'

# End of the script

echo "====================================="

echo "       End of System Information     "

echo "====================================="

Giải thích các lệnh trong script

Lệnh

Chức năng

hostname

Hiển thị tên máy chủ (hostname) của hệ thống Linux.

date

Hiển thị ngày và giờ hiện tại.

whoami

Hiển thị tên người dùng hiện tại.

cat /etc/os-release

Hiển thị thông tin phiên bản hệ điều hành.

uptime -p

Hiển thị thời gian hệ thống Linux đã hoạt động.

uname -r

Hiển thị phiên bản của kernel.

hostname -I

Hiển thị địa chỉ IP của hệ thống Linux.

df -h /

Hiển thị dung lượng disk còn trống.

free -h

Hiển thị thông tin bộ nhớ RAM.

who

Hiển thị danh sách người dùng đang đăng nhập (login).

Hướng dẫn tạo và chạy script bash

1.Tạo file script:

nano system_info.sh

2. Dán nội dung script vào file.

3. Cấp quyền thực thi cho file:

chmod +x system_info.sh

4. Chạy script:

./system_info.sh

Kết quả đầu ra (Output)

Sau khi chạy script, bạn sẽ nhận được thông tin của hệ điều hành Linux như sau:

[root@Linuxserver-phuonglh ~]# ./system_info.sh

=====================================

       Linux System Information

=====================================

Hostname: Linuxserver-phuonglh

Current Date and Time: Sun Dec  8 11:29:26 EST 2024

Current User: root

Operating System: CentOS Linux 8 (Core)

System Uptime: up 50 minutes

Kernel Version: 4.18.0-80.el8.x86_64

Architecture: x86_64

IP Address: 192.168.146.131

Disk Space Information:

Total Size: 17G, Used: 4.0G, Available: 14G

Memory Information:

Total: 3.6Gi, Used: 596Mi, Available: 2.5Gi

CPU Information: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz

Logged-in Users:

root     pts/0        2024-12-08 10:40 (192.168.146.1)

=====================================

       End of System Information

=====================================

Tại sao script này cần thiết cho Linux System Admin?

  • Tự động hóa: Tất cả thông tin quan trọng được tập hợp trong một lần chạy script.
  • Tiết kiệm thời gian: Thay vì phải gõ từng lệnh riêng lẻ, bạn chỉ cần một script duy nhất.
  • Giám sát hệ thống: Thông tin về uptime, kernel, memory, và disk rất hữu ích để phát hiện lỗi.
  • Dễ tùy chỉnh: Bạn có thể thêm các lệnh khác để hiển thị thông tin cụ thể khác như thông tin về DNS, bộ nhớ swap, v.v.

Mở rộng script

  • Gửi thông tin qua email:

./system_info.sh | mail -s “Báo cáo hệ thống Linux” your-email@example.com

  • Ghi thông tin vào file log:

./system_info.sh >> system_report.log

Kết luận

Bài viết này đã hướng dẫn chi tiết cách tạo Bash Script hiển thị thông tin hệ thống Linux một cách đầy đủ và dễ hiểu. Script này có thể được sử dụng để kiểm tra các thông tin quan trọng của hệ thống Linux như hostname, kernel, địa chỉ IP, dung lượng disk và bộ nhớ RAM. Với cách làm này, bạn sẽ tiết kiệm thời gian và tự động hóa việc giám sát máy chủ của bạn.

Câu hỏi thường gặp (FAQ)

1. Làm thế nào để thêm thông tin về các cổng (ports) đang mở (open) trong Linux vào script?

Bạn có thể thêm lệnh sau vào script:

echo “$(ss -tulwn | grep LISTEN)”

2. Tôi có thể chạy script này tự động hàng ngày không?

Có, bạn có thể sử dụng cron job. Thêm dòng sau vào crontab:

0 8 * * * /path/to/system_info.sh >> /var/log/system_info.log

Dòng này sẽ chạy script mỗi ngày vào lúc 08:00 sáng và ghi kết quả vào file /var/log/system_info.log

 

Để lại một bình luận

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 *