linux开机自启管理需按初始化系统选择方法:systemd用systemctl(如enable/disable)、/etc/rc.local(轻量命令)或自建.service文件;sysvinit老系统用chkconfig或update-rc.d。

Linux 管理开机自启软件,核心是看系统用的是哪种初始化系统:现代发行版(CentOS 7+、Ubuntu 16.04+、Debian 8+)默认用 systemd;老旧系统(CentOS 6、Ubuntu 14.04)用 SysVinit。选对方法才能生效,不能混用。
用 systemctl 管理标准服务(推荐首选)
适用于 Nginx、MySQL、Docker、Redis 等已自带 .service 文件的程序,也支持你自建的服务文件。
-
启用开机自启:
sudo systemctl enable 服务名(如nginx、docker) -
禁用开机自启:
sudo systemctl disable 服务名 -
查看是否已启用:
systemctl is-enabled 服务名(返回enabled或disabled) -
查看所有服务自启状态:
systemctl list-unit-files --type=service | grep enabled
用 /etc/rc.local 运行自定义命令(轻量灵活)
适合启动 Java 后台程序、挂载磁盘、运行 shell 脚本等一次性或简单后台任务,无需写 service 文件。
- 编辑文件:
sudo vim /etc/rc.local - 确保首行是
#!/bin/bash,末尾有exit 0 - 在
exit 0前添加命令,例如:nohup java -jar /opt/app.jar > /var/log/app.log 2>&1 &mount /dev/sdb1 /data - 必须加执行权限:
sudo chmod +x /etc/rc.local - systemd 系统还需启用 rc-local 服务:
sudo systemctl enable rc-local && sudo systemctl start rc-local
写 .service 文件托管自定义程序(专业可控)
当你需要统一用 systemctl start/stop/status 管理自己的程序(比如 Python 或 Go 写的后台服务),这是最佳方式。
- 新建服务文件:
sudo vim /etc/systemd/system/myapp.service - 填入标准配置(关键项):
[Unit]<br>Description=My App<br>After=network.target
[Service]<br>Type=simple<br>User=appuser<br>ExecStart=/usr/bin/python3 /opt/myapp/main.py<br>Restart=always
[Install]<br>WantedBy=multi-user.target
- 赋权并加载:
sudo chmod 644 /etc/systemd/system/myapp.service - 重载配置:
sudo systemctl daemon-reload - 启用自启:
sudo systemctl enable myapp.service
旧系统用 chkconfig 或 update-rc.d(仅限 SysVinit)
仅在 CentOS 6、Ubuntu 14.04 等老系统中使用,新系统不适用。
-
RHEL/CentOS 6:
sudo chkconfig --add myscript && sudo chkconfig myscript on -
Debian/Ubuntu:
sudo update-rc.d myscript defaults - 注意:脚本需放在
/etc/init.d/,且包含 LSB 头(### BEGIN INIT INFO)











