最标准、最可靠的方式是使用 systemctl enable 命令,适用于预装服务(如 nginx)或自定义服务(需先编写 .service 文件并 daemon-reload),通过创建软链接至 multi-user.target.wants 实现开机自启,disable 可撤销设置。

Linux 中设置系统服务开机自动启动,最标准、最可靠的方式是使用 systemctl enable 命令。这是 systemd 系统(CentOS 7+、Ubuntu 16.04+、Debian 9+ 等主流发行版)的官方机制,也是生产环境唯一推荐的做法。
直接启用已有的系统服务
如果服务已预装并自带 .service 文件(如 nginx、mysql、docker、chronyd),只需一条命令:
-
sudo systemctl enable 服务名 —— 例如:
sudo systemctl enable nginx - 该命令会在
/etc/systemd/system/multi-user.target.wants/下创建软链接,表示该服务将在多用户模式下随系统启动 - 启用后可立即启动:
sudo systemctl start nginx
确认服务是否已设为开机自启
执行以下任一命令验证:
Linux 性能分析与调优专家,覆盖 CPU、内存、磁盘 I/O、网络、内核参数、编译优化、容器/K8s。适用场景:系统卡顿/高负载、内存不足/OOM/Swap 高、CPU 异常/iowait 高。
-
systemctl is-enabled 服务名—— 返回enabled表示成功,disabled表示未启用 -
systemctl list-unit-files --state=enabled | grep 服务名—— 查看所有已启用的服务 -
systemctl status 服务名—— 输出中若显示enabled; vendor preset: enabled即生效
启用自定义服务(需手动写 .service 文件)
对非系统自带程序(如 Java 应用、Python 脚本),需先创建服务单元文件:
- 新建文件:
sudo nano /etc/systemd/system/myapp.service - 填入基础配置(注意路径全用绝对路径):
[Unit] Description=My Java Application After=network.target [Service] Type=simple User=appuser WorkingDirectory=/opt/myapp ExecStart=/usr/bin/java -jar /opt/myapp/app.jar Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
- 保存后执行:
sudo systemctl daemon-reload(重载配置) - 再运行:
sudo systemctl enable myapp.service
取消开机自启的方法
若需关闭自动启动,同样用 systemctl:
-
sudo systemctl disable 服务名—— 移除软链接,不影响当前运行 - 如需同时停止正在运行的服务:
sudo systemctl stop 服务名

















