收起左侧

超详细-飞牛设置定时自动关机+远程开机或定时开机

25
回复
13778
查看
[ 复制链接 ]

2

主题

5

回帖

0

牛值

江湖小虾

2025-5-13 18:04:23 显示全部楼层 阅读模式

用飞牛OS有一阵子了,相信也一定有小伙伴和我一样,有定时关机或远程开机、或定时开机的需要,我把我的方法与大家分享。对于NAS这块我也是小白,老鸟请略过。各位有更好的方法,欢迎指导。

先说思路:
1、实现定时关机,用1pane里的计划任务可以实现。
2、远程开机或自动开机,我用的小米智能插座实现,可以在米家手机远程开机,或设定时间自动开机。
3、有一个问题需要注意,飞牛自动关机后,米家插座是不会断 电的,这样我们开机的时候就得先执行关闭再执行打开,如果设置定时间先关闭再打开,那么万一基于未知原因飞牛没有执行关机,那就相当于直接停电,对飞牛影响很大,所以为了解决这个问题,我们还要设置一下小米插座的充电保护功能,就是小米插座检测到使用功率低于3W并持续两分种这两种条件时,自动关闭,这样就完美解决上述问题 。

基于上面的思路,我们实操。

一、定时关机
1、打开应用中心,左侧点击开发工具栏,找到1panel这个应用,点击安装。

1、安装1panel.png

2、安装过程中,需要设置应用位置,自行选择既可。

2、确定安装位置.png

3、初始化**密码:安全入口随意设,用户名密码自己设置,设置完成后要记住,后面进入1panel的时候要用到。

3、设置1PANEL.png

4、完成安装。

4、安装完成.png

5、完成安装后,打开应用中心,点左侧已安装,找到1Panel,并点击打开。

5、打开1PANEL.png

6、初次打开,安全入口是错误的,需要我们手动修改.

6、打开1panel面板2.png

7、1Panel默认端口是18090,在18090/这个斜杠后面,要填写或修改入口为你刚刚设置的安全入口内容,像我刚才设置的就是guanji,更改后点回车就进入登陆页面了。

7、改安全入口.png

8、输入刚刚初始设置的**密码,登陆到1panel。

8、登录1PANEL.png

9、进入1panel界面后,点击左侧的计划任务,然后在右边选择创建计划任务。

9、创建计划任务.png

10、在弹出的创建卡片里,任务类型选shell脚本,任务名称随意设置,执行周期选每天,然后在后面设置执行的时间。最重要的是脚本内容里面填写个关机命令:sudo shutdown -h now 这段可以复制,粘贴到你的脚本内容里。保留份数默认就可以。设置完成后点确定。

10、设置自动关机.png

11、这时,计划任务里就有自动关机的任务了,可以点执行测试一下,但需要注意,点执行飞牛就立即关机了。

11、设置完成.png

至此。自动关机设置完成。

二:自动开机
因为主板的不同,请各位在自行设置自己飞**IOS中的来电开启功能。
友情提示,一般主板开机时可连续点击F2或DEL进入BISO设置,找到advanced power设置(也可能在其它项下),一般在power loss里面可以设置来电启动,以下借用网图。

BIOS1.png

BIOS2.png

BIOS3.png

我使用的是小米的智能插座,所以只能用这个演示。

1、在米家APP中打开用于飞牛的小米插座,找到定时选项,点击打开。

A、打开插座.png

2、在弹出的页面中选定时开启。

B、选择定时开启.png

3、重复选项选每天。

C、重复选项选择每天.png

4、设置好每在开启的时间。

D、设置定时开启时间.png

5、设置好点对号确认。

E、点对号确定.png

6、设置完成,至此,每在早上八点。飞牛会开机。

F,设置完成.png

三、飞牛自动关机后,小米插座没有关闭,远程开机需要先关闭,再打开,或设置定时关闭和定时打开,但我没有这样设置,原因是如果我们临时又打开飞牛,或万一某次飞牛关机任务执行失败,定时关插座就相当于飞牛直接断 电,这样对机器影响很大。我的解决方法见下:

1、打开小米插座界面,点击右上角的三个点。进入到设置界面。

第一步、在小米插座界面点击右上角三个点.png

2、点击充电保护选项

第二步、点击充电保护选项.png

3、设置保护功率3W,持续时间2分钟。这个设置相当于,当这个插座使用设备的功率低于3W,并持续2分钟后,插座自动执行关闭。

第三步,设置.png

至此,小米插座实现了根据设置的条件关闭,完成闭环操作。避免了先关插座再开插座的麻烦,同时也保护了飞牛主机,避免因为操作问题导致的突然断 电。

这是我的使用方式,纯小白操作过程。

收藏
送赞 5
分享

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

1

主题

56

回帖

0

牛值

初出茅庐

2025-5-13 21:27:54 显示全部楼层

支持技术大佬

0

主题

8

回帖

0

牛值

江湖小虾

2025-5-14 09:39:25 显示全部楼层

学习了.

0

主题

4

回帖

0

牛值

江湖小虾

2025-5-14 14:23:27 显示全部楼层

每天开关对硬盘好吗?NAS就应该7x24小时开机。

也有些人对定时关机有要求的,我注意到有好多人问过。  详情 回复
2025-5-14 15:15

2

主题

5

回帖

0

牛值

江湖小虾

2025-5-14 15:15:13 楼主 显示全部楼层
TonyTony 发表于 2025-5-14 14:23
每天开关对硬盘好吗?NAS就应该7x24小时开机。

也有些人对定时关机有要求的,我注意到有好多人问过。

1

主题

93

回帖

0

牛值

初出茅庐

2025-5-14 19:52:30 显示全部楼层

有一个构想,因为路由器里面搭建了lucky进行反代,当访问nas设备经过lucky进行反代时,如果无响应时则检测nas是否开机,没有就自动唤醒开机,而lucky这时反馈回浏览器的信息则让它等待1分钟后刷新,通过一些特定规则判断是否链接使用nas设备,如果没有使用则自动关机!这个可能需要lucky那边支持这种操作!但这种操作我感觉很顶!

这个可以,我之前看到有一篇 通过判断网络状态进行无通信UPS电源关机。 文章 标题是这个 # 网络监控脚本:断网3分钟后自动关闭进程并关机  详情 回复
2025-7-1 06:05
这个就是高端玩法了,我不会。哈哈  详情 回复
2025-5-14 20:02

2

主题

5

回帖

0

牛值

江湖小虾

2025-5-14 20:02:38 楼主 显示全部楼层
流氓丶R 发表于 2025-5-14 19:52
有一个构想,因为路由器里面搭建了lucky进行反代,当访问nas设备经过lucky进行反代时,如果无响应时则检测n ...

这个就是高端玩法了,我不会。哈哈

0

主题

9

回帖

0

牛值

江湖小虾

2025-5-15 08:36:57 显示全部楼层

你的是什么小米插座有这个功能,我的小米插座没有充电保护这个功能。

米家智能插座页面右上角三个点-设置-充电保护-开启。  详情 回复
2025-5-15 15:25

0

主题

1

回帖

0

牛值

江湖小虾

2025-5-15 15:25:14 显示全部楼层
windboying 发表于 2025-5-15 08:36
你的是什么小米插座有这个功能,我的小米插座没有充电保护这个功能。

米家智能插座页面右上角三个点-设置-充电保护-开启。
我的是米家智能插座2,SDK版本为2.1.8_0044, 也没有充电保护这个功能。你的是哪个款?  详情 回复
2025-6-8 22:54

0

主题

1

回帖

0

牛值

江湖小虾

2025-5-15 17:04:02 显示全部楼层
大佬nb.。。。。。。。。。。。

7

主题

32

回帖

0

牛值

初出茅庐

2025-5-19 10:37:46 显示全部楼层

openwrt里设置一下定时发送开机命令即可,不用小米插座.

小白段位的,基本都没有OPENWRT,基本都是旧主机装个飞牛OS。  详情 回复
2025-5-20 18:04

2

主题

5

回帖

0

牛值

江湖小虾

2025-5-20 18:04:07 楼主 显示全部楼层
海峰x 发表于 2025-5-19 10:37
openwrt里设置一下定时发送开机命令即可,不用小米插座.

小白段位的,基本都没有OPENWRT,基本都是旧主机装个飞牛OS。

0

主题

1

回帖

0

牛值

江湖小虾

2025-6-8 22:54:17 显示全部楼层
程峻峰 发表于 2025-5-15 15:25
米家智能插座页面右上角三个点-设置-充电保护-开启。

我的是米家智能插座2,SDK版本为2.1.8_0044,  也没有充电保护这个功能。你的是哪个款?
2代没有,3代才有  详情 回复
2025-7-6 14:31
版本不同就看看有没有别的写法。。有时候只是写法不一样。但功能是一样的  详情 回复
2025-6-12 07:15

0

主题

1

回帖

0

牛值

江湖小虾

2025-6-9 15:11:15 显示全部楼层
就一个电脑远程开机关机卡就解决的问题需要搞这么复杂??某宝13块钱遍地都是。可以手机控制,也可以智能音箱语音控制。有没有成功开机、关机在手机上也能显示出来。
关机卡也可以,但你要插到PCIE上,电源就一直要给主板供电保证PCIE口有电才行  详情 回复
2025-6-12 07:13

2

主题

5

回帖

0

牛值

江湖小虾

2025-6-12 07:13:51 楼主 显示全部楼层
众誉x 发表于 2025-6-9 15:11
就一个电脑远程开机关机卡就解决的问题需要搞这么复杂??某宝13块钱遍地都是。可以手机控制,也可以智能音 ...

关机卡也可以,但你要插到PCIE上,电源就一直要给主板供电保证PCIE口有电才行

2

主题

5

回帖

0

牛值

江湖小虾

2025-6-12 07:15:23 楼主 显示全部楼层
刘鹏飞_rt45R 发表于 2025-6-8 22:54
我的是米家智能插座2,SDK版本为2.1.8_0044,  也没有充电保护这个功能。你的是哪个款? ...

版本不同就看看有没有别的写法。。有时候只是写法不一样。但功能是一样的

0

主题

6

回帖

0

牛值

江湖小虾

2025-6-12 17:37:48 显示全部楼层
太费劲了!小白整不了

5

主题

5

回帖

0

牛值

江湖小虾

2025-6-13 17:18:44 显示全部楼层

我是自己写一个脚本控制(方便控制,避免工作阶段误关机),可以配置工作阶段,工作阶段外的时间并且满足(没有超阈值的网络请求、无SSH、CPU使用率没有超阈值等性能指标项)就会自动检测是否可以关机。 用的也是小米插座,设置条件是当设备功率变为2w时,直接关闭。 第二天早上7点插座自动开启,NAS通电开机。

大佬能不能分享一下你的脚本  详情 回复
2025-11-18 22:57

0

主题

30

回帖

0

牛值

江湖小虾

2025-7-1 06:05:22 显示全部楼层
流氓丶R 发表于 2025-5-14 19:52
有一个构想,因为路由器里面搭建了lucky进行反代,当访问nas设备经过lucky进行反代时,如果无响应时则检测n ...

这个可以,我之前看到有一篇 通过判断网络状态进行无通信UPS电源关机。
文章 标题是这个  # 网络监控脚本:断网3分钟后自动关闭进程并关机

1

主题

2

回帖

0

牛值

江湖小虾

2025-7-6 14:31:47 显示全部楼层
刘鹏飞_rt45R 发表于 2025-6-8 22:54
我的是米家智能插座2,SDK版本为2.1.8_0044,  也没有充电保护这个功能。你的是哪个款? ...

2代没有,3代才有

3

主题

30

回帖

0

牛值

江湖小虾

2025-7-11 15:21:36 显示全部楼层

我这个NAS小白也对楼主的自动开关机经验分享,给一个大大的赞!victory

2

主题

4

回帖

0

牛值

江湖小虾

2025-9-8 10:57:14 显示全部楼层

感谢大佬,成功。

0

主题

6

回帖

0

牛值

江湖小虾

2025-11-18 22:57:08 显示全部楼层
飞牛啊牛 发表于 2025-6-13 17:18
我是自己写一个脚本控制(方便控制,避免工作阶段误关机),可以配置工作阶段,工作阶段外的时间并且满足( ...

大佬能不能分享一下你的脚本
#!/bin/bash # 智能关机检测脚本: # 1.仅在23:00-08:00 时间段内执行 # 2.CPU使用率小于10% # 3.系统负载小于0.5 # 4.系统没有远程连接 # 5.系统没有磁盘I/O活动 # 6.系统没有网络活动 # 7.系统活跃用户数 ≤ 3 #  详情 回复
2025-11-19 10:04

5

主题

5

回帖

0

牛值

江湖小虾

2025-11-19 10:04:34 显示全部楼层
lifeek 发表于 2025-11-18 22:57
大佬能不能分享一下你的脚本

#!/bin/bash

# 智能关机检测脚本:
# 1.仅在23:00-08:00 时间段内执行
# 2.CPU使用率小于10%
# 3.系统负载小于0.5
# 4.系统没有远程连接
# 5.系统没有磁盘I/O活动
# 6.系统没有网络活动
# 7.系统活跃用户数 ≤ 3

# 设置必要的环境变量
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/binPATH"

###################### 配置参数 START ######################
CPU_THRESHOLD=10                # CPU使用率閾值(%)
LOAD_THRESHOLD=0.5              # 系统负载阈值
NETWORK_RX_THRESHOLD=10         # 网络接收速率阈值(KB/s)
CHECK_INTERVAL=60               # 检查间隔(秒)
MAX_CHECKS=60                   # 最大检查次数(每60秒检查一次, 当检测不满足关机条件时会继续检查,直到满足关机条件或超过最大检查次数为止)


# 动态日志路径(按年月自动创建子目录)
LOG_DIR="/smart/log"
LOG_FILE="${LOG_DIR}/$(date +%Y-%m).log"

# 智能关机检测工作时间段配置
SHUTDOWN_START_HOUR=23         # 智能关机检测工作时间段开始(小时):23
SHUTDOWN_START_MINUTE=00       # 智能关机检测工作时间段开始(分钟):00
SHUTDOWN_END_HOUR=8            # 智能关机检测工作时间段结束(小时):08
SHUTDOWN_END_MINUTE=00         # 智能关机检测工作时间段结束(分钟):00

###################### 配置参数 END ######################

# 记录日志函数
log() {
    echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}

# 检查时间段
in_shutdown_window() {
    local current_hour=$(date +%H)
    local current_minute=$(date +%M)
    # 去掉前导零避免八进制解析问题
    current_hour=${current_hour#0}
    current_minute=${current_minute#0}
    # 处理00的情况
    [ -z "$current_hour" ] && current_hour=0
    [ -z "$current_minute" ] && current_minute=0
    local current_total=$((current_hour * 60 + current_minute))
    local start_total=$((SHUTDOWN_START_HOUR * 60 + SHUTDOWN_START_MINUTE))
    local end_total=$((SHUTDOWN_END_HOUR * 60 + SHUTDOWN_END_MINUTE))
   
    if [ $end_total -lt $start_total ]; then
        [ $current_total -ge $start_total ] || [ $current_total -lt $end_total ]
    else
        [ $current_total -ge $start_total ] && [ $current_total -lt $end_total ]
    fi
}

# 获取CPU使用率
get_cpu_usage() {
    # 使用/proc/loadavg估算5分钟CPU使用率
    local load5=$(awk '{print $2}' /proc/loadavg)
    local cores=$(grep -c processor /proc/cpuinfo)
   
    # 简单估算:负载值/核心数 * 100%
    echo "$load5 $cores" | awk '{printf "%.0f", ($1/$2)*100}'
}

# 检查系统负载
check_load() {
    local load1=$(awk '{print $1}' /proc/loadavg)
    local load5=$(awk '{print $2}' /proc/loadavg)
    local cores=$(grep -c processor /proc/cpuinfo)
    local load1_threshold=$(awk "BEGIN {printf \"%.2f\", $cores * $LOAD_THRESHOLD}")
    local load5_threshold=$(awk "BEGIN {printf \"%.2f\", $cores * $LOAD_THRESHOLD}")
   
    log "系统负载(1分钟): ${load1} (核心数: ${cores}, 阈值: ${load1_threshold})"
    log "系统负载(5分钟): ${load5} (阈值: ${load5_threshold})"
   
    [ "$(awk "BEGIN {print ($load1 < $load1_threshold) ? 1 : 0}")" -eq 1 ] && \
    [ "$(awk "BEGIN {print ($load5 < $load5_threshold) ? 1 : 0}")" -eq 1 ]
}

# 检查活跃用户
check_users() {
    local users=$(who | grep -v "root" | wc -l)
    log "活跃用户(非root): ${users} (阈值: ≤3)"
   
    if [ "$users" -gt 0 ]; then
        log "活跃用户详情:"
        who | grep -v "root" | while read line; do
            log "  - $line"
        done
    else
        log "无活跃用户"
    fi
   
    [ "$users" -le 3 ]
}

# 检查SSH连接
check_ssh() {
    local ssh_conn=$(netstat -tn | grep ':22\s' | grep ESTABLISHED | wc -l)
    log "SSH連接數: ${ssh_conn} (閾值: 0)"
    [ "$ssh_conn" -eq 0 ]
    return 0
}

# 检查磁盘I/O
check_disk_io() {
    # 使用vmstat获取I/O等待
    local iowait=$(vmstat 1 2 | tail -1 | awk '{print $16}')
    log "I/O等待: ${iowait}% (阈值: 30%)"
    [ "$iowait" -lt 30 ]
}

# 检查网络活动
check_network() {
    # 检测操作系统类型
    if [ "$(uname)" = "Darwin" ]; then
        # macOS: 使用netstat獲取網絡統計
        local rx1=$(netstat -ib | grep -v 'Link' | awk '{sum += $7} END {print sum}')
        sleep $CHECK_INTERVAL
        local rx2=$(netstat -ib | grep -v 'Link' | awk '{sum += $7} END {print sum}')
        
        # 計算接收速率(KB/s)
        local rx_rate=$(( (rx2 - rx1) / CHECK_INTERVAL / 1024 ))
    else
        # Linux: 使用/sys/class/net統計
        # 獲取所有網絡接口的接收字節總和
        local rx1=0
        for interface in /sys/class/net/*/statistics/rx_bytes; do
            if [ -f "$interface" ]; then
                rx1=$((rx1 + $(cat "$interface")))
            fi
        done
        
        sleep $CHECK_INTERVAL
        
        local rx2=0
        for interface in /sys/class/net/*/statistics/rx_bytes; do
            if [ -f "$interface" ]; then
                rx2=$((rx2 + $(cat "$interface")))
            fi
        done
        
        # 計算接收速率(KB/s)
        local rx_rate=$(( (rx2 - rx1) / CHECK_INTERVAL / 1024 ))
    fi
   
    log "網絡接收速率: ${rx_rate} KB/s (閾值: ${NETWORK_RX_THRESHOLD} KB/s)"
    [ "$rx_rate" -lt $NETWORK_RX_THRESHOLD ]
    # return 0  # 臨時禁用網絡檢查
}

# 检查进程活动 (已禁用)
check_processes() {
    # 检查是否有非系统进程在运行
    local non_system=$(ps -eo comm | grep -vE 'systemd|sshd|dbus|agetty|ntpd|rsyslogd|cron' | grep -v COMMAND | wc -l)
    log "非系统进程数: ${non_system} (阈值: 0) [已禁用]"
    [ "$non_system" -eq 0 ]
}

# 主检查函数
system_ready() {
    local cpu_usage=$(get_cpu_usage)
    log "CPU使用率(估算): ${cpu_usage}% (阈值: ${CPU_THRESHOLD}%)"
   
    local all_passed=true
    local error_count=0
   
    # 检查CPU使用率
    if [ "$cpu_usage" -gt $CPU_THRESHOLD ]; then
        if [ $error_count -eq 0 ]; then
            log "❌ 以下条件不满足关机要求:"
        fi
        log "  - CPU使用率过高: ${cpu_usage}% > ${CPU_THRESHOLD}%"
        all_passed=false
        error_count=$((error_count + 1))
    fi
   
    # 檢查系統負載
    if ! check_load; then
        if [ $error_count -eq 0 ]; then
            log "❌ 以下条件不满足关机要求:"
        fi
        log "  - 系统负载过高"
        all_passed=false
        error_count=$((error_count + 1))
    fi
   
    # 检查活跃用户
    if ! check_users; then
        if [ $error_count -eq 0 ]; then
            log "❌ 以下条件不满足关机要求:"
        fi
        log "  - 活跃用户数超过阈值"
        all_passed=false
        error_count=$((error_count + 1))
    fi
   
    # 检查SSH连接
    if ! check_ssh; then
        if [ $error_count -eq 0 ]; then
            log "❌ 以下条件不满足关机要求:"
        fi
        log "  - 存在活跃SSH连接"
        all_passed=false
        error_count=$((error_count + 1))
    fi
   
    # 检查磁盘I/O
    if ! check_disk_io; then
        if [ $error_count -eq 0 ]; then
            log "❌ 以下条件不满足关机要求:"
        fi
        log "  - 磁盘I/O活动过高"
        all_passed=false
        error_count=$((error_count + 1))
    fi
   
    # 检查网络活动
    if ! check_network; then
        if [ $error_count -eq 0 ]; then
            log "❌ 以下条件不满足关机要求:"
        fi
        log "  - 网络活动过高"
        all_passed=false
        error_count=$((error_count + 1))
    fi
   
    # 输出检查结果
    if [ "$all_passed" = true ]; then
        log "✅ 所有条件满足,系统可以关机"
        return 0
    else
        return 1
    fi
}

# 主函数
main() {
    log "========================= 智能关机程序启动 =========================="
   
    # 创建日志目录(如果不存在)
    mkdir -p "$LOG_DIR"
    touch "$LOG_FILE"
    chmod 644 "$LOG_FILE"
   
    if ! in_shutdown_window; then
        log "当前不在关机时间段,程序退出"
        log "========================= 智能关机程序结束 =========================="
        exit 0
    fi
   
    log "开始监控系统状态"
    log "最大检查次数: ${MAX_CHECKS} 次"
    local check_count=0
   
    while [ $check_count -lt $MAX_CHECKS ]; do
        check_count=$((check_count + 1))
        log "☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆ 第 ${check_count}/${MAX_CHECKS} 次检查 ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"
        
        if ! in_shutdown_window; then
            log "已离开关机时间段,取消关机"
            log "========================= 智能关机程序结束 =========================="
            exit 0
        fi
        
        if system_ready; then
            log "✅ 系统满足所有关机条件"
            log "🔄 执行关机"
            log "执行关机命令..."
            log "========================= 智能关机程序结束 =========================="
            (sudo /sbin/poweroff) &
            exit 0
        fi
        
        if [ $check_count -lt $MAX_CHECKS ]; then
            log "等待${CHECK_INTERVAL}秒后重新检查..."
            sleep $CHECK_INTERVAL
        fi
    done
   
    log "已完成 ${MAX_CHECKS} 次检查,程序正常退出"
    log "========================= 智能关机程序结束 =========================="
}

main
这个关机好,虽然不知道脚本怎么执行,我研究下; 这样就可以避免万一晚上23点后还在使用FN(比如看电影,下载文件),它却定时关机的问题;  详情 回复
4 天前
谢谢大佬  详情 回复
2025-11-23 19:54

0

主题

6

回帖

0

牛值

江湖小虾

2025-11-23 19:54:22 显示全部楼层
飞牛啊牛 发表于 2025-11-19 10:04
#!/bin/bash

# 智能关机检测脚本:

谢谢大佬

0

主题

7

回帖

0

牛值

江湖小虾

飞牛啊牛 发表于 2025-11-19 10:04
#!/bin/bash

# 智能关机检测脚本:

这个关机好,虽然不知道脚本怎么执行,我研究下;
这样就可以避免万一晚上23点后还在使用FN(比如看电影,下载文件),它却定时关机的问题;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则