(+84) 236.3827111 ex. 402

Unix/Linux: Auto Shutdown (1)


Bài viết này giới thiệu 1 số tình huống viết Shell Scripts để tắt máy UNIX/Linux theo 1 số tình huống cụ thể.

1. Tắt máy định kỳ vào giờ nhất định mỗi ngày

Bạn có thể dùng cron và tạo một script như sau:

File: auto_shutdown.sh

#!/bin/bash

echo "Tắt máy vào $(date)" >> /var/log/auto_shutdown.log

shutdown -h now

Thiết lập cron:

Để tắt máy mỗi ngày lúc 23:00, dùng lệnh:

crontab -e

Và thêm dòng:

0 23 * * * /path/to/auto_shutdown.sh

2. Tắt máy nếu không có người dùng đăng nhập

File: shutdown_if_idle.sh

#!/bin/bash

# Kiểm tra số lượng người dùng đang đăng nhập

users_logged_in=$(who | wc -l)

if [ "$users_logged_in" -eq 0 ]; then

echo "$(date): Không có người dùng nào, tắt máy..." >> /var/log/auto_shutdown.log

shutdown -h now

else

echo "$(date): Có $users_logged_in người dùng, không tắt máy." >> /var/log/auto_shutdown.log

fi

Chạy script này mỗi 15 phút bằng cron:

*/15 * * * * /path/to/shutdown_if_idle.sh

3. Tắt máy nếu CPU < 5% trong 15 phút (hệ thống rảnh)

Yêu cầu cài đặt mpstat từ gói sysstat:

sudo apt install sysstat

File: shutdown_if_idle_cpu.sh

#!/bin/bash

# Kiểm tra mức sử dụng CPU trung bình trong 1 giây

cpu_idle=$(mpstat 1 1 | awk '/Average:/ { print $12 }' | cut -d'.' -f1)

if [ "$cpu_idle" -gt 95 ]; then

echo "$(date): CPU rảnh (idle > 95%), tắt máy..." >> /var/log/auto_shutdown.log

shutdown -h now

else

echo "$(date): CPU đang bận, không tắt máy." >> /var/log/auto_shutdown.log

fi