快速业务通道

Shell常用语句应用示例

作者 佚名技术 来源 Linux系统 浏览 发布时间 2012-03-31

Shell常用语句应用示例

if语句应用示例

例 8.13 检查"/var/log/messages" 文件是否存在,若存在则统计文件内容的行数并输出,否则不做任何操作(合理使用变量,可以提高编写效率)
[root@linuxserver ~]# vi chklog.sh

#!/bin/bash
LogFile="/var/log/messages"
if [ -f $LogFile ] ; then
wc -l $LogFile
fi


[root@linuxserver ~]# sh chklog.sh ///执行该脚本进行测试(sh是bash的符号链接)
2102 /var/log/messages

例 8.14 提示用户指定备份目录的路径,若目录已经存在则显示提示信息后跳过,否则显示相应提示信息后创建该目录.
[root@linuxserver ~]# vi mkbak.sh

#!/bin/bash
read -p "what is your backup directory:" BakDir
if [ -d $BakDir ] ; then
echo "$BakDir already exist."
else
echo "$BakDir is not exist, will make it."
mkdir $BakDir
fi

例 8.15 统计当前登录到系统中的用户数量,并判断是否超过三个,若是则显示实际数量并给出警告信息,否则列出登录的用户账号名称及所在终端.
[root@linuxserver ~]# vi chkuser.sh

#!/bin/bash
UsersNum=`who |wc -l`
if [ $UsersNum -gt 3 ] ; then
echo "Alert, too many login users (Total: $UsersNum)"
else
echo "Login users:"
who |awk ''{print $1,$2}''
fi

例 8.16 检查portmap进程是否已经存在,若已经存在则输出“portmap service is running.”;否则检查是否存在“/etc/rc.d/portmap”可执行脚本,
存在则启动portmap服务,否则提示“no portmap script file.”
[root@linuxserver ~]# vi chkportmap.sh 拥有帝国一切,皆有可能。欢迎访问phome.net

#!/bin/bash
pgrep portmap &> /dev/null
if [ $? -eq 0 ] ; then
echo "portmap service is running."
elif [ -x "/etc/rc.d/portmap" ] ; then
service portmap start
else
echo "no portmap script file."
fi

例 8.17 每隔五分钟监测一次mysqld服务进程的运行状态,若发现mysqld进程已终止,则在“/var/log/messages”文件中追加写入日志信息(包括当时时间),
并重启mysqld服务;否则不进行任何操作.
[root@linuxserver ~]# vi chkdbsvr.sh

#!/bin/bash
service mysqld status & > /dev/null //通过service工具检查系统服务状态
if [ $? -ne 0 ] ; then
echo "At time: ''date'': MySQL Server is down." >> /var/log/messages
service mysqld restart
fi

[root@linuxserver ~]# crontab -e
*/5 * * * * /root/chkdbsvr.sh



for语句应用示例

例 8.18 依次输出三条文字信息,包括一天中的“Morning”、“Noon”、“Evening”字串.
[root@linuxserver ~]# vi showday.sh

#!/bin/bash
for TM in "Morning" "Noon" "Evening"
do
echo "The $TM of the day."
done

例 8.19 对于使用“/bin/bash”作为登录Shell的系统用户,检查他们在“/opt”目录中拥有的子目录或文件数量,如果超过100个,则列出具体数值及对应的用户账号.
[root@linuxserver ~]# vi chkfileown.sh

#!/bin/bash
DIR="/opt"
LMT=100
ValidUsers=`grep "/bin/bash" /etc/passwd |cut -d ":" -f 1`

for UserName in $ValidUsers
do
Num=`find $DIR -user $UserName |wc -l`
if [ $Num -g

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号