Linux定时执行java程序
cron是Linux系统下一个自动执行指定任务的程序。用户可以通过crontab命令来设置自己的定时任务。Linux定时执行java程序,需要将java程序打包为jar包,下面介绍一下idea环境下打包maven下普通的java程序(idea创建maven的普通java程序看 之前的文章)
创建目录如下
(1)打包过程
项目右击--》open moudle settings
选择Artifacts,如下
META-INF/MANIFEST.MF注意要选择项目的根目录,否则等下在Linux下运行jar包会找不到入口类
结果如下
完成以上配置,开始打包
可以看到在该目录下找到了打包完的jar包
(2)Linux中定时运行jar包
创建test1目录,并将打包好的jar包拉到该目录下
/usr/local/jdk1.7.0_71/bin/ 为jdk在Linux系统中的位置 /test1/存放着jar包和auto.sh脚本
#!/bin/bash
cd /test1/
/usr/local/jdk1.7.0_71/bin/java -jar test.jar
为auto.sh脚本设置文件权限,否则其不能执行
crontab命令设置定时任务
通过crontab -e 进入crontab模式设置定时任务
进入后在最后一行编辑
# */1 * * * *表示每分钟执行一次
#/test1/auto.sh 为脚本的绝对路径
*/1 * * * * /test1/auto.sh
Ctrl+x进入下一页
按y继续
Ctrl+t进入下一页,选中红框保存
查看定时任务是否保存成功
重启cron服务
删除当前用户设置的所有定时任务
查看结果,java程序中我实现的是向redis的list集合中push当前的时间戳,可以看到实验成功
步骤:
1.首先将程序打个jar包,通过命令上传到linux服务器上的制定目录下;
rz -y
2.创建脚本并编辑
touch auto.sh
vi auto.sh
#!/bin/bash
java -jar /home/app/airquality/Download_Airquality.jar > /home/app/airquality/air.log &
注意:需要全路径,否则不会执行。
3.查看定时任务,并创建
crontab -l -----查看
crontab -uroot -e 或者 crontab -e ----编辑定时任务
按i进入到编辑页面,同样也需要全路径。
28 14 * * * ./etc/profile;/home/app/airquality/auto.sh
### ./etc/profile; ---可不加?
编辑完成后,按esc,然后 :wq 保存。
4.重启查看定时任务状态
service crond restart
service crond status
如遇到定时任务没有执行,可以去查看日志:
cd /var/spool/mail 或 /var/log/cron ?
cat root
crontab文件格式:
* * * * * command
分 时 天 月 星期 命令
*/5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本