9,shell 脚本如何显示 OK 或 FAILED
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了9,shell 脚本如何显示 OK 或 FAILED,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2975字,纯文字阅读大概需要5分钟。
内容图文
![9,shell 脚本如何显示 OK 或 FAILED](/upload/InfoBanner/zyjiaocheng/936/e6a70737aa074ef1b9e002264b15b272.jpg)
在日常的工作中运维通常会安装各种各样的应用服务,例如:Nginx、httpd、MySQL 等。如果我们是用 yum 来安装,通常情况下 RPM 包的作者已经帮助我们写好了服务的启动脚本。我们在使用启动脚本的过程中几乎都会看到以下提示信息,提示我们服务是否启动成功。
上图所看到的样式,在 CentOS7.X 版本的操作系统中可能不会经常看到,因为 CentOS7 已经改为 systemd 格式的启动脚本。
问题来了,上图显示的 OK 和 FAILED 是如何出现的呢?我们自己写脚本的时候能不能也能有这样的效果?答案肯定是可以,在这之前我们要先说一下 /etc/init.d/functions 函数。
/etc/init.d/functions
functions 这个脚本是给 /etc/init.d 里边的文件使用的,提供了一些基础的功能,看看里边究竟有些什么。首先会设置 umask,path,还有语言环境,然后会设置 success,failure,warning,normal 几种情况下的字体颜色。
checkpid:检查是否已存在pid,如果有一个存在,返回0(通过查看/proc目录) daemon:启动某个服务。/etc/init.d目录部分脚本的start使用到这个 killproc:杀死某个进程。/etc/init.d目录部分脚本的stop使用到这个 pidfileofproc:寻找某个进程的pid pidofproc:类似上面的,只是还查找了pidof命令 status:返回一个服务的状态 echo_success,echo_failure,echo_passed,echo_warning分别输出各类信息 success,failure,passed,warning分别记录日志并调用相应的方法 action:打印某个信息并执行给定的命令,它会根据命令执行的结果来调用 success,failure方法 strstr:判断$1是否含有$2 confirm:显示 "Start service $1 (Y)es/(N)o/(C)ontinue? [Y]"的提示信息,并返回选择结果
其实 RPM 包中的启动脚本就是调用了 functions 函数中的 success 和 failure 方法,你也可能说有的脚本里并没有调用这两个函数,其实还有另一个函数 action() 我们打开 functions 文件找到 action()函数看看里面写了什么。
# Run some action. Log its output. action() { local STRING rc STRING=$1 echo -n "$STRING " shift "$@" && success $"$STRING" || failure $"$STRING" rc=$? echo return $rc }
action函数中可以看到本质上函数内部还是调用了 success 和 failure 两个函数。
下面我们通过一个示例演示一下如何使用 success 和 failure 函数实现我们期望的效果:
在 /tmp 下创建名为 nginx 的文件
#!/bin/bash # # 演示 success 和 failure 函数效果 . /etc/init.d/functions nginx="/sbin/nginx" show_usage() { usage="Usage: `basename $0` [start|stop]" echo $usage exit } ######################## # start 函数 # 调用 functions 中的 success 和 failure ######################## start() { [[ `netstat -ntlup|grep nginx|wc -l` > 0 ]] && failure && echo "Nginx is Running!" && exit $nginx ([ $? -eq 0 ] && success && echo "Nginx starts successfully!") || (failure && echo "Failed start nginx") } ######################## # stop 函数 # 调用 functions 中的 success 和 failure ######################## stop() { [[ `netstat -ntlup|grep nginx|wc -l` == 0 ]] && failure && echo "Nginx is NOT running!" && exit echo "Stopping Nginx..." $nginx -s stop ([ $? -eq 0 ] && success && echo "Nginx stops successfully!") || (failure && echo "Failed stop nginx!") } case $1 in start) start ;; stop) stop ;; *) show_usage ;; esac
记得为脚本添加执行权限,接下来我们执行该脚本看看效果如何。
上图可以发现,脚本在第一次启动 Nginx 时显示 OK 连续在启动一次因为 Nginx 已经运行了,所以显示 FAILED,停止时也是相同道理。
内容总结
以上是互联网集市为您收集整理的9,shell 脚本如何显示 OK 或 FAILED全部内容,希望文章能够帮你解决9,shell 脚本如何显示 OK 或 FAILED所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。