Shell脚本
Shell
输入输出重定向
我们在后台挂在jar包时,常使用过一个命令:
nohup java -jar xxx.jar > java.log 2>&1 &
这里就有几个知识点:
- 末尾的
&
代表后台默认启动,页面关闭后,程序终止。- 头部的
nohup
表示页面关闭后,后台仍继续运行,如果没有指定日志文件,则默认将输出重定向到nohup.log
文件java -jar xxx.jar
最基本的启动jar包> java.log
将运行jar包后的输出日志文件重定向到java.log
文件中2>&1
将标准输出与标准错误输出合并,在当前语义下就是将所有信息输出到java.log
文件。
- 如果只写
>
表示只将正常输出重定向到log文件中,错误信息直接显示页面- 如果写
2>
表示只将错误输出重定向到log文件中,正常信息直接显示页面>
默认表示重定向,并覆盖原来内容>>
表示以追加的方式重定向
这样我们就可以监控到后台运行程序的日志信息了。
shell脚本保证程序运行
需求:当我们将项目挂在到服务器中,可能过一会儿服务就挂机了,我们可能还不知道请求,就需要一个脚本定时的去监控,程序是否仍在运行中。
#!/bin/sh
lsof -i:8080
renren=$?
lsof -i:82
getaway=$?
lsof -i:9001
manager=$?
lsof -i:8001
back=$?
#echo "'renren:', ${renren}"
#echo "'getaway:',${getaway}"
#echo "'manager:',${manager}"
#echo "'back:',${back}"
# 判断项目文件都是否都正产运转,如果没有运转,则进行记录日志,并重新启动服务
if [ ${back} != 0 ]
then
cd /project/qiyuan/dist
echo "$(date +%F%n%T), server restart" >> renre.log
nohup node server.js >> renre.log 2>&1 &
fi
if [ ${renren} != 0 ]
then
cd /project/qiyuan/java
echo "$(date +%F%n%T), server restart" >> renren.log
nohup java -jar renren-fast.jar >> renren.log 2>&1 &
fi
if [ ${getaway} != 0 ]
then
cd /project/qiyuan/java
echo "$(date +%F%n%T), server restart" >> getaway.log
nohup java -jar getaway-0.0.1-SNAPSHOT.jar >> getaway.log 2>&1 &
fi
if [ ${manager} != 0 ]
then
cd /project/qiyuan/java
echo "$(date +%F%n%T),node server restart" >> manager.log
nohup java -jar manager-0.0.1-SNAPSHOT.jar >> manager.log 2>&1 &
fi
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 玲辰书斋!