Ubuntu使用crontab定时任务网上有很多教程,现在记录下我遇到的一些问题,需要注意的地方:
1、定时任务的日志存放路径
网上的说法:cron的日志存放在 /var/log/cron 里面。
可是我这个系统它并没有这个文件,它实际的日志路径是 /var/log/syslog中。
使用tail -f syslog命令查看。
2、定时执行的jar包不能是窗口界面
测试的时,使用Cron定时任务执行一个jar包,怎么都执行不了。
最后发现,并非步骤出错了,而是执行的jar包的问题。
正常情况下执行这个jar包,会弹出一个JFrame窗口。但是如果放到定时服务里的话,它就不会弹出窗口。这让我一直误以为没有执行定时任务,走了很大的弯路。直到后来找到了定时任务的日志。
按照逻辑想,定时服务放在服务器上,弹出窗口也没人看啊。
3、定时执行的任务使用管道输出信息
后来改成了一个很简单的jar包,它只是打印一下当前日期。其实这个输出也同上面的窗口弹出一样,没有地方可以输出的,它是不会输出到控制台里。
所以这时候应当使用管道,指定输出到某个日志里边。下面的例子是每分钟执行一次,将打印输出到time.log中:
*/1 * * * * java -jar /home/jiashubing/middleware/hello.jar>> /home/jiashubing/middleware/time.log
4、使用crontab -e修改完以后,并不需要重启服务(sudo service cron restart)
因为定时任务本来就是,一个监听的程序,网上的教程却都是要重启。