Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Gitlab CI的同一Linux设备上与另一个Java应用程序并行运行python脚本?_Python_Python 3.x_Git_Gitlab - Fatal编程技术网

如何在Gitlab CI的同一Linux设备上与另一个Java应用程序并行运行python脚本?

如何在Gitlab CI的同一Linux设备上与另一个Java应用程序并行运行python脚本?,python,python-3.x,git,gitlab,Python,Python 3.x,Git,Gitlab,对于一个gitlab CI runner 我有一个jar文件,它需要在Git linux框中持续运行,但由于这是一个持续运行的应用程序,因此下一行中的python脚本无法执行。如何运行jar应用程序,然后一个接一个地同时执行python脚本 .gitlab.ci-yml文件: sh文件的代码为java-jarapp.jar 由于此应用程序正在持续运行,因此不会执行第四行代码python3 Report.py 如何使这两个脚本在不停止.jar应用程序的情况下同时运行?要逐个运行这两个脚本,可以将&

对于一个gitlab CI runner 我有一个jar文件,它需要在Git linux框中持续运行,但由于这是一个持续运行的应用程序,因此下一行中的python脚本无法执行。如何运行jar应用程序,然后一个接一个地同时执行python脚本

.gitlab.ci-yml文件:

sh文件的代码为java-jarapp.jar

由于此应用程序正在持续运行,因此不会执行第四行代码python3 Report.py


如何使这两个脚本在不停止.jar应用程序的情况下同时运行?

要逐个运行这两个脚本,可以将&添加到阻塞行的末尾。这将使它在后台运行

或者
bash scan.sh&或add&到scan.sh中调用jar文件的行的末尾

立即的解决方案可能是:

pwd && ls -l
echo "ls OK"
unzip ZAP_2.8.0_Core.zip && ls -l
echo "unzip + ls OK"
bash scan.sh &
scanpid=$!
echo "started scanpid with pid $scanpid"]
ps axuf | grep $scanpid || true
echo "ps + grep OK"
( python3 Report.py ; echo $? > report_status.txt ) || true 
echo "report script OK"
kill $scanpid
echo "kill OK"
echo "REPORT STATUS = $(cat report_status.txt)"
test $(cat report_status.txt) -eq 0


在后台启动java进程, 运行python代码,记住其返回状态并始终返回true。 在运行python后终止后台进程 检查python脚本的状态代码

也许这是不必要的,因为我从未检查过gitlabci如何处理后台进程,这些进程是由它的运行者产生的

我在这里采取保守的做法。 -我记得bash脚本的进程id,以便以后可以终止它 -我确保运行python脚本的行始终返回0退出代码,这样gitlabci不会停止执行下一行,但我记得状态代码 -然后我杀死了bash脚本 -然后检查python脚本的退出代码是否为0,这样gitlabci就可以正确地检查运行程序是否成功执行

另一个与你的问题无关的小评论

我真的不明白你为什么写信

unzip ZAP_2.8.0_Core.zip && ls -l
而不是

unzip ZAP_2.8.0_Core.zip ; ls -l```
如果您希望解压命令失败,您可以直接编写

unzip ZAP_2.8.0_Core.zip
ls -l
gitlabci将在执行ls-l之前自动中止


为了更好地进行调试和错误分析,我还添加了许多echo语句,您可以在最终的解决方案中删除它们。

第一步:找出像BASH或posixshell这样的shell所使用的编程语言。然后,了解如何在那里并行运行。如果从问题中删除git、gitlab、Python和Java,只需要并行运行两个进程。这将使你的问题更简洁、更小,并为你提供更好的在线搜索基础!作为这里的新用户,请使用,阅读并理解!我会尽量简明扼要。谢谢:我试过了,但是只有应用程序在运行,python脚本没有被执行。应用程序正在运行,但是python脚本没有被执行。因此,没有关闭的范围。您是否可以每隔一行添加一条回显行,并报告您在报告gitlab ci runner时得到的结果。正在执行的最后一行是什么?添加了一些用于调试的echo语句。在我的答案中添加了所有行之后,请发布gitlabci运行程序的eact输出。这有望提供足够的信息来定位问题或至少是第一个问题
unzip ZAP_2.8.0_Core.zip
ls -l