Linux下用的脚本(不定时更新)

批量启动Tomcat







点击(此处)折叠或打开








#!/bin/bash

#JDK路径

export JAVA_HOME="/usr/jdk1.7.0_09"

#前缀路径

PREFIX="/data/webapp/apache-tomcat-80"

#起始编号

BEGIN=1

#终止编号

END=20

sudo chown -R ccapp:ccapp /data/webapp/apache-tomcat-80*

sudo chown -R ccapp:ccapp /usr/logs/*

#关闭

stop(){

for((i=$BEGIN;i

do

#抽取Tomcat进程号PID

#pid=`ps -ef | grep tomcat7-$i |grep -v 'grep' | awk '{print $2}'`

#测试当前进程是否处于活动状态

#test "$pid" != "" && kill $pid && echo "Stop tomcat7-$i Successful!" || echo "Stop tomcat7-$i Failed!"

if [ $i -lt 10 ]; then

#echo "tomcat7-0$i"

pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v 'grep' | awk '{print $2}'`

test "$pid" != "" && sudo kill $pid && echo "Stop apache-tomcat-800$i Successful!" || echo "Stop apache-tomcat-800$i Failed!"

else

#echo "tomcat7-$i"

pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v 'grep' | awk '{print $2}'`

test "$pid" != "" && sudo kill $pid && echo "Stop apache-tomcat-80$i Successful!" || echo "Stop apache-tomcat-80$i Failed!"

fi

sleep 1

done

#echo

}

#启动

start(){

for((i=$BEGIN;i

do

#启动Tomcat

#$PREFIX$i/bin/startup.sh && echo "Start tomcat7-$i Successful!"

#echo

if [ $i -lt 10 ]; then

#echo "tomcat7-0$i"

$PREFIX\0$i/bin/startup.sh && echo "Start apache-tomcat-800$i Successful!"

else

#echo "tomcat7-$i"

$PREFIX$i/bin/startup.sh && echo "Start apache-tomcat-80$i Successful!"

fi

sleep 1

done

}

status(){

for((i=$BEGIN;i

do

#抽取Tomcat进程号PID

#pid=`ps -ef | grep tomcat7-$i |grep -v 'grep' | awk '{print $2}'`

#打印PID

#echo "tomcat7-$i - $pid"

if [ $i -lt 10 ]; then

#echo "tomcat7-0$i"

#$PREFIX\810$i/bin/startup.sh && echo "Start tomcat7-810$i Successful!"

pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v 'grep' | awk '{print $2}'`

echo "apache-tomcat-800$i - $pid"

else

#echo "tomcat7-$i"

#$PREFIX\81$i/bin/startup.sh && echo "Start tomcat7-81$i Successful!"

pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v 'grep' | awk '{print $2}'`

echo "apache-tomcat-80$i - $pid"

fi

done

}

case "$1" in

start)

#echo "Start tomcat7-$BEGIN ~ tomcat7-$END"

#echo

start

#echo

;;

stop)

#echo "Stop tomcat7-$BEGIN ~ tomcat7-$END"

#echo

stop

#echo

;;

restart)

#echo "Restart tomcat7-$BEGIN ~ tomcat7-$END"

#echo

stop

sleep 2

start

#echo

;;

status)

#echo "Pid of tomcat7-$BEGIN ~ tomcat7-$END"

status

#echo

;;

*)

echo $"Usage: $0 {start|stop|restart|status}"

exit 1

;;

esac






Nginx自检脚本(每60秒自动检测一次)

点击(此处)折叠或打开

  1. #!/bin/bash
  2. prefix=/usr/local/nginx_1.4.6/sbin
  3. while :
  4. do
  5.     nginxpid=`ps -C nginx --no-header | wc -l`
  6.     if [ $nginxpid -eq 0 ]; then
  7.     DATE=$(date +%Y-%m-%d %T)
  8.     killall nginx && $prefix/nginx && echo "$DATE Restart Nginx successful~" || echo "$DATE Fail to restart Nginx!"
  9.     sleep 60
  10.     else
  11.     DATE=$(date +%Y-%m-%d %T)
  12.     echo "$DATE : Nginx_Check is running, everything is OK~"
  13.     sleep 60
  14.     fi
  15. done

业务部署自动化脚本







点击(此处)折叠或打开








#!/bin/bash

#脚本说明

# 内容分发至各实例

#变更记录

#

#系统环境变量

PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

export PATH

#自定义变量

bak=`date +%Y%m%d-%T`

prefix=/usr/

#tomcat_path=/usr/apache-tomcat-7.0.33/bin

project=APP

#begin=1

#end=15

#实例备份

cd $prefix

mkdir -p /home/user/$project/$bak

\cp -rf $project /home/user/$project/$bak

#根据实际情况修改,脚本参数如APP.zip解压后可以为APP的文件夹

#也可以是APP文件夹下的内容

cd /tmp/user/

rm -rf ${project}

mkdir $project

cp $project\.war ./$project

cd $project

unzip ${project}\.war

#unzip $1

cd ..

#chmod -R 755 $project

#分发copy,如果所有的工程都指向一个文件夹,则无需分发,直接拷贝

#for((i=$begin;i

#do

#根据需要增加覆盖copy的项目

# \cp -rf $project $prefix-$i/webapps/

#done

#rm -rf $prefix$project

cp -avpf $project\/* $prefix$project\/

#Tomcat操作留给其他功能模块控制

#cd $tomcat_path

#./shutdown.sh

#./startup.sh

echo "update successful!"







懒人用删除Tomcat日志脚本(其实什么日志都能删)







点击(此处)折叠或打开








#!/bin/bash

#前缀路径
PREFIX="/usr/TomcatSvr7-"
#起始编号
BEGIN=2
#终止编号
END=20
for((i=$BEGIN;i=$END;i++))

do
    #删除历史记录
    rm -rf $prefix$i/logs/*0*
    cat /dev/null > $prefix$i/logs/catalina.out
done







Nginx日志管理







点击(此处)折叠或打开








logs_path=\"/usr/local/nginx_1.4.6/logs/\"

mv ${logs_path}www.log ${logs_path}www_$(date -d \"yesterday\" +\"%Y%m%d\").log

mv ${logs_path}error.log ${logs_path}error_$(date -d \"yesterday\" +\"%Y%m%d\").log

kill -HUP `cat ${logs_path}nginx.pid`

find $logs_path -name \"www_*log\" -mtime +0 -exec rm -rf {} ;

#find $logs_path -name \"access_*log\" -mtime +2 -exec rm -rf {} ;

find $logs_path -name \"error_*log\" -mtime +0 -exec rm -rf {} ;







在root下输入crontab -e , 01 00 * * * /home/nginxlog.sh,指定每天0:01分自动执行脚本~

自动配置LVM分区







点击(此处)折叠或打开








#!/bin/bash

DEV=/dev/sdb

VG=VG_DATA

LG=lv_data

DIR=/data

pvcreate $DEV \

&& vgcreate $VG $DEV \

&& lvcreate -l 100%PVS -n $LG $VG \

&& mkfs.ext4 /dev/$VG/$LG \

&& mkdir $DIR

&& mount /dev/$VG/$LG $DIR








Nginx配置







点击(此处)折叠或打开








server_tokens off;

sendfile on;

tcp_nopush on;

tcp_nodelay on;

keepalive_timeout 65;

client_header_timeout 10;

client_body_timeout 10;

reset_timedout_connection on;

send_timeout 10;

charset utf-8;

server_names_hash_bucket_size 128;

client_header_buffer_size 512k;

large_client_header_buffers 4 64k;

client_max_body_size 16m;

client_body_buffer_size 256k;

proxy_connect_timeout 60;

proxy_send_timeout 30;

proxy_read_timeout 30;

proxy_buffer_size 16k;

proxy_buffers 4 256k;

proxy_busy_buffers_size 512k;

proxy_temp_file_write_size 512k;

open_file_cache max=10240 inactive=20s;

open_file_cache_valid 30s;

open_file_cache_min_uses 10;

open_file_cache_errors on








Tomcat连接池配置







点击(此处)折叠或打开







port="5000"

protocol="org.apache.coyote.http11.Http11NioProtocol"

connectionTimeout="30000"

URIEncoding="UTF-8"

maxThreads="1000"

minSpareThreads="100"

acceptCount="300"

acceptorThreadCount="6"

keepAliveTimeout="120000"

maxKeepAliveRequests="1000"

enableLookups="false"

redirectPort="8443" />







实时查看连接数






点击(此处)折叠或打开








watch -n 1 "netstat -n | awk '/^tcp/ {++S[\$NF]} END {for(a in S) print a, S[a]}'"








远程切换Nginx







点击(此处)折叠或打开








#!/bin/bash

PORT1=8066

PORT2=10066

switch_to_8066(){

    ssh 10.10.10.11 "/bin/bash /root/nginx_p$PORT1.sh;exit"

}

switch_to_10066(){

    ssh 10.10.10.11 "/bin/bash /root/nginx_p$PORT2.sh;exit"

}

switch_to_all(){

    ssh 10.10.10.11 "/bin/bash /root/nginx_all.sh;exit"

}

case "$1" in

switch_to_8066)

echo "switch nginx to port $PORT1"

switch_to_8066

echo "switch to port $PORT1 success"

;;

switch_to_10066)

echo "switch nginx to port $PORT2"

switch_to_10066

echo "switch to port $PORT2 success"

;;

switch_to_all)

echo "switch nginx to port $PORT1 and $PORT2"

switch_to_all

echo "switch to port $PORT2 and $PORT1 success"

;;

*)

echo $"Usage: $0 {switch_to_$PORT1|switch_to_$PORT2|switch_to_all}"

exit 1

;;

esac







被远程调用的脚本,只有红色部分有区别






点击(此处)折叠或打开








#!/bin/bash

NGINX_CONF=/usr/local/nginx_1.8.0/conf/

NGINX_SBIN=/usr/local/nginx_1.8.0/sbin/nginx

CONF_FILE=nginx_8066.conf

ps -ef | grep nginx |grep -v 'grep' |grep -v 'nginx_p8066.sh' | awk '{print $2}' | xargs kill

$NGINX_SBIN -c $NGINX_CONF$CONF_FILE






查看磁盘的TPS(每秒数据交换次数)






点击(此处)折叠或打开








iostat -d sda | grep sda | awk '{ print $2; }'

iostat -d | tail -n +4 | head -n -1 | awk '{s+=$2} END {print s}'







SVN自动发布(捡漏)







点击(此处)折叠或打开








#!/bin/bash

REMOTE_HOST1=192.168.1.100

REMOTE_USER1=

REMOTE_PWD1=

DIR=TEST

PROJECT=TEST_PRO

BRANCH=trunk

SVN_URL=http://192.168.1.233/svn/

LOG=svn_file_change.log

TMP_DIR=/home/test/

TARGET_DIR=/data/save/

if [ ! -d $TMP_DIR$DIR ]; then

    mkdir $TMP_DIR$DIR

else

    echo "svn files is exist, script start......time : $(date -d today +%Y-%m-%d\ %H:%M:%S)" >> $TMP_DIR$LOG

    #rm -rf $TMP_DIR$DIR && echo "the old dir is deleted : $TMP_DIR$FILE, time : $(date -d today +%Y-%m-%d\ %H:%M:%S)" >> $TMP_DIR$LOG

    if [ $? -eq 0 ]; then

        svn co $SVN_URL$PROJECT/$BRANCH/$DIR

        if [ $? -eq 0 ]; then

        expect -c "

        spawn ssh $REMOTE_USER1@$REMOTE_HOST1 \"rm -rf $TARGET_DIR$DIR\"

        expect {

        \"*assword\" {set timeout 300; send \"$REMOTE_PWD1\r\";}

        \"yes/no\" {send \"yes\r\"; exp_continue;}

        }

        expect eof"

        expect -c "

        spawn scp -r $TMP_DIR$DIR $REMOTE_USER1@$REMOTE_HOST1:$TARGET_DIR

        expect {

        \"*assword\" {set timeout 300; send \"$REMOTE_PWD1\r\";}

        \"yes/no\" {send \"yes\r\"; exp_continue;}

        }

        expect eof"

        expect -c "

        spawn ssh $REMOTE_USER1@$REMOTE_HOST1 \"chown -R test:test $TARGET_DIR$DIR\"

        expect {

        \"*assword\" {set timeout 300; send \"$REMOTE_PWD1\r\";}

        \"yes/no\" {send \"yes\r\"; exp_continue;}

        }

        expect eof"

        #rm -rf $TMP_DIR$DIR

        else

            echo "svn error, can not copy the file!......" >> $TMP_DIR$LOG

        fi

    else

        echo "Unkown error......" >> $TMP_DIR$LOG

    fi

fi








VIP







点击(此处)折叠或打开








/sbin/ip addr add 100.100.100.100/24 dev eth0

/sbin/ip addr del 100.100.100.100/24 dev eth0












时间: 2024-09-28 19:26:18

Linux下用的脚本(不定时更新)的相关文章

RedHat Linux下Oracle启动脚本的建立 dbstart oracle8.1.6

oracle|脚本 RedHat Linux下Oracle启动脚本的建立 2001-06-05 8:25发布者:Crystal 阅读次数:102 一.修改$ORACLE_HOME/bin/dbstart脚本 首先测试你的$ORACLE/bin/dbstart脚本,如果能正常启动Oracle,请跳到第二部分. 本人运行环境为RedHat7.1+Oracle8.1.6,发现dbstart脚本有问题,不能得到当前运行的Oracle的版本号.编辑dbstart,找到 STATUS=1 if [ "$VE

Linux下用Python脚本监控目录变化代码分享

  这篇文章主要介绍了Linux下用Python脚本监控目录变化代码分享,本文直接给出实现代码,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 #!/usr/bin/env python #coding=utf-8   import os from pyinotify import WatchManager, Notifier, ProcessEven

关于如何编写启动linux下的tomcat脚本问题

问题描述 关于如何编写启动linux下的tomcat脚本问题 每次启动tomcat,都需要进入到具体的路径下 /data/uficc/program/apache-tomcat-7.0.65/bin ,然后 ./startup.sh & 启动tomcat,需要重启是都是先kill掉进程后再次启动. 我的需求是:能不能编写个脚本,让我无论在那个路径下,只需要简单输入 :Manage stop tomcat 就可以停止tomcat服务,输入 Manage start tomcat 可以启动tomca

linux下用shell脚本启动可执行.jar文件并关闭的方法

话不多说,开始上代码,为了偷懒,代码只是截图了,感兴趣的朋友可以看了之后自己写,这样加深印象. 上面是小弟写的shell脚本.写的不好请见谅. 首先遇到的第一个坑 我在window下写的 然后道linux中执行,在linux死活都说俺的19行有错误,俺就不明白了,哪里有错,问了下别人,也说没错.突然有个高人问我在哪编写的,小弟回答在win下,他告诉俺执行下这个命令: dos2unix server.sh 然后小弟就执行了,说命令不存在,小弟只好安装这个,执行了以下命令 yum install d

linux下采用shell脚本实现批量为指定文件夹下图片添加水印的方法_linux shell

要实现linux下采用shell脚本批量为指定文件夹下图片添加水印,首先需要安装imagemagick: CentOS上安装: yum install ImageMagick -y Debian上安装: apt-get install ImageMagick -y 脚本: #!/bin/bash for each in /要处理的图片目录/*{.jpg,.gif} s=`du -k $each | awk '{print $1}'` if [ $s -gt 10 ]; then #convert

Linux下Oracle自动启动脚本

1. 修改Oracle系统配置文件/etc/oratab /etc/oratab 格式为: SID:ORACLE_HOME:AUTO 把AUTO域设置为Y(大写),只有这样,oracle 自带的dbstart和dbshut才能够发挥作用.我的为: ora9i:/home/oracle/ora/products/9.2.0:Y 2. 编写服务脚本: vi /etc/rc.d/init.d #!/bin/bash # #################FUNCTION############# #

linux 下 `dirname $0` 脚本文件放置的目录

http://www.cnblogs.com/xupeizhi/archive/2013/02/19/2917644.html linux 下 `dirname $0` 在命令行状态下单纯执行 $ cd `dirname $0` 是毫无意义的.因为他返回当前路径的".".这个命令写在脚本文件里才有作用,他返回这个脚本文件放置的目录,并可以根据这个目录来定位所要运行程序的相对位置(绝对位置除外). 在/home/admin/test/下新建test.sh内容如下: cd `dirname

linux下用expect脚本实现ssh 自动登陆服务器

又学了一个小招,使用 expect 脚本语言实现 ssh 自动连接到服务器,可以自动输入密码.因为每次使用 ssh root@xx.xx.xx.xx 连接服务器,都要手动输入一遍密码,有没有办法自动输入密码呢? 在网上搜索了一下,果然有办法,有一种脚本语言 expect ,它的作用就是能与交互式程序进行"可程序化"会话,比如自动输入密码,碰到"password"字符就会自动输入密码. 首先要安装 expect 脚本程序,不过在 Macbook 中自带了.比如 Cen

Linux下使用Shell脚本实现ftp的自动上传下载的代码小结_linux shell

1. ftp自动登录批量下载文件. 复制代码 代码如下: #####从ftp服务器上的/home/data 到 本地的/home/databackup#####!/bin/bashftp -n<<!open 192.168.1.171user guest 123456binarycd /home/datalcd /home/databackuppromptmget *closebye! 2. ftp自动登录上传文件. 复制代码 代码如下: ####本地的/home/databackup to