灌水王 发表于 2023-4-12 08:54:22

请教一下debian能否怎么实现硬盘无读写操作后10分钟关机?

群晖可以很好的实现硬盘无读写10分钟休眠,休眠10分钟关机

请教一下debian可以实现吗??先谢谢了

灌水王 发表于 2023-4-12 08:54:41

在 Debian 系统中,你可以通过创建一个简单的 shell 脚本和设置 cron 计划任务来实现硬盘在无读写操作 10 分钟后自动关机。以下是具体的操作步骤:

创建一个 shell 脚本,命名为 auto_shutdown.sh,并将其放在 /usr/local/bin/ 目录下:


sudo touch /usr/local/bin/auto_shutdown.sh
sudo chmod +x /usr/local/bin/auto_shutdown.sh
sudo nano /usr/local/bin/auto_shutdown.sh
在 auto_shutdown.sh 脚本中,粘贴以下代码:


#!/bin/bash

# 设置硬盘空闲时间(单位:秒)
IDLE_TIME=$((10*60))

# 获取硬盘设备名,通常是 /dev/sda 或 /dev/nvme0n1 等
DISK_DEVICE="/dev/sda"

# 获取硬盘上次读写的时间
PREV_IO_TIME=$(date +%s)

while true; do
# 获取硬盘当前读写状态
CURRENT_IO=$(awk -v disk_device="$DISK_DEVICE" '$3==disk_device {print $10+$6}' /proc/diskstats)
sleep 5
NEW_IO=$(awk -v disk_device="$DISK_DEVICE" '$3==disk_device {print $10+$6}' /proc/diskstats)

# 检查是否有读写操作
if [ "$NEW_IO" -eq "$CURRENT_IO" ]; then
    # 没有读写操作,检查空闲时间是否超过设置的阈值
    CURRENT_TIME=$(date +%s)
    IDLE_PERIOD=$((CURRENT_TIME - PREV_IO_TIME))

    if [ "$IDLE_PERIOD" -ge "$IDLE_TIME" ]; then
      # 空闲时间超过阈值,关机
      sudo shutdown -h now
      exit 0
    fi
else
    # 有读写操作,重置上次读写时间
    PREV_IO_TIME=$(date +%s)
fi
done
保存并关闭文件。

使用 crontab 在系统启动时运行此脚本。运行以下命令:



crontab -e
在打开的编辑器中,添加以下行:


@reboot /usr/local/bin/auto_shutdown.sh
保存并关闭文件。
现在,每次系统启动时,auto_shutdown.sh 脚本将自动运行。脚本会持续监控硬盘的读写操作,如果连续 10 分钟没有任何读写操作,系统将自动关机。请注意,这种方法可能不适用于所有硬盘和系统配置,可能需要根据实际情况进行调整。

灌水王 发表于 2023-4-12 08:54:56

大佬厉害,我昨天搜索一天都没找到,你怎么这么会搜索

灌水王 发表于 2023-4-12 08:55:19

大佬厉害,我昨天搜索一天都没找到,你怎么这么会搜索

luck 发表于 2023-4-12 08:55:45

这很明显是GPT的杰作嘛.

163824 发表于 2023-4-12 08:55:55

GPT-4这方面还是挺好用的。

灌水王 发表于 2023-4-12 08:56:33

:)
页: [1]
查看完整版本: 请教一下debian能否怎么实现硬盘无读写操作后10分钟关机?