模块脚本管理
约 1725 字大约 6 分钟
2026-01-30
概述
脚本管理包括查看脚本状态、启用/禁用脚本、删除脚本等操作。您可以通过 FolkPatch 管理器界面或命令行进行管理。
通过管理器界面管理
查看模块脚本
- 打开 FolkPatch 管理器
- 点击底部"模块"标签
- 找到并点击要查看的模块
- 在模块详情页面,您可以:
- 查看模块包含的所有脚本
- 查看脚本的执行状态
- 查看模块日志(如果有)
启用/禁用模块
禁用模块会自动停止其所有脚本的执行:
- 在模块列表中找到目标模块
- 点击模块卡片上的开关按钮
- 确认禁用/启用操作
- 重启设备使更改生效
快速禁用
您也可以在模块详情页点击"禁用"按钮,效果相同。
执行 Action 脚本
如果模块包含 action.sh,您可以通过以下方式执行:
- 打开模块详情页面
- 点击"执行 Action"按钮(如果有)
- 等待脚本执行完成
- 查看执行结果或日志
注意
并非所有模块都有 Action 脚本,这取决于模块开发者是否提供。
通过文件管理器管理
使用 MT 管理器(推荐)
MT 管理器是 Android 上功能强大的文件管理器,支持 Root 操作。
查看脚本内容
- 打开 MT 管理器并授予 Root 权限
- 导航到
/data/adb/modules/模块ID/ - 点击脚本文件查看内容
- 可以编辑脚本并保存
修改脚本权限
- 长按脚本文件
- 选择"属性"
- 在权限设置中勾选"执行"
- 保存更改
删除脚本
- 长按脚本文件
- 选择"删除"
- 确认删除操作
- 重启设备使更改生效
使用系统文件管理器
某些系统文件管理器(如小米的文件管理器)在获取 Root 后可以访问 /data 目录:
- 在文件管理器中启用 Root 访问
- 导航到
/data/adb/modules/ - 对脚本进行查看、编辑或删除操作
通过 ADB 命令管理
查看模块目录结构
# 查看所有模块
adb shell ls -la /data/adb/modules/
# 查看特定模块的内容
adb shell ls -la /data/adb/modules/模块ID/查看脚本内容
# 读取脚本文件
adb shell cat /data/adb/modules/模块ID/service.sh
# 实时查看脚本日志(如果有输出到日志文件)
adb shell tail -f /data/local/tmp/script.log启用/禁用脚本
禁用模块(停止所有脚本):
adb shell
su
touch /data/adb/modules/模块ID/disable
reboot启用模块:
adb shell
su
rm /data/adb/modules/模块ID/disable
reboot删除脚本
# 删除特定脚本
adb shell rm /data/adb/modules/模块ID/service.sh
# 删除整个模块(包括所有脚本)
adb shell rm -rf /data/adb/modules/模块ID/危险操作
删除模块会永久移除所有相关文件,请确保已备份重要数据。
脚本状态检查
检查脚本是否已执行
查看系统日志:
adb logcat -d | grep -i "post-fs-data\|service\|boot-completed"检查脚本输出
如果脚本将输出写入文件:
# 查看脚本日志
adb shell cat /data/local/tmp/script_output.log
# 查看模块目录下的日志
adb shell cat /data/adb/modules/模块ID/script.log检查进程是否在运行
对于长时间运行的脚本:
# 查看所有进程
adb shell ps | grep -i "模块名称或关键字"
# 查看特定脚本进程
adb shell pgrep -f "service.sh"脚本调试技巧
添加详细日志
在脚本中添加调试信息:
#!/system/bin/sh
MODDIR=${0%/*}
LOGFILE=/data/local/tmp/module_debug.log
log_msg() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> $LOGFILE
}
log_msg "=== Script started ==="
log_msg "MODDIR: $MODDIR"
log_msg "Current user: $(id)"
log_msg "Current directory: $(pwd)"
# 您的脚本逻辑
if [ -f /system/build.prop ]; then
log_msg "Found build.prop"
else
log_msg "ERROR: build.prop not found!"
fi
log_msg "=== Script completed ==="检查脚本执行环境
#!/system/bin/sh
# 将环境信息输出到日志
env > /data/local/tmp/env_dump.txt测试脚本逻辑
在手动运行脚本测试前,先确保语法正确:
# 检查脚本语法
adb shell sh -n /data/adb/modules/模块ID/service.sh
# 手动运行脚本(仅在必要时)
adb shell sh /data/adb/modules/模块ID/service.sh常见问题处理
问题 1:模块显示已禁用但脚本仍在运行
原因: 可能禁用了错误的模块,或脚本不在模块目录中。
解决方法:
# 检查模块状态
adb shell ls -la /data/adb/modules/模块ID/
# 确认是否有 disable 标记文件
adb shell ls /data/adb/modules/模块ID/disable
# 强制删除标记并重启
adb shell rm /data/adb/modules/模块ID/disable
adb reboot问题 2:脚本导致系统启动变慢
可能原因:
post-fs-data.sh执行时间过长(超过 10 秒会被强制终止)- 脚本中有死循环或长时间等待
- 资源竞争或锁等待
排查方法:
# 查看启动时间统计
adb logcat -d | grep -i "post-fs-data"
# 检查脚本逻辑,移除非必要操作到 service.sh问题 3:脚本修改未生效
检查清单:
- 是否已重启设备?
- 脚本是否在正确的位置?
- 脚本是否有执行权限?(
ls -l检查) - 模块是否已启用?(没有 disable 文件)
- 脚本语法是否正确?
问题 4:无法删除脚本文件
原因: 权限不足或文件系统挂载问题。
解决方法:
# 使用 Root 权限强制删除
adb shell
su
rm -f /data/adb/modules/模块ID/script.sh
# 如果仍然失败,检查文件系统
mount | grep /data安全建议
备份重要脚本
- 在修改前复制脚本到安全位置
- 使用版本控制管理脚本变更
测试环境
- 在备用设备上测试新脚本
- 先使用
service.sh测试,确认无误后再使用post-fs-data.sh
日志记录
- 所有脚本都应包含日志输出
- 定期检查日志文件大小,避免占用过多空间
权限管理
- 不要随意修改系统关键文件
- 使用
resetprop而不是直接修改/system/build.prop
进阶管理
条件性执行脚本
创建根据条件决定是否执行的脚本:
#!/system/bin/sh
MODDIR=${0%/*}
# 只在特定条件下执行
if [ "$(getprop ro.product.device)" = "你的设备代号" ]; then
# 执行操作
echo "Device matched, executing..." >> /data/local/tmp/conditional.log
else
echo "Device not matched, skipping..." >> /data/local/tmp/conditional.log
fi延迟执行
让脚本延迟一段时间再执行:
#!/system/bin/sh
# 延迟 30 秒执行
sleep 30
# 您的脚本逻辑
echo "Delayed execution started" >> /data/local/tmp/delayed.log周期性任务
在 service.sh 中创建周期性检查:
#!/system/bin/sh
MODDIR=${0%/*}
# 后台循环
(
while true; do
# 检查某个条件
if [ ! -f /data/local/tmp/some_flag ]; then
# 执行操作
touch /data/local/tmp/some_flag
fi
# 每 60 秒检查一次
sleep 60
done
) &注意
长时间运行的后台脚本会消耗电量,请谨慎使用。
相关文档
版权所有
版权归属:FolkPatch Team
