嘗試着寫一寫shell腳本

#!/bin/bash
#啓動進程
echo "shell name: $0 "
default_port=9900;
thread_count=1;
loops=0;

if [ $# -le 3 ];then
    echo "params too less, please check params; exit !"
    exit 1;
fi

default_port=$1
thread_count=$2
loops=$3
config_file=$4

if [ ! -f $config_file ];then
    echo "---config file not exists $config_file---"
    exit 1;
fi

for i in $(seq 1 $thread_count);
do
{
    sleep $i
    temp_port=$[default_port+i]
    for i in {1..100}
    do
    { 
       port_size=`sudo netstat -tunlp | grep $temp_port | wc -l`   
       if [ $port_size -eq 0 ];then
          break
       else
          temp_port=$[temp_port+i]
       fi
    }
    done
    
    echo "---port: $temp_port---"

    sed -i '2c 'port=$temp_port ${config_file} 
 
    sed -i '3c 'loops=$loops ${config_file}  

    max_file=`ls ./log | sed '/sh/d' | tail -n1`

    max_value=`echo ${max_file}|awk -F '.log_' '{print $2}'`
    echo "---$max_value---"
   
    max_value=`expr $max_value + 1`

    len_max_value=${#max_value}
    echo "---$max_value $len_max_value---"

    if [ $len_max_value -lt 2 ];then
       max_value='00'$max_value
    elif [ $len_max_value -lt 3 ];then
       max_value='0'$max_value
    else
       echo "---len_max_value=3---"
    fi
    new_file='run_client.log_'$max_value
    echo "---$max_file---$new_file---"

    # touch /home/admin/li/log/$new_file
    cd /usr/local/unimrcp/bin
    ./client ${config_file}  >> /home/admin/li/log/$new_file
}&
done
wait
time=$(date "+%Y-%m-%d %H:%M:%S")
echo "--- for loop over ${time}---"


#!/bin/sh
#減少進程
config_file='./client /home/admin/li/run_client.config'

if [ $# -lt 1  ];then
   echo "params too less, exit! "
   exit 1;
fi

pid_count=`ps -ef | grep "$config_file" | grep -v "grep" | wc -l`
echo "--client count: $pid_count---"
echo `ps -ef | grep "$config_file" | grep -v "grep" | sort -k5 |awk '{print $2}'`

pid_arr=`ps -ef | grep "$config_file" | grep -v "grep" | sort -k5 |awk '{print $2}'`

kill_size=0
if [ $pid_count -ge $1 ];then
   for i in $pid_arr;
   do
   {
      if [ $kill_size -lt $1 ];then
         echo "---kill pid $i---"
         sudo kill -9 $i
         kill_size=`expr $kill_size + 1`
      fi
   }
   done
fi
#!/bin/bash
檢測server
while true
do
{
   pid_size=`ps -ef | grep './server' | grep -v 'grep' | wc -l`   
   echo "--server pid size $pid_size----"
   echo `ps -ef | grep './server ' | grep -v 'grep'`

   if [ $pid_size -eq 0 ];then
      echo "---server can not find---"
      sudo /usr/local/un/bin/./server
   else
      echo "---server exists---"
   fi

   time=$(date "+%Y-%m-%d %H:%M:%S")
   echo "--- for loop  ${time}---"
   sleep 10
}
done

#!/bin/sh
解析日誌
cat /home/admin/li/server.log | while read line
do
	str_line=`echo $line | grep -o "abc result:.*"`
	if [ ${#str_line} -gt 0 ]; then
		echo ${str_line:11}
	fi
done

後臺進程運行java程序
客戶端關閉,進程不會停止
日誌文件輸出到log
nohup java -jar demo-1.0-SNAPSHOT.jar  >> demo.log &


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章