Ubuntu server 开机服务不启动,服务无法自启动

本文详细指导如何在Ubuntu 20.04上配置systemd服务,包括设置关联脚本、指定启动级别,以及理解启动模板的使用。通过实例说明如何设置服务默认启动,并提供相关链接以供参考。
部署运行你感兴趣的模型镜像

Ubuntu 版本:20.04.1 TLS

在 /lib/systemd/system/ , /etc/systemd/system/ 两个目录配置好服务关联后设置systemctl enable XXXX 服务成功。

重启服务器,服务未启动,排查结果:脚本未设置启动级别。

服务脚本模板:

#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.

(此处插入启动级别内容)


(....)用户自定义要运行的代码


exit 0

启动级别模板:2 3 4 5 为开机机器运行的相关时段尝试启动服务

### BEGIN INIT INFO
# Provides:       service_name
# Required-Start:
# Required-Stop: 
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Short-Description:  
# Description:   
### END INIT INFO

引用内容:

设置服务启动配置

https://blog.youkuaiyun.com/ErErFei/article/details/98205463

启动模板配置

https://mp.youkuaiyun.com/editor/html/110097791

您可能感兴趣的与本文相关的镜像

Stable-Diffusion-3.5

Stable-Diffusion-3.5

图片生成
Stable-Diffusion

Stable Diffusion 3.5 (SD 3.5) 是由 Stability AI 推出的新一代文本到图像生成模型,相比 3.0 版本,它提升了图像质量、运行速度和硬件效率

Ubuntu 系统中设置服务程序开机自启动,有多种方法可以根据具体需求进行选择。以下是一些常见的实现方式: ### 使用 systemd 服务 systemd 是现代 Ubuntu 版本中广泛使用的系统和服务管理工具。可以通过创建一个自定义的 `.service` 文件来定义服务。 1. 在 `/etc/systemd/system/` 目录下创建服务文件,例如 `myprogram.service`: ```ini [Unit] Description=My Program After=network.target [Service] ExecStart=/path/to/your/program Restart=always User=root [Install] WantedBy=multi-user.target ``` 2. 启用并启动服务: ```bash sudo systemctl enable myprogram.service sudo systemctl start myprogram.service ``` 这种方法适用于需要在系统启动时以守护进程运行的服务,尤其适合后台程序或长时间运行的任务 [^2]。 --- ### 使用 rc.local 文件 对于使用 SysVinit 的系统,可以通过编辑 `/etc/rc.local` 文件添加启动命令。 1. 编辑 `/etc/rc.local` 文件,在 `exit 0` 之前添加启动命令: ```bash /path/to/your/program & ``` 2. 确保文件具有可执行权限: ```bash sudo chmod +x /etc/rc.local ``` 这种方式适用于简单的脚本或程序,但在较新的 Ubuntu 版本中可能推荐使用 [^2]。 --- ### 使用 crontab 的 @reboot 指令 crontab 提供了定时任务功能,也可以通过 `@reboot` 指令实现开机自启动。 1. 编辑当前用户的 crontab 文件: ```bash crontab -e ``` 2. 添加以下内容: ```bash @reboot /path/to/your/program ``` 这种方法适用于用户级别的任务,但需要注意环境变量的问题 。 --- ### 使用桌面环境自启动(Startup Applications) 如果使用的是图形化桌面环境(如 GNOME),可以通过“Startup Applications Preferences”设置开机启动程序。 1. 打开启动应用程序首选项: ```bash gnome-session-properties ``` 2. 点击 “Add” 按钮,输入程序名称和执行路径,保存即可。 也可以手动创建 `.desktop` 文件并放入 `~/.config/autostart/` 目录: ```ini [Desktop Entry] Type=Application Name=My Program Exec=/path/to/your/program Hidden=false ``` 这种方式适用于桌面用户需要在登录后自动运行的程序 [^3]。 --- ### 使用 update-rc.d(适用于 SysVinit) 对于使用 SysVinit 的系统,可以通过创建启动脚本并使用 `update-rc.d` 设置开机启动。 1. 创建脚本 `/etc/init.d/myprogram`: ```bash #!/bin/sh /path/to/your/program ``` 2. 设置脚本权限并启用服务: ```bash sudo chmod +x /etc/init.d/myprogram sudo update-rc.d myprogram defaults ``` 这种方法适用于老旧的系统环境,但在现代系统中逐渐被淘汰 。 --- ### 总结与选择建议 - **systemd**:推荐用于现代 Ubuntu 版本,适合后台服务和系统级任务。 - **crontab @reboot**:适合用户级任务,但需要注意环境变量问题。 - **rc.local**:适用于简单的启动脚本,但在较新系统中可能推荐。 - **桌面环境自启动**:适合图形化用户界面程序。 - **update-rc.d**:适用于老旧的 SysVinit 系统。 选择合适的方法取决于具体的使用场景、系统版本以及程序的运行需求。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值