今天自己在/etc/init.d/中自己创建服务shell时遇见一些麻烦
问题在于不太了解linux启动、重启、关机时对应以下说明的关系
--level<等级代号> 指定读系统服务要在哪一个执行等级中开启或关毕。
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
如果我这样设置:chkconfig --level 2345 servername on
第一个问题:我是否可以理解为在2345level时servername 服务启动,且其在关机重启时自动停止服务(即调用 service servername stop)
第二个问题:如果我理解有问题的话,那我应该如何在关机或是重启时停止该服务(必需停止并调用stop)
第三个问题:我看到网上写的一个关于chkconfig --add 的例子和我的理解及运行结果有些不同,例子如下:
例如service nfsserver没有设置自动启动选项的时候,我们在/rc*.d下看不到用来启动和停止service的symbollink文件
# chkconfig --list | grep nfsserver
nfsserver 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# ls /etc/rc.d/rc3.d | grep nfsserver
# ls /etc/rc.d/rc5.d | grep nfsserver
当我们为nfsserver service设置自动启动选项后,我们就可以看到相应的symbollink文件了
# chkconfig --add nfsserver
nfsserver 0:off 1:off 2:off 3:on 4:off 5:on 6:off
# cd /etc/rc.d/rc3.d
# ls -l | grep nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver -> ../init.d/nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../init.d/nfsserver
# cd /etc/rc.d/rc5.d
# ls -l | grep nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 K08nfsserver ->../init.d/nfsserver
lrwxrwxrwx 1 root root 12 2011-06-18 00:52 S14nfsserver -> ../init.d/nfsserver
当你取消此service在某个runlevel的自动启动选项的设置的时候,对应的rc*.d目录下的symbollink文件也将被自动的删
例子中意思是当你在某个level设置为on的时候会同时在相应的rcn.d中生成K和S,但是我实际情况是on的level生成S,off对应的rcn.d中生成K,是互斥的。
现在的问题就是自己写好的服务脚本只能正常启动却不能关闭导致pid文件不能删除,我手动执行service abc start 和 service abc stop命令都是没有问题的。
总体上来说就是不太明白linux服务启动及关闭的时点问题,希望对此了解V友们指点下。
系统版本Centos6
1
mahone3297 2015-01-06 16:48:16 +08:00
怎么设置我不知道。。。我知道的是。。。
有rc0.d, rc1.d, rc2.d。。。目录,对应启动级别,就是你上面说的 然后里面有一些脚步,包含start和stop时的脚本。。。 然后这些脚本,会有数字,来保证脚本执行的顺序 |
2
rrfeng 2015-01-06 17:00:29 +08:00
rhel 里是 on 的 level 增加 S 脚本,无 K 脚本。off 的增加 K 脚本,无 S 脚本。
所以是:所有 level 里都有一个 init 脚本的链接,但是 on 的名为 S 开头,off 的为 K 开头。 |
3
izoabr 2015-01-06 22:54:28 +08:00
现在好像是systemd了吧,我是到目前还没搞明白那东西怎么闹,可怜我的Gentoo
|