ladysosoli
ladysosoli
采纳率95.7%
2018-11-14 02:13

java调用linux语句,第一个脚本的返回结果是第二个脚本的入参,怎样调用

5
已采纳

问题一:
执行多个linux控制台脚本,比如第一个脚本的返回结果是第二个脚本的入参。
比如说我想要先查看进程,然后杀死他,杀死他的时候需要进程号,这个怎样操作?
下面这样?


                    Session session=con.openSession();
            session.execCommand("ps -ef | grep /home/aa/aaa.jar");
            Session sess = con.openSession();
            sess.execCommand("kill -9 正常情况下这是PID");

问题二:
我知道查看进程再杀死他可以用一条语句完成,但是我之后想要在重启进程,然后查看是否重启成功。
这样就要再次查看重启的进程是否有进程号,就要调用之前的查看进程语句。
因此我没办法把他们写成一条语句。
那么问题来了,怎样调用之前的查看进程语句?

问题三:
上述查看进程号的语句ps -ef | grep /home/aa/aaa.jar中文件夹名字:aa和问价aaa.jar
都是写springboot作为参数传递进来的,那么就不能在程序中体现出来,这样在
session.execCommand("ps -ef | grep /home/aa/aaa.jar");
怎样改动?正常情况下网址可以相加“+”,但是在这个语句中我不知道该怎样修改。

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

2条回答

  • ladysosoli ladysosoli 3年前

    session.excCommand每次只能执行一条语句,如果想要执行两条语句,则有两种方法:
    1、执行一条语句后,session。close();先关闭,再打开,不过此方法第二条打开执行的语句在根目录下,两条语句无法连贯。
    2、用session.excCommand(“aaa;bbb”)

    问题三的结局方式:
    String One=“/home/”
    String Two=aa;
    aaa.jar是文件的原文件名,则:String origFileName = file.getOriginalFilename();
    String cmd=One+Two+"/"+origFileName;
    session.excCommand(cmd);

    点赞 评论 复制链接分享
  • liuade 艾德 3年前
    1. InputStream stdOut = new StreamGobbler(session.getStdout());
      String outStr = processStream(stdOut, charset);

    2. 再调一遍不就行了吗?

    3. 字符串相加不行吗?没明白问题在哪?

    点赞 评论 复制链接分享