#touch auto-start.sh
[root@Linux opt]# echo $LANG
en_US.UTF-8
#vim auto-start.sh
#!/bin/sh
export LANG="en_US.UTF-8" 设置编码格式,不然日志会出现中文字符显示乱码情况crontab启动的任务没有获取系统的环境变量,导致中文乱码
解决办法:
在执行的脚步中添加编码方式或者添加对应的环境变量
export JAVA_HOME=/usr/java/jdk1.7.0_21/ //如果不选择这个语句,项目可能不能自行启动报错,提示无法加载到java_home的运行环境
pid=`ps aux | grep tomcat_ezttv | grep -v grep | grep -v retomcat | awk '{print $2}'` //这步grep要设置成具体项目名称,如果单纯设置tomcat整个服务器tomcat项目都会关闭
echo $pid //输出pid内容
if [ -n "$pid" ]
then
{
echo ===========shutdown================
/usr/local/tomcat_ezttv/bin/shutdown.sh
sleep 1
pid=`ps aux | grep tomcat_ezttv | grep -v grep | grep -v retomcat | awk '{print $2}'`
if [ -n "$pid" ]
then
{
sleep 1
echo ========kill tomcat==============
kill -9 $pid
}
fi
sleep 1
echo ===========startup.sh==============
/usr/local/tomcat_ezttv/bin/startup.sh
}
else
echo ===========startup.sh==============
/usr/local/tomcat_ezttv/bin/startup.sh
fi
脚本设置chmod +x auto-start.sh 添加执行权限
启动crontab的权限
service crond start 启动服务
service crond status 服务crontab 启动的状态
#crontab -e
05 11 * * 4 /opt/auto-start.sh>>/opt/auto.log
设置定点启动时,需要设置分钟 00 05 代表5点的意思
4指周四 星期从0算起
分、时、日、月、星期 执行脚本>>输出日志
下面是crontab的格式;
分<>时<>日<>月<>星期<>要运行的命令
其中<>表示空格
#cat auto.log
20488
===========shutdown================
========kill tomcat==============
===========startup.sh==============
第1列分钟1~5 9
第2列小时1~2 3(0表示子夜)
第3列日1~3 1
第4列月1~1 2
第5列星期0~6(0表示星期天)
第6列要运行的命令
在这些域中,用横杆 - 来表示一个时间范围,如星期一至星期五某个动作,星期域就用1-5来表示
还可以用,隔开两个时间断,如星期一和星期四,星期域用1,4表示
可以用*来表示连续的时间断,如果某个时间域没有特别的限定,也可以用*填入
该文件的每一个条目必须含有5个时间域,而且每个时间域之间用 空格 分隔
该文件的所有注释行要在行首用#来表示
-crontab条目举例
30 21 * * * /apps/bin/cleanup.sh 表示每晚的21:30运行/apps/bin 目录下的cleanup.sh
0,30 18-23 * * * /apps/bin/dbcheck.sh 每天的18:00 至 23:00之间运行/apps/bin目录下的d'b'che'c'k.sh
45 4 1,10,22 * * /apps/bin/backup.sh
上面的例子表示每月1、1 0、2 2日的4 : 4 5运行/ a p p s / b i n目录下的b a c k u p . s h。
10 1 * * 6,0 /bin/find -name "core" -exec rm {} \;
上面的例子表示每周六、周日的1 : 1 0运行一个f i n d命令。
0,30 18-23 * * * /apps/bin/dbcheck.sh
上面的例子表示在每天1 8 : 0 0至2 3 : 0 0之间每隔3 0分钟运行/ a p p s / b i n目录下的d b c h e c k . s h。
0 23 * * 6 /apps/bin/qtrend.sh
上面的例子表示每星期六的11 : 0 0 p m运行/ a p p s / b i n目录下的q t r e n d . s h。
你可能已经注意到上面的例子中,每个命令都给出了绝对路径。当使用c r o n t a b运行s h e l l
脚本时,要由用户来给出脚本的绝对路径,设置相应的环境变量。记住,既然是用户向c r o n
提交了这些作业,就要向c r o n提供所需的全部环境。
当使用crontab 运行shell脚步时,要由用户来给出脚步的绝对路径,设置相应的环境变量。
如果cron不能运行相应的脚步,用户将会收到一个邮件说明其中的原因。
-crontab命令选项
crontab命令的一般形式:
crontab [-u user] -e -l -r
其中:
-u 用户名
-e 编辑crontab文件
-l 列出crontab文件内容
-r 删除crontab文件