linux用crontab运行sh和jar包遇到的问题

2023-05-16

1、无论是sh文件还会jar包一定需要给出绝对路径,我本来以为在它们所在的文件夹下设置crontab就可以不用设置绝对路径了,但是不可以!一定一定要写绝对路径!(可以用pwd命令查看绝对路径)除此之外还有一种办法是在命令里:cd 绝对路径 && 运行的命令

如我每一分钟执行一个叫/library.sh文件(它在 /root/文档/嵌入式/课设中),并将其输出内容定向输入到iii.txt中

* /1 * * * * cd /root/文档/嵌入式/课设&& sh library.sh >>iii.txt

注意在这时,你的sh文件不一定能运行成功,因为crontab找不到sh命令,于是有了第二点

2、编辑crontab设置任务时,直接运行sh命令和java -jar命令是不会被识别的,一定在使用时要带上它们的环境变量,sh命令要写成/bin/bash sh (绝对路径)/xxx.sh或者在xxx.sh文件的“#!/bin/bash”后一行写上“source /etc/profile”;对于jar包,则先用which java找到java执行路径,然后再运行jar包。

对于上述的例子有两种方法:

方法一:在library.sh中导入环境变量:source /etc/profile

 

* /1 * * * * cd /root/文档/嵌入式/课设&& sh library.sh >>iii.txt

方法二:在sh前面加入其环境变量

* /1 * * * * cd /root/文档/嵌入式/课设&& /bin/bash/sh library.sh >>iii.txt

如果我运行一个jar包,我的路径如下:

我在crontab -e里面编辑运行我的jar包时,设置为:

*/1 * * * * cd /root/文档/嵌入式/课设&&/opt/jdk1.8.0_311/bin/java -jar libraryTest.jar 1730 >>ooo.txt

表示我在每一分钟都会切到/root/文档/嵌入式/课设这个文件夹中,/opt/jdk1.8.0_311/bin/java是我的java的执行路径,libraryTest.jar是我要执行的jar包,它在/root/文档/嵌入式/课设这个文件夹中,1730是我后面的jar包的命令行参数,>>ooo.txt是把我运行jar包产生的输出信息全部放在一个叫ooo.txt的文件中。

 3、crontab设置的任务里有在屏幕上打印信息时,它不会真的在屏幕上打印,因此你需要设置把这些打印信息都定向输入到一个文件里。

4、可以通过tail -f /var/log/cron.log观察crontab究竟是运行了但是任务失败了,还是根本没有运行。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux用crontab运行sh和jar包遇到的问题 的相关文章

随机推荐