suse中的insserv文件,以及init.d与systemd的回顾

本文探讨Linux中服务注册的两种方式:init.d和systemd。重点介绍SUSE Linux中使用insserv脚本检查服务脚本格式的过程,以及如何正确设置服务开机自启动。通过实例展示了常见的错误及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

谈到这个insserv文件(文件位于/sbin/insserv),我们不得不回忆一下,Linux中服务注册的两种方式,一种是init.d的形式,一种systemd的形式
1.Linux中服务启动的方式有两种

  • /etc/init.d,对应的服务管理命令为service 服务名 start
    在这里插入图片描述
    例如我们vim mysql,可以看到它也就是一个去启动、
    关闭、重启等MySQL数据库的一个shell脚本
service mysql start
service mysql stop
service mysql status
  • /etc/systemd/system,下面对应的大都为一些.services文件
    对应的服务管理命令为systemctl start 服务名
    在这里插入图片描述
vim network.service

在这里插入图片描述

systemctl start network
systemctl stop network
systemctl status network

在这里插入图片描述
2.服务设置为开机自启动,大家都知道使用chkconfig,它是专门用来管理系统服务(service)的命令行工具。
例如我们要设置某个服务为开机自动启动

chkconfig service_name on

重点来了
suse Linux和其它Linux不同的地方在于,suse Linux在使用chkconfig命令时,会用一个perl脚本,也就是文章标题中的insserv文件来检查/etc/init.d下服务脚本中的格式
例如
在这里插入图片描述
我们先打开insserv看看,是perl代码,定位到94行
在这里插入图片描述
这里这个unless代码块(perl中的unless和if恰恰相反,在false的时候执行)
可以看出有这么一句

 unless (s/^#\s//) {
		  warn "$name: parse error";
		  $r = undef;
		  last;
}

我们再打开flashbackup看看
在这里插入图片描述
可以看出flashbackup开头连续三个#号的地方,联系insserv的那个判断,不难看出,insserv要求我们要以#号开头,且后面要有空格,然而我们的shell脚本中却出现了连续三个#号,所以报错了,当我将三个#号的地方改为如下图中所示
在这里插入图片描述
再回去运行,就正常了

chkconfig flashbackup on

说明:
suse中指定运行级别已经不再是–level了,而是改为了–set了,详细说明可以chkconfig --help查看

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值