说明:检测8080端口是否被监听,如不监听,则重启服务。同时输出日志到run.log中 。添加上重启服务器的时间
#!/bin/bash
source /etc/profile
port="8080"
start="/opt/tc/selfTomcat/apache-tomcat-9.0.6/bin/startup.sh"
stop="/opt/tc/selfTomcat/apache-tomcat-9.0.6/bin/shutdown.sh"
netstat -ln|awk '/^tcp/ {print $4}'|grep -q ":$port$"||{
time2=$(date "+%Y-%m-%d %H:%M:%S")
echo "$time2 start" >>run.log
eval $stop 2>>error.log
sleep 30s
eval $start 2>>error.log
time3=$(date "+%Y-%m-%d %H:%M:%S")
des="rebot the tomcat"
echo "$time3 $des" >>run.log
exit $?
}
exit 0
source /etc/profile /etc/profile存储的是环境变量,运行java使用,否则出现jdk找不到的问题
sleep 30s 为先等待30s
(-----------------
crontab -e
之后: 日志会输出到cr.log中 (test.sh中需要echo "$time2 start" ,如果写成echo "$time2 start" >>1.log 则日志不会输出到1.log中,原因不明????)
等待4s
@reboot (sleep 4;sh /opt/tc/rebootSolf/test.sh 1>>/opt/tc/rebootSolf/cr.log 2>>/opt/tc/rebootSolf/cr2.log)
---------------------------------------------)
之后crontab -e 配置 16点14分运行.sh ,日志输出到 time.log中
14 16 * * * /opt/tc/rebootSolf/systemStart.sh 1>>/opt/tc/rebootSolf/time.log
说明:
1、netstat
netstat是一个监控TCP/IP网络的工具,它可以显示路由表,实际的网络连接以及每一个网络接口设备的状态信息,netstat用于显示与IP,TCP,UDP和ICMP协议相关的统计数据,一般用于查询本机各端口的网络连接情况。
-a 显示所有socket。包括正在监听的。
-l 显示正在监听的服务状态
-n以网络IP地址代替名称,显示网络连接情形。
-p 显示建立相关连接的程序名和PID
-t显示TCP协议的连接情况。
-u显示UDP协议的连接情况。
2、awk
awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大。
使用方法 : awk '{pattern + action}' {filenames}
其中 pattern 表示 AWK 在数据中查找的内容,而 action 是在找到匹配内容时所执行的一系列命令。花括号({})不需要在程序中始终出现,但它们用于根据特定的模式对一系列指令进行分组。 pattern就是要表示的正则表达式,用斜杠括起来。
$0变量是指整条记录。$1表示当前行的第一个域,$2表示当前行的第二个域,......以此类推。
如:
11、搜索/etc/passwd有root关键字的所有行
root@ubuntu:/opt/tc/selfTomcat/apache-tomcat-9.0.6/bin# awk '/root/' /etc/passwd
root:x:0:0:root:/root:/bin/bash
12 搜索/etc/passwd有root关键字的所有行,并显示对应的shell
root@ubuntu:/opt/tc/selfTomcat/apache-tomcat-9.0.6/bin# awk '/root/{print $1}' /etc/passwd
root:x:0:0:root:/root:/bin/bash
3 grep
grep 指令用于查找内容包含指定的范本样式的文件
- -q 或 --quiet或--silent : 不显示任何信息。 只关心是否匹配上,可以用echo $? 查看是否匹配上,匹配上为0,1表示没有匹配