写了一个简单的VPN的程序,需求是获取登录用户的ip地址,然后通过添加IPtables规则,达到放行的功能,一切准备就绪了,同时,通过手动执行脚本文件,已经可以实现添加规则了。
然而让我万万没想到的时,为了方便以后的使用,我选择使用crontab定时任务来,每隔一段时间,执行一次脚本。本来一切的都好好的,结果部署完成以后,我发现最终的结果,和我预期的想法不一样,因为他 -----没有执行java程序!!!

what??我惊呆了。手动可以执行,为什么定时无法执行,难到是我代码写错了?可是,明明是可以执行的啊,难到是脚本没有执行吗?可是经过在脚本中添加其他命令,发现是可以执行的,但是当命令,涉及到java文件的执行结果的时候,都是无法成功的。也就是说错误出在了jar的执行。经过检查,java代码没有写错,执行路径也没有写错。在网上查了很多资料,然后,发现执行jar包之前,要先引入环境变量:
引入之前:
java -jar /bbb/vpnTest.jar
引入环境变量之后:
source /etc/profile
java -jar /bbb/vpnTest.jar
然后执行,就没有问题了。
博客讲述了作者在开发一个简单的VPN程序时遇到的问题,该程序需要通过crontab定时任务执行Java jar包。作者发现手动执行脚本可以成功,但在crontab中执行时,Java程序部分不工作。问题在于crontab环境中未设置Java环境变量。解决方案是先执行`source /etc/profile`引入环境变量,然后再运行Java jar命令,问题得到解决。
1154

被折叠的 条评论
为什么被折叠?



