linux利用crontab定时执行java代码(jar)

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

第一步:准备好java程序

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


第二步:写shell脚本

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

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


在这穿插一点小知识:

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


第三步:添加crontab任务

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


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


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


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

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


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


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


一分钟后:


成功!!!!

过程遇到的问题:

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)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
crontab是一个定时任务管理工具,可以用来定时执行一些命令或脚本。而java -jar则是用来执行Java程序的命令。如果你想要使用crontab定时执行Java程序,可以将java -jar命令写入一个脚本,然后将该脚本添加到crontab任务。但是,在实际使用过程,可能会遇到一些问题,比如你提到的无法执行Java程序的问题。这可能是因为在执行Java程序之前,需要先引入Java环境变量。你可以在脚本添加引入环境变量的命令,例如: ``` #!/bin/bash export JAVA_HOME=/path/to/java/home exportcrontab是一个定时任务管理工具,可以用来定时执行一些命令或脚本。而java -jar则是用来执行Java程序的命令。如果你想要使用crontab定时执行Java程序,可以将java -jar命令写入一个脚本,然后将该脚本添加到crontab任务。但是,在实际使用过程,可能会遇到一些问题,比如你提到的无法执行Java程序的问题。这可能是因为在执行Java程序之前,需要先引入Java环境变量。你可以在脚本添加引入环境变量的命令,例如: ``` #!/bin/bash export JAVA_HOME=/path/to/java/home export PATH=$JAVA_HOME/bin:$PATH java -jar /path/to/your/java/program.jar ``` 其,`/path/to/java/home`是你的Java安装路径,`/path/to/your/java/program.jar`是你要执行Java程序的路径。这样,当crontab执行该脚本时,就会先引入Java环境变量,然后执行Java程序了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值