今天自己在/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
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.