--测试通过

vim restart_tomcat.sh

#!/bin/bash

# Filename: restart_tomcat.sh

# Description: Restart tomcat

# Date: 2017-02-06

# Author: songwj

# Version: v1.0

export LANG=zh_CN.UTF-8

export JAVA_HOME=/usr/java/jdk1.7.0_79

export JRE_HOME=$JAVA_HOME/jre

export CATALINA_BASE=/usr/local/apache-tomcat-7.0.79

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_BASE/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

echo "[$(date +'%F %T')] >>> Tomcat begin to restart."

$CATALINA_BASE/bin/shutdown.sh

# Kill all remaining processes

pidList=$(ps aux | grep $CATALINA_BASE | grep -v grep | awk '{print $2}')

for pid in $pidList; do

kill -9 $pid

echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully."

done

$CATALINA_BASE/bin/startup.sh

echo "[$(date +'%F %T')] >>> Tomcat restart complete."

    注意:直接使用tomcat中的shutdown.sh命令关闭tomcat服务时,往往无法正常关闭所有服务,会有残留进程没有正常关闭,久而久之,残留进程会侵占越来越多的系统资源,甚至重启后都无法正常访问项目,所以每次在执行完shutdown.sh命令后,需杀死残留进程,然后再重启服务,这点非常重要。

1. 问题:手动调用Shell重启脚本项目运行正常,但使用crontab定时调用时项目重启访问出现中文乱码?

    解决方法:因为crontab调用脚本的运行环境和直接手动调用脚本的运行环境不同,所以在脚本中需指明所调用的环境,而且所调用的环境尽量写成绝对路径,避免出现不必要麻烦。此处使用crontab重启出现乱码,可以查看下正常环境中所使用的编码环境,经查为zh_CN.UTF-8,则在脚本中明确声明export LANG=zh_CN.UTF-8即可。

------------------------------------------------------------------------------

--测试通过

#!/bin/bash

#Filename:restart_tomcat.sh

# Description: Restart tomcat

# Date: 2017-02-06

# Author: songwj

# Version: v1.0

export LANG=zh_CN.UTF-8

export JAVA_HOME=/java/jdk1.8.0_91

export JRE_HOME=$JAVA_HOME/jre

export CATALINA_BASE=/java/apache-tomcat-9.0.24

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$CATALINA_BASE/bin:$PATH

export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

echo "[$(date +'%F %T')] >>> Tomcat begin to restart."

$CATALINA_BASE/bin/shutdown.sh

# Kill all remaining processes

pidList=$(ps aux | grep $CATALINA_BASE | grep -v grep | awk '{print $2}')

for pid in $pidList; do

kill -9 $pid

echo "[$(date +'%F %T')] >>> Kill the process [$pid] successfully."

done

$CATALINA_BASE/bin/startup.sh

echo "[$(date +'%F %T')] >>> Tomcat restart complete."


-----------------------------------------------------------------------------

 ​

在Linux系统下运行.sh文件有两种方法,比如我在root目录下有个datelog.sh文件


第一种(这种办法需要用chmod使得文件具备执行条件(x): chmod u+x datelog.sh):

1、在任何路径下,输入该文件的绝对路径/root/datelog.sh就可执行该文件(当然要在权限允许情况下)


2、cd到datelog.sh文件的目录下,然后执行./datelog.sh



第二种(这种办法不需要文件具备可执行的权限也可运行):

1、在该文件路径下sh加上文件名字即可,sh datelog.sh

2、在任意路径下,sh 加上文件路径及文件名称:sh /root/ datelog.sh