Contents
- 1 Giới thiệu
- 1.1 Tại sao cần viết Bash Script hiển thị thông tin hệ thống Linux?
- 1.2 Bash Script Hiển Thị Thông Tin Hệ Thống Linux
- 1.3 Giải thích các lệnh trong script
- 1.4 Hướng dẫn tạo và chạy script bash
- 1.4.1 1.Tạo file script:
- 1.4.2 2. Dán nội dung script vào file.
- 1.4.3 3. Cấp quyền thực thi cho file:
- 1.4.4 4. Chạy script:
- 1.4.5 Kết quả đầu ra (Output)
- 1.4.6 Tại sao script này cần thiết cho Linux System Admin?
- 1.4.7 Mở rộng script
- 1.4.8 Kết luận
- 1.4.9 Câu hỏi thường gặp (FAQ)
- 1.4.10 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?
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



