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

本文深入探讨了运行级别脚本的概念、结构及如何在系统中实现自定义服务的启动与管理。重点介绍了脚本的编写方法、权限设置、安全性考虑,并详细阐述了如何使用chkconfig命令进行服务的配置与管理。此外,文章还特别强调了Shell脚本的安全性限制,以确保系统的稳定性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

所谓运行级别脚本,就是启动/关闭自定义服务(应用)的脚本,相当于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 1
esac
exit 0


添加和管理启动脚本

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

(详见:http://blog.youkuaiyun.com/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进入/退出调试模式。


 

推荐理由 它是Pearson、Amazon、Bames&Noble 计算机畅销书!   知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   本书特点:   1.它是Pearson、Amazon、Bames&Noble 计算机畅销书!   2.知名Linux专家Mark Sobell 编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一本卓越的日常参考手册。   3.一本值得每一位Linux管理人员、开发人员和高级用户拥有的指南!   4.本书并不针对特定的Linux版本或者某个发行版本,而是适用于所有近期发布的Linux版本;   5.最实用的Linux指南和参考手册,数百个高质量的实例覆盖了每种Linux发行版!   6.本书覆盖超过80个核心工具、shell编程编辑器编程工具,能使您成为真正的Linux高手,它是掌握强大的Linux命令行的捷径。   本书是目前所能找到的最实用、最全面的Linux指南和参考手册,也是唯一一本提供以下全部内容的书籍:   更好更实用的示例覆盖了实际工作中需要执行的任务;   基于作者对Linux的渊博知识,本书提供了更加深入的理解;   为从aspell到xargs等80多个工具提供了更加实用的讲解;   使用ssh和scp的安全通信实现技术,以及多处让系统更加安全的提示;   很好地介绍了Linux编程环境,包括make、gcc、gdb、CVS等;   关于使用bash和tcsh进行基本的和高级的shell编程的专家指南;   定制shell以及在命令行上交互使用shell的提示和技巧;   提供了vim和emacs的详细指南,目的是为了帮助读者提高编辑效率;   大量练习将有助于提高读者的动手能力并获得自信心;   介绍了如何使用Apt、yum和BitTorrent自动更新系统;   还介绍了gawk、sed、find、sort、bzip2和正则表达式等内容。 内容简介要想真正高效地使用Linux,就必须全面掌握shell命令行。通常必须购买两本书才能达到精通的目的:一本关于Linux基本概念和技术的指南,再加上一个单独的参考手册。更糟糕的是,大多数Linux参考手册只是对man手册页的稍加整理。而现在有了一个好得多的解决方案。知名Linux专家Mark Sobell编写的这本书,为系统管理员、开发人员和高级用户提供了最需要的全面的深入指导,同时还是一个卓越的日常参考手册。   本书具体版本无关,可以在任何Linux系统上使用。更重要的是,书中包含数百个高质量的示例,这些示例要比其他任何一本Linux手册中的示例要实用得多。本书全面介绍了Linux:为从文件系统到shell、从编辑器到工具以及从编程工具到正则表达式等方面提供了最清晰的讲解和最有用的知识。并且,当需要立即得到答案时,可以翻到本书的命令参考部分,这部分内容经过精心组织和标注,非常易于快速查找! 作者简介 Mark G.Sobell是Sobell Associates 公司的主席,该公司是一个专于UNLX/Linux 培训、技术支持和用户软件开发的咨询公司。Sobell是多本UNIX和Linux畅销书的作者,著有Prentice Hall PTR出版社出版的A Prac-tical Guide to Red Hat Linux,Second Edition一书,以及Addison-Wesley出版社出版的A Practical Guide to UNIX System,Hands-on UNIX和A Practical Guide to Solaris。Sobell具有超过25年使用UNIX和Linux的经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值