
核心启动参数:-d指定配置目录
-d参数的作用与用法
-d参数用于指定Clash的配置目录,Clash会从该目录下加载config.yaml配置文件。执行./clash -d /etc/clash启动Clash,加载/etc/clash/config.yaml作为配置文件。若配置目录中缺少Country.mmdb GeoIP数据库文件,Clash会在启动时自动从网络下载,确保GEOIP规则能正常使用。使用-d参数比-f参数更便于集中管理配置文件,日志和缓存文件也会默认存放在同一目录中,所有Clash相关文件集中在同一位置便于备份和管理。该参数适合将配置文件、GeoIP数据库、日志文件和缓存文件统一管理,是生产环境中推荐的标准启动方式。
-d参数与配置目录结构
Clash vpn配置目录中必须包含config.yaml文件,这是Clash运行的核心配置文件,包含节点、策略组、规则和DNS等全部配置内容。GeoIP数据库文件Country.mmdb可选,缺失时Clash会在启动时自动下载,用于GEOIP规则的IP归属地判断。执行./clash -d /etc/clash后,Clash在/etc/clash目录中查找config.yaml和Country.mmdb。日志文件clash.log和缓存文件cache.db也默认存放在该目录中,便于集中查看和清理。-d参数使所有Clash相关文件集中在同一位置,简化了配置管理和故障排查。
-d参数在systemd服务中的使用
在systemd服务文件中,通过-d参数指定Clash的配置目录是实现标准化部署的标准方式。配置示例为ExecStart=/usr/local/bin/clash -d /etc/clash,Clash启动时加载/etc/clash/config.yaml。若需修改配置,只需编辑/etc/clash/config.yaml后重启服务即可生效。-d参数使得systemd服务文件中不需要指定具体的配置文件路径,配置目录保持不变时服务文件无需修改。
精确指定配置文件:-f参数
-f参数的作用与用法
-f参数用于精确指定Clash加载的配置文件路径,比-d参数更加灵活。执行./clash -f /path/to/config.yaml,Clash加载指定路径的配置文件,忽略默认配置目录中的config.yaml。该参数适合在同一系统中快速切换不同配置文件,例如在测试环境与生产环境之间切换配置,或在多个订阅配置之间快速轮换。-f参数可与-d参数配合使用,但通常单独使用,避免配置目录和文件路径不一致导致的混淆。
-f参数与-d参数的区别
-d参数指定配置目录,Clash从目录中读取默认文件名config.yaml,配置文件名称固定为config.yaml,不能自定义文件名。-f参数直接指定配置文件完整路径,不依赖默认文件名,可使用任意文件名(如test.yaml、prod.yaml)。使用-d时配置目录中必须存在config.yaml文件;使用-f时文件路径可自定义,文件名可任意命名,灵活性更高。两者功能互补,-d适合标准化部署,-f适合灵活测试和配置切换。
-f参数在自动化场景中的使用
在自动化脚本或临时配置测试中,-f参数可指定临时配置文件而不影响默认配置,实现配置的热切换而无需覆盖原有文件。执行./clash -f ./temp_config.yaml快速测试新配置,配置目录保持原样,测试完成后删除临时文件即可。-f参数还支持指定备份配置文件或订阅转换后的临时配置文件,适合在配置更新前进行兼容性测试。若需验证配置格式,-t参数与-f配合使用:./clash -t -f ./config.yaml。
配置测试:-t参数
-t参数的作用与用法
-t参数用于测试配置文件格式是否正确,不实际启动代理服务,是避免因配置错误导致服务中断的重要工具。执行./clash -t -f /etc/clash/config.yaml,Clash解析配置文件并输出验证结果。若配置文件格式正确,输出Configuration file test passed。若存在YAML格式错误或不支持的规则类型,输出具体的错误信息和行号,帮助用户快速定位和修正配置问题。该参数在修改配置后用于预验证,避免因配置错误导致服务启动失败后反复排查。
-t参数与-d或-f的配合
-t参数可与-d或-f参数配合使用,灵活验证不同来源的配置文件。./clash -t -d /etc/clash测试配置目录中的config.yaml,验证默认配置目录中的文件。./clash -t -f ./config.yaml测试指定路径的配置文件,适合验证新配置或测试配置。在自动化部署脚本中,在重启Clash服务前先执行./clash -t -f config.yaml验证配置,通过后再执行systemctl restart clash。
-t参数在实际部署中的应用
在无GUI服务器环境中,手动验证配置准确性至关重要,-t参数是配置修改后的必要步骤。在编辑config.yaml后执行./clash -t -f /etc/clash/config.yaml,确认无错误后再启动服务。若-t参数报告错误,根据输出的行号和错误信息修正配置文件。配置错误类型包括YAML缩进问题(yaml: unmarshal errors)、不支持的规则类型(unsupported rule type)和节点名称重复(duplicate name)等。
版本信息与帮助参数
-v显示Clash版本信息
-v参数用于显示Clash内核的版本信息,帮助用户确认当前使用的内核版本。执行./clash -v输出类似Clash version: v1.18.0的版本号信息。版本号对比可确认当前内核是否满足特定功能需求。订阅配置文件或规则集可能要求特定内核版本支持,使用-v可快速确认版本兼容性。
-h显示帮助信息
-h参数显示Clash所有命令行参数的完整说明,包括-d、-f、-t、-v等选项的用途和示例。执行./clash -h输出命令行帮助信息,适合不熟悉Clash命令行的用户快速参考。帮助信息中包括每个参数的简要描述和基本用法示例。
版本兼容性检查
在升级Clash内核或更新配置文件前,使用-v确认当前内核版本是否满足要求。若配置文件使用了新规则类型(如GEOSITE),需Mihomo内核版本不低于v1.18.0。版本不兼容可能导致unsupported rule type错误。
其他命令行参数
-home-dir指定家目录
-home-dir参数指定Clash的家目录,与-d参数功能类似。执行./clash -home-dir /etc/clash与./clash -d /etc/clash效果相同,均将配置目录设为/etc/clash。该参数是-d的别名,两者功能完全一致,优先使用-d保持简洁。
-ext-ui指定外部UI目录
-ext-ui参数指定Clash外部Dashboard面板的静态文件目录,用于自定义Web管理面板。执行./clash -ext-ui /path/to/ui指定Dashboard文件路径,通过http://127.0.0.1:9090/ui访问自定义面板。该参数需要external-controller已启用。大多数用户使用在线Dashboard(如YACD)而非本地UI文件。
环境变量配置
Clash部分配置可通过环境变量覆盖,无需修改配置文件。CLASH_HTTP_PORT覆盖port字段,CLASH_SOCKS_PORT覆盖socks-port字段,CLASH_API_SECRET覆盖secret字段。环境变量方式适合容器化部署(如Docker)中通过环境变量动态配置Clash。
常见问题FAQ
Clash命令行启动使用什么参数?
Clash核心支持-d指定配置目录、-f指定配置文件路径、-t测试配置文件格式、-v显示版本信息和-h显示帮助信息。最基本启动命令为./clash -d /etc/clash。
-d和-f参数有什么区别?
-d指定配置目录,Clash加载目录中的config.yaml;-f直接指定配置文件完整路径,不依赖默认文件名。-d适合标准化部署,-f适合灵活测试和配置切换。
怎么用命令行测试配置文件是否正确?
执行./clash -t -f /etc/clash/config.yaml测试指定配置文件的格式。输出Configuration file test passed表示格式正确;输出具体错误行号和原因则需修正配置文件后重新测试。
命令行启动Clash后如何切换节点?
通过Clash API切换节点,需在配置文件中启用external-controller。使用curl命令调用PUT /proxies/{groupName}接口切换节点,或通过Dashboard面板可视化管理。