在 CentOS 中设置开机自启,取决于你的 CentOS 版本 和 要自启的内容(服务、脚本、程序)。下面按常见场景详细说明。
vi /etc/systemd/system/myservice.service
示例内容:
[Unit]
Description=My Service
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/myprogram
Restart=always
User=root
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable myservice
systemctl start myservice
✅ 查看状态:
systemctl status myservice
例如:/root/start.sh
vi /etc/systemd/system/myscript.service
[Unit]
Description=My Script
After=network.target
[Service]
Type=oneshot
ExecStart=/bin/bash /root/start.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable myscript
/etc/init.d/vi /etc/init.d/myservice
示例:
#!/bin/bash
# chkconfig: 2345 90 10
# description: My Service
case "$1" in
start)
/usr/local/bin/myprogram
;;
stop)
killall myprogram
;;
esac
chmod +x /etc/init.d/myservice
chkconfig --add myservice
chkconfig myservice on
rc.local(不推荐,但简单)⚠️ CentOS 7 以后默认禁用,不推荐生产环境使用
vi /etc/rc.d/rc.local
添加:
/bin/bash /root/start.sh
chmod +x /etc/rc.d/rc.local
crontab -e
@reboot /root/start.sh
⚠️ 环境变量可能不完整,不适合复杂程序。
cat /etc/centos-release
或
systemctl --version
| 场景 | 推荐方式 |
|---|---|
| CentOS 7/8 服务 | systemd |
| 老系统 | init.d |
| 临时脚本 | rc.local |
| 简单命令 | crontab @reboot |
如果你愿意,可以告诉我:
我可以给你 精确到命令级别 的配置方案。