加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

用shell来写脚本

发布时间:2020-12-15 16:17:07 所属栏目:安全 来源:网络整理
导读:一.守护脚本 用于守护一个进程,如果该进程因意外情况停止运行,则守护脚本会自动启动该进程,以保证该进程一直处于运行状态中。 下面是用shell实现的一个守护脚本: #! /bin/sh #进程名字可修改 PRO_NAME=zhb-t #程序启动脚本命令 START_SH= "./start.sh" #

一.守护脚本

用于守护一个进程,如果该进程因意外情况停止运行,则守护脚本会自动启动该进程,以保证该进程一直处于运行状态中。
下面是用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[1me[31m
DARKRED=e[31m
GREEN=e[1me[32m
DARKGREEN=e[32m
BLUE=e[1me[34m
DARKBLUE=e[34m
YELLOW=e[1me[33m
DARKYELLOW=e[33m
MAGENTA=e[1me[35m
DARKMAGENTA=e[35m
CYAN=e[1me[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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读