Linux下用的脚本
http://blog.itpub.net/29510932/viewspace-1166603/
批量启动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<=$END;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<=$END;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<=$END;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秒自动检测一次)
点击(此处)折叠或打开
- #!/bin/bash
- prefix=/usr/local/nginx_1.4.6/sbin
- while :
- do
- nginxpid=`ps -C nginx --no-header | wc -l`
- if [ $nginxpid -eq 0 ]; then
- DATE=$(date +%Y-%m-%d %T)
- killall nginx && $prefix/nginx && echo "$DATE Restart Nginx successful~" || echo "$DATE Fail to restart Nginx!"
- sleep 60
- else
- DATE=$(date +%Y-%m-%d %T)
- echo "$DATE : Nginx_Check is running, everything is OK~"
- sleep 60
- fi
- 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<=$end;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
Linux下用的脚本的更多相关文章
- Linux下定时执行脚本(转自Decode360)
文章来自:http://www.blogjava.net/decode360/archive/2009/09/18/287743.html Decode360's Blog 老师(业精于勤而荒于嬉 ...
- Linux下添加shell脚本使得nginx日志每天定时切割压缩
Linux下添加shell脚本使得nginx日志每天定时切割压缩一 简介 对于nginx的日志文件,特别是access日志,如果我们不做任何处理的话,最后这个文件将会变得非常庞大 这时,无论是出现异常 ...
- linux下实现shell脚本自动连接mongodb数据库并创建索引
在linux下创建shell脚本
- 实用脚本 2 -- Linux下定时执行脚本
今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...
- Linux下kill进程脚本
Linux下kill进程脚本 在Linux有时会遇到需要kill同一个程序的进程,然而这个程序有多个进程,一一列举很是繁琐,使用按名字检索,统一kill Perl脚本 使用方法 kill_all.pl ...
- Linux下shell通用脚本启动jar(微服务)
Linux下shell通用脚本启动jar(微服务) vim app_jar.sh #!/bin/bash #source /etc/profile # Auth:Liucx # Please chan ...
- linux 下shell 编写脚本
linux 下shell 编写脚本: 1.程序结构练习:编写一个脚本,给定一个正整数,计算出这个数所有位的数字之和. 例如:程序给定输入123,那么应该返回1+2+3=6. 2.程序结构练习:编写一个 ...
- 2019.11.13课堂实验之用Linux下的shell脚本完成两文本交替输出
有两个文本如下,实际中并不知道两文本各有多少行: 文本1.txt aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccc ...
- Linux下对拍脚本与随机数生成器
对拍脚本 新建一个文档 check.sh 作为对拍脚本. #!/bin/bash while(true)do #死循环 ./data > .in #运行数据生成器,将数据输出到1.in ./st ...
- windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式
常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...
随机推荐
- JVM 线上故障排查基本操作--内容问题排查
内存问题排查 说完了 CPU 的问题排查,再说说内存的排查,通常,内存的问题就是 GC 的问题,因为 Java 的内存由 GC 管理.有2种情况,一种是内存溢出了,一种是内存没有溢出,但 GC 不健康 ...
- EasyDSS RTMP流媒体服务器基于RTMP拉模式和转推模式搭建公网全平台全终端直播集群的方案
近期,我们有一位EasyDSS流媒体用户在需求中提出:如何搭建一个用户量巨大的讲座直播,提供给普通用户免费观看,每天上午和下午分别有几场讲座同时直播,持续几天时间. 推荐方案 ★ 由于甲方是中国移动运 ...
- vagrant报错处理
vagrant up报错 Warning: Authentication failure. Retrying...解决方案 http://www.cnblogs.com/zqifa/p/vagrant ...
- [LeetCode] 330. Patching Array 数组补丁
Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...
- Python:self理解
Python类 class Student: # 类变量,可以通过类.类变量(Student.classroom)或者实例.类变量(a.classroom)方式调用 classroom = '火箭班' ...
- 【原创】C++11:左值和右值(深度分析)
——原创,引用请附带博客地址 2019-12-06 23:42:18 这篇文章分析的还是不行,先暂时放在这以后再更新. 本篇比较长,需要耐心阅读 以一个实际问题开始分析 class Sub{} Sub ...
- 2019暑假牛客多校训练-第八场-C-CDMA(递归、水题)
观察前3组可以推出递归规律,生成下一个类型时,每行copy自身与自身相反. 题目描述 Gromah and LZR have entered the third level. There is a b ...
- LeetCode 1047. 删除字符串中的所有相邻重复项(Remove All Adjacent Duplicates In String)
1047. 删除字符串中的所有相邻重复项 1047. Remove All Adjacent Duplicates In String 题目描述 LeetCode1047. Remove All Ad ...
- 通过元类创建一个Python类
通过元类创建一个Python类 最开始学pytohn的时候我们这样定义类 class ClassName: pass 当熟悉了元类的概念之后我们还可以这样创建 ClassName = type(&qu ...
- Apache Kafka Connect - 2019完整指南
今天,我们将讨论Apache Kafka Connect.此Kafka Connect文章包含有关Kafka Connector类型的信息,Kafka Connect的功能和限制.此外,我们将了解Ka ...