《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进入/退出调试模式。
- 《Linux命令、编辑器与Shell编程》读书笔记14-Shell实例及调试
- 《Linux命令、编辑器与Shell编程》读书笔记10-vim编辑器
- 《Linux命令、编辑器与Shell编程》读书笔记2-linux常用命令
- 《Linux命令、编辑器与Shell编程》读书笔记7-Linux系统管理
- 《Linux命令、编辑器与Shell编程》读书笔记11-Shell编程基础
- 《Linux命令、编辑器与Shell编程》读书笔记1-linux系统入门命令
- 《Linux命令、编辑器与Shell编程》读书笔记3-linux命令中的特殊字符和正则表达式
- <Linux命令,编辑器和shell编程>之命令部分读书笔记
- Linux命令、编辑器与Shell编程
- 实用程序--linux命令、编辑器与shell编程
- 《Linux命令、编辑器与Shell编程》读书笔记8-Linux数据备份与应用管理
- 《Linux命令、编辑器与Shell编程》读书笔记9-Linux网络管理
- 《Linux命令、编辑器与Shell编程》读书笔记4.1-查找和筛选工具(grep,find,sed)
- 《Linux命令、编辑器与Shell编程》读书笔记4.2-格式化文本工具(awk)
- 《Linux命令、编辑器与Shell编程》读书笔记5-用户和文件权限管理
- 《Linux命令、编辑器与Shell编程》读书笔记6-磁盘和文件系统管理
- 《Linux命令、编辑器与Shell编程》读书笔记12-函数和脚本
- 《Linux命令、编辑器与Shell编程》读书笔记13-系统脚本和登录环境
- 关于Android权限被禁止的问题
- 有向图的强连通分量的求解算法Tarjan
- 自定义UITextView
- poj 1088 滑雪 dfs+动规
- 分治法求一组数据的和
- 《Linux命令、编辑器与Shell编程》读书笔记14-Shell实例及调试
- PHP得到checkbox多值
- sublime3集成markdown
- 用zepto显示类似微信上下翻页的实现代码
- 游戏服务器之mysql句柄连接池
- 算法 狼找兔子问题
- Bzoj3562 神器化合物[Shoi 2014]
- ios中alloc和new的区别
- java_70-73_annotation+Exception