一、shell脚本
#!/bin/bash
. /etc/profile
. ~/.bash_profile
process_name=java
tomcat_path=/usr/local/tomcat
nginx_path=/usr/local/nginx
pid= `ps -ef | grep $process_name | grep -v grep | awk '{print $2}'`
echo $pid
if [ -n "$pid" ];
then
{
echo "------- tomcat is start -> shutdown.sh ---------- "
$tomcat_path/bin/shutdown.sh
sleep 5
}
fi
echo "------------- remove tomcat logs------------- "
rm -rf $tomcat_path/logs/*
echo "------------- remove nginx logs --------------"
rm -f $nginx_path/logs/*.log
echo "----- release the resources of deleted ----- "
pid=`lsof | grep deleted | awk '{print $2}'`
kill -9 $pid
pid=`ps -ef | grep $process_name | grep -v grep | awk '{print $2}'`
if [ -n "$pid" ];
then
{
echo "------- to kill the tomcat pid $pid ---------"
kill -9 $pid
sleep 3
}
fi
echo "------------ start tomcat ------------------"
$tomcat_path/bin/startup.sh
sleep 3
echo "-------------- start nginx -----------------"
cd $nginx_path
./sbin/nginx
echo "------- vertify the logs of tomcat ---------"
cat -f /usr/local/tomcat/logs/catalina.out
二、启动定时任务
crontab -e // 编译、添加定时任务
0 0 * * * cd /usr/local/shell; ./tomcat_restart.sh > /usr/local/shell/tomcat_restart.log
保存退出即可启动
三、注意事项
注意事项
<1>判断条件可以修改为if [ ${tomcat_id} = "" ]
加入定时任务
crontab -h // 查看crontab的使用
crontab -l // 列出当前的定时任务
crontab -e // 编译、添加定时任务
service crond stop
service crond start
service crond status
案例一:
// 格式:
*/5 * * * * cd /home/*/*/ & ./tomcat_restart.sh > /home/*/*/restart.log
说明:
* * * * * 表示任何时候 //分 时 日 月 周
, 分割,多个时间点,如1点和4点 1,4
- 分割 ,一段时间范围内,如1点到四点 1-4
/n 间隔,没个多少时间,每5分钟,*/5
需要注意的是,定时任务中,对于脚本的存放目录也有要求,cd /home/*/* 先进入到目录下,在执行./tomcat_restart.sh
案例二:
0 2 * * * /usr/local/tomcat/bin/tomcat_restart.sh >> /usr/local/tomcat/logs/tomcat_restart.log
每天2点执行 tomcat_restart.sh 脚本并把执行日志追加到 tomcat_restart.log 文件中。
案例三:
1.在控制台上输入以下命令
crontab -e
2.按i键编辑这个文本文件,输入以下内容,每天凌晨4:30重启tomcat
30 04 * * * /usr/local/script/cleanTomcatlog.sh
我的最终crontab -e中的信息(具体根据情况):
0 0 * * * cd /usr/local/shell; ./tomcat_restart.sh > /usr/local/shell/tomcat_restart.log
四、其它小细节(自我补充)
1、获取当前时间
time2=$(date "+%Y%m%d%H%M%S") 20200720155515
time3=$(date "+%Y-%m-%d %H:%M:%S") 2020.07.25 15:55:15
time4=$(date "+%Y.%m.%d") 2020.07.25
注意:date后面有一个空格,shell对空格要求严格、变量赋值前后不要有空格