1. 执行的脚本叫run_script.sh,脚本内容如下
#!/bin/bash
source /opt/xxxx/xxxx.cfg
/opt/venv/bin/python /opt/xx/xxx/xxxx/xxxxxx.py
echo "End!"
2. 我是通过apache common-exec包下的CommandLine(java)执行的
commandline = CommandLine.parse("/bin/bash" + " " + "run_script.sh");
3. 执行后报No such file or directory
4. 脚本很简单,路径也核对过是正确的,但是使用cat命令去查看脚本文件时,发现每行结尾多了一些字符(^M$),如下
[root@xxxx xxxx]# cat -A /users/jalchu/run_script.sh
#!/bin/bash^M$
source /opt/xxxx/xxxx.cfg^M$
/opt/venv/bin/python /opt/xxxx/xxxx/xxxx/xxxx.py^M$
echo "End!"^M$
[root@xxxx xxxx]# cd /users/jalchu/
5. 然后自己从centos重新创建了一个脚本文件,内容自己一行行敲上去,再次使用cat命令查看,发现结尾和上面不一致,如下
[root@xxxx jalchu]# cat -A /users/jalchu/run_script.sh
#!/bin/bash$
source /opt/xxxx/xxxx.cfg$
/opt/venv/bin/python /opt/xxxx/xxxx/xxxx/xxxx.py$
echo "End!"$
[root@xxxx jalchu]# cat --help
6. 此时使用java执行新建的脚本正常
7. 原因:之前的脚本是从windows传输过去的,两边对文件格式的定义不太一样,所以报错了,具体没有细看