Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >服务启动顺序问题:服务启动顺序设置错误,导致服务无法正常运行

服务启动顺序问题:服务启动顺序设置错误,导致服务无法正常运行

原创
作者头像
是山河呀
发布于 2025-02-06 04:17:36
发布于 2025-02-06 04:17:36
720
举报
文章被收录于专栏:linux运维linux运维
1. 使用Systemd管理服务启动顺序

Systemd 是现代Linux发行版中最常用的初始化系统和服务管理器。它通过 WantsRequiresAfter 等指令来控制服务的依赖关系和启动顺序。

示例配置文件

假设我们有两个服务:serviceAserviceB,其中 serviceB 依赖于 serviceA

  • /etc/systemd/system/serviceA.service [Unit] Description=Service A After=network.target [Service] ExecStart=/usr/bin/serviceA Restart=on-failure [Install] WantedBy=multi-user.target
  • /etc/systemd/system/serviceB.service [Unit] Description=Service B Requires=serviceA.service After=serviceA.service [Service] ExecStart=/usr/bin/serviceB Restart=on-failure [Install] WantedBy=multi-user.target

在这个示例中,serviceB 会在 serviceA 启动之后启动,并且 serviceB 的启动依赖于 serviceA

检查和调整服务启动顺序
  1. 查看服务状态 systemctl status serviceA.service systemctl status serviceB.service
  2. 重新加载配置 systemctl daemon-reload
  3. 重启服务 systemctl restart serviceA.service systemctl restart serviceB.service
2. 使用SysVinit管理服务启动顺序

对于使用 SysVinit 的系统,可以通过修改启动脚本中的 LSB 头来控制服务的启动顺序。

示例启动脚本
  • /etc/init.d/serviceA #!/bin/sh ### BEGIN INIT INFO # Provides: serviceA # Required-Start: $local_fs $remote_fs $network # Required-Stop: $local_fs $remote_fs $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Service A at boot time # Description: Enable Service A. ### END INIT INFO case "$1" in start) echo "Starting Service A" /usr/bin/serviceA ;; stop) echo "Stopping Service A" killall serviceA ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0
  • /etc/init.d/serviceB #!/bin/sh ### BEGIN INIT INFO # Provides: serviceB # Required-Start: $local_fs $remote_fs $network serviceA # Required-Stop: $local_fs $remote_fs $network serviceA # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start Service B at boot time # Description: Enable Service B. ### END INIT INFO case "$1" in start) echo "Starting Service B" /usr/bin/serviceB ;; stop) echo "Stopping Service B" killall serviceB ;; restart) $0 stop $0 start ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;; esac exit 0

在这个示例中,serviceB 的启动脚本指定了 Required-Start: serviceA,确保 serviceBserviceA 之后启动。

检查和调整服务启动顺序
  1. 查看服务启动级别 chkconfig --list
  2. 设置服务启动级别 chkconfig --level 35 serviceA on chkconfig --level 35 serviceB on
  3. 调整启动顺序 chkconfig --level 35 serviceB off chkconfig --level 35 serviceB on
3. 手动检查和调整启动顺序

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
安装编译nginx
今天老高更新了一下nginx,顺便把nginx的安装编译过程记录一下,分享给大家!
老高的技术博客
2022/12/27
6000
安装编译nginx
SoC如何开机自动运行脚本程序?
在Linux SoC开发中,实现SoC启动时执行特定脚本的方法主要取决于你使用的启动加载程序(Bootloader)以及Linux内核的配置。
不脱发的程序猿
2024/05/26
1040
nginx 设置管理命令
nginx管理命令: 我不是生产者,我只是大自然的搬运工。 以下脚本来自LNMP一键安装包中军哥的一键安装脚本。感谢军哥的辛勤劳动。 首先我们先用vim或者vi打开/etc/init.d/nginx; vim /etc/init.d/nginx 然后按i进入编辑模式,将以下内容复制到该文件里面: #! /bin/sh # chkconfig: 2345 55 25 # Description: Startup script for nginx webserver on Debian. Place in
魔王卷子
2019/06/02
7560
linux环境node服务器配置流程
 Node 官网已经把 linux 下载版本更改为已编译好的版本了,我们可以直接下载解压后使用:
smy
2018/12/27
2.1K0
CentOS6 安装代码检测工具sonarsource
本文介绍了如何在CentOS 6上安装SonarQube代码检测工具,包括下载、解压、配置、启动等步骤。同时还介绍了如何配置Nginx反向代理,以及启动和停止SonarQube服务的方法。
shaonbean
2018/01/02
8690
CentOS6 安装代码检测工具sonarsource
Debian 8.2 64位 安装MongoDB
http://blog.csdn.net/ctbinzi/article/details/42425989
zhangheng
2020/04/28
4260
服务停止问题:服务停止命令使用不当,导致服务无法正常停止
Systemd 提供了强大的工具来管理和停止服务。以下是一些常见的方法来确保服务能够正确停止。
是山河呀
2025/02/06
1250
服务重启问题:服务重启命令使用不当,导致服务无法正常重启
Systemd 提供了强大的工具来管理和重启服务。以下是一些常见的方法来确保服务能够正确重启。
是山河呀
2025/02/06
1270
服务自启动问题:服务自启动设置错误,导致服务无法自动启动
Systemd 提供了强大的工具来管理和设置服务的自启动。以下是一些常见的方法来确保服务能够正确自启动。
是山河呀
2025/02/06
920
linux设置开机自启动
例如,每次开机时要执行一个hello.sh,这个脚本放在/usr下面,那就可以在"/etc/rc.local"中加一行"/usr/./hello.sh",或者" cd /opt && ./hello.sh "
用户1685462
2021/07/27
17.9K0
Syncthing 的简单使用
地址:https://syncthing.net/downloads/ Github:https://github.com/syncthing/syncthing 或者:https://heanny.lanzoui.com/iV1tAplcnri (arm版本)
一朵灼灼华
2022/08/05
1.3K0
Syncthing 的简单使用
迅雷远程下载的服务脚本
放到/etc/init.d中即可。 /home/pi/xunlei/portal是portal的绝对路径! #!/bin/sh # # Xunlei initscript # ### BEGIN INIT INFO # Provides: xunlei # Required-Start: $network $local_fs $remote_fs # Required-Stop:: $network $local_fs $remote_fs # Should-Start:
老高的技术博客
2022/12/28
6550
讲解missing LSB tags and overrides
在Linux系统中,可能会遇到missing LSB tags and overrides的错误提示。本文将对这个错误进行详细讲解,并提供解决方案。
大盘鸡拌面
2023/12/20
4840
debian 开机启动脚本_ubuntu 自启动脚本
在debian6中,加入开机启动脚本的方法与debian5不同了,直接做符号链接到runlevel已经不起作用了,提示缺少LSB信息,并且用insserv来替代update-rc.d:
全栈程序员站长
2022/11/02
2.5K0
redis使用playbook批量安装
我们想使用playbook来安装redis服务,redis不能使用默认端口,要加入systemd系统服务里,且启动时以端口号来区分并启动
dogfei
2020/07/31
6770
Service命令及init.d启动脚本简析
我们在启用一些服务的时候,经常会用到这个service命令,比如启动apache2的命令$sudo service apache2 start等等。用他来开启或者关闭我们的服务可谓是非常的方便,因为service命令基本都会支持start、stop、restart之类的参数,十分的好记。
mythsman
2022/11/14
1.5K0
003.Keepalived搭建LVS高可用集群
注意:为了保证集群的稳定性,强烈建议在所有节点均部署NTP同步服务,保证所有时钟一致。
木二
2019/07/26
5680
Springboot 打包自带启动脚本
来启动springboot项目的。今天突然发现,springboot自动封装了一个bootJar的任务脚本。
Ryan-Miao
2019/12/10
1.7K0
Linux服务管理 — 78、独立服务的启动脚本分析
既然独立的服务启动是依靠/etc/init.d/服务名这个脚本来进行启动管理的,那么这个脚本中到底是什么样子的?我们以apache服务的启动脚本来学习一下启动脚本到底是怎么实现一个服务启动的。
玖柒的小窝
2021/12/15
5430
相关推荐
安装编译nginx
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文