无法从Java执行Python脚本

无法从Java执行Python脚本,java,python-3.x,bash,shell,Java,Python 3.x,Bash,Shell,我正在尝试使用下面的代码从Java执行python脚本 File file = new File(classLoader.getResource("api.py").getFile()); String fileName = file.getAbsolutePath(); logger.info("Test1Application - "+fileName); File file2 = new File(classLoader.g

我正在尝试使用下面的代码从Java执行python脚本

        File file = new File(classLoader.getResource("api.py").getFile());
        String fileName = file.getAbsolutePath();
        logger.info("Test1Application - "+fileName);

        File file2 = new File(classLoader.getResource("init.py").getFile());
        String initFileName = file2.getAbsolutePath();
        logger.info("Test1Application - "+initFileName);

        String[] cmd = {
                "/bin/bash",
                "-c",
                "./"+initFileName
        };
        p = Runtime.getRuntime().exec(cmd);
下面是两个python脚本和shell脚本(1st api.py):

第二个脚本(init.py):

Perm.sh

#!/bin/sh

echo "perm start"
chmod 777 *.*
nohup python3 api.py
echo "perm end"
每当我从Java调用第一个脚本(api.py)时,它都可以完全正常工作,并且api在本地主机上公开。但是如果我使用同一个程序中的第二个脚本,它不会被执行,甚至日志文件也不会被创建

我不确定,在第二种情况下,我在这里遗漏了什么或做错了什么,如果有任何帮助,我们将不胜感激


注意:在本地运行之前,代码可能需要一些格式,因为我需要调整选项卡以显示在这里的代码块中。

您确定需要运行/bin/bash-c'script.py'吗?为什么不使用python3 script.py呢?cmd只适用于第一个脚本,即使我像这样使用它
String cmd=“python3”+initFileName无法使用此格式运行第二个脚本。
import subprocess
import os
from datetime import datetime
import logging

# Create and configure logger
logging.basicConfig(filename="pythonExecution.log",
                format='%(asctime)s %(message)s',
                filemode='w')

# Creating an object
logger = logging.getLogger()

# Setting the threshold of logger to DEBUG
logger.setLevel(logging.INFO)


logger.info("Inside init.....")
logger.info(datetime.now())
os.chmod("perm.sh", 0o775)
subprocess.call('./perm.sh')
#subprocess.call('./run_cmd.sh')
logger.info("End of init script")
#!/bin/sh

echo "perm start"
chmod 777 *.*
nohup python3 api.py
echo "perm end"