linux 定时任务

安装cron

apt-get install cron

service cron start     //启动服务

service cron stop      //关闭服务

service cron restart   //重启服务

service cron reload    //重新载入配置

service cron status    //查看crontab服务状态

crontab -e  

一定要用这指令vi来编辑,不然不生效

53 17 * * *  root   sh  start.sh  

 i cc  esc :wq

/var/spool/cron/crontabs  生成的文件会在这个目录

start.sh  如果通过crontab来启动 会取不到java的环境 这里就是在sh里要把用到的环境都配置上

加上

#!/bin/sh

source /etc/profile

export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51

export JRE_HOME=${JAVA_HOME}/jre  

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

export PATH=${JAVA_HOME}/bin:$PATH 

nowDate=$(date +%Y%m%d)

这就可以取到环境了

nohup  ./$appName -Dhttp.port=$appPort -Dapp.id=$appId -Dpidfile.path="$appPath"/pid/$appId  >"$appPath"/bin/nohup$nowDate.out 2>&1 &       

 这句用来把控制台输出到日志文件

#!/bin/sh
source /etc/profile
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_51
export JRE_HOME=${JAVA_HOME}/jre  
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
export PATH=${JAVA_HOME}/bin:$PATH 
nowDate=$(date +%Y%m%d)

appPath="/app"
appName="app"
appId=$1
if [ ! -n "appId" ];then
	echo ''
	exit
fi
appPort=$2
pid=$3
if [ ! -n "$pid" ];then
	ps -ef | grep java | grep $1;
	pid=$(ps -ef | grep java | grep ${appId} | awk '{print $2}')
	echo 'pid='$pid
fi
if [ ! -n "$pid" ];then
    echo $appId" not running,directly start ! "
else
 	echo $appId" is running,try kill it,then start!"
    kill -9 $pid
    sleep 1
    rm -fr "$appPath"/pid/$appId
fi          
cd "$appPath"/bin
nohup  ./$appName -Dhttp.port=$appPort -Dapp.id=$appId -Dpidfile.path="$appPath"/pid/$appId  >"$appPath"/bin/nohup$nowDate.out 2>&1 &