关于初始化shell脚本的头部疑问

ladofwind 中国国际金融有限公司 研发部经理  2014-07-14 11:09:43
# Comments to support chkconfig on RedHat Linux
# chkconfig: 2345 64 36
# description: A very fast and reliable SQL database engine.

# Comments to support LSB init script conventions
### BEGIN INIT INFO
# Provides: ovmm_mysql
# Required-Start: $local_fs $network $remote_fs
# Should-Start: ypbind nscd ldap ntpd xntpd
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop MySQL
# Description: MySQL is a very fast and reliable SQL database engine.
### END INIT INFO



1. 这些都comment 加星号了,系统能够认识,是有特殊约定?我理解前三行是用chkconfig 把此脚本加到系统启动里
2. 下面的support LSB 是说为了兼容各种linux系统?那么在什么情况下系统会看这段呢?因为上面已经设置了
启动顺序,下面又定义了服务的依赖关系,不会产生冲突吗?
3. 下面那部分的依赖, local_fs这些,我不知道我的服务应该依赖什么,也就是说这个全集在哪能看到?
should start后面的ypbind这些,全集又在哪里?

谢谢!

...全文
94 点赞 收藏 12
写回复
12 条回复
ladofwind 2014年07月14日
有没有懂这个LSB的comment的呢?
回复 点赞
fateand 2014年07月14日
引用 11 楼 fateand 的回复:
[quote=引用 10 楼 ladofwind 的回复:] [quote=引用 9 楼 fateand 的回复:] [quote=引用 6 楼 ladofwind 的回复:] [quote=引用 4 楼 fateand 的回复:] chkconfig是加服务在启动级别里是否启动的。但和这个前三行半毛钱关系都没有,例如chkconfig --level 3 mysqld on就是在3级别里启动mysqld这个服务,这个mysqld默认调用的是/usr/init.d/mysqld这个脚本来启动关闭。
我在执行的时候/sbin/chkconfig --add ovmm_mysql, 好像他会读取前三行, # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 64 36 # description: A very fast and reliable SQL database engine. 去根据 2345, 64, 36 去设置启动顺序值,所以虽然是comment, 我理解应该是有用的, 下面的恐怕也有用吧? 并不单单是注释,感谢回答! [/quote]大哥,chkconfig这个命令如果读取,也应该读的是/etc/init.d/下的某一个启动脚本的comments,注释里从哪个级别启动,应该是人为控制。 你可以试试把你那个文件前三行del后,再用chkconfig level试试[/quote] 我整明白了,我这个文件头就是一个shell 脚本,装在/etc/init.d/下,然后用chkconfig安装的,前三行是运行优先级, 如果有后面LSB的话,后面覆盖前面,我看英文资料这么写的,感谢,我大概明白了 http://linux.die.net/man/8/chkconfig # chkconfig: 2345 20 80 # description: Saves and restores system entropy pool for \ # higher quality random number generation. This says that the random script should be started in levels 2, 3, 4, and 5, that its start priority should be 20, and that its stop priority should be 80. You should be able to figure out what the description says; the \ causes the line to be continued. The extra space in front of the line is ignored. chkconfig also supports LSB-style init stanzas, and will apply them in preference to "chkconfig:" lines where available. A LSB stanza looks like: ### BEGIN INIT INFO # Provides: foo # Required-Start: bar # Defalt-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Foo init script ### END INIT INFO In this case, the start priority of "foo" would be changed such that it is higher than the "bar" start priority, if "bar" is enabled. Care must be taken when adding dependencies, as they can cause vast shifts in the start and stop priorities of many scripts.[/quote]我想马后炮的说,我说的也是这个意思,可能没有说清楚[/quote]还有昂,chkconfig --add加完后,它的作用是在系统启动的时候,自动启动服务。可以用chkconfig --list |grep -i lst来检查你的服务是开在哪个级别。它的启动级别是根据chkconfig --list |grep -i lst这个里面来启动的。而你发的这个脚本,只是启动时会来读取的一个shell脚本。只有定义了在level下启动哪个脚本,才会读到这个脚本。这些chkconfig -add加进去的服务启动方式在/etc/rc.d/3或者6这样的目录下。系统启动读的将会是这些目录。
回复 点赞
fateand 2014年07月14日
引用 10 楼 ladofwind 的回复:
[quote=引用 9 楼 fateand 的回复:] [quote=引用 6 楼 ladofwind 的回复:] [quote=引用 4 楼 fateand 的回复:] chkconfig是加服务在启动级别里是否启动的。但和这个前三行半毛钱关系都没有,例如chkconfig --level 3 mysqld on就是在3级别里启动mysqld这个服务,这个mysqld默认调用的是/usr/init.d/mysqld这个脚本来启动关闭。
我在执行的时候/sbin/chkconfig --add ovmm_mysql, 好像他会读取前三行, # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 64 36 # description: A very fast and reliable SQL database engine. 去根据 2345, 64, 36 去设置启动顺序值,所以虽然是comment, 我理解应该是有用的, 下面的恐怕也有用吧? 并不单单是注释,感谢回答! [/quote]大哥,chkconfig这个命令如果读取,也应该读的是/etc/init.d/下的某一个启动脚本的comments,注释里从哪个级别启动,应该是人为控制。 你可以试试把你那个文件前三行del后,再用chkconfig level试试[/quote] 我整明白了,我这个文件头就是一个shell 脚本,装在/etc/init.d/下,然后用chkconfig安装的,前三行是运行优先级, 如果有后面LSB的话,后面覆盖前面,我看英文资料这么写的,感谢,我大概明白了 http://linux.die.net/man/8/chkconfig # chkconfig: 2345 20 80 # description: Saves and restores system entropy pool for \ # higher quality random number generation. This says that the random script should be started in levels 2, 3, 4, and 5, that its start priority should be 20, and that its stop priority should be 80. You should be able to figure out what the description says; the \ causes the line to be continued. The extra space in front of the line is ignored. chkconfig also supports LSB-style init stanzas, and will apply them in preference to "chkconfig:" lines where available. A LSB stanza looks like: ### BEGIN INIT INFO # Provides: foo # Required-Start: bar # Defalt-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Foo init script ### END INIT INFO In this case, the start priority of "foo" would be changed such that it is higher than the "bar" start priority, if "bar" is enabled. Care must be taken when adding dependencies, as they can cause vast shifts in the start and stop priorities of many scripts.[/quote]我想马后炮的说,我说的也是这个意思,可能没有说清楚
回复 点赞
ladofwind 2014年07月14日
引用 9 楼 fateand 的回复:
[quote=引用 6 楼 ladofwind 的回复:] [quote=引用 4 楼 fateand 的回复:] chkconfig是加服务在启动级别里是否启动的。但和这个前三行半毛钱关系都没有,例如chkconfig --level 3 mysqld on就是在3级别里启动mysqld这个服务,这个mysqld默认调用的是/usr/init.d/mysqld这个脚本来启动关闭。
我在执行的时候/sbin/chkconfig --add ovmm_mysql, 好像他会读取前三行, # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 64 36 # description: A very fast and reliable SQL database engine. 去根据 2345, 64, 36 去设置启动顺序值,所以虽然是comment, 我理解应该是有用的, 下面的恐怕也有用吧? 并不单单是注释,感谢回答! [/quote]大哥,chkconfig这个命令如果读取,也应该读的是/etc/init.d/下的某一个启动脚本的comments,注释里从哪个级别启动,应该是人为控制。 你可以试试把你那个文件前三行del后,再用chkconfig level试试[/quote] 我整明白了,我这个文件头就是一个shell 脚本,装在/etc/init.d/下,然后用chkconfig安装的,前三行是运行优先级, 如果有后面LSB的话,后面覆盖前面,我看英文资料这么写的,感谢,我大概明白了 http://linux.die.net/man/8/chkconfig # chkconfig: 2345 20 80 # description: Saves and restores system entropy pool for \ # higher quality random number generation. This says that the random script should be started in levels 2, 3, 4, and 5, that its start priority should be 20, and that its stop priority should be 80. You should be able to figure out what the description says; the \ causes the line to be continued. The extra space in front of the line is ignored. chkconfig also supports LSB-style init stanzas, and will apply them in preference to "chkconfig:" lines where available. A LSB stanza looks like: ### BEGIN INIT INFO # Provides: foo # Required-Start: bar # Defalt-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Description: Foo init script ### END INIT INFO In this case, the start priority of "foo" would be changed such that it is higher than the "bar" start priority, if "bar" is enabled. Care must be taken when adding dependencies, as they can cause vast shifts in the start and stop priorities of many scripts.
回复 点赞
fateand 2014年07月14日
引用 6 楼 ladofwind 的回复:
[quote=引用 4 楼 fateand 的回复:] chkconfig是加服务在启动级别里是否启动的。但和这个前三行半毛钱关系都没有,例如chkconfig --level 3 mysqld on就是在3级别里启动mysqld这个服务,这个mysqld默认调用的是/usr/init.d/mysqld这个脚本来启动关闭。
我在执行的时候/sbin/chkconfig --add ovmm_mysql, 好像他会读取前三行, # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 64 36 # description: A very fast and reliable SQL database engine. 去根据 2345, 64, 36 去设置启动顺序值,所以虽然是comment, 我理解应该是有用的, 下面的恐怕也有用吧? 并不单单是注释,感谢回答! [/quote]大哥,chkconfig这个命令如果读取,也应该读的是/etc/init.d/下的某一个启动脚本的comments,注释里从哪个级别启动,应该是人为控制。 你可以试试把你那个文件前三行del后,再用chkconfig level试试
回复 点赞
fateand 2014年07月14日
引用 7 楼 ladofwind 的回复:
[quote=引用 5 楼 fateand 的回复:] 第二个,2. 下面的support LSB 是说为了兼容各种linux系统?那么在什么情况下系统会看这段呢?因为上面已经设置了 启动顺序,下面又定义了服务的依赖关系,不会产生冲突吗? 你理解的是对的,是注释里让安装这个lsb的人看的,告诉安装的人你装在不同的系统,需要注意不同的启动顺序。 再者,启动顺序是安装包已经安装到os上,才能启动。依赖包多数是在安装过程当中需要你安装的。少数启动的依赖一般也是环境变量问题。 第三个下面那部分的依赖, local_fs这些,我不知道我的服务应该依赖什么,也就是说这个全集在哪能看到? should start后面的ypbind这些,全集又在哪里? 尼想找local_fs依赖什么,如果你有现成的loal_fs的安装包,一般里面会有readme,如果没有readme就去官网看,安装这个需要哪些依赖包,依赖包也可以直接上http://rpm.pbone.net/上面搜索现成的rpm包。
安装这个lsb的人看的? 我理解是不是这个文件头,就能让lsb理解这个服务的启动级别和依赖信息?[/quote]根据文件头文件,可以尝试用ldd 文件头整个路径来跟踪依赖模块,不过据我估计,文件头ldd不出来,还是得需要用二进制程序ldd的,就可以把系统依赖的libgcc2还是啥mod都会打印出来,你再根据模块包找包名好找多了。或者你直接安装这个包,缺哪个依赖包就会提示哪个,比你现在去找命令研究应该会快一点的。
回复 点赞
ladofwind 2014年07月14日
引用 5 楼 fateand 的回复:
第二个,2. 下面的support LSB 是说为了兼容各种linux系统?那么在什么情况下系统会看这段呢?因为上面已经设置了 启动顺序,下面又定义了服务的依赖关系,不会产生冲突吗? 你理解的是对的,是注释里让安装这个lsb的人看的,告诉安装的人你装在不同的系统,需要注意不同的启动顺序。 再者,启动顺序是安装包已经安装到os上,才能启动。依赖包多数是在安装过程当中需要你安装的。少数启动的依赖一般也是环境变量问题。 第三个下面那部分的依赖, local_fs这些,我不知道我的服务应该依赖什么,也就是说这个全集在哪能看到? should start后面的ypbind这些,全集又在哪里? 尼想找local_fs依赖什么,如果你有现成的loal_fs的安装包,一般里面会有readme,如果没有readme就去官网看,安装这个需要哪些依赖包,依赖包也可以直接上http://rpm.pbone.net/上面搜索现成的rpm包。
安装这个lsb的人看的? 我理解是不是这个文件头,就能让lsb理解这个服务的启动级别和依赖信息?
回复 点赞
ladofwind 2014年07月14日
引用 4 楼 fateand 的回复:
chkconfig是加服务在启动级别里是否启动的。但和这个前三行半毛钱关系都没有,例如chkconfig --level 3 mysqld on就是在3级别里启动mysqld这个服务,这个mysqld默认调用的是/usr/init.d/mysqld这个脚本来启动关闭。
我在执行的时候/sbin/chkconfig --add ovmm_mysql, 好像他会读取前三行, # Comments to support chkconfig on RedHat Linux # chkconfig: 2345 64 36 # description: A very fast and reliable SQL database engine. 去根据 2345, 64, 36 去设置启动顺序值,所以虽然是comment, 我理解应该是有用的, 下面的恐怕也有用吧? 并不单单是注释,感谢回答!
回复 点赞
fateand 2014年07月14日
第二个,2. 下面的support LSB 是说为了兼容各种linux系统?那么在什么情况下系统会看这段呢?因为上面已经设置了 启动顺序,下面又定义了服务的依赖关系,不会产生冲突吗? 你理解的是对的,是注释里让安装这个lsb的人看的,告诉安装的人你装在不同的系统,需要注意不同的启动顺序。 再者,启动顺序是安装包已经安装到os上,才能启动。依赖包多数是在安装过程当中需要你安装的。少数启动的依赖一般也是环境变量问题。 第三个下面那部分的依赖, local_fs这些,我不知道我的服务应该依赖什么,也就是说这个全集在哪能看到? should start后面的ypbind这些,全集又在哪里? 尼想找local_fs依赖什么,如果你有现成的loal_fs的安装包,一般里面会有readme,如果没有readme就去官网看,安装这个需要哪些依赖包,依赖包也可以直接上http://rpm.pbone.net/上面搜索现成的rpm包。
回复 点赞
fateand 2014年07月14日
chkconfig是加服务在启动级别里是否启动的。但和这个前三行半毛钱关系都没有,例如chkconfig --level 3 mysqld on就是在3级别里启动mysqld这个服务,这个mysqld默认调用的是/usr/init.d/mysqld这个脚本来启动关闭。
回复 点赞
fateand 2014年07月14日
这个好像是lsb start info;只是注释信息,在python , shell 里#都表示注释的呀 # Comments to support LSB init script conventions ### BEGIN INIT INFO # Provides: ovmm_mysql # Required-Start: $local_fs $network $remote_fs # Should-Start: ypbind nscd ldap ntpd xntpd # Required-Stop: $local_fs $network $remote_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: start and stop MySQL # Description: MySQL is a very fast and reliable SQL database engine. ### END INIT INFO
回复 点赞
buyong 2014年07月14日
这就是注释信息吧?
回复 点赞
发动态
发帖子
系统维护与使用区
创建于2007-08-27

5682

社区成员

7.4w+

社区内容

系统使用、管理、维护问题。可以是Ubuntu, Fedora, Unix等等
社区公告
暂无公告