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

简介: 批量启动Tomcat 点击(此处)折叠或打开 #!/bin/bash #JDK路径 export JAVA_HOME="/usr/jdk1.
批量启动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

目录
相关文章
|
3月前
|
安全 Linux Shell
Linux上执行内存中的脚本和程序
【9月更文挑战第3天】在 Linux 系统中,可以通过多种方式执行内存中的脚本和程序:一是使用 `eval` 命令直接执行内存中的脚本内容;二是利用管道将脚本内容传递给 `bash` 解释器执行;三是将编译好的程序复制到 `/dev/shm` 并执行。这些方法虽便捷,但也需谨慎操作以避免安全风险。
193 6
|
19天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
42 3
|
19天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
30 3
|
26天前
|
Ubuntu Linux Shell
Linux 系统中的代码类型或脚本类型内容
在 Linux 系统中,代码类型多样,包括 Shell 脚本、配置文件、网络配置、命令行工具和 Cron 定时任务。这些代码类型广泛应用于系统管理、自动化操作、网络配置和定期任务,掌握它们能显著提高系统管理和开发的效率。
|
1月前
|
运维 监控 Shell
深入理解Linux系统下的Shell脚本编程
【10月更文挑战第24天】本文将深入浅出地介绍Linux系统中Shell脚本的基础知识和实用技巧,帮助读者从零开始学习编写Shell脚本。通过本文的学习,你将能够掌握Shell脚本的基本语法、变量使用、流程控制以及函数定义等核心概念,并学会如何将这些知识应用于实际问题解决中。文章还将展示几个实用的Shell脚本例子,以加深对知识点的理解和应用。无论你是运维人员还是软件开发者,这篇文章都将为你提供强大的Linux自动化工具。
|
2月前
|
运维 Java Linux
【运维基础知识】Linux服务器下手写启停Java程序脚本start.sh stop.sh及详细说明
### 启动Java程序脚本 `start.sh` 此脚本用于启动一个Java程序,设置JVM字符集为GBK,最大堆内存为3000M,并将程序的日志输出到`output.log`文件中,同时在后台运行。 ### 停止Java程序脚本 `stop.sh` 此脚本用于停止指定名称的服务(如`QuoteServer`),通过查找并终止该服务的Java进程,输出操作结果以确认是否成功。
45 1
|
3月前
|
人工智能 监控 Shell
常用的 55 个 Linux Shell 脚本(包括基础案例、文件操作、实用工具、图形化、sed、gawk)
这篇文章提供了55个常用的Linux Shell脚本实例,涵盖基础案例、文件操作、实用工具、图形化界面及sed、gawk的使用。
595 2
|
2月前
|
存储 Shell Linux
【Linux】shell基础,shell脚本
Shell脚本是Linux系统管理和自动化任务的重要工具,掌握其基础及进阶用法能显著提升工作效率。从简单的命令序列到复杂的逻辑控制和功能封装,Shell脚本展现了强大的灵活性和实用性。不断实践和探索,将使您更加熟练地运用Shell脚本解决各种实际问题
30 0
|
3月前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
3月前
|
Unix Linux Python
Cron定时设置在linux和mac中的使用
文章详细说明了如何在Linux和Mac操作系统中使用Cron进行定时任务的设置,并提供了多个Cron表达式的实例。
41 0