在 Linux 系统中实现服务自启动有多种方式,具体方法取决于系统的初始化系统(init system)。以下是主流初始化系统的实现方案:
在 /etc/systemd/system/
下创建 .service
文件(如 myapp.service
):
[Unit]
Description=My Custom Service
After=network.target
[Service]
Type=simple
User=root
ExecStart=/usr/bin/myapp
Restart=on-failure
[Install]
WantedBy=multi-user.target
sudo systemctl enable myapp.service # 启用自启动
sudo systemctl start myapp.service # 立即启动
sudo systemctl status myapp.service # 检查状态
sudo systemctl disable myapp.service # 禁用自启动
sudo journalctl -u myapp.service # 查看日志
在 /etc/init.d/
下创建脚本(如 myapp
),需包含至少 start|stop|restart
等标准参数:
#!/bin/bash
# chkconfig: 2345 90 10
case "$1" in
start)
/path/to/myapp
;;
stop)
killall myapp
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
esac
sudo chmod +x /etc/init.d/myapp
sudo chkconfig --add myapp # 添加到管理列表
sudo chkconfig myapp on # 启用自启动
sudo service myapp start # 立即启动
在 /etc/init/
下创建 .conf
文件(如 myapp.conf
):
description "My Custom Service"
start on runlevel [2345]
stop on runlevel [!2345]
exec /path/to/myapp
sudo start myapp # 立即启动
sudo initctl reload-configuration # 重载配置
@reboot /path/to/script.sh # 在用户crontab中添加
或系统级配置:
sudo echo "@reboot root /path/to/script.sh" > /etc/cron.d/myapp
rc.local(部分系统支持):
sudo echo "/path/to/myapp" >> /etc/rc.local
sudo chmod +x /etc/rc.local
桌面环境自启动(GUI应用):
将 .desktop
文件放入 ~/.config/autostart/
或 /etc/xdg/autostart/
。
After=
(systemd)或 chkconfig
数字(SysVinit)控制启动顺序。journalctl
(systemd)或服务日志文件排查问题。[Service]
部分添加 Environment=
或直接在脚本中导出。根据你的系统版本选择对应方案。现代 Linux 推荐优先使用 systemd。