`

java获取Shell脚本执行信息及Shell脚本中调用java程序

 
阅读更多
1、java获取shell脚本执行信息

/home/oracle/auto_sh/jdk-linux/bin/java -classpath "/home/oracle/Temp_sh/Test_install.jar:/home/oracle/auto_sh/sqljdbc.jar"   com.test.Test 10.9.176.28 /home/oracle/Temp_sh/Test.sh

以上Shell脚本的意思:运行java程序"Test","com.test.Test"后的 IP及shell目录为"Test"类传的两参数。

以下java代码中获取shell脚本执行情况
public int executeSH(String sh)
{
int status = 1;
try {
Process cmd = Runtime.getRuntime().exec(sh);
InputStream in = cmd.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String tmp = null;
while((tmp=br.readLine())!=null)
{
if(tmp.length()>0)
{
System.out.println("== "+this.getCurrentTime()+" "+tmp);
}
if(tmp.equals("ByeBye"))
{
status = 0;
break;
}
}
} catch (IOException e) {
e.printStackTrace();
}
return status;

}

以下为shell脚本
/******************************************************
#! /bin/bash
echo "  ============================================================================="
echo "    *      *      * * * * *   *         * * *      * *     *       *   * * * * "
echo "     *     *     *  *         *        *         *     *   * *   * *   *       "
echo "      *   * *   *   * * * *   *        *         *     *   *  * *  *   * * * * "
echo "       * *   * *    *         *        *         *     *   *   *   *   *       "
echo "        *     *     * * * *   * * * *   * * *      * *     *   *   *   * * * * "
echo "  ============================================================================="
echo "  ============================== AUTO_INSTALL_START============================="
echo
Install_Path="/export/home/oracle/netnumen/TestInstall"
Install_Temp="/export/home/oracle/temp"
Version_IP="$1"
Version_Path="$2"
Pkg_name="$3"
Ftp_uname="$4"
Ftp_passwd="$5"
MainClass="com.test.ums"
function stop_testProc()
{
psid=0
for x in 1 2 3 4 5 7 8 9 10
do
   echo $x;
   javaps=`$Install_Path/ums/jdk-linux/bin/jps -l |grep $MainClass`
   #jps -l 获取java类"MainClass"进程
   #if ["$javaps" != '']; then
   if [ -n "$javaps" ]; then
     psid=`echo $javaps |awk '{print $1}'`
#取得java“MainClass”进程号
     echo $psid
     #su - oracle -c "kill -9 $psid"
     `kill -9 $psid`
     if [ $? -eq 0 ]; then
       echo "[Deleted OK]"
     else
       echo "[Deleted Failed]"
     fi
   else
     echo "[Now no need to kill process]"
     break
   fi
done
}
function silence_setup()
{
#unzip
unzip -o $Install_Temp/$Pkg_name  -d $Install_Temp/ >/export/home/oracle/auto_sh/unzip.log

#copy .properties
rm $Install_Temp/Installer/install/bin/test-silence-setup.properties
cp /export/home/oracle/auto_sh/test-silence-setup.properties $Install_Temp/Installer/install/bin/

#install
$Install_Temp/Installer/install/bin/solaris-test-silence-setup.sh >/export/home/oracle/auto_sh/test-silence-setup.log
        sleep 5
        if grep -qc "succeed" test-silence-setup.log;
#如果在日志中查找到“succeed”
               then echo "test-silence setup complete";
        else
               echo "test-silence setup fail";
               exit 1
        fi 
}
function stautup_testServer()
{
$Install_Path/ums/ums-svr/bin/console-solaris.sh &
for x in 1 2 3 4 5 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
do
sleep 20

p=` netstat -na |grep 64021`
if [ -n "$p" ]; then
        #如果字符串“$p”不为空
echo "############ Test startup test complete #############"
echo "ByeBye"
        sleep 10
echo "############   not  send udp msg complete  #############"
else
echo "!!!!!!!!!!!!!!!  starting  !!!!!!!!!!!!!!"
fi

done

suspend
}

echo "  -------------- [Del Install pkg] --------------"
chmod -R 755 $Install_Temp/Installer
rm $Install_Temp/$Pkg_name
rm -rf $Install_Temp/Installer
sleep 3
echo "  --------- [Del Install pkg complete] ----------"
echo
echo
echo "  -------------- [Get Install pkg] --------------"
ftp -v -n $Version_IP 21 <<EOF
user $Ftp_uname $Ftp_passwd
binary
cd $Test_Path
lcd $Install_Temp
prompt
get $Pkg_name $Test_Temp/$Pkg_name
close
bye
EOF
#ftp下载
echo "  -------- [Get Install pkg complete] -----------"
echo
echo
echo "  --------    [Stop running test]    --------"
#kill test porcess
stop_testProc
echo "  --------  [Stop running test complete] --------"
echo
echo
echo "  --------    [test-silence setup]    --------"
#install test porcess
silence_setup
echo "  --------  [test-silence setup complete] --------"
echo
echo
echo "  --------    [Startup testserver ...]    --------"
#start test server
stautup_testServer
echo
echo
sleep 1
echo "Bye"

/***************************************************************

分享到:
评论

相关推荐

    java调用shell(包含有参数的调用)

    需要注意的是,当我们在Java中调用Shell脚本时,应该妥善处理可能出现的异常情况,例如脚本文件不存在或者无法执行等情况。在上述代码中,异常处理是通过`try-catch`块来实现的,当发生异常时,将会输出错误信息,并...

    java调用shell脚本执行sqlldr与存储过程

    在java代码中调用执行shell脚本,sqlldr导数与使用sqlplus在shell调用执行存储过程。...于是我把oracle的所有环境变量直接复制到shell脚本文件中,在java中调用了一下,然后所有问题迎刃而解! 具体代码参看文件内容

    java调用shell脚本

    在IT行业中,尤其是在服务器管理和自动化任务执行的场景下,经常需要使用编程语言调用操作系统级别的命令,例如Shell脚本。Java作为一种跨平台的编程语言,提供了多种方式来调用Shell脚本,实现与操作系统的交互。...

    shell 脚本调用Java类

    在IT领域,Shell脚本和...总结来说,Shell脚本调用Java类是系统集成和自动化的重要手段。理解如何在Shell环境中正确运行Java程序,以及如何在Shell脚本中控制Java程序的执行,是提高工作效率和系统灵活性的关键技能。

    android系统中调用shell脚本

    在Android系统中,由于安全性和权限的限制,直接调用shell脚本并不像在Linux或Unix环境下那样简单。然而,对于非root用户来说,确实有一些方法可以实现对shell脚本的调用,尤其是在开发和调试过程中。下面我们将深入...

    Java调用Shell脚本代码

    在Java程序中调用Unix/Linux主机上的Shell命令,并返回相应执行结果。

    java调用shell命令.pdf

    在 Java 中调用 Shell 命令是非常常见的操作,特别是在需要执行系统命令或脚本时。在这个例子中,我们将看到如何使用 Java 调用 Shell 命令,并介绍相关的知识点。 Java 调用 Shell 命令的必要性 在实际开发中,...

    java调用Shell脚本.doc

    本文将详细介绍如何在Java中调用Shell脚本,并给出一个完整的示例。 #### 二、Shell脚本简介 Shell脚本是用于Unix/Linux系统的一系列命令的集合,这些命令通常用于自动化任务处理。Shell脚本可以由任何文本编辑器...

    解决Unity不能调用shell脚本传递参数的问题

    在Unity开发过程中,有时我们需要与操作系统进行交互,例如执行shell脚本来处理一些特定的任务。但在实际操作中,可能会遇到Unity无法正确调用shell脚本并传递参数的问题。本文将详细介绍如何解决这一问题,并提供一...

    java 远程调用Shell脚本客户端包

    Java 远程调用Shell脚本客户端包是一个实用的工具,专为开发者设计,使得在Java应用程序中执行远程Shell命令变得简单而高效。这个包的主要功能是通过Java代码发起对远程服务器上的Shell脚本的调用,从而实现跨平台的...

    java调用shell脚本完美封装

    本文将详细介绍如何在Java中完美封装shell脚本的调用方法,并提供相关的测试示例。 1. **Java与Shell脚本的桥梁:Runtime类和ProcessBuilder类** Java提供了两种主要的方式来调用外部程序,包括Shell脚本:`...

    Java程序去调用并执行shell脚本及问题总结(推荐)

    Java程序调用并执行shell脚本及问题总结 Java程序调用并执行shell脚本是Java开发中非常重要的一部分,特别是在文本处理过程中。Java开发的特点是可以很早地进行TDDL,METAQ等等的对接,而脚本开发的特点是可以在...

    Java调用shell脚本

    将Java与Shell脚本结合使用,可以在Java应用程序中执行系统级操作或者调用复杂的命令行流程。下面我们将详细探讨如何在Java中调用shell脚本以及涉及到的相关知识点。 首先,Java调用shell脚本主要通过`Runtime`类或...

    重启java程序shell脚本

    linux中java项目需要重启一般使用先找到进程杀掉进程,然后找到项目启动,整个过程不算复杂,但是每次都操作一遍太麻烦,我这里把这个过程整理成shell脚本,大家可以修改里面项目名称,每次直接执行这个命令重启项目...

    Java 调用 Shell 命令

    在特定的应用场景中,比如完成外币资金的调度工作后,可能需要通过Java程序来生成一个文本文件,并进一步利用Shell脚本来实现文件传输等操作。这涉及到Java与操作系统层面的交互,其中关键的技术点包括:如何使用`...

    java调用shell向DataX传参,带where条件,特殊字符

    在Java中,我们可以使用Runtime或者ProcessBuilder类来执行外部命令,例如Shell脚本。以下是一个简单的示例: ```java public class CommandExe { public static void main(String[] args) { String command = ...

    Shell执行/调用Java/Jar程序例子

    这篇博客“Shell执行/调用Java/Jar程序例子”探讨了如何使用Shell脚本来启动和控制Java应用程序,特别是JAR文件。这里我们将深入讲解相关知识点。 1. **Shell脚本基础** Shell脚本是Linux或Unix操作系统中的命令行...

    使用runtime实现linux命令行或shell脚本多次调用

    在Java编程中,有时我们需要与操作系统进行交互...总的来说,通过`Runtime`类,我们可以方便地在Java程序中执行Linux命令和shell脚本,实现客户端的多次调用。但同时需要注意异常处理和资源管理,以保证程序的健壮性。

Global site tag (gtag.js) - Google Analytics