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 &