《Linux命令、编辑器与Shell编程》读书笔记14-Shell实例及调试

来源:互联网 发布:iphone8将支持5g网络 编辑:程序博客网 时间:2024/05/16 19:32

所谓运行级别脚本,就是启动/关闭自定义服务(应用)的脚本,相当于windows下某个应用的启动程序文件(.exe文件)。也可以理解这种脚本就是一个启动应用的脚本。

运行级别脚本的结构

1. 首先要以注释的方式声明服务默认启动的运行级别列表,以及系统在启动、关闭该服务时的优先级;说明之后一般有三种方式去实现:

(1)可以通过在inittab中添加一项,来确定在系统启动时,必须执行自己定义的脚本

    xx.sh:12345:once:path > /dev/null 2>&1

(2)可以在运行级别中目录[/etc/rc.d/rc3.d]中添加脚本连接文件 --最好方式

(3)在/etc/rc.d/rc.local(SUSE下是boot.local)文件中添加shell_patharg命令来执行

2. 将对服务的启动、关闭等操作都卸载函数中

3. 用case语句处理传入脚本的参数。

4. 如果要检测服务是否处于运行状态,最好创建运行标记文件

某产品运行级别脚本示例

#!/bin/bash #chkconfig:3 4 5 80 10#This is a test service! function usage(){       echo "Usage: $0 <start|stop|restart|reload>"       return 0} function start(){       echo "Starting $0:"#这里还以添加其他要启动和运行的脚本       return 0} function Stop(){       echo "Stopping $0:"#这里可以添加其他要停止运行的脚本       return 0} case $1 in       start)                start                ;;       Stop)                Stop                ;;       stop)                Stop                ;;       reload|restart)                Stop                start                ;;       *)                usage                exit 1esacexit 0


添加和管理启动脚本

关于设置自定义服务的运行级别等方法,可以使用前面说过的chkconfig命令实现

(详见:http://blog.csdn.net/victory_xing126/article/details/50363557)

简单的说:

1. 先将自定义启动脚本拷贝到/etc/init.d文件夹下:

cp  service_script.sh /etc/init.d/

2. 添加启动脚本到系统服务自启列表中:

# chkconfig -add  service_script.sh

insserv: warning: script'service_script.sh' missing LSB tags

insserv: warning: script'service_script.sh' missing LSB tags

insserv: Default-Start undefined, assumingdefault start runlevel(s) for script `service_script.sh'

service_script.sh         0:off 1:off  2:off  3:on  4:off  5:on   6:off

之后就可以使用chkconfig命令统一管理自定义脚本了:

#chkconfig -l|grep service_s

service_script.sh         0:off 1:off  2:off  3:on  4:off  5:on   6:off

Shell脚本安全性

如果脚本中出现目录切换、修改环境变量之类的命令,则可能为系统留下安全隐患,为此Shell提供了一种受限模式:当脚本中出现类似上述的命令,Bash会拒绝执行。

通过在脚本的第一行加上r选项来开启该模式:

#!/bin/bash -r

或者在脚本第二行中加入:

set -r

也能使脚本进入受限模式。

*set命令还有一个选项(x)可以使脚本进入调试模式,可以针对某一段使用set -x、set +x进入/退出调试模式。


 

0 0
原创粉丝点击