HƯỚNG DẪN THÊM CRON CHẠY HÀNG TUẦN GỬI BÁO CÁO DISK USAGE QUA EMAIL TRÊN UBUNTU
I. Mục tiêu
- Tự động kiểm tra dung lượng ổ đĩa trên Ubuntu Server để đảm bảo hệ thống hoạt động ổn định.
- Gửi báo cáo disk usage qua email nhằm giúp người quản trị theo dõi tình trạng lưu trữ kịp thời.
- Thiết lập cron chạy định kỳ (hàng tuần) để tiết kiệm thời gian và công sức quản lý.
II. Chuẩn bị
- Một máy chủ Ubuntu Server.
- Quyền root hoặc sudo.
- Một tài khoản email có hỗ trợ SMTP (ví dụ: Gmail SMTP với App Password).
- Các gói cần thiết:
msmtpmsmtp-mtamailutilscron
Cài đặt các gói:
sudo apt update
sudo apt install -y msmtp msmtp-mta mailutils ca-certificates
III. Cài đặt & cấu hình gửi email
1. Cấu hình SMTP (ví dụ Gmail)
Chỉnh sửa file cấu hình msmtp:
sudo nano /etc/msmtprc
Nội dung mẫu:
defaults
auth on
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
logfile /var/log/msmtp.log
account gmail
host smtp.gmail.com
port 587
from your_email@gmail.com
user your_email@gmail.com
password APP_PASSWORD_GMAIL
account default : gmail
⚠️ Lưu ý: sử dụng App Password, không dùng mật khẩu Gmail thông thường.
Thiết lập quyền:
sudo chmod 600 /etc/msmtprc
sudo chown root:root /etc/msmtprc
2. Kiểm tra gửi mail thủ công
echo "Test email from Ubuntu" | mail -s "TEST SMTP" your_email@gmail.com
Nếu nhận được email → cấu hình SMTP thành công.
IV. Tạo script kiểm tra disk usage
Tạo script:
sudo nano /usr/local/bin/disk_report.sh
Nội dung script:
#!/bin/bash
echo "Disk Usage Report"
echo "Server: $(hostname)"
echo "Time: $(date '+%Y-%m-%d %H:%M:%S')"
echo "----------------------------"
df -h
Cấp quyền thực thi:
sudo chmod +x /usr/local/bin/disk_report.sh
Kiểm tra script chạy độc lập:
/usr/local/bin/disk_report.sh
V. Gửi báo cáo disk qua email
⚠️ Bắt buộc sử dụng pipe (|) để giữ định dạng nhiều dòng
/usr/local/bin/disk_report.sh | mail -s "Disk Usage - $(hostname)" your_email@gmail.com
Kiểm tra email để đảm bảo:
- Nội dung hiển thị đúng từng dòng
- Thông tin hostname, thời gian, disk usage chính xác
VI. Thiết lập cron chạy định kỳ
Mở cron của user root:
sudo crontab -e
Chọn editor nano nếu được hỏi.
Ví dụ: chạy hàng tuần – Chủ nhật lúc 08:00
0 8 * * 0 /usr/local/bin/disk_report.sh | mail -s "Weekly Disk Usage - $(hostname)" your_email@gmail.com
Lưu file và thoát.
Kiểm tra cron:
sudo crontab -l
VII. Kiểm tra & xác nhận hoạt động
- Kiểm tra cron đã được tạo:
sudo crontab -l
- Theo dõi log cron:
grep CRON /var/log/syslog
- Chờ đến thời điểm cron chạy và xác nhận email được gửi đúng lịch.
VIII. Kết quả đạt được
Sau khi hoàn tất các bước trên, hệ thống sẽ:
- Tự động kiểm tra dung lượng ổ đĩa trên Ubuntu Server.
- Gửi báo cáo disk usage qua email theo lịch hàng tuần.
- Giúp người quản trị chủ động theo dõi và xử lý sớm các vấn đề về lưu trữ.
Giải pháp này đơn giản, ổn định, dễ áp dụng cho nhiều server và có thể mở rộng thêm (alert khi disk > 80%, thêm CPU/RAM, thay đổi lịch cron…).


