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 传输过去的,两边对文件格式的定义不太一样,所以报错了,具体没有细看
参考:https://www.cnblogs.com/zijin/p/3501912.html