linux服务开机自启由systemd统一管理,启用用systemctl enable(可加–now立即启动),禁用用disable,状态通过is-enabled/is-active查看,自定义服务需先创建unit文件并daemon-reload。

Linux服务开机自启主要通过systemd管理,不同发行版操作一致,关键是掌握启用、禁用、状态查看和手动触发的命令逻辑。
启用服务开机自启
使用systemctl enable命令将服务写入启动目标(如multi-user.target),系统下次启动时自动拉起该服务。
- 启用并立即启动:sudo systemctl enable –now nginx
- 仅启用(不立即启动):sudo systemctl enable sshd
- 启用时指定启动级别(如图形界面):sudo systemctl enable –now myapp.service –now –no-block(一般无需指定,默认适配)
禁用或取消自启
禁用不会停止正在运行的服务,只移除开机触发链接。
- 禁用自启:sudo systemctl disable docker
- 禁用并立即停止:sudo systemctl disable –now chrony
验证是否生效
启用/禁用后建议检查状态,确认服务单元文件存在且链接已创建。
- 查看服务当前启用状态:systemctl is-enabled nginx(返回enabled/disabled)
- 查看是否正在运行:systemctl is-active nginx(返回active/inactive)
- 列出所有已启用的服务:systemctl list-unit-files –type=service | grep enabled
自定义服务需先确保单元文件就位
若服务无预置unit文件(如自己写的脚本),需先创建/etc/systemd/system/myscript.service,再执行enable。
- 最小可用模板示例:
- [Unit]
Description=My Custom Script
After=network.target[Service]
Type=simple
ExecStart=/opt/bin/myscript.sh
Restart=on-failure[Install]
WantedBy=multi-user.target - 保存后重载配置:sudo systemctl daemon-reload
- 再执行sudo systemctl enable myscript