Linux crontab处理定时任务——-执行java程序
前提
linux服务器必须是安装好jdk
什么是crontab?
crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性
被执行的指令。该命令从标准输入设备读取指令,并将其存放
于“crontab”文件中,以供之后读取和执行。该词来源于希腊语
chronos(χρνο),原意是时间。常,crontab储存的指令被守护进程激
活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执
行。这类作业一般称为cron jobs。
crontab的基本格式
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
crontab文件的一些例子:
实例一:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
实例二:
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重启apache。
实例三:
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每周六、周日的1 : 10重启apache。
实例四:
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。
实例五:
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重启apache。
实例六:
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小时重启apache
实例七:
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11点到早上7点之间,每隔一小时重启apache
实例八:
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4号与每周一到周三的11点重启apache
实例九:
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一号的4点重启apache
linux环境下crontab基本命令
Linux环境下执行:
crontab -l 查看当前环境下用户是的crontab任务
crontab -e 编辑当前环境下用户的crontab任务
crontab -d 删除用户目前的crontab任务
crontab -c dir 制定crontab的目录
crontab -l 显示:
*/10 * * * * /opt/app/DataExportProcess.sh
*/10 * * * * /opt/app/MailSenderProcess.sh
执行java代码实例:MailSenderProcess.sh
#!/bin/sh
CLASSPATH=`find /opt/app/lib -name *.jar | xargs | sed "s/ /:/g"`
export CLASSPATH=.:$CLASSPATH
export LANG="en_US.UTF-8"
echo $CLASSPATH > MailSenderProcessStartup.log
cd /opt/app/conf
MailSenderProcessPID=`ps -ef | grep com.youku.rsp.dss.task.MailSenderProcess | grep -v grep | awk '{print $2}'`
if [ -z $MailSenderProcessPID ] ; then
/usr/java/default/bin/java com.youku.rsp.dss.task.MailSenderProcess /opt/app/conf/log4j.properties
else
echo "MailSenderProcess process aleady exists, pid="$MailSenderProcessPID