linux系统shell脚本案例,工作中shell脚本案例(05-30更新中........)

工作中shell脚本案例(05-30更新中........)

发布时间:2012-05-28 18:01:47来源:红联作者:天真花语

[i=s] 本帖最后由 天真花语 于 2012-5-30 16:45 编辑 [/i]

这篇文章主要是将自己在工作中用到的脚本整理出来,也是抛砖引玉,旨在希望可以帮助一些有需求的朋友,有的写不好,希望大家指点一二,以求做的更好:

1.重启服务程序

cat restart_jboss.sh

#!/bin/bash

source ~/.bash_profile

check_pid=`ps -ef | grep jboss | grep org.jboss.logmanager|grep jboss-7.0.2GA | awk '{ print $2}'`

echo "check_pid: $check_pid"

kill $check_pid

sleep 4

if [ ! -z $check_pid ]

then

kill -9 $check_pid

sleep 2

fi

cd /usr/local/jboss-7.0.2GA/bin

nohup ./standalone.sh >> nohup.out 2>&1 &

其中jboss是服务名,其它服务重启脚本可以参考;

2.日志切割

对于一些访问日志,需要每天分开记录,就简单的用脚本来定义一下:

cat cut_nginx_logs.sh

#!/bin/bash

####cut nginx's log

mv /usr/local/nginx/logs/access.log /usr/local/nginx/logs/access.`date "+%m-%d"`.log

kill -HUP `cat /usr/local/nginx/logs/nginx.pid`

定义日志名为:access.月-日的格式,其它脚本切割可以参考

3.rsync资源同步脚本:

因为在同步资源的时候,不是整个目录一起copy,是父目录下的一些子目录,这样的话,如果一个个子目录进行同步的话,会比较麻烦:

cat rsync_xbtx.sh

#!/bin/bash

rsync -avz \

--include=*.jar \

--include=conf \

--include=conf/xbtx/ \

--include=conf/xbtx/xls \

--exclude=conf/xbtx/* \

--exclude=conf/* \

--include=Res \

--include=Res/* \

--exclude=/* \

root@server ip:/usr/local/applications/zyx/xbtx/ /usr/local/xbtx/

这个脚本就是实现本地去同步serverip /usr/local/applications/zyx/xbtx/下的资源

4.jboss程序,有时候会因为网络访问、程序异常等,导致无法访问数据库,而你又不能时时刻刻去监控它,不能及时获悉到error,综合考虑,就去从日志中去查找有没有error的存在,有的话去调用jboss程序的重启脚本

cat read.sh

#!/bin/bash

##This's script to check jboss error,about oracle connect;

cd /home/jboss/jboss-4.2.2.GA/bin

tail nohup.out -c 500k | grep "java.sql.SQLException: An attempt by a client to checkout a Connection has timed out" > read.txt

if grep -q "java.sql.SQLException" read.txt ; then

cd /home/dustin

./restart_jboss.sh

else

echo "not found this error"

fi

exit 0

可以将脚本放在crond任务计划中,每10分钟检查更新一次

5.备份,针对重要服务的备份不可缺少,当在执行误操作过后、或者服务器异常时,备份文件的恢复会给你带来极大的便利

#!/bin/bash

source ~/.bash_profile

#按照server ip来命名num的

Num=46

date=`date +"%Y_%m_%d"`

##放置备份文件所需要的目录

cd /home/frank

if [ ! -d server$Num ]

then

mkdir server$Num;

fi

ServerBackup=/home/frank/server$Num

if [ ! -d scripts ]

then

mkdir -p $ServerBackup/jboss-7.0GA

fi

#backup jboss-7.0GA,使用rsync命令

rsync -av /usr/local/jboss-7.0.2GA/standalone/deployments/*.war $ServerBackup/jboss-7.0GA/

rsync -av /usr/local/jboss-7.0.2GA/standalone/configuration $ServerBackup/jboss-7.0GA/

rsync -av /usr/local/jboss-7.0.2GA/standalone/lib $ServerBackup/jboss-7.0GA/

rsync -av /usr/local/jboss-7.0.2GA/bin/conf $ServerBackup/jboss-7.0GA/

#更改属主、属组

chown -R frank:root /home/frank

#打包

tar -cvf server$Num.$date.tar.gz server$Num

echo

6.有的时候需要从日志里去查找http访问最多的服务名

思路:

去查找访问最多的服务名,先看一下nginx 输出的日志

221.179.8.24 - - [30/May/2012:15:33:55 +0800] "GET /comum/request?pver=1&ac=checkphone&username=fkk148&data=13112&imsi=460027092382555&plat=14&kver=46&sc=8&prj=7635&smsc=13800290500&mnc=0&mcc=460&lang=1&appid=888lt=1 HTTP/1.1" 200 2 "-" "-"

可以看出,服务名为:/comum,之后用cut命令,以“/”为分割,将comum分割出来

cat 03-23.log | awk '{ print $7 }' | cut -d / -f 2 | sort | uniq -c | sort -n | head -n 1

sort是排序,sort -n是升序,sort -nr是降序,uniq是去掉重复的值

7.使用find命令去删除日志文件

当一个程序产生的log文件比较多时,但又不能全部删除完,这是可以借助find命令去查找出日志,结合xargs将日志删除,节约时间,也不用一个个删除

find ./ -type f ! -newer server.log.11 | grep server.log | xargs rm -rf {};

./代表当前目录,要记得使用grep,不然会将一些其它文件给删除掉的,server.log.11是一个间隔点,只要比server.log.11旧,都会删除掉;

脚本在整理中,后续会将其它脚本贴入,请大家多指点,多交流,多共享

可以加入QQ群:140704742

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值