在 CentOS(以及 RHEL 系列)里,“替换系统服务”通常指 用新的 systemd service 文件替换原来的服务配置或实现。下面按常见场景给你一套标准做法,适用于 CentOS 7/8/Stream。
systemctl list-unit-files | grep 服务名
或
systemctl status 服务名
如果不是 systemd(极少),而是 init.d,方式不同(后面补充)。
systemctl cat 服务名
常见路径:
/usr/lib/systemd/system/服务名.service(系统自带,不建议直接改)/etc/systemd/system/服务名.service(推荐放这里)systemctl stop 服务名
systemctl disable 服务名
cp /usr/lib/systemd/system/服务名.service /usr/lib/systemd/system/服务名.service.bak
/etc/systemd/system/vim /etc/systemd/system/服务名.service
示例:
[Unit]
Description=My New Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/my-service
Restart=always
User=root
[Install]
WantedBy=multi-user.target
然后:
systemctl daemon-reload
systemctl enable 服务名
systemctl start 服务名
✅ 推荐方式:
/etc/systemd/system 优先级高于 /usr/lib/systemd/system,不会在系统升级时被覆盖。
cp 新服务文件.service /usr/lib/systemd/system/服务名.service
systemctl daemon-reload
systemctl restart 服务名
⚠️ 风险:系统升级可能覆盖它。
例如:把 httpd 换成你自己写的程序,但还叫 httpd
systemctl stop httpd
systemctl disable httpd
然后:
vim /etc/systemd/system/httpd.service
重新定义 ExecStart 指向你的程序即可。
chkconfig 服务名 off
chkconfig --del 服务名
替换脚本:
cp 新脚本 /etc/init.d/服务名
chmod +x /etc/init.d/服务名
chkconfig --add 服务名
service 服务名 start
systemctl status 服务名
journalctl -u 服务名 -xe
systemctl daemon-reload
CentOS 替换系统服务 = 停服务 → 备份 → 写新的 .service 文件 → daemon-reload → 启用并启动
如果你能告诉我:
nginx、docker、mysqld)我可以给你精确到命令级别的方案。