作者:LX-DataCenter
日期:2025-1-16
邮箱:chenhot0@qq.com
新增源
因为飞牛NAS自带的源,资源太少,很多软件包更新不到。
新增2个源,1、阿里,2华清。
步骤 如下:1:连接飞牛 NAS(保持原有操作)
a、需要在飞牛NAS上打开SSH功能
b、在windons上或其他系统中打开命令输入框(终端)windons快捷键WIN+R,输入框中输入”cmd”

C、输入后面命令创造custom_add.list 文件同时打开该文件
命令:sudo nano /etc/apt/sources.list.d/custom_add.list
把下面内容复制粘贴进去:
新增:阿里云Debian 12/bookworm软件源(仅作为新增,不影响原有默认源)
deb http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware
deb-src http://mirrors.aliyun.com/debian/ bookworm main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware
deb-src http://mirrors.aliyun.com/debian/ bookworm-updates main contrib non-free non-free-firmware
deb http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware
deb-src http://mirrors.aliyun.com/debian-security/ bookworm-security main contrib non-free non-free-firmware

按ctrl+0保持后,再按下回车,再按ctrl+x退出编辑
同理:sudo nano /etc/apt/sources.list.d/tsinghua_add.list创建一个华清的
新增:清华大学Debian 12/bookworm软件源(不影响原有默认源) deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bookworm-updates main contrib non-free non-free-firmware deb https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bookworm-security main contrib non-free non-free-firmware
D、如果你想确认是否保存成功如下面命令
cat /etc/apt/sources.list.d/custom_add.list
E、上面的添加完后输入下面命令:
更新源缓存(整合默认源+新增源)
sudo apt update
(可选)如需升级系统包,保留-y自动确认,不影响源配置
sudo apt upgrade -y
等待拉取完成。
G、如果要清除添加的源输入下面命令:
sudo rm /etc/apt/sources.list.d/tsinghua_add.list
开始写脚本,文件是以“.sh”结尾一个脚本文件
A、 跳转到“/opt”路径下:命令:cd /opt
第一个方法:命令:nano nas_system_health_check.sh 直接创建脚本复制nas_system_health_check.sh里面的内容进去
按ctrl+0保持后,再按下回车,再按ctrl+x退出编辑
第二个方法:用CP命令现在本地电脑创建好后,上次到NAS一个路径下,
然后在/opt路径下用CP命令
命令:CP /vol3/@team/开发/ nas_system_health_check.s ./
这里的” /vol3/@team/开发/”是我上传到NAS中的一个路径,根据实际来

nas_system_health_check.sh可以用TXT打开,内容可以更具自己需求修改。建议修改验证时把reboot命令给屏蔽掉,不然NAS容易重启。
B、 输入命令修改权限chmod +x nas_system_health_check.sh 这是相对路径,你必须在opt路径下,在其他路径执行不生效会提示找不到该文件
也可以是chmod +x /opt/nas_system_health_check.sh 这是绝对路径
可以用ls -l 命令看下权限是否操作成功;

E、root权限运行(后台运行,断开终端不终止)
命令:nohup bash nas_health_check.sh &
F、查看日志(异常才会记录日志)
命令:tail -f /opt/nas-monitor/nas_health_check.log
命令:cat /opt/nas-monitor/nas_health_check.log
上面2个命令都可以
G、开机自启动:
步骤 1:创建 systemd 服务文件
1.1 新建服务文件
执行以下命令创建 systemd 服务配置文件(文件名建议:nas-health-check.service):
命令:nano /etc/systemd/system/nas-health-check.service
把下面类容粘贴进去:内容在下面的nas-health-check.service.sh脚本中,可以直接用该脚本;输入完后按 Ctrl+O 保存文件,按回车键确认,再按 Ctrl+X 退出 nano 编辑器。

步骤 2:启用并启动服务
2.1重新加载 systemd 配置
命令:systemctl daemon-reload
2.2启用开机自启
命令:systemctl enable nas-health-check.service
2.3 手动启动当前服务(无需重启,立即生效)
命令:systemctl start nas-health-check.service
步骤 3:验证服务状态(确保配置成功)
命令:systemctl status nas-health-check.service
正常运行的输出示例如下:

3.1验证开机自启是否启用
执行以下命令,查看服务是否已启用开机自启(显示 enabled 即为成功):
命令:systemctl is-enabled nas-health-check.service
步骤 4:附加功能(服务管理命令)
4.1手动停止服务(如需修改脚本时使用)
命令:systemctl stop nas-health-check.service
4.2 重启服务(修改脚本后,无需重启设备,直接重启服务)
命令:systemctl restart nas-health-check.service
4.3 查看服务运行日志(排查服务启动失败问题)
实时查看日志(适合调试)
journalctl -u nas-health-check.service -f
查看最近100行日志(适合排查历史问题)
journalctl -u nas-health-check.service -n 100
查看今日日志
journalctl -u nas-health-check.service --since today
常见问题排查
-
**服务启动失败,提示 Exec format error**:
o 原因:脚本路径错误,或脚本无执行权限。
o 解决:确认 ExecStart 中的脚本绝对路径正确,且已执行 chmod +x 赋予执行权限。
-
**服务显示 active (running)****,但脚本未正常工作**:
o 原因:脚本前台运行有输出,systemd 捕获输出导致阻塞,或脚本本身有逻辑问题。
o 解决:确认脚本后台运行正常,或在 ExecStart 后添加输出重定向(如 ExecStart=/root/nas_system_health_check.sh > /dev/null 2>&1)。
-
**重启设备后,服务未启动**:
o 原因:systemd 服务启用失败,或依赖的网络服务未正常启动。
o 解决:重新执行 systemctl enable nas-health-check.service,并检查 After= 中的依赖服务是否存在(如部分系统无 sshd.service,可删除该依赖)。
H、查询脚本执行的进程号:
命令:ps -ef | grep nas_health_final.sh | grep -v grep 这里的grep nas_health_final.sh是检 查异常脚本。如果是都直接用
命令:nohup bash nas_health_check.sh &
启动grep nas_health_final.sh脚本是可以看见进程号的。
如果用了上述自启动后会看不见进程号那么是用systemd自动启动的脚本服务,因为:
systemd 服务的 Type=simple 配置(默认 / 我们使用的配置)特性
我们在服务文件中配置了 Type=simple,这意味着 systemd 会将脚本的父进程直接作为服务的主进程(PID),而脚本中最后的 while true; do ... sleep ... done 无限循环是在该父进程中运行的,并非生成一个独立的 nas_system_health_check.sh 进程(或仅短暂生成后,核心逻辑在父进程中持续运行)。
此时用 ps 直接过滤脚本文件名,可能无法匹配到持续运行的进程(脚本文件仅作为启动入口,运行后核心逻辑在 Shell 父进程中执行,进程命令行中可能不再完整显示脚本文件名)。
可以用:命令:pgrep -af nas_system_health_check.sh查询这是手动启动服务92365是进程号,这里的nas_system_health_check.sh是系统异常检查脚本

命令:ps -ef | grep -v grep | grep /system.slice/nas-health-check.service 如下没有查询到因为:当前运行的脚本进程,并非由 systemd 服务 nas-health-check.service 启动和管理,因此没有归属到 systemd 对应的 cgroup 目录 /system.slice/nas-health-check.service 下,自然无法匹配到相关进程。

I、结束进程:
命令:kill -9 进程号
总结:
功能描述: 飞牛NAS系统监控与故障自愈脚本(终极双栈版)同时支持自动清理日志
适配环境:/vol3核心存储(根据实际来,( df -h 可以查看具体挂载详情))、sdb物理磁盘、5833 HTTPS外网端口、支持IPv4/IPv6双栈
核心特性:
- 双栈智能判定: 同时检测IPv4和IPv6,任一通道正常即不触发修复。
- 真实访问检测: 使用curl模拟浏览器访问,替代nmap,避免运营商拦截误判。
- 智能休眠: 检测到硬盘休眠时,跳过磁盘读写和端口扫描,不打扰休息。
- 防误判机制: 多次检测失败才执行重启,避免网络抖动导致的误操作。
上面截图中和描述的nas_health_final_ipv6.sh脚本名可以根据自己喜好修改,我当前的脚本名是nas_system_health_check.sh,替换成直接的脚本名即可。
一个2个脚本1、检查系统异常的脚本
2、自启动nas-health-check.service脚本该脚本不是用.sh命令且是用来启动检查系统异常nas_system_health_check.sh脚本的
所以2个脚本不要搞混了
有不足的地方勿喷。大家共通探讨