Clash核心本身就是命令行程序
内核文件是CLI可执行文件而非GUI应用
Clash VPN的核心程序(原版clash或Mihomo)本身就是一个命令行可执行文件,不包含任何图形界面组件。用户从GitHub Releases页面下载的clash-linux-amd64、clash-windows-amd64.exe等文件,本质上是在终端中运行的CLI程序,与图形界面客户端(如Clash Verge Rev)是两个独立的组件。图形界面客户端通过在后台调用内核程序并套上可视化“外壳”实现操作,而命令行版本直接运行内核,不依赖任何图形库。因此,在无GUI的Linux服务器环境中,Clash核心程序可直接运行。
无GUI环境下的原生适配
Linux服务器(如Ubuntu Server、Debian minimal)通常不安装图形界面,Clash核心程序无需X11或Wayland依赖即可运行。Clash核心使用Go语言编写,编译为静态二进制文件,不依赖外部动态库,可在无图形环境的系统中直接执行。用户通过终端命令启动、停止和管理Clash进程,所有配置通过编辑config.yaml文件完成,无需任何图形交互。
命令行版本与图形界面的关系
Clash命令行版本与图形界面客户端使用相同的配置格式(config.yaml),节点、规则和策略组的定义完全一致。命令行版本不包含GUI客户端的订阅管理、日志查看和节点切换等可视化功能,需通过命令行操作或外部控制器API实现这些功能。用户可先在图形界面客户端中调试好配置文件,再迁移到命令行环境运行,实现配置的平滑过渡。
无GUI环境下运行Clash的基本方法
直接执行内核文件启动代理服务
在无GUI环境中运行Clash,最基本的方式是直接执行内核文件并指定配置文件路径。执行./clash -f /etc/clash/config.yaml启动Clash核心进程,代理服务立即开始运行。若Clash不在系统PATH中,需使用完整路径如/usr/local/bin/clash -f /etc/clash/config.yaml。启动后Clash在前台运行,输出日志到终端。若需后台运行,使用nohup ./clash -f /etc/clash/config.yaml &将进程放入后台并忽略终端关闭信号。
使用-d参数指定配置目录
Clash支持通过-d参数指定配置目录,目录中需包含config.yaml文件和可选的Country.mmdb GeoIP数据库文件。执行./clash -d /etc/clash,Clash会自动加载/etc/clash/config.yaml配置文件。若配置目录中缺少GeoIP数据库,Clash启动时会自动下载。使用-d参数比-f参数更简洁,适合将配置文件统一存放在指定目录中。
测试配置文件的正确性
在启动Clash服务前,可使用-t参数测试配置文件的格式是否正确。执行./clash -t -f /etc/clash/config.yaml,若输出Configuration file test passed则表示配置格式正确。若配置文件存在YAML格式错误或不支持的规则类型,-t参数会输出具体的错误信息,帮助用户在启动前修复配置问题。该功能在自动化部署和配置更新中尤为实用。
命令行参数与常用选项
-f指定配置文件路径
-f参数用于指定Clash加载的配置文件路径,默认值为当前目录下的config.yaml。执行./clash -f /path/to/config.yaml,Clash加载指定路径的配置文件。该参数适合配置文件不在默认位置或需临时切换配置文件的场景。
-d指定配置目录
-d参数指定Clash的配置目录,目录中需包含config.yaml文件和GeoIP数据库文件。执行./clash -d /etc/clash,Clash加载/etc/clash/config.yaml。该参数使配置文件管理更整洁,适合将配置文件和相关资源统一存放在一个目录中。
-t测试配置文件格式
-t参数用于测试配置文件格式而不启动代理服务。执行./clash -t -f config.yaml,Clash解析配置文件并输出验证结果。若配置存在错误,输出具体的错误行号和原因,帮助用户快速定位和修正配置问题。该参数在自动化部署和配置更新中用于前置验证,避免因配置错误导致服务启动失败。
版本信息与帮助
执行./clash -v查看Clash内核版本信息。执行./clash -h查看所有命令行参数的说明。版本信息帮助用户确认当前内核是否满足功能需求,帮助参数提供完整的命令行选项参考。
后台运行与管理方式
使用nohup和&后台运行
在无GUI环境中,使用nohup命令配合&符号可将Clash在后台持续运行。执行nohup ./clash -d /etc/clash > /dev/null 2>&1 &启动Clash,忽略终端关闭信号,输出重定向到/dev/null。nohup确保进程在终端会话结束后不会被SIGHUP信号终止,&将进程放入后台运行。该方式适合简单场景的临时部署,但不具备进程守护和自动重启能力。
创建systemd服务实现进程守护
在Linux系统中创建systemd服务是管理Clash命令行版本的标准方式,支持开机自启、进程守护和日志管理。在/etc/systemd/system/clash.service中配置ExecStart=/usr/local/bin/clash -d /etc/clash,设置User=clash专用用户运行提升安全性。执行sudo systemctl enable clash启用开机自启,sudo systemctl start clash启动服务,sudo systemctl status clash查看运行状态。systemd服务在进程崩溃时自动重启,适合生产环境长期运行。
使用pm2或supervisor管理进程
pm2和supervisor是Clash官方推荐的第三方进程管理工具,可在无GUI环境中管理Clash进程。执行pm2 start clash -- -d /etc/clash启动Clash,pm2 save保存进程列表,pm2 startup生成开机自启脚本。supervisor在/etc/supervisor/conf.d/clash.conf中配置command=/usr/local/bin/clash -d /etc/clash,通过supervisorctl管理。两者均支持进程崩溃自动重启和日志管理。
通过API管理无GUI Clash
配置external-controller启用API
无GUI环境中的Clash可通过外部控制器API进行管理和监控,在config.yaml中设置external-controller: 127.0.0.1:9090启用API服务。配置secret字段设置访问认证密钥。启用API后,可通过HTTP请求查询节点列表、切换节点、查看连接状态和重新加载配置。
通过Dashboard面板可视化管理
无GUI Clash可通过Web Dashboard面板进行可视化管理,在浏览器中访问http://yacd.haishan.me等Dashboard页面,填入Clash的API地址(如http://服务器IP:9090)和secret密钥即可连接。Dashboard面板支持节点切换、延迟测试、连接查看和规则管理等操作,为无GUI环境提供了便捷的可视化管理方式。可通过SSH端口转发将远程API映射到本地访问。
使用curl命令管理Clash
通过curl命令可直接调用Clash API进行管理操作。curl http://127.0.0.1:9090/proxies获取节点列表,curl -X PUT http://127.0.0.1:9090/proxies/Proxy -d '{"name":"香港节点"}'切换节点,curl http://127.0.0.1:9090/connections查看活跃连接。无需图形界面即可完成节点切换、状态查看和配置重载等常见操作。
常见问题FAQ
Clash有没有纯命令行版本?
有。Clash核心程序本身就是命令行可执行文件,在Linux、macOS和Windows均可直接运行。从GitHub Releases页面下载对应平台的内核文件,通过命令行参数指定配置文件即可启动代理服务,无需任何图形界面。
无GUI环境下Clash的配置文件怎么写?
无GUI环境中的Clash配置文件与图形界面客户端使用的config.yaml格式完全一致。用户可在图形界面客户端中配置好节点和规则后,将config.yaml文件复制到无GUI环境中使用。配置文件中的proxies、proxy-groups、rules和dns等字段在命令行版本中同样生效。
无GUI环境下如何切换节点?
通过Clash API切换节点,在配置文件中启用external-controller后,使用curl命令调用PUT /proxies/{groupName}接口切换节点。也可通过Web Dashboard面板(如YACD)连接API地址进行可视化管理。
无GUI环境下Clash如何开机自启?
创建systemd服务(/etc/systemd/system/clash.service)并执行sudo systemctl enable clash启用开机自启。或使用pm2的pm2 startup和pm2 save组合实现开机自启。
