1. 程式人生 > >perl 呼叫 shell 檔案 防止出問題,最好寫絕對路徑

perl 呼叫 shell 檔案 防止出問題,最好寫絕對路徑

perl 指令碼:               

                          print ">>>>>>>>-into shell->>>>>>>>\n";

  eval{
     my $args = "$host:$port:$dbname:$username:$password:$command";
   system("sh  /wls/oracle/opr2_new_mon/lib/PerlShellJava.sh  '$args'") or die "PerlShellJava.sh exec error";
};
                            if ($@ ne ''){
                                 print $@;
                            }

                            print ">>>>>>>>-out shell into file->>>>>>>>\n";

PerlShellJava.sh 指令碼:



#!/bin/bash
cd /wls/oracle/opr2_new_mon/lib
Channel=$1
BatchSize=80000
export CLASSPATH=/wls/oracle/jdk1.7.0_79/lib/dt.jar:/wls/oracle/jdk1.7.0_79/lib/tools.jar:/wls/oracle/jdk1.7.0_79/jre/lib/rt.jar:/wls/oracle/app/oracle/product/11.2.0/client_1/lib:/usr/X11R6/lib:/usr/lib:/wls/oracle/app/oracle/product/11.2.0/client_1/network/lib:/wls/oracle/TimesTen/tt1122/lib/ttjdbc5.jar:/wls/oracle/TimesTen/tt1122/lib/orai18n.jar:/wls/oracle/TimesTen/tt1122/lib/timestenjmsxla.jar:/wls/oracle/TimesTen/tt1122/3rdparty/jms1.1/lib/jms.jar:/wls/oracle/opr2_new_mon/lib/lib/commons-logging-1.1.3.jar:/wls/oracle/opr2_new_mon/lib/lib/curator-client-2.6.0.jar:/wls/oracle/opr2_new_mon/lib/lib/curator-framework-2.6.0.jar:/wls/oracle/opr2_new_mon/lib/lib/curator-recipes-2.6.0.jar:/wls/oracle/opr2_new_mon/lib/lib/hadoop-common-2.6.0-cdh5.4.2.jar:/wls/oracle/opr2_new_mon/lib/lib/hive-exec-0.13.1.jar:/wls/oracle/opr2_new_mon/lib/lib/hive-jdbc-0.13.1.jar:/wls/oracle/opr2_new_mon/lib/lib/hive-metastore-0.13.1.jar:/wls/oracle/opr2_new_mon/lib/lib/hive-service-0.13.1.jar:/wls/oracle/opr2_new_mon/lib/lib/httpclient-4.2.5.jar:/wls/oracle/opr2_new_mon/lib/lib/httpcore-4.2.5.jar:/wls/oracle/opr2_new_mon/lib/lib/libthrift-0.9.0.jar:/wls/oracle/opr2_new_mon/lib/lib/slf4j-api-1.7.5.jar:/wls/oracle/opr2_new_mon/lib/lib/zookeeper-3.4.6.jar::.
export JAVA_HOME=/wls/oracle/jdk1.7.0_79
export JAVA_CMD=$JAVA_HOME/bin/java
export JAVA_MAIN=HiveJavaProbe
#EXEC_CMD="$JAVA_CMD -Xmx6000m -classpath $CLASSPATH $JAVA_MAIN $Channel"
$JAVA_CMD -Xmx6000m -classpath $CLASSPATH $JAVA_MAIN "$Channel"
echo "123"

注意 執行過程中 可能會遇到 not  find xxx file or is a dictory 什麼的,肯定是目錄出了問題,我就是被目錄搞傻了,都寫絕對路徑