用shell来写脚本

前端之家收集整理的这篇文章主要介绍了用shell来写脚本前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

一.守护脚本

用于守护一个进程,如果该进程因意外情况停止运行,则守护脚本会自动启动该进程,以保证该进程一直处于运行状态中。
下面是用shell实现的一个守护脚本:

#! /bin/sh
#进程名字可修改
PRO_NAME=zhb-t
#程序启动脚本命令
START_SH="./start.sh"

#用ps获取$PRO_NAME进程数量
NUM=`ps aux | grep ${PRO_NAME} | grep -v grep |wc -l`
#echo $NUM
#少于1,重启进程
if [ "${NUM}" -lt "1" ];then
    echo "${PRO_NAME} has been killed"
    ${START_SH}
    echo "${PRO_NAME} started"
fi
exit 0

该脚本然后用crontab定时执行,监控进程是否停止

二. 杀死进程

kill某个进程名下所有进程

#! /bin/sh
#进程名字可修改
PRO_NAME=example_echocli

pidnum=`ps -ef|grep ${PRO_NAME} |grep -v grep|wc -l`
if [ $pidnum -lt 1 ]
then
    echo "no program killed."
else
    for pid in `ps -ef|grep ${PRO_NAME} |grep -v grep|awk '{print $2}'`
    do      
        kill -9 $pid
    done
    echo "program stoped."
fi
exit 0

或者更简单的是:

ps -ef | grep "procedure" | grep -v grep | awk '{print $2}' | xargs kill -9

三. admin工具

#!/bin/sh 
RED=\\e[1m\\e[31m
DARKRED=\\e[31m
GREEN=\\e[1m\\e[32m
DARKGREEN=\\e[32m
BLUE=\\e[1m\\e[34m
DARKBLUE=\\e[34m
YELLOW=\\e[1m\\e[33m
DARKYELLOW=\\e[33m
MAGENTA=\\e[1m\\e[35m
DARKMAGENTA=\\e[35m
CYAN=\\e[1m\\e[36m
DARKCYAN=\\e[36m
RESET=\\e[m

if [ $# != 1 ]
then
    echo -e "$RED USAGE: $0 $YELLOW option [start | stop | restart]$RESET"
    exit 0;
fi


dir=`echo $0|sed 's/admin.sh//g'`
cd $dir

if [ $1 = "start" ]
then
    ./start.sh

elif [ $1 = "stop" ]
then
    ./stop.sh

elif [ $1 = "restart" ]
then
    ./stop.sh
    ./start.sh

else
    echo -e "$RED USAGE: $0 $YELLOW option [start | stop | restart]$RESET"
    exit 0;
fi

四.遍历文件夹,并判断文件后缀名

#!/bin/sh 
PHPPATH="/root/zhb/PHP/pchart.1.27d/"
PHPBIN="/usr/local/PHP/bin/PHP -f"

filelist=`ls $PHPPATH`
for file in $filelist
do 
    if [ "${file##*.}" = "PHP" ]
    then
        $PHPBIN $PHPPATH/$file
    fi
done

五. shell操作redis和MysqL

//删除redis的某个key
echo "del verify_0" | /export/servers/redis/redis-cli -h 192.22.144.34 -p 6379
//删除MysqL的某张表数据
MysqL -uroot -h192.168.144.121 -pMysqL -e "truncate table test.myzhb"

六. 在shell脚本中执行带参数的sh文件

/bin/bash -c ./mybatch.sh param1 param2

注意加-c
或者用七的方法,echo “

七. 批量转化IP

把一个十进制数转化为点分制ip的脚本

#!/bin/bash
N=$1
H1=$(($N & 0x000000ff))
H2=$((($N & 0x0000ff00) >> 8))
L1=$((($N & 0x00ff0000) >> 16))
L2=$((($N & 0xff000000) >> 24))
echo $H1.$H2.$L1.$L2

将上面的脚本保存为num2ip.sh
按行读取文本,批量转换(注意要要将每一行的最后一个换行符去掉):

#!/bin/bash
for line in `cat ./ip`
do
echo `./num2ip.sh ${line%?}`   #去掉最后一个字符\n
done
原文链接:https://www.f2er.com/bash/390493.html

猜你在找的Bash相关文章