我在深入研究这个错误时遇到了一些困难,在我的设置中似乎找不到任何与这个问题相关的东西。我确实找到了一些关于错误的文章,但经过研究,它们不适用于我的设置。
事情是这样的。。。我只指出了在IBMAIX7.1上会发生这种情况,以防有任何特定于aix的东西我应该看一下,但我可以想象这种错误也可能发生在linux机器上。
目标是:
运行命令,将命令通过管道发送到kafka-console-producer.sh,然后发送到特定的kafka主题,例如:
ps -ef | /kafka/bin/kafka-console-producer.sh --broker-list <IP>:9092 --topic running_processes
上面的命令获取“ps-ef”的输出并将其发送到我的主题(运行\进程)。如果我在通过shell登录到系统时运行它,那么它工作得非常好,没有任何问题。
但是,如果我在每5分钟运行一次的crontab条目中执行与脚本完全相同的操作,如下所示:
0,5,10,15,20,25,30,35,40,45,50,55 <path of script> >> <path of log> 2>&1
这是我在日志文件中得到的:
...
Exception in thread "main" java.lang.UnsupportedClassVersionError: JVMCFRE003 bad major version; class=org/apache/kafka/clients/producer/Callback, offset=6
...
我的第一个猜测是没有为crontab的上下文设置java\u home环境变量,因此我在脚本中手动添加了该环境变量,以确保保存java\u home。
另外,我还查看了kafka/bin/kafka-run-class.sh文件,并查看了其他可能的变量,因为毕竟kafka-console-producer.sh确实引用了该文件。例如,我手动将该文件中引用的java\u major\u版本也设置为脚本的一部分。
还是不走运。同样,让我绞尽脑汁的是,作为一个登录shell的普通用户,如果我运行这个脚本,它就会工作。它只在使用crontab以一定的间隔调度脚本时才起作用。
所有东西都指向crontab上下文中不可用的某个环境变量,但我搞不清楚。
有什么想法吗?
1条答案
按热度按时间euoag5mw1#
正如@lorinczyzsigmond所说,在设置java\u home之后,然后path(export path=“$java\u home/bin:$path”起作用。谢谢您!