Skip to content

Instantly share code, notes, and snippets.

@NevadaCities
Last active September 18, 2025 04:07
Show Gist options
  • Save NevadaCities/655f76b215846f4eb7b7237c2903f138 to your computer and use it in GitHub Desktop.
Save NevadaCities/655f76b215846f4eb7b7237c2903f138 to your computer and use it in GitHub Desktop.
使用 macOS 的 launchd 启动 mihomo

使用 macOS 的 launchd 启动 mihomo

本教程是以命令行后台并自启动运行 mihomo,如果需要使用 GUI,本教程可忽略。

admin 用户作为例子,以 mihomo 目录作为工作目录例子,请以实际情况替换


下载 mihomo 文件

先下载 mihomo 对应的二进制文件,移动到对应的工作目录下,例如:/Users/admin/mihomo

然后使用以下命令修改 mihomo 二进制文件的权限,如果需要使用TUN,此步骤是必须的

# mihomo 二进制文件的名称以 mihomo 为例
sudo chown root:admin ./mihomo
sudo chmod +sx ./mihomo

创建服务文件

/Library/LaunchAgents下创建一个com.metacubex.mihomo.plist服务文件:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <!--服务名称,一定不能重复, 否则无法被成功创建, 系统会告诉你已经有同名的服务-->
    <key>Label</key>
    <string>com.metacubex.mihomo</string>

    <!--程序位置及其参数-->
    <key>ProgramArguments</key>
    <array>
      <string>/Users/william/mihomo/mihomo</string>
      <string>-d</string>
      <string>/Users/william/mihomo</string>
      <string>-f</string>
      <string>/Users/william/mihomo/config.yaml</string>
    </array>

    <!--崩溃后自动重启-->
    <key>KeepAlive</key>
    <true/>

    <!--加载时运行服务-->
    <key>RunAtLoad</key>
    <true/>

    <!--错误日志输出路径-->
    <key>StandardErrorPath</key>
    <string>/Users/william/mihomo/stderr.log</string>

    <!--正常日志输出目录-->
    <key>StandardOutPath</key>
    <string>/Users/william/mihomo/stdout.log</string>

    <!--服务工作路径-->
    <key>WorkingDirectory</key>
    <string>/Users/william/mihomo</string>
  </dict>
</plist>

保存后使用以下命令直接启动 mihomo 服务:

launchctl load -w /Library/LaunchAgents/com.metacubex.mihomo.plist

运行以上命令后,如果没有报错,mihomo 服务就会立即运行。

如果要停止 mihomo 服务,需要使用以下命令:

launchctl unload -w /Library/LaunchAgents/com.metacubex.mihomo.plist

执行后即可停止 mihomo 服务。


最后注意

  1. 修改了 mihomo 二进制文件的权限之后,mihomo 下载的文件都会变成 root 用户,普通用户如果要修改、删除,需要使用 root 用户权限。mihomo 下载的文件一般有:网页控制台的源文件、geoip.dat、geoip.metadb、geosite.dat、country.mmdb、asn.dat 等等。
  2. launchd 运行服务之后如果出错,launchd 是不会在终端显示报错信息的,建议多次检查以上操作是否有遗漏疏忽地方。
  3. 在后期发现使用~/Library/LaunchAgents目录可能会有权限问题,可以移动到/Library/LaunchAgents下。

参考链接:

  1. 使用 launchd 管理 Mac 启动任务与定时任务
  2. macOS 下 Launchd 的介绍和使用
  3. 利用 Launchd 定制 Mac 启动任务
  4. man page plist section 5
  5. macOS 无法开启 tun 模式

使用networksetup命令快速切换 macOS 的系统代理状态

在任意位置下新建enableproxy.sh文件,并写入以下内容:

#!/bin/bash
networksetup -setwebproxystate Wi-Fi on
networksetup -setsecurewebproxystate Wi-Fi on
networksetup -setsocksfirewallproxystate Wi-Fi on

保存后,执行chmod +x enableproxy.sh赋予权限,然后执行sh enableproxy.sh即可快速打开系统代理。


在任意位置下新建disableproxy.sh文件,并写入以下内容:

#!/bin/bash
networksetup -setwebproxystate Wi-Fi off
networksetup -setsecurewebproxystate Wi-Fi off
networksetup -setsocksfirewallproxystate Wi-Fi off

保存后,执行chmod +x disableproxy.sh赋予权限,然后执行sh disableproxy.sh即可快速关闭系统代理。


参考链接:

  1. MacOS v1.3.3自动检测网络出口设备进行设置系统代理,不成功。
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment