http://blog.itpub.net/29510932/viewspace-1166603/

批量启动Tomcat

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #JDK路径
  3. export JAVA_HOME="/usr/jdk1.7.0_09"
  4. #前缀路径
  5. PREFIX="/data/webapp/apache-tomcat-80"
  6. #起始编号
  7. BEGIN=1
  8. #终止编号
  9. END=20
  10. sudo chown -R ccapp:ccapp /data/webapp/apache-tomcat-80*
  11. sudo chown -R ccapp:ccapp /usr/logs/*
  12. #关闭
  13. stop(){
  14. for((i=$BEGIN;i<=$END;i++))
  15. do
  16. #抽取Tomcat进程号PID
  17. #pid=`ps -ef | grep tomcat7-$i |grep -v 'grep' | awk '{print $2}'`
  18. #测试当前进程是否处于活动状态
  19. #test "$pid" != "" && kill $pid && echo "Stop tomcat7-$i Successful!" || echo "Stop tomcat7-$i Failed!"
  20. if [ $i -lt 10 ]; then
  21. #echo "tomcat7-0$i"
  22. pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v 'grep' | awk '{print $2}'`
  23. test "$pid" != "" && sudo kill $pid && echo "Stop apache-tomcat-800$i Successful!" || echo "Stop apache-tomcat-800$i Failed!"
  24. else
  25. #echo "tomcat7-$i"
  26. pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v 'grep' | awk '{print $2}'`
  27. test "$pid" != "" && sudo kill $pid && echo "Stop apache-tomcat-80$i Successful!" || echo "Stop apache-tomcat-80$i Failed!"
  28. fi
  29. sleep 1
  30. done
  31. #echo
  32. }
  33. #启动
  34. start(){
  35. for((i=$BEGIN;i<=$END;i++))
  36. do
  37. #启动Tomcat
  38. #$PREFIX$i/bin/startup.sh && echo "Start tomcat7-$i Successful!"
  39. #echo
  40. if [ $i -lt 10 ]; then
  41. #echo "tomcat7-0$i"
  42. $PREFIX\0$i/bin/startup.sh && echo "Start apache-tomcat-800$i Successful!"
  43. else
  44. #echo "tomcat7-$i"
  45. $PREFIX$i/bin/startup.sh && echo "Start apache-tomcat-80$i Successful!"
  46. fi
  47. sleep 1
  48. done
  49. }
  50. status(){
  51. for((i=$BEGIN;i<=$END;i++))
  52. do
  53. #抽取Tomcat进程号PID
  54. #pid=`ps -ef | grep tomcat7-$i |grep -v 'grep' | awk '{print $2}'`
  55. #打印PID
  56. #echo "tomcat7-$i - $pid"
  57. if [ $i -lt 10 ]; then
  58. #echo "tomcat7-0$i"
  59. #$PREFIX\810$i/bin/startup.sh && echo "Start tomcat7-810$i Successful!"
  60. pid=`ps -ef | grep apache-tomcat-800$i/ |grep -v 'grep' | awk '{print $2}'`
  61. echo "apache-tomcat-800$i - $pid"
  62. else
  63. #echo "tomcat7-$i"
  64. #$PREFIX\81$i/bin/startup.sh && echo "Start tomcat7-81$i Successful!"
  65. pid=`ps -ef | grep apache-tomcat-80$i/ |grep -v 'grep' | awk '{print $2}'`
  66. echo "apache-tomcat-80$i - $pid"
  67. fi
  68. done
  69. }
  70. case "$1" in
  71. start)
  72. #echo "Start tomcat7-$BEGIN ~ tomcat7-$END"
  73. #echo
  74. start
  75. #echo
  76. ;;
  77. stop)
  78. #echo "Stop tomcat7-$BEGIN ~ tomcat7-$END"
  79. #echo
  80. stop
  81. #echo
  82. ;;
  83. restart)
  84. #echo "Restart tomcat7-$BEGIN ~ tomcat7-$END"
  85. #echo
  86. stop
  87. sleep 2
  88. start
  89. #echo
  90. ;;
  91. status)
  92. #echo "Pid of tomcat7-$BEGIN ~ tomcat7-$END"
  93. status
  94. #echo
  95. ;;
  96. *)
  97. echo $"Usage: $0 {start|stop|restart|status}"
  98. exit 1
  99. ;;
  100. 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

业务部署自动化脚本

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #脚本说明
  3. # 内容分发至各实例
  4. #变更记录
  5. #
  6. #系统环境变量
  7. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  8. export PATH
  9. #自定义变量
  10. bak=`date +%Y%m%d-%T`
  11. prefix=/usr/
  12. #tomcat_path=/usr/apache-tomcat-7.0.33/bin
  13. project=APP
  14. #begin=1
  15. #end=15
  16. #实例备份
  17. cd $prefix
  18. mkdir -p /home/user/$project/$bak
  19. \cp -rf $project /home/user/$project/$bak
  20. #根据实际情况修改,脚本参数如APP.zip解压后可以为APP的文件夹
  21. #也可以是APP文件夹下的内容
  22. cd /tmp/user/
  23. rm -rf ${project}
  24. mkdir $project
  25. cp $project\.war ./$project
  26. cd $project
  27. unzip ${project}\.war
  28. #unzip $1
  29. cd ..
  30. #chmod -R 755 $project
  31. #分发copy,如果所有的工程都指向一个文件夹,则无需分发,直接拷贝
  32. #for((i=$begin;i<=$end;i++))
  33. #do
  34. #根据需要增加覆盖copy的项目
  35. # \cp -rf $project $prefix-$i/webapps/
  36. #done
  37. #rm -rf $prefix$project
  38. cp -avpf $project\/* $prefix$project\/
  39. #Tomcat操作留给其他功能模块控制
  40. #cd $tomcat_path
  41. #./shutdown.sh
  42. #./startup.sh
  43. echo "update successful!"

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

点击(此处)折叠或打开

  1. #!/bin/bash
  2. #前缀路径
  3. PREFIX="/usr/TomcatSvr7-"
  4. #起始编号
  5. BEGIN=2
  6. #终止编号
  7. END=20
  8. for((i=$BEGIN;i<=$END;i++))
  9. do
  10. #删除历史记录
  11. rm -rf $prefix$i/logs/*0*
  12. cat /dev/null > $prefix$i/logs/catalina.out
  13. done

Nginx日志管理

点击(此处)折叠或打开

  1. logs_path=\"/usr/local/nginx_1.4.6/logs/\"
  2. mv ${logs_path}www.log ${logs_path}www_$(date -d \"yesterday\" +\"%Y%m%d\").log
  3. mv ${logs_path}error.log ${logs_path}error_$(date -d \"yesterday\" +\"%Y%m%d\").log
  4. kill -HUP `cat ${logs_path}nginx.pid`
  5. find $logs_path -name \"www_*log\" -mtime +0 -exec rm -rf {} ;
  6. #find $logs_path -name \"access_*log\" -mtime +2 -exec rm -rf {} ;
  7. find $logs_path -name \"error_*log\" -mtime +0 -exec rm -rf {} ;

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

自动配置LVM分区

点击(此处)折叠或打开

  1. #!/bin/bash
  2. DEV=/dev/sdb
  3. VG=VG_DATA
  4. LG=lv_data
  5. DIR=/data
  6. pvcreate $DEV \
  7. && vgcreate $VG $DEV \
  8. && lvcreate -l 100%PVS -n $LG $VG \
  9. && mkfs.ext4 /dev/$VG/$LG \
  10. && mkdir $DIR
  11. && mount /dev/$VG/$LG $DIR


Nginx配置

点击(此处)折叠或打开

  1. server_tokens off;
  2. sendfile on;
  3. tcp_nopush on;
  4. tcp_nodelay on;
  5. keepalive_timeout 65;
  6. client_header_timeout 10;
  7. client_body_timeout 10;
  8. reset_timedout_connection on;
  9. send_timeout 10;
  10. charset utf-8;
  11. server_names_hash_bucket_size 128;
  12. client_header_buffer_size 512k;
  13. large_client_header_buffers 4 64k;
  14. client_max_body_size 16m;
  15. client_body_buffer_size 256k;
  16. proxy_connect_timeout 60;
  17. proxy_send_timeout 30;
  18. proxy_read_timeout 30;
  19. proxy_buffer_size 16k;
  20. proxy_buffers 4 256k;
  21. proxy_busy_buffers_size 512k;
  22. proxy_temp_file_write_size 512k;
  23. open_file_cache max=10240 inactive=20s;
  24. open_file_cache_valid 30s;
  25. open_file_cache_min_uses 10;
  26. open_file_cache_errors on


Tomcat连接池配置

点击(此处)折叠或打开

  1. port="5000"
  2. protocol="org.apache.coyote.http11.Http11NioProtocol"
  3. connectionTimeout="30000"
  4. URIEncoding="UTF-8"
  5. maxThreads="1000"
  6. minSpareThreads="100"
  7. acceptCount="300"
  8. acceptorThreadCount="6"
  9. keepAliveTimeout="120000"
  10. maxKeepAliveRequests="1000"
  11. enableLookups="false"
  12. redirectPort="8443" />

实时查看连接数

点击(此处)折叠或打开

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


远程切换Nginx

点击(此处)折叠或打开

  1. #!/bin/bash
  2. PORT1=8066
  3. PORT2=10066
  4. switch_to_8066(){
  5. ssh 10.10.10.11 "/bin/bash /root/nginx_p$PORT1.sh;exit"
  6. }
  7. switch_to_10066(){
  8. ssh 10.10.10.11 "/bin/bash /root/nginx_p$PORT2.sh;exit"
  9. }
  10. switch_to_all(){
  11. ssh 10.10.10.11 "/bin/bash /root/nginx_all.sh;exit"
  12. }
  13. case "$1" in
  14. switch_to_8066)
  15. echo "switch nginx to port $PORT1"
  16. switch_to_8066
  17. echo "switch to port $PORT1 success"
  18. ;;
  19. switch_to_10066)
  20. echo "switch nginx to port $PORT2"
  21. switch_to_10066
  22. echo "switch to port $PORT2 success"
  23. ;;
  24. switch_to_all)
  25. echo "switch nginx to port $PORT1 and $PORT2"
  26. switch_to_all
  27. echo "switch to port $PORT2 and $PORT1 success"
  28. ;;
  29. *)
  30. echo $"Usage: $0 {switch_to_$PORT1|switch_to_$PORT2|switch_to_all}"
  31. exit 1
  32. ;;
  33. esac

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

点击(此处)折叠或打开

  1. #!/bin/bash
  2. NGINX_CONF=/usr/local/nginx_1.8.0/conf/
  3. NGINX_SBIN=/usr/local/nginx_1.8.0/sbin/nginx
  4. CONF_FILE=nginx_8066.conf
  5. ps -ef | grep nginx |grep -v 'grep' |grep -v 'nginx_p8066.sh' | awk '{print $2}' | xargs kill
  6. $NGINX_SBIN -c $NGINX_CONF$CONF_FILE

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

点击(此处)折叠或打开

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


SVN自动发布(捡漏)

点击(此处)折叠或打开

  1. #!/bin/bash
  2. REMOTE_HOST1=192.168.1.100
  3. REMOTE_USER1=
  4. REMOTE_PWD1=
  5. DIR=TEST
  6. PROJECT=TEST_PRO
  7. BRANCH=trunk
  8. SVN_URL=http://192.168.1.233/svn/
  9. LOG=svn_file_change.log
  10. TMP_DIR=/home/test/
  11. TARGET_DIR=/data/save/
  12. if [ ! -d $TMP_DIR$DIR ]; then
  13. mkdir $TMP_DIR$DIR
  14. else
  15. echo "svn files is exist, script start......time : $(date -d today +%Y-%m-%d\ %H:%M:%S)" >> $TMP_DIR$LOG
  16. #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
  17. if [ $? -eq 0 ]; then
  18. svn co $SVN_URL$PROJECT/$BRANCH/$DIR
  19. if [ $? -eq 0 ]; then
  20. expect -c "
  21. spawn ssh $REMOTE_USER1@$REMOTE_HOST1 \"rm -rf $TARGET_DIR$DIR\"
  22. expect {
  23. \"*assword\" {set timeout 300; send \"$REMOTE_PWD1\r\";}
  24. \"yes/no\" {send \"yes\r\"; exp_continue;}
  25. }
  26. expect eof"
  27. expect -c "
  28. spawn scp -r $TMP_DIR$DIR $REMOTE_USER1@$REMOTE_HOST1:$TARGET_DIR
  29. expect {
  30. \"*assword\" {set timeout 300; send \"$REMOTE_PWD1\r\";}
  31. \"yes/no\" {send \"yes\r\"; exp_continue;}
  32. }
  33. expect eof"
  34. expect -c "
  35. spawn ssh $REMOTE_USER1@$REMOTE_HOST1 \"chown -R test:test $TARGET_DIR$DIR\"
  36. expect {
  37. \"*assword\" {set timeout 300; send \"$REMOTE_PWD1\r\";}
  38. \"yes/no\" {send \"yes\r\"; exp_continue;}
  39. }
  40. expect eof"
  41. #rm -rf $TMP_DIR$DIR
  42. else
  43. echo "svn error, can not copy the file!......" >> $TMP_DIR$LOG
  44. fi
  45. else
  46. echo "Unkown error......" >> $TMP_DIR$LOG
  47. fi
  48. fi


VIP

点击(此处)折叠或打开

  1. /sbin/ip addr add 100.100.100.100/24 dev eth0
  2. /sbin/ip addr del 100.100.100.100/24 dev eth0

Linux下用的脚本的更多相关文章

  1. Linux下定时执行脚本(转自Decode360)

    文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog  老师(业精于勤而荒于嬉 ...

  2. Linux下添加shell脚本使得nginx日志每天定时切割压缩

    Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...

  3. linux下实现shell脚本自动连接mongodb数据库并创建索引

    在linux下创建shell脚本

  4. 实用脚本 2 -- Linux下定时执行脚本

    今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...

  5. Linux下kill进程脚本

    Linux下kill进程脚本 在Linux有时会遇到需要kill同一个程序的进程,然而这个程序有多个进程,一一列举很是繁琐,使用按名字检索,统一kill Perl脚本 使用方法 kill_all.pl ...

  6. Linux下shell通用脚本启动jar(微服务)

    Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...

  7. linux 下shell 编写脚本

    linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...

  8. 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出

    有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...

  9. Linux下对拍脚本与随机数生成器

    对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...

  10. windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式

    常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...

随机推荐

  1. JVM 线上故障排查基本操作--内容问题排查

    内存问题排查 说完了 CPU 的问题排查,再说说内存的排查,通常,内存的问题就是 GC 的问题,因为 Java 的内存由 GC 管理.有2种情况,一种是内存溢出了,一种是内存没有溢出,但 GC 不健康 ...

  2. EasyDSS RTMP流媒体服务器基于RTMP拉模式和转推模式搭建公网全平台全终端直播集群的方案

    近期,我们有一位EasyDSS流媒体用户在需求中提出:如何搭建一个用户量巨大的讲座直播,提供给普通用户免费观看,每天上午和下午分别有几场讲座同时直播,持续几天时间. 推荐方案 ★ 由于甲方是中国移动运 ...

  3. vagrant报错处理

    vagrant up报错 Warning: Authentication failure. Retrying...解决方案 http://www.cnblogs.com/zqifa/p/vagrant ...

  4. [LeetCode] 330. Patching Array 数组补丁

    Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...

  5. Python:self理解

    Python类 class Student: # 类变量,可以通过类.类变量(Student.classroom)或者实例.类变量(a.classroom)方式调用 classroom = '火箭班' ...

  6. 【原创】C++11:左值和右值(深度分析)

    ——原创,引用请附带博客地址 2019-12-06 23:42:18 这篇文章分析的还是不行,先暂时放在这以后再更新. 本篇比较长,需要耐心阅读 以一个实际问题开始分析 class Sub{} Sub ...

  7. 2019暑假牛客多校训练-第八场-C-CDMA(递归、水题)

    观察前3组可以推出递归规律,生成下一个类型时,每行copy自身与自身相反. 题目描述 Gromah and LZR have entered the third level. There is a b ...

  8. LeetCode 1047. 删除字符串中的所有相邻重复项(Remove All Adjacent Duplicates In String)

    1047. 删除字符串中的所有相邻重复项 1047. Remove All Adjacent Duplicates In String 题目描述 LeetCode1047. Remove All Ad ...

  9. 通过元类创建一个Python类

    通过元类创建一个Python类 最开始学pytohn的时候我们这样定义类 class ClassName: pass 当熟悉了元类的概念之后我们还可以这样创建 ClassName = type(&qu ...

  10. Apache Kafka Connect - 2019完整指南

    今天,我们将讨论Apache Kafka Connect.此Kafka Connect文章包含有关Kafka Connector类型的信息,Kafka Connect的功能和限制.此外,我们将了解Ka ...