命令行参数与配置文件优缺点

在 Linux 上很多的程序都支持设置命令行启动参数的方式来控制程序的行为,必须使用 -x 输出 debug 的日志信息,使用 -p 来配置端口,也有一些程序支持使用配置文件来控制程序的行为,比如 mysql 使用一个 ini 格式的文件来配置 mysql 的信息。使用命令行和使用配置文件都有那些有点和缺点呢?

使用配置文件

使用配置文件的好处是,即使程序配置很复杂 ,在配置文件配置好了以后,每次启动都很简单,配置能够被之久话保存下来。·配置文件能够被备份,复制,版本控制。

使用启动参数

命令行参数具有很好的灵活性,方便自动化脚本来控制程序,但是如果启动命令行很长,很复杂的情况下,每次启动程序都需要输入或者复制很长的启动参数,容易出错,也比较麻烦,甚至有可能忘记上次是怎么设置的启动惨。

总结

综合上述,全部使用启动参数或者全部使用配置文件,都是不合适的。我认为比较和的方式同时支持配置文件和启动参数,能够写在配置文件里面的配置,也应该能通过命令行参数设置,反过来也是。这一点,prometheus 做的非常好,值得借鉴。这里写了一个例子来说明 golang 在同时支持配置文件和启动方式的处理方式,见代码