我想知道自己的 NAS 硬盘什么时候休眠什么时候活动,想知道一天被唤醒多少次。所以写了这个脚本。 DiskMonitorV1.0_20260610 这个脚本是按自己的需求写的,主要实现以下功能 1 )实时查询硬盘休眠状态并记录 2 )后台定时查询并记录硬盘状态 3 )统计 24h 后硬盘唤醒次数及总唤醒时间 4 ) 24h 硬盘活动图表 5 )最大化精简脚本,不额外安装依赖。只用了 hdpram 查询硬盘和 python3 运行 http 服务 一般情况下,适用于所有的 linux ,只要你安装了 hdparm 和 python3 。 实际运行截图如下: 项目文件 /var/www/hddstatus/ ├── config # 统一配置文件 ├── disk_events.log # 事件日志(运行时生成) ├── cache/ # 状态缓存目录 └── cgi-bin/ ├── status # 硬盘状态页 ├── log # 24h 趋势图表 + 日志 ├── log-full # 全部日志纯文本 └── update-disk-info # 更新硬盘名称 /usr/local/bin/ ├── disk_monitor.sh # 后台监控 ├── disk_monitor_startup.sh # 启动时初始化 └── disk_info.sh # 硬盘名称缓存生成 /etc/systemd/system/ ├── disk-monitor.service └── hddstatus.service /etc/sudoers.d/ └── hddstatus 使用教程: 使用 root 登录,或者 sudo chmod +x diskmonitor_install.sh chmod +x diskmonitor_uninstall.sh 安装 ./diskmonitor_install.sh 卸载 ./diskmonitor_uninstall.sh 状态页: http://机器 IP:58008/cgi-bin/status 日志页: http://机器 IP:58008/cgi-bin/log 修改配置: nano /var/www/hddstatus/config 然后 systemctl restart disk-monitor hddstatus config 配置文件说明 1 )硬盘要监控几个,填在 DISKS 里 2 )后台监控时隔,默认 5 分钟,没必要太频繁。因为时隔为 5 分钟监控一次,所以记录的唤醒休眠时间可能会有几分钟偏差。 3 ) Web 服务端口,字面意思 4 )硬盘自定义显示名称,前面 DISKS 里有几块硬盘这里就加几条记录 5 ) hdparm 程序目录,自己按自己机器上的填,一般不用动。 6 )其余日志文件参数不要动。 # ========== 硬盘监控统一配置 ========== # 要监控的硬盘设备(空格分隔) DISKS="/dev/sda /dev/sdb" # 后台监控检查间隔(秒),建议 ≥ 硬盘 spindown 时间 MONITOR_INTERVAL=300 # Web 服务端口 WEB_PORT=58008 # 硬盘自定义显示名称(可选) # 格式:LABEL_设备名="显示名称" LABEL_sda="WD-500G" LABEL_sdb="GS-480G" # hdparm 路径 HDPARM="/usr/sbin/hdparm" 如果硬盘很老,频繁 hdparm 查询硬盘状态会影响硬盘休眠(很少见),那就只能加大监控的间隔或不用这个脚本。 不对这个脚本对你们硬盘/机器带来的任何影响负责。需要自取。 脚本 链接: https://pan.quark.cn/s/9dd16addf27f
我想知道自己的 NAS 硬盘什么时候休眠什么时候活动,想知道一天被唤醒多少次。所以写了这个脚本。 DiskMonitorV1.0_20260610 这个脚本是按自己的需求写的,主要实现以下功能 1 )实时查询硬盘休眠状态并记录 2 )后台定时查询并记录硬盘状态 3 )统计 24h 后硬盘唤醒次数及总唤醒时间 4 ) 24h 硬盘活动图表 5 )最大化精简脚本,不额外安装依赖。只用了 hdpram 查询硬盘和 python3 运行 http 服务 一般情况下,适用于所有的 linux ,只要你安装了 hdparm 和 python3 。 实际运行截图如下: 项目文件 /var/www/hddstatus/ ├── config # 统一配置文件 ├── disk_events.log # 事件日志(运行时生成) ├── cache/ # 状态缓存目录 └── cgi-bin/ ├── status # 硬盘状态页 ├── log # 24h 趋势图表 + 日志 ├── log-full # 全部日志纯文本 └── update-disk-info # 更新硬盘名称 /usr/local/bin/ ├── disk_monitor.sh # 后台监控 ├── disk_monitor_startup.sh # 启动时初始化 └── disk_info.sh # 硬盘名称缓存生成 /etc/systemd/system/ ├── disk-monitor.service └── hddstatus.service /etc/sudoers.d/ └── hddstatus 使用教程: 使用 root 登录,或者 sudo chmod +x diskmonitor_install.sh chmod +x diskmonitor_uninstall.sh 安装 ./diskmonitor_install.sh 卸载 ./diskmonitor_uninstall.sh 状态页: http://机器 IP:58008/cgi-bin/status 日志页: http://机器 IP:58008/cgi-bin/log 修改配置: nano /var/www/hddstatus/config 然后 systemctl restart disk-monitor hddstatus config 配置文件说明 1 )硬盘要监控几个,填在 DISKS 里 2 )后台监控时隔,默认 5 分钟,没必要太频繁。因为时隔为 5 分钟监控一次,所以记录的唤醒休眠时间可能会有几分钟偏差。 3 ) Web 服务端口,字面意思 4 )硬盘自定义显示名称,前面 DISKS 里有几块硬盘这里就加几条记录 5 ) hdparm 程序目录,自己按自己机器上的填,一般不用动。 6 )其余日志文件参数不要动。 # ========== 硬盘监控统一配置 ========== # 要监控的硬盘设备(空格分隔) DISKS="/dev/sda /dev/sdb" # 后台监控检查间隔(秒),建议 ≥ 硬盘 spindown 时间 MONITOR_INTERVAL=300 # Web 服务端口 WEB_PORT=58008 # 硬盘自定义显示名称(可选) # 格式:LABEL_设备名="显示名称" LABEL_sda="WD-500G" LABEL_sdb="GS-480G" # hdparm 路径 HDPARM="/usr/sbin/hdparm" 如果硬盘很老,频繁 hdparm 查询硬盘状态会影响硬盘休眠(很少见),那就只能加大监控的间隔或不用这个脚本。 不对这个脚本对你们硬盘/机器带来的任何影响负责。需要自取。 脚本 链接: https://pan.quark.cn/s/9dd16addf27f
我想知道自己的 NAS 硬盘什么时候休眠什么时候活动,想知道一天被唤醒多少次。所以写了这个脚本。 DiskMonitorV1.0_20260610 这个脚本是按自己的需求写的,主要实现以下功能 1 )实时查询硬盘休眠状态并记录 2 )后台定时查询并记录硬盘状态 3 )统计 24h 后硬盘唤醒次数及总唤醒时间 4 ) 24h 硬盘活动图表 5 )最大化精简脚本,不额外安装依赖。只用了 hdpram 查询硬盘和 python3 运行 http 服务 一般情况下,适用于所有的 linux ,只要你安装了 hdparm 和 python3 。 实际运行截图如下: 项目文件 /var/www/hddstatus/ ├── config # 统一配置文件 ├── disk_events.log # 事件日志(运行时生成) ├── cache/ # 状态缓存目录 └── cgi-bin/ ├── status # 硬盘状态页 ├── log # 24h 趋势图表 + 日志 ├── log-full # 全部日志纯文本 └── update-disk-info # 更新硬盘名称 /usr/local/bin/ ├── disk_monitor.sh # 后台监控 ├── disk_monitor_startup.sh # 启动时初始化 └── disk_info.sh # 硬盘名称缓存生成 /etc/systemd/system/ ├── disk-monitor.service └── hddstatus.service /etc/sudoers.d/ └── hddstatus 使用教程: 使用 root 登录,或者 sudo chmod +x diskmonitor_install.sh chmod +x diskmonitor_uninstall.sh 安装 ./diskmonitor_install.sh 卸载 ./diskmonitor_uninstall.sh 状态页: http://机器 IP:58008/cgi-bin/status 日志页: http://机器 IP:58008/cgi-bin/log 修改配置: nano /var/www/hddstatus/config 然后 systemctl restart disk-monitor hddstatus config 配置文件说明 1 )硬盘要监控几个,填在 DISKS 里 2 )后台监控时隔,默认 5 分钟,没必要太频繁。因为时隔为 5 分钟监控一次,所以记录的唤醒休眠时间可能会有几分钟偏差。 3 ) Web 服务端口,字面意思 4 )硬盘自定义显示名称,前面 DISKS 里有几块硬盘这里就加几条记录 5 ) hdparm 程序目录,自己按自己机器上的填,一般不用动。 6 )其余日志文件参数不要动。 # ========== 硬盘监控统一配置 ========== # 要监控的硬盘设备(空格分隔) DISKS="/dev/sda /dev/sdb" # 后台监控检查间隔(秒),建议 ≥ 硬盘 spindown 时间 MONITOR_INTERVAL=300 # Web 服务端口 WEB_PORT=58008 # 硬盘自定义显示名称(可选) # 格式:LABEL_设备名="显示名称" LABEL_sda="WD-500G" LABEL_sdb="GS-480G" # hdparm 路径 HDPARM="/usr/sbin/hdparm" 如果硬盘很老,频繁 hdparm 查询硬盘状态会影响硬盘休眠(很少见),那就只能加大监控的间隔或不用这个脚本。 不对这个脚本对你们硬盘/机器带来的任何影响负责。需要自取。 脚本 链接: https://pan.quark.cn/s/9dd16addf27f
我想知道自己的 NAS 硬盘什么时候休眠什么时候活动,想知道一天被唤醒多少次。所以写了这个脚本。 DiskMonitorV1.0_20260610 这个脚本是按自己的需求写的,主要实现以下功能 1 )实时查询硬盘休眠状态并记录 2 )后台定时查询并记录硬盘状态 3 )统计 24h 后硬盘唤醒次数及总唤醒时间 4 ) 24h 硬盘活动图表 5 )最大化精简脚本,不额外安装依赖。只用了 hdpram 查询硬盘和 python3 运行 http 服务 一般情况下,适用于所有的 linux ,只要你安装了 hdparm 和 python3 。 实际运行截图如下: 项目文件 /var/www/hddstatus/ ├── config # 统一配置文件 ├── disk_events.log # 事件日志(运行时生成) ├── cache/ # 状态缓存目录 └── cgi-bin/ ├── status # 硬盘状态页 ├── log # 24h 趋势图表 + 日志 ├── log-full # 全部日志纯文本 └── update-disk-info # 更新硬盘名称 /usr/local/bin/ ├── disk_monitor.sh # 后台监控 ├── disk_monitor_startup.sh # 启动时初始化 └── disk_info.sh # 硬盘名称缓存生成 /etc/systemd/system/ ├── disk-monitor.service └── hddstatus.service /etc/sudoers.d/ └── hddstatus 使用教程: 使用 root 登录,或者 sudo chmod +x diskmonitor_install.sh chmod +x diskmonitor_uninstall.sh 安装 ./diskmonitor_install.sh 卸载 ./diskmonitor_uninstall.sh 状态页: http://机器 IP:58008/cgi-bin/status 日志页: http://机器 IP:58008/cgi-bin/log 修改配置: nano /var/www/hddstatus/config 然后 systemctl restart disk-monitor hddstatus config 配置文件说明 1 )硬盘要监控几个,填在 DISKS 里 2 )后台监控时隔,默认 5 分钟,没必要太频繁。因为时隔为 5 分钟监控一次,所以记录的唤醒休眠时间可能会有几分钟偏差。 3 ) Web 服务端口,字面意思 4 )硬盘自定义显示名称,前面 DISKS 里有几块硬盘这里就加几条记录 5 ) hdparm 程序目录,自己按自己机器上的填,一般不用动。 6 )其余日志文件参数不要动。 # ========== 硬盘监控统一配置 ========== # 要监控的硬盘设备(空格分隔) DISKS="/dev/sda /dev/sdb" # 后台监控检查间隔(秒),建议 ≥ 硬盘 spindown 时间 MONITOR_INTERVAL=300 # Web 服务端口 WEB_PORT=58008 # 硬盘自定义显示名称(可选) # 格式:LABEL_设备名="显示名称" LABEL_sda="WD-500G" LABEL_sdb="GS-480G" # hdparm 路径 HDPARM="/usr/sbin/hdparm" 如果硬盘很老,频繁 hdparm 查询硬盘状态会影响硬盘休眠(很少见),那就只能加大监控的间隔或不用这个脚本。 不对这个脚本对你们硬盘/机器带来的任何影响负责。需要自取。 脚本 链接: https://pan.quark.cn/s/9dd16addf27f
求助佬们,我想写一个ipv6远程唤醒的app,家里网络通过 test-ipv6.com 测试通过的。手机也是通过的, 手机纯5G网络 往家里ipv6发送唤醒魔法包,为啥电脑无法唤醒呢? 路由器的防火墙我已经关闭了。 内网wol唤醒是没有问题的,通过测试的。 对了,我发帖之前搜索过ipv6相关的,没有答案,所以才发帖的。 12 个帖子 - 9 位参与者 阅读完整话题
如题,请佬友们唤醒我的求生欲望 13 个帖子 - 12 位参与者 阅读完整话题
是 冻结 可唤醒, 还是会被删号。 我印象中是冻结,然后登陆的时候会有提示 如何去“唤醒”。 但是也有一些新号,之前发帖说找不回来老号了。 所以对这个的现行机制有点迷惑 5 个帖子 - 4 位参与者 阅读完整话题
我想定义个快捷键,一键唤醒然后语音问它问题,达到手机上豆包直接语音提问的效果。 唤醒速度要足够快,要不然就还不如用快捷键定义打开豆包/DeepSeek网页版直接问了 要求回答的界面类似豆包/DeepSeek网页版,因为有时候会问一些编程相关的,需要复制代码。 要支持自定义&切换后端大模型,因为豆包经常会胡说八道,有些问题需要换个智商高点的模型 支持语音也支持打字提问 各位佬,有吗? 4 个帖子 - 3 位参与者 阅读完整话题
本期主题:termux永久唤醒 & ubuntu环境自启动 & 实现sshd 前五期回顾: 【超详细】手机搭建服务器 · 第 一 期 【超详细】手机搭建服务器 · 第 二 期 【超详细】手机搭建服务器 · 第 三 期 【超详细】手机搭建服务器 · 第 四 期 【超详细】手机搭建服务器 · 第 五 期 一、termux永久唤醒: 1. 打开MT管理器,进入 /data/adb/service.d/ 文件夹,创建 60-termux-wake-keeper.sh 开机脚本: #!/system/bin/sh # ============================================================ # 60-termux-wake-keeper.sh # # 功能: # 1. 手机开机后自动启动 termux-wake-keeper.sh # 2. 定时执行 termux-wake-lock,保持 wake lock # # 注意: # - 这个脚本只负责“开机拉起守护脚本” # - 真正循环执行 termux-wake-lock 的逻辑在: # /data/local/termux-wake-keeper/termux-wake-keeper.sh # ============================================================ BASE_DIR="/data/local/termux-wake-keeper" SCRIPT="$BASE_DIR/termux-wake-keeper.sh" LOG="$BASE_DIR/termux-wake-keeper-start.log" mkdir -p "$BASE_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG" } log "============================================================" log "===== termux wake keeper auto start | START =====" log "BASE_DIR=$BASE_DIR" log "SCRIPT=$SCRIPT" log "LOG=$LOG" # ------------------------------------------------------------ # 1. 等待 Android 系统启动完成 # ------------------------------------------------------------ while [ "$(getprop sys.boot_completed)" != "1" ]; do sleep 5 done log "Android boot completed" # ------------------------------------------------------------ # 2. 再额外等待一会儿 # 避免刚开机时 /data/data、Termux、ZeroTermux 相关环境还没完全稳定 # ------------------------------------------------------------ sleep 30 # ------------------------------------------------------------ # 3. 检查主守护脚本是否存在 # ------------------------------------------------------------ if [ ! -x "$SCRIPT" ]; then log "ERROR: script not found or not executable: $SCRIPT" log "Please check file path and chmod 755." log "===== termux wake keeper auto start | FAILED =====" exit 1 fi # ------------------------------------------------------------ # 4. 启动守护脚本 # 守护脚本内部有 PID 判断,重复启动不会产生多个实例 # ------------------------------------------------------------ nohup "$SCRIPT" >> "$LOG" 2>&1 & log "termux wake keeper started" log "===== termux wake keeper auto start | DONE =====" log "============================================================" 2.在 /data/local/termux-wake-keeper/ 文件夹中创建termux-wake-keeper.sh脚本 #!/system/bin/sh # ============================================================ # termux-wake-keeper.sh # # 功能: # 1. 定时执行 termux-wake-lock # 2. 防止 wake lock 失效 # 3. 不依赖 Ubuntu # 4. 不启动 sshd / nginx # # 日志: # /data/local/termux-wake-keeper/termux-wake-keeper.log # ============================================================ BASE_DIR="/data/local/termux-wake-keeper" LOG="$BASE_DIR/termux-wake-keeper.log" RUN_DIR="/dev/.termux-wake-keeper" PIDFILE="$RUN_DIR/termux-wake-keeper.pid" # 每隔多少秒重新执行一次 termux-wake-lock INTERVAL="60" mkdir -p "$BASE_DIR" mkdir -p "$RUN_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG" } is_running() { OLD_PID="$1" if [ -z "$OLD_PID" ]; then return 1 fi if [ ! -d "/proc/$OLD_PID" ]; then return 1 fi tr '\0' ' ' < "/proc/$OLD_PID/cmdline" 2>/dev/null | grep -q "termux-wake-keeper.sh" } find_wake_lock_cmd() { for p in \ /data/data/com.termux/files/usr/bin/termux-wake-lock \ /data/data/com.zerotermux/files/usr/bin/termux-wake-lock \ /data/data/com.termux.zero/files/usr/bin/termux-wake-lock do if [ -x "$p" ]; then echo "$p" return 0 fi done find /data/data -path '*/files/usr/bin/termux-wake-lock' -type f -perm -111 2>/dev/null | head -n 1 } find_wake_unlock_cmd() { for p in \ /data/data/com.termux/files/usr/bin/termux-wake-unlock \ /data/data/com.zerotermux/files/usr/bin/termux-wake-unlock \ /data/data/com.termux.zero/files/usr/bin/termux-wake-unlock do if [ -x "$p" ]; then echo "$p" return 0 fi done find /data/data -path '*/files/usr/bin/termux-wake-unlock' -type f -perm -111 2>/dev/null | head -n 1 } # 防止重复启动 if [ -f "$PIDFILE" ]; then OLD_PID="$(cat "$PIDFILE" 2>/dev/null)" if is_running "$OLD_PID"; then log "already running, pid=$OLD_PID" exit 0 else log "stale pidfile found, overwrite" fi fi echo "$$" > "$PIDFILE" WAKE_LOCK_CMD="$(find_wake_lock_cmd)" WAKE_UNLOCK_CMD="$(find_wake_unlock_cmd)" log "============================================================" log "===== termux wake keeper | START =====" log "PID=$$" log "BASE_DIR=$BASE_DIR" log "LOG=$LOG" log "INTERVAL=$INTERVAL" log "WAKE_LOCK_CMD=$WAKE_LOCK_CMD" log "WAKE_UNLOCK_CMD=$WAKE_UNLOCK_CMD" if [ -z "$WAKE_LOCK_CMD" ]; then log "ERROR: termux-wake-lock not found" log "Please check: find /data/data -path '*/files/usr/bin/termux-wake-lock'" rm -f "$PIDFILE" exit 1 fi release_lock() { log "release termux wake lock" if [ -n "$WAKE_UNLOCK_CMD" ] && [ -x "$WAKE_UNLOCK_CMD" ]; then "$WAKE_UNLOCK_CMD" >> "$LOG" 2>&1 log "termux-wake-unlock executed" else log "WARN: termux-wake-unlock not found, skip unlock" fi rm -f "$PIDFILE" } trap 'release_lock; exit 0' INT TERM # 启动时先执行一次 "$WAKE_LOCK_CMD" >> "$LOG" 2>&1 RESULT="$?" if [ "$RESULT" = "0" ]; then log "termux-wake-lock executed at startup" else log "ERROR: termux-wake-lock startup failed, result=$RESULT" fi # 循环续保 while true; do sleep "$INTERVAL" "$WAKE_LOCK_CMD" >> "$LOG" 2>&1 RESULT="$?" if [ "$RESULT" = "0" ]; then log "termux-wake-lock refresh ok" else log "ERROR: termux-wake-lock refresh failed, result=$RESULT" fi done [!note]如何手动停止唤醒 如果需要手动停止唤醒,可以用下面这个脚本,如果不需要,可以忽略,一般是不需要的 stop-termux-wake-keeper.sh: #!/system/bin/sh # ============================================================ # stop-termux-wake-keeper.sh # # 功能: # 1. 停止 termux-wake-keeper.sh 守护脚本 # 2. 执行 termux-wake-unlock # # 日志: # /data/local/termux-wake-keeper/termux-wake-keeper.log # ============================================================ BASE_DIR="/data/local/termux-wake-keeper" LOG="$BASE_DIR/termux-wake-keeper.log" RUN_DIR="/dev/.termux-wake-keeper" PIDFILE="$RUN_DIR/termux-wake-keeper.pid" mkdir -p "$BASE_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG" } find_wake_unlock_cmd() { for p in \ /data/data/com.termux/files/usr/bin/termux-wake-unlock \ /data/data/com.zerotermux/files/usr/bin/termux-wake-unlock \ /data/data/com.termux.zero/files/usr/bin/termux-wake-unlock do if [ -x "$p" ]; then echo "$p" return 0 fi done find /data/data -path '*/files/usr/bin/termux-wake-unlock' -type f -perm -111 2>/dev/null | head -n 1 } log "============================================================" log "===== stop termux wake keeper | START =====" if [ -f "$PIDFILE" ]; then PID="$(cat "$PIDFILE" 2>/dev/null)" if [ -n "$PID" ] && [ -d "/proc/$PID" ]; then kill -TERM "$PID" log "sent TERM to termux-wake-keeper pid=$PID" sleep 1 else log "pid not running: $PID" fi rm -f "$PIDFILE" else log "pidfile not found: $PIDFILE" fi WAKE_UNLOCK_CMD="$(find_wake_unlock_cmd)" log "WAKE_UNLOCK_CMD=$WAKE_UNLOCK_CMD" if [ -n "$WAKE_UNLOCK_CMD" ] && [ -x "$WAKE_UNLOCK_CMD" ]; then "$WAKE_UNLOCK_CMD" >> "$LOG" 2>&1 RESULT="$?" if [ "$RESULT" = "0" ]; then log "termux-wake-unlock executed" else log "ERROR: termux-wake-unlock failed, result=$RESULT" fi else log "WARN: termux-wake-unlock not found" fi log "===== stop termux wake keeper | DONE =====" log "============================================================" [!warning]提醒 上面的脚本一定要记得给足权限 二、实现ubuntu开机自启 1. 打开MT管理器,进入 /data/adb/service.d/ 文件夹,新建文件 90-ubuntu-sshd.sh ,代码如下: #!/system/bin/sh # ============================================================ # 90-ubuntu-sshd.sh # # 功能: # 1. 开机后调用 Magisk 版 chroot-distro # 2. 自动准备 ubuntu chroot 环境 # 3. 自动启动 ubuntu 里的 sshd # # 说明: # - 不处理 wake lock # - 不依赖 Termux 路径 # - 不在脚本里写死 SSH 端口 # - SSH 端口以 Ubuntu 的 /etc/ssh/sshd_config 为准 # ============================================================ # 日志目录 LOG_DIR="/data/local/chroot-distro/logs" # 日志文件 LOG="$LOG_DIR/ubuntu-sshd-start.log" # 你平时是 chroot-distro login ubuntu # 所以这里发行版名称就是 ubuntu DISTRO="ubuntu" # 开机后额外等待时间 BOOT_WAIT="25" # 设置 Android / Magisk 常见命令路径 # 这个不是 Termux PATH,只是为了让 service.d 脚本能找到系统命令 export PATH="/system/bin:/system/xbin:/vendor/bin:/odm/bin:/data/adb/magisk:/data/adb/ksu/bin:$PATH" # 确保日志目录存在 mkdir -p "$LOG_DIR" log() { echo "[$(date '+%Y-%m-%d %H:%M:%S')] $*" >> "$LOG" } log "============================================================" log "===== Ubuntu sshd auto start via chroot-distro | START =====" log "DISTRO=$DISTRO" log "BOOT_WAIT=$BOOT_WAIT" log "LOG=$LOG" # ------------------------------------------------------------ # 1. 等待 Android 开机完成 # ------------------------------------------------------------ while [ "$(getprop sys.boot_completed)" != "1" ]; do sleep 5 done log "Android boot completed" sleep "$BOOT_WAIT" # ------------------------------------------------------------ # 2. 查找 chroot-distro # ------------------------------------------------------------ CHROOT_DISTRO="$(command -v chroot-distro 2>/dev/null)" if [ -z "$CHROOT_DISTRO" ]; then if [ -x /system/bin/chroot-distro ]; then CHROOT_DISTRO="/system/bin/chroot-distro" elif [ -x /system/xbin/chroot-distro ]; then CHROOT_DISTRO="/system/xbin/chroot-distro" else log "ERROR: chroot-distro command not found" log "Please run: command -v chroot-distro" log "===== FAILED =====" exit 1 fi fi log "CHROOT_DISTRO=$CHROOT_DISTRO" # ------------------------------------------------------------ # 3. 让 chroot-distro 准备 Ubuntu 环境 # ------------------------------------------------------------ log "mount distro: $DISTRO" "$CHROOT_DISTRO" mount "$DISTRO" >> "$LOG" 2>&1 # ------------------------------------------------------------ # 4. 在 Ubuntu 环境里启动 sshd # ------------------------------------------------------------ log "start sshd inside Ubuntu" "$CHROOT_DISTRO" command "$DISTRO" ' mkdir -p /run/sshd chmod 755 /run/sshd ssh-keygen -A >/dev/null 2>&1 || true /usr/sbin/sshd -t if [ $? -ne 0 ]; then echo "ERROR: sshd config test failed" exit 1 fi echo "effective sshd config:" /usr/sbin/sshd -T | awk "/^(port|addressfamily|listenaddress|permitrootlogin|passwordauthentication|pubkeyauthentication) / {print}" if pgrep -x sshd >/dev/null 2>&1; then echo "sshd already running" else /usr/sbin/sshd echo "sshd started" fi ' >> "$LOG" 2>&1 RESULT="$?" if [ "$RESULT" != "0" ]; then log "ERROR: chroot-distro command failed, result=$RESULT" log "===== Ubuntu sshd auto start via chroot-distro | FAILED =====" exit 1 fi log "chroot-distro command finished" # ------------------------------------------------------------ # 5. 输出监听状态 # 不写死端口,直接看 sshd 实际监听了什么 # ------------------------------------------------------------ log "listening status:" ss -lntp 2>/dev/null | grep sshd >> "$LOG" 2>&1 log "process status:" ps -A 2>/dev/null | grep sshd >> "$LOG" 2>&1 log "===== Ubuntu sshd auto start via chroot-distro | DONE =====" log "============================================================" [!warning]权限提醒 脚本同样记得给足权限 三、如何在ubuntu中实现sshd 1.修改 sshd 配置 打开mt管理器 /data/local/chroot-distro/ubuntu/etc/ssh/sshd_config , 修改 sshd_config文件: 找到这段代码: #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: 改成 Port 2222 AddressFamily any ListenAddress 0.0.0.0 ListenAddress :: 再找到 # PasswordAuthentication yes 改成 PasswordAuthentication yes PubkeyAuthentication yes 也就是密码和允许使用 SSH 密钥登录 2.创建 sshd 运行目录 sudo mkdir -p /run/sshd sudo chmod 755 /run/sshd 3.启动 sshd 如果有旧的ssh,就先停掉旧的 sshd: sudo pkill sshd 2>/dev/null 再启动: sudo /usr/sbin/sshd 确认是否监听成功: ss -lntp | grep sshd 正常应该看到类似: LISTEN 0 128 [::]:2222 [::]:* users:(("sshd",pid=xxxx,fd=3)) 这说明 Ubuntu 已经在 IPv6 的 2222 端口上等待外部连接。 给几个常用的命令: 查看sshd状态: ss -lntp | grep sshd 停止: pkill -TERM -x sshd 启动: mkdir -p /run/sshd && chmod 755 /run/sshd && /usr/sbin/sshd 重启: /usr/sbin/sshd -t && pkill -TERM -x sshd && sleep 1 && mkdir -p /run/sshd && chmod 755 /run/sshd && /usr/sbin/sshd [!warning]远端ssh报错问题 如果远端ssh访问时,有下面这张报错问题: -bash: /etc/bash.bashrc: Required key not available -bash: /home/semmering/.profile: Required key not available -bash-5.2$ 解决办法是: 用MT管理器,把 /data/local/chroot-distro/ubuntu/etc/pam.d/sshd 这句话注销就不会报错了。 # session optional pam_keyinit.so force revoke 也就是在这句话前面加上#号,或者删除这句话。 这个报错问题非常不好解决,网络上的信息非常少。非常幸运再github上找到了方法。 [!success] 按照上面的教程来一步一步操作。脚本记得给足权限,然后重新开关机,termux会永久唤醒,然后ubuntu环境也会准备好,然后sshd也会准备好,就可以实现远端通过域名访问了。 3 个帖子 - 3 位参与者 阅读完整话题
刚才看了一位佬友的帖子,想到了远程开机其实通过开关或者路由器唤醒等都能比较方便的解决。但是如果台式机上有些任务想长时间保持开机,通过UU远程连接,但是一直开着又觉得有点浪费,想请教一下各位佬友,在Windows待机后有远程唤醒的方法吗?用Wake On Lan我试过,对待机的电脑不管用。 1 个帖子 - 1 位参与者 阅读完整话题
IT之家 5 月 15 日消息,科技媒体 Tom's Hardware 昨日(5 月 14 日)发布博文,报道称部分 AMD 显卡用户反馈安装 26.5.1 驱动后, 出现 Zero RPM 功能异常。 IT之家注:Zero RPM 是 AMD 显卡的一项静音散热功能。在温度处于安全范围时,显卡依靠散热器被动散热,风扇保持停转;当游戏或高负载任务让温度超过阈值后,风扇应自动转动,压制温度上升。 根据用户反馈,部分 AMD 显卡用户反馈,安装 5 月 6 日官方发布的 Adrenalin 26.5.1 显卡驱动后,在设备唤醒工作之后,显卡依然维持 Zero RPM 激活状态,风扇不会按温度变化重新启动。报道指出,这可能带来降频、性能下滑,严重时甚至可能伤及硬件。 除最早发帖的 Reddit 用户 Evelyne-Tourneciel 外,至少还有 4 名 AMD 显卡用户报告了相同问题,说明它并非孤立个案,但现阶段仍难判断受影响显卡型号和覆盖范围。 根据网友 Evelyne-Tourneciel 后续反馈,使用 Display Driver Uninstaller(显示驱动卸载工具)彻底清理并离线重新安装 26.5.1 版本似乎解决了问题。 值得注意的是, 今天刚刚发布的 26.5.2 版本并未修复该问题 ,更新日志中未提及 Zero RPM 相关修复。
最近还是有点忙,最近石景山变热了,好事就是今天收到邮件,把邮件里的话题都注意看了一遍,挺凉爽的 1 个帖子 - 1 位参与者 阅读完整话题
IT之家 5 月 6 日消息,雷柏新上架了一款无线 AI 办公鼠标 —— 雷柏 C10,京东显示为 49 元,提供岩灰、云白、雾蓝三种颜色可选。 京东 雷柏(Rapoo)C10 无线 AI 办公鼠标 便携鼠标 对称鼠标 笔记本鼠标 电脑鼠标 轻音按键 12 个月续航 岩灰 49 元 直达链接 2026 年数码家电政府补贴持续进行中,IT 之家为大家汇总国补领券地址,买数码家电之前记得领取: 点此查看 。 数码补贴: 点此领券 手机 / 平板 / 3C 数码支持 8.5 折政府补贴,不超过 6000 元的产品至高立减 500 元。 家电补贴: 点此领券 6 类家电支持 8.5 折政府补贴,单品至高补贴 1500 元。 如图所示,这款鼠标最大的卖点在于支持按键自定义,可一键唤醒豆包;配备轻音按键,采用自研驱动 AI HUB;采用 AA 电池,续航 12 个月;支持 2.4GHz 连接,支持七档 DPI,回报率 500Hz。IT之家附参数详情:
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么
长时间不操作自动黑屏锁定或者休眠,再唤醒后 挪到副屏的窗口全部跑到主屏幕,部分软件窗口大小变大或者变小 我的问题还是 bug ?两个屏幕一个 2k 150%缩放,一个 4k 200%缩放 你们也会这样么