shell 简单脚本 2
#!/bin/bash source /etc/profile APPLICATIONS_HOME="/cpic/cpicapp/cpic_analy/jars"
APPLICATION_NAME="CountFoodScore.jar"
SNAME=`basename $APPLICATION_NAME .jar`
LOG_DIR=`dirname $APPLICATIONS_HOME`/logs/$SNAME STR_LOG=$(date +'%Y-%m-%d_%H-%M')
STR_DAY=$(date +'%Y-%m-%d')
STR_BEGIN=$(date +'%Y-%m-%d %H:%M:%S') #This args is very important.It's when kill the task, it's type is seconds. default is 216000 seconds(6 hours).After 6 hours kill the task.if it exists.
KILL_THRESHOLD=3600 # This is the shell script's name.
NAME=`basename $0` # if the LOG_DIR dictory is not exists, then make it.
if [ ! -d ${LOG_DIR} ]; then
mkdir -p ${LOG_DIR}
fi # if this shell script is running, then exit.
if [ $(ps -ef|awk -v n=${NAME} '$2!=p && $NF~n'|wc -c) -gt 300 ]; then # if the application is running,then get the pid.
CHID=`ps -ef | grep -v grep | grep $APPLICATION_NAME | awk '{print $2}'`
echo "This chid is : " $CHID >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1 PID=`ps -ef | grep -v grep | grep $CHID | awk '{print $3}'`
echo "This pid is : " $PID >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1 START_TIME=`ps -eo pid,lstart | grep $PID` TEMP_TIME=${START_TIME#*' '}
echo "The temp time is:"$TEMP_TIME FORMAT_START_TIME=`date -d "$TEMP_TIME" +%s`
echo "Format start time is : " $FORMAT_START_TIME >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1 NOW_TIME=`date`
FORMAT_NOW_TIME=`date -d "$NOW_TIME" +%s`
echo " now time is : " $FORMAT_NOW_TIME >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1 # If (this time - start time) is equals 21600, kill the task and restart.
if [ `expr $FORMAT_NOW_TIME - $FORMAT_START_TIME` -gt $KILL_THRESHOLD ]; then
echo "This time is :"`expr $FORMAT_NOW_TIME - $FORMAT_START_TIME` >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1
echo $(date +'%Y-%m-%d %H:%M:%S') "This $PID task is running long time, killing it!" >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1
kill -9 $CHID
echo $STR_BEGIN "Restart it ......." >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1
cd ${APPLICATIONS_HOME} && $JAVA_HOME/bin/java -jar ${APPLICATIONS_HOME}/${APPLICATION_NAME} >> "${LOG_DIR}/run_${SNAME}_${STR_LOG}.log" 2>&1
exit
else
echo ${STR_BEGIN}" ${SNAME} is already running,exit!" >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1
exit
fi
else
echo ${STR_BEGIN}" ${SNAME} begin runing" >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1
cd ${APPLICATIONS_HOME} && $JAVA_HOME/bin/java -jar ${APPLICATIONS_HOME}/${APPLICATION_NAME} >> "${LOG_DIR}/run_${SNAME}_${STR_LOG}.log" 2>&1
STR_END=$(date +'%Y-%m-%d %H:%M:%S')
echo ${STR_END}" ${SNAME} end runing" >> $LOG_DIR/run_${STR_DAY}_sys.log 2>&1
fi
exit
shell 简单脚本 2的更多相关文章
- shell 简单脚本编程
shell脚本编程 编译器,解释器 编程语言: 机器语言,汇编语言,高级语言 静态语言:编译型语言 强类型(变量) 事先转换成可执行格式 C,C++,JAVA,C# 动态语言:解释型语言,on the ...
- shell简单脚本#1
判断/etc/inittab文件是否大于100行,如果大于,则显示”/etc/inittab is a big file.”否者显示”/etc/inittab is a small file.” #! ...
- 编写SHELL脚本--编写简单脚本
1.简单脚本文件hello.sh,内容如下 #!/bin/bash pwd ls -al 执行脚本:bash hello.sh 或者使用root命令: ./hello.sh 2.接受用户参数 $0 ...
- linux下的shell和脚本
1.各种Unix shell linux下的shell基本是从unix环境中的shell发展而来,贴一下wiki:其中我们常用的,可归类为Bourne Shell(/usr/bin/sh或/bin/s ...
- Shell菜单脚本
今天在这儿给大家分享一个我简单编写的Shell菜单脚本,傻瓜式的人机交互,人人都可以操作linux. #!/bin/sh #Shell菜单演示 function menu () { cat <& ...
- 学习 Linux,101: 自定义或编写简单脚本【转】
转自:http://www.ibm.com/developerworks/cn/linux/l-lpic1-105-2/index.html 学习如何使用标准的 shell 语法.循环和控制结构,以及 ...
- 4.Vim编辑器与Shell命令脚本
第4章 Vim编辑器与Shell命令脚本 章节简述: 本章首先讲解如何使用Vim编辑器来编写.修改文档,然后通过逐个配置主机名称.系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸 ...
- Linux 就该这么学 CH04 VIM编辑器和Shell命令脚本
0 概述 1 Vim编辑器 在linux 中一切都是文件,而配置一个服务就是修改其配置文件的参数. vim 编辑器有三种模式:命令模式,末行模式和编辑模式. 命令模式:控制光标移动,对文件进行操作. ...
- Shell编程——脚本编写思路与过程
Linux系统Shell编程——脚本编写思路与过程 “ 前段时间有小伙伴问我一些问题,涉及到shell脚本的编写问题,事后,我深入思考了下,实际生产环境的确也会经常用到,因此如何写这个脚本?它的思路在 ...
随机推荐
- SparseArray浅析
HashMap是java里比较常用的一个集合类,我们一般用来缓存一些处理后的结果.但当你做一个Android项目时,在代码中定义这样一个变量,实例化时,Eclipse却给出了一个 performanc ...
- c++的const总结(转)
为什么使用const?采用符号常量写出的代码更容易维护:指针常常是边读边移动,而不是边写边移动:许多函数参数是只读不写的.const最常见用途是作为数组的界和switch分情况标号(也可以用枚举符代替 ...
- PHP实用小程序(五)
<HTML> <HEAD> <TITLE>图像函数</TITLE> </HEAD> <BODY> <img src=&qu ...
- ASP.NET页面执行顺序
原文地址:http://blog.csdn.net/a497785609/article/details/4510335 1.对象初始化(OnInit方法) 页面中的控件(包括页面本身)都是在它们最初 ...
- LeetCode: 620 Not Boring Movies(easy)
题目: X city opened a new cinema, many people would like to go to this cinema. The cinema also gives o ...
- lightoj 1076 【二分找满足条件的最左】
#include <bits/stdc++.h> using namespace std; typedef long long LL; typedef unsigned long long ...
- ajax 的三种使用方法
第一种 也是最古老的一种方法之一 from 表单直接提交数据到php文件里 action为路径 <form method="post" action="./inde ...
- Unity3D脚本:更改脚本和类名,且不破坏现有脚本引用的方法
Unity开发过程中,难免遇到需要修改类名(以及对应脚本名)的时候,但如果草率地在MonoDevelop里把类名直接改掉,会破坏现有场景以 及Project Assets中所有引用该脚本的链接,届时还 ...
- bzoj 2738: 矩阵乘法【整体二分+树状数组】
脑子一抽开始写主席树,敲了一会发现不对-- 整体二分,用二维树状数组维护值为当前区间的格子个数,然后根据k的大小和当前询问的子矩阵里的值和k的大小关系来决定这个询问放在哪一部分向下递归 #includ ...
- 5 天 4000 star 的一个爆款开源项目
今天早上起来浏览 GitHub 的时候,在周热门趋势排行榜上看到了这么一个开源项目,仅仅 5 天时间,爬到了周排行榜的第一名的位置.而在每天的排行榜上,今天一早也高高位居排行榜的第二位. 这个开源项目 ...