前面的文章提到, meta内核一些方面做得很好, 比如代理服务器可以单独配置dns来解析, rules provider的url域名, 也可以根据rules判断规则进行解析. 这货也有十分气人的地方, 那就是以服务模式运行.
最近一直在研究clash, 包括premium和meta两个分支. 最后选择了meta, 但是这货以服务运行一直有问题, 有大问题...
我倾向于把meta核做成系统服务, 因为服务可以在用户登录windows前运行起来, 而开机自启项不行, 必须是用户登录后.
如果直接写一个sc, 带上meta.exe和配置文件目录.\data, 它会在运行了几分钟之后闪退(我的yaml配置没有任何问题)
sc create "1meta" binpath= "%~dp0meta.exe -d \".\data\"" start= auto displayname= "1meta" type= own error= ignore
如果我写一个独立的exe, 让这个独立的exe注册为服务, 每次开机把clash meta内核调起来, 那么会有两种情况:
要么我的独立exe无法调起meta内核, 就这样一直几M的内存占用;
尝试用clash for windows 的 service.exe 小工具注册服务, 问题依旧.
尝试用 administrator 身份以服务方式自启独立exe或者meta内核, 问题依旧.
尝试把服务注册成 start= delayed-auto (延迟自启动), 有时候行, 有时候不行, 而且这个等的时间太长了. demand (手动) 这个也不行.
尝试把服务注册成 type= share 也不行. 服务名后面还会出现几位随机字符.
我怀疑过自己写的独立exe有问题, 但又能有啥问题... 就三行代码, 两行引用库, 一行执行进程(非shell), 在登录进系统之后, 双击这个exe都能正常运行.
为啥clash meta以服务模式运行做不好, 我怀疑是这货在静默状态(loglevel: silent)依旧进行初始化时的日志输出.
最后找到了个工具 AlwaysUp, 有点类似 linux 的 supervisord, 守护进程监控的一款软件, 简单配置一下就行. 以管理员身份运行, 不要以默认的system身份运行. 没错, 权限要低一点, 不然抽风... 另外, 建议把内存占用监控打开, 还有开机后等待x秒后再运行, AlwaysUp这个破解版很多, 有注册机, 自己找吧. 发几张截图:
我也不知道为什么用了一个工具它就正常了... 总之凑合用吧, 额外4MB内存的服务自启项我还是给得起的.
0 条评论:
发表评论