shell if 条件语句实践
对于if 语法 我们不过多做介绍,这里直接上实例,以开发rsync服务启动脚本为例,先对rsync做个简单介绍
[root@backup ~]# rpm -qa|grep rsync
rsync-3.0.-.el6.x86_64
[root@backup ~]#
[root@backup ~]# cat /etc/rsync
rsyncd.conf rsync.password
[root@backup ~]# cat /etc/rsyncd.conf
#Rsync server
uid = rsync
gid = rsync
use chroot = no
max connections =
timeout =
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = false
list = false
hosts allow = 172.16.80.0/
hosts deny = 0.0.0.0/
auth users = rsync_backup
secrets file = /etc/rsync.password
###########
[backup]
comment = backup by martin
path = /backup [root@backup ~]# cat /etc/rsync
rsyncd.conf rsync.password
[root@backup ~]# cat /etc/rsync.password
rsync_backup:
[root@backup ~]#
[root@backup ~]# rsync --daemon #启动rsync
[root@backup ~]# netstat -lntup|grep rsync
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rsync
tcp ::: :::* LISTEN /rsync
[root@backup ~]# pkill rsync #停止rsync
[root@backup ~]# netstat -lntup|grep rsync
判断rsync服务是否启动的方法
常规方法有检测端口以及进程是否存在,可以当服务启动时,创建一个锁文件 /var/lock/subsys/ 而当服务停止时,就删除这个锁文件,这样就可以通过判断这个文件有无来确定服务是否是启动的状态,这是一些系统脚本常用的手法,脚本开发如下
[root@backup ~]# cat rsyncd.sh
#!/bin/bash
# chkconfig: 80
# 2345是linux的启动运行级别,20表示开始启动顺序,80表示脚本停止顺序,这两个数字都是不超过99的数字,应用服务一般要考后启动为佳,越早停止越好
if [ $# -ne ];then
echo $"usage: $0 {start|stop|restart}"
exit
fi if [ "$1" = "start" ];then
rsync --daemon
sleep
if [ `netstat -lntup|grep rsync|wc -l` -ge ];then
echo "rsyncd is started."
fi elif [ "$1" = "stop" ];then
pkill rsync &>/dev/null
sleep
if [ `netstat -lntup|grep rsync|wc -l` -eq ];then
echo "rsyncd is stopped."
fi elif [ "$1" = "restart" ];then
pkill rsync
sleep
killpro=`netstat -lntup|grep rsync|wc -l`
rsync --daemon
sleep
startpro=`netstat -lntup|grep rsync|wc -l`
if [ $killpro -eq -a $startpro -ge ];then
echo "rsyncd is restarted."
fi else
echo $"usage: $0 {start|stop|restart}"
exit
fi
[root@backup ~]#
[root@backup ~]#
[root@backup ~]# ps -ef|grep rsync
root : pts/ :: grep rsync
[root@backup ~]#
[root@backup ~]#
[root@backup ~]# sh rsyncd.sh start
rsyncd is started.
[root@backup ~]#
[root@backup ~]# ps -ef|grep rsync
root : ? :: rsync --daemon
root : pts/ :: grep rsync
[root@backup ~]# netstat -lntup |grep rsync
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rsync
tcp ::: :::* LISTEN /rsync
[root@backup ~]#
[root@backup ~]# sh rsyncd.sh restart
rsyncd is restarted.
[root@backup ~]# netstat -lntup |grep rsync
tcp 0.0.0.0: 0.0.0.0:* LISTEN /rsync
tcp ::: :::* LISTEN /rsync
[root@backup ~]# sh rsyncd.sh stop
rsyncd is stopped.
[root@backup ~]# netstat -lntup |grep rsync
使用shell函数封装的方法来优化上面的脚本,改良后的脚本如下
[root@backup ~]# cat /etc/init.d/rsyncd
#!/bin/sh
# chkconfig:
. /etc/init.d/functions if [ $# -ne ];then
echo $"USAGE: $0 {start|stop|restart}"
exit
fi start(){
rsync --daemon
sleep
if [ `netstat -lntup|grep rsync|wc -l` -ge ];then
action "rsyncd is started." /bin/true
else
action "rsyncd is stopped." /bin/false
fi
} stop(){
killall rsync &>/dev/null
sleep
if [ `netstat -lntup|grep rsync|wc -l` -eq ];then
action "rsyncd is stopped." /bin/true
else
action "rsyncd is started." /bin/false
fi
} restart(){
stop
sleep
start
} case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo "echo "USAGE: $ {start|stop|restart}""
esac
shell if 条件语句实践的更多相关文章
- Shell 编程 条件语句
本篇主要写一些shell脚本条件语句的使用. 条件测试 test 条件表达式 [ 条件表达式 ] 文件测试 -d:测试是否为目录(Directory). -e:测试文件或目录是否存在(Exist). ...
- Linux就该这么学--Shell脚本条件语句(二)
1.for条件语句 先读取多个不同的变量值,然后逐一执行同一组命令. 从列表文件中读取主机地址,逐个测试是否在线. 从ipadds.txt中读取主机地址后赋值给HLIST变量后逐个ping列表中的主机 ...
- Linux就该这么学--Shell脚本条件语句(一)
1.条件测试语句能够让Shell脚本根据实际工作灵活调整工作内容,例如判断系统的状态后执行指定的工作,或创建指定数量的用户,批量修改用户密码,这些都可以让Shell脚本通过条件测试语句完成. if条件 ...
- SHELL 中条件语句的运用 if for 条件测试语句
if条件测试语句可以让脚本根据实际情况自动执行相应的命令.从技术角度来讲,if语句分为单分支结构.双分支结构.多分支结构:其复杂度随着灵活度一起逐级上升. if条件语句的单分支结构由if.then.f ...
- Shell if条件语句
1.if条件语句:设定一个条件如果怎么,然后怎么样. (1)-gt大于.-lt小于.-ge大于等于.-le小于等于.-eq等于.-ne不等于. (2)[]内是包括变量时所使用的. (3)-f文件.-n ...
- Shell cace条件语句
cace条件语句,取相对应的多个值,进行输出. 语句:case语句:case $n in 回车\ 值)回车\ 命令 :: 值)命令 esac case $1 in start) echo “启动” ...
- Shell Scripts - 条件语句,case语句,function功能
修改之前的代码 1.判断 $1 是否为 hello,如果是的话,就显示 "Hello, how are you ?": 2.如果没有加任何参数,就提示使用者必须要使用的参数 ...
- shell脚本中的case条件语句介绍和使用案例
#前言:这篇我们接着写shell的另外一个条件语句case,上篇讲解了if条件语句.case条件语句我们常用于实现系统服务启动脚本等场景,case条件语句也相当于if条件语句多分支结构,多个选择,ca ...
- shell脚本进阶之条件测试与条件语句
接着上篇博客,今天整理一下关于条件测试和条件语句方面的知识. shell脚本进阶之条件测试 在编写shell脚本时,经常需要对一些条件进行判断,可以使用测试命令test辅助完成测试过程.t ...
随机推荐
- windows下sorl安装
1. JDK要求 Solr 4.10 要求JDK版本必须是1.7或更高. 2. 下载 下载地址: http://www.apache.org/dyn/closer.cgi/lucene/solr/ 下 ...
- CURLOPT_PROGRESSFUNCTION
Author:李强(李祥祥) Date :2012-12-15 17:26 LIBCURL官方网站都没有说清楚道明白进度函数的参数的作用,这点我感觉文档很片面,经总结如下: size_t CUpl ...
- JS控制台的使用
1.快捷键F12可直接进入控制台(或者单机右键->检查)用于bug调试 2.控制台如图: Elements:表示所有的js元素 Console:常用的有如下几个功能: ①console.log: ...
- Redis常用诊断命令
1.info 命令查看redis信息,可以指定要查看的section名 sections:Server,clients,memory,persistence,stats,replication,cpu ...
- Python_装饰器、迭代器、生成器
一.装饰器 装饰器的存在是为了实现开放封闭原则: 封闭: 已实现的功能代码块不应该被修改: 开放: 对现有功能的扩展开放. 理解装饰器的三要素: 函数的作用域 高阶函数 闭包 1. 闭包 闭包定义:如 ...
- 用jq给img添加error事件
<img src="xxxx.jpg" alt="" /> <script> $(document).ready(function(){ ...
- 最小生成树:POJ1251-Jungle Roads(最小生成树的模板)
POJ 1251 Jungle Roads >[poj原址:http://poj.org/problem?id=1251](http://poj.org/problem?id=1251) Des ...
- 动态规划:HDU-2955-0-1背包问题:Robberies
解题心得: 这题涉及概率问题,所以要运用概率的知识进行解答.题目要求不被抓到的概率,但是给出的是被抓到的概率,所要用1减去后得到答案.最好使用double类型,避免精度问题导致WA. 先算出可以抢劫的 ...
- Diycode开源项目 TopicContentActivity分析
1.效果预览以及布局分析 1.1.实际效果预览 左侧话题列表的布局是通过TopicProvider来实现的,所以当初分析话题列表就没有看到布局. 这里的话题内容不是一个ListView,故要自己布局. ...
- 3224: Tyvj 1728 普通平衡树(finger tree)
3224: Tyvj 1728 普通平衡树 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 19122 Solved: 8359[Submit][St ...