改了配置不生效?先看服务是怎么启动的
【摘要】 systemd 服务改配置不生效的三种常见原因:内存缓存、环境变量作用域、socket 激活,以及对应排查姿势。
前几天改一个服务的配置,改完重启,页面行为还是老样子。排查半天,问题不在配置文件,而在“服务怎么读配置”这件事上。
常见的三个坑:
一是内存缓存。有些服务只在启动时读一次配置,运行中根本不看文件,改完不重启等于白改。判断也简单:systemctl restart 之后生效了,就是这类。
二是环境变量。systemd 服务的环境变量不在你的 shell 里,而在 unit 文件或 EnvironmentFile 指定的文件中。在终端 export 完纳闷服务为什么看不见,多半是这个原因。改完可以用 systemctl show 服务名 -p Environment 核对。
三是 socket 激活。少数服务由 systemd 的 .socket 单元拉起,重启服务本体没用,旧进程还在监听,得重启对应的 socket 单元。
还有个小习惯:改之前先 systemctl cat 服务名,看清它实际加载哪个文件、有没有 override 目录,别对着一个“看起来像配置”的文件较劲。
配置生效与否,取决于读它的时机和方式。先搞清楚服务是怎么启动的,再动手改。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)