这是在上一篇博客 上新增的功能,这次在linux自动执行文件转移和删除。废话不多说,直接上代码边分析:

第一步:准备好java程序

这里不啰嗦,可看上一篇代码。保存好jar,我这是用Xftp来操作。新增一个文件夹用来放jar:

java 定时task 循环 java定时执行代码_jar


第二步:写shell脚本

第一次接触这个crontab弄了大半天,下面会详说新手面临的问题

首先,新建一个.sh后缀的文件,我是在本地用Notepad建的注意保存时的编码格式(linux对应utf-8),百度很多种写法。我给大家看看我的:

java 定时task 循环 java定时执行代码_java 定时task 循环_02


在这穿插一点小知识:

如何配置jdk环境变量,网上很多例如https://jingyan.baidu.com/article/1612d500a71b8fe20e1eee26.html,安装我不讲了,讲下配置吧。命令:vi /etc/profile(有Xftp就直接找到后编辑,要去root下编辑不然没权限 su下)配置好自己检查下,echo $JAVA_HOME看看有没有出来。

java 定时task 循环 java定时执行代码_linux_03


第三步:添加crontab任务

这步等你熟练后就超级简单,就是给系统添加一个定时执行的任务,但第一次配置有点一脸懵逼。首先crontab -e编辑下:

java 定时task 循环 java定时执行代码_jar_04


第一次弄的小伙伴下面可能会出现"no crontab for root - using an empty one",我弄了好久但现在告诉你忽视它啦,你第一次弄定时任务里肯定是空啦,我这个自动就到vi界面,你可以按i进行编辑,我就只是执行这个shell脚本,意思是每个一分钟执行一次(按需修改)。*/1****/后边跟你.sh的路径,编辑后Esc :wq保存。

java 定时task 循环 java定时执行代码_linux_05


注意,crond服务是linux的内置服务,但它不会开机自动启动,所以你要启动,如果你想开机启动百度下超简单我这不需要就没弄,手动启动crond命令 service crond start,如果出现版本问题显示redirecting to。。。,你就直接进这个路径如下:ok啦。

java 定时task 循环 java定时执行代码_linux_06


第四步:查看任务和代码运行结果

首先先看脚本加进crontab里了没:crontab -l

java 定时task 循环 java定时执行代码_jar_07


查看定时器日志:一分钟执行一次并打印出来

java 定时task 循环 java定时执行代码_java 定时task 循环_08


看实际文件夹效果:(截图时已经54分了忽略)

java 定时task 循环 java定时执行代码_jar_09


一分钟后:

java 定时task 循环 java定时执行代码_jar_10


成功!!!!

过程遇到的问题:

1.shell配置环境变量问题,这个问题是超多人卡住的点。对清楚路径,核实好代码正确性

2.添加到crontab任务中但不执行,先考虑是否开启crond服务,看看环境变量问题,最后手动执行shell脚本,我刚开始就是手动执行可以,但定时任务不执行,我排除了环境变量问题和代码问题后狂百度,百度说在crontab -e时编辑,在路径前要加/bin/sh/是不可以的,后来查看日志后原来根本就没这路径,你放哪就写哪就好。

 

Linux中 java -jar 命令后台运行

[root@centos56 www]# nohup java -jar cdfa_etl.jar > log.txt 2>&1 &


上面的2和1 的意思如下:
0    标准输入(一般是键盘)
1    标准输出(一般是显示屏,是用户终端控制台)
2    标准错误(错误信息输出)

将运行的jar 错误日志信息输出到log.file文件中,然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。