Dành cho hệ thống có giao diện đồ họa (x11):
xprintidle
(Một công cụ đo thời gian nhàn rỗi, đơn vị tính bằng milliseconds)
if [ $(xprintidle) -gt 1800000 ]; then
shutdown -h now
fi
5. Đây là một script hoàn chỉnh tự động tắt máy khi CPU thấp và không có người dùng đăng nhập — thường dùng cho các server nhàn rỗi hoặc máy dùng tạm thời.
Mục tiêu:
Kiểm tra nếu không có ai đăng nhập
Kiểm tra nếu CPU rảnh > 95%
Nếu cả hai đúng → tắt máy
Script: auto_shutdown_idle.sh
#!/bin/bash
# --- Cấu hình ---
CPU_IDLE_THRESHOLD=95
# Kiểm tra số người đang đăng nhập (trừ user "root" nếu muốn)
users_logged_in=$(who | wc -l)
# Kiểm tra % CPU rảnh trung bình trong 1 giây (yêu cầu gói sysstat, dùng mpstat)
cpu_idle=$(mpstat 1 1 | awk '/Average:/ { print $12 }' | cut -d'.' -f1)
# Ghi log
echo "$(date): CPU idle: $cpu_idle%, người dùng: $users_logged_in" >> /var/log/auto_shutdown.log
# Điều kiện tắt máy
if [ "$users_logged_in" -eq 0 ] && [ "$cpu_idle" -ge "$CPU_IDLE_THRESHOLD" ]; then
echo "$(date): Thỏa điều kiện → Tắt máy!" >> /var/log/auto_shutdown.log
shutdown -h now
else
echo "$(date): Không thỏa điều kiện, không tắt." >> /var/log/auto_shutdown.log
fi
Cách cài đặt:
Lưu file script:
sudo nano /usr/local/bin/auto_shutdown_idle.sh
→ Dán nội dung vào
Cấp quyền chạy:
sudo chmod +x /usr/local/bin/auto_shutdown_idle.sh
Tạo cron chạy mỗi 15 phút:
sudo crontab -e
→ Thêm dòng:
*/15 * * * * /usr/local/bin/auto_shutdown_idle.sh
Kiểm tra:
Cài sysstat nếu chưa có:
sudo apt install sysstat
Xem log tắt máy:
cat /var/log/auto_shutdown.log
6. Phiên bản nâng cao của script tắt máy tự động, đã thêm:
Kiểm tra CPU rảnh
Kiểm tra không có người dùng đăng nhập
Kiểm tra pin yếu (<20%)
Gửi email cảnh báo trước khi tắt
Yêu cầu hệ thống:
Cài sysstat (để dùng mpstat):
sudo apt install sysstat
Cài mailutils (để gửi email):
sudo apt install mailutils
Đảm bảo mail hoạt động với cấu hình SMTP hoặc sendmail/local mail.
Script: auto_shutdown_advanced.sh
#!/bin/bash
# --- Cấu hình ---
CPU_IDLE_THRESHOLD=95
BATTERY_THRESHOLD=20
EMAIL_TO="you@example.com" # ← Địa chỉ nhận cảnh báo
EMAIL_SUBJECT="CẢNH BÁO: Máy tính sắp tắt do không hoạt động"
EMAIL_BODY="Hệ thống sẽ tự động tắt do không có người dùng, CPU rảnh và pin yếu."
LOGFILE="/var/log/auto_shutdown.log"
# --- Kiểm tra số người dùng đang đăng nhập ---
users_logged_in=$(who | wc -l)
# --- Kiểm tra CPU rảnh ---
cpu_idle=$(mpstat 1 1 | awk '/Average:/ { print $12 }' | cut -d'.' -f1)
# --- Kiểm tra phần trăm pin ---
battery_level=$(upower -i $(upower -e | grep battery) | grep percentage | awk '{print $2}' | tr -d '%')
# --- Ghi log ---
echo "$(date): CPU idle: $cpu_idle%, Users: $users_logged_in, Battery: ${battery_level}%" >> "$LOGFILE"
# --- Kiểm tra điều kiện ---
if [ "$users_logged_in" -eq 0 ] && [ "$cpu_idle" -ge "$CPU_IDLE_THRESHOLD" ] && [ "$battery_level" -le "$BATTERY_THRESHOLD" ]; then
echo "$(date): Gửi email cảnh báo đến $EMAIL_TO" >> "$LOGFILE"
echo "$EMAIL_BODY" | mail -s "$EMAIL_SUBJECT" "$EMAIL_TO"
echo "$(date): Thỏa điều kiện — TẮT MÁY" >> "$LOGFILE"
shutdown -h now
else
echo "$(date): Không thỏa điều kiện, không tắt máy." >> "$LOGFILE"
fi
Thiết lập chạy định kỳ:
sudo chmod +x /usr/local/bin/auto_shutdown_advanced.sh
sudo crontab -e
→ Thêm dòng cron:
*/15 * * * * /usr/local/bin/auto_shutdown_advanced.sh
» Tin mới nhất:
» Các tin khác: