Skip to content

autossh 命名规范建议

这份文档用于统一 autossh 相关文件、服务名、日志名和函数名,尤其适合后面扩展到多实例时使用。

1. 为什么要统一命名

如果只有一个实例,命名随意一点问题不大。
但只要后面开始出现下面这些情况,统一命名就会很重要:

  • 多台远端机器
  • 多个本地代理端口
  • 多个 plist
  • 多套日志文件
  • 多组 shell 函数

统一命名的好处:

  • 一眼能看出用途
  • 更不容易弄错实例
  • 故障排查更方便
  • 后续维护成本更低

2. Label 命名建议

推荐格式:

text
com.autossh.server-name.socksport

示例:

  • com.autossh.main.socks1080
  • com.autossh.hk.socks1081
  • com.autossh.work.socks7890

如果只有一个实例,也可以保留简单形式:

  • com.autossh.socks1080

3. plist 文件名建议

建议和 Label 尽量保持一致:

text
~/Library/LaunchAgents/com.autossh.main.socks1080.plist
~/Library/LaunchAgents/com.autossh.hk.socks1081.plist

这样看到文件名就知道它对应哪个实例。

4. 日志文件命名建议

推荐格式:

text
/tmp/autossh-server-name-socksport.out
/tmp/autossh-server-name-socksport.err

示例:

  • /tmp/autossh-main-socks1080.out
  • /tmp/autossh-main-socks1080.err
  • /tmp/autossh-hk-socks1081.out
  • /tmp/autossh-hk-socks1081.err

如果只有一个实例,也可以继续用:

  • /tmp/autossh-socks1080.out
  • /tmp/autossh-socks1080.err

5. shell 函数命名建议

单实例时可以简单一点:

bash
autossh-start
autossh-stop
autossh-reload
autossh-status
autossh-log

多实例时建议加前缀或实例名:

bash
autossh-main-start
autossh-main-stop
autossh-hk-start
autossh-hk-stop

或者:

bash
autossh-1080-start
autossh-1081-start

通常推荐“实例名 + 端口”比“只写端口”更清楚。

6. 示例命名方案

方案 A:单实例

  • Label: com.autossh.socks1080
  • plist: com.autossh.socks1080.plist
  • out: /tmp/autossh-socks1080.out
  • err: /tmp/autossh-socks1080.err

方案 B:按机器名区分

  • Label: com.autossh.hk.socks1080
  • plist: com.autossh.hk.socks1080.plist
  • out: /tmp/autossh-hk-socks1080.out
  • err: /tmp/autossh-hk-socks1080.err

方案 C:按用途区分

  • Label: com.autossh.work.socks7890
  • plist: com.autossh.work.socks7890.plist
  • out: /tmp/autossh-work-socks7890.out
  • err: /tmp/autossh-work-socks7890.err

7. 最容易踩坑的命名问题

常见坑包括:

  • plist 文件名改了,但内部 Label 没改
  • 本地端口改了,但日志文件名还写旧端口
  • 多个实例共用一个日志文件
  • 多个实例函数名差不多,自己记混

8. 推荐实践

如果你打算长期维护,建议从一开始就遵守这几个规则:

  1. Label 带端口
  2. 日志文件名带端口
  3. 多实例时 Label 带实例名
  4. plist 文件名和 Label 尽量一致
  5. shell 函数名尽量能体现实例含义

9. 当前配置的评价

你当前这套:

  • com.autossh.socks1080
  • /tmp/autossh-socks1080.out
  • /tmp/autossh-socks1080.err

对于单实例场景已经足够清晰。
只有在你后面要扩展多个实例时,才建议切换到更细的命名方案。