GVKun编程网logo

java runtime exec 一直执行 按自己的时间停止并获取控制台数据(java中的runtimeexception)

2

对于想了解javaruntimeexec一直执行按自己的时间停止并获取控制台数据的读者,本文将是一篇不可错过的文章,我们将详细介绍java中的runtimeexception,并且为您提供关于andr

对于想了解java runtime exec 一直执行 按自己的时间停止并获取控制台数据的读者,本文将是一篇不可错过的文章,我们将详细介绍java中的runtimeexception,并且为您提供关于android udp 一直执行 GC_CONCURRENT freed、docker - 进入容器报错:OCI runtime exec failed: exec failed: container_linux.go:370: starting container pro、Docker Container 上 Java Runtime Exec 的问题、Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法的有价值信息。

本文目录一览:

java runtime exec 一直执行 按自己的时间停止并获取控制台数据(java中的runtimeexception)

java runtime exec 一直执行 按自己的时间停止并获取控制台数据(java中的runtimeexception)

public class MainTest {
        /**
         * @param args
         */
        public static void main(String[] args) {
                String cmd[] = {"yslow","./20140530145351_2.har"};
                MainTest mt = new MainTest();
                System.out.println(mt.runCommand(cmd));

        }

        public String runCommand(String[] cmd){
                StringBuffer sb = new StringBuffer();
                String result = "";
                try{
                        Process pos = Runtime.getRuntime().exec(cmd);


                        InputStreamReader ir = new InputStreamReader(pos.getInputStream());
                        BufferedReader br=new BufferedReader(ir);
                        String line=null;
                        int temp = 0;
                        while((line=br.readLine())!=null){
                                result = line.trim();
                                break;
                        }
                }catch(Exception ex){result = ex.getMessage();
                        ex.printStackTrace();
                }
                return result;
        }

}

用BufferedReader。。。。。。。。。。。。。。。。。。。。。。。。。

android udp 一直执行 GC_CONCURRENT freed

android udp 一直执行 GC_CONCURRENT freed

android udp 编程,当服务器没有开启的时候APP后台会一直打印 GC_CONCURRENT freed 不知道是什么问题,有没有能解决这个问题的大神啊,出来指导一下吧。

docker - 进入容器报错:OCI runtime exec failed: exec failed: container_linux.go:370: starting container pro

docker - 进入容器报错:OCI runtime exec failed: exec failed: container_linux.go:370: starting container pro

使用 docker exec -it Nginx /bin/bash  提示错误

OCI runtime exec Failed: exec Failed: container_linux.go:370: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unkNown

 

解决办法:

docker exec -it Nginx /bin/sh

Docker Container 上 Java Runtime Exec 的问题

Docker Container 上 Java Runtime Exec 的问题

如何解决Docker Container 上 Java Runtime Exec 的问题

我正在尝试使用 GDAL 包(用于 ogr2ogr 命令)对 Java 应用程序进行 dockerize。

我的 Dockerfile 是:

  1. FROM openjdk:10
  2. ARG JAR_FILE=target/*.jar
  3. copY ${JAR_FILE} app.jar
  4. RUN apt-get update
  5. RUN apt-get -y install python3-gdal
  6. RUN apt-get -y install libgdal28
  7. RUN apt-get -y install libgdal-perl-doc
  8. RUN apt-get -y install libgdal-perl
  9. RUN apt-get -y install libgdal-dev
  10. RUN apt-get -y install gdal-data
  11. RUN apt-get -y install gdal-bin
  12. CMD ["java","-jar","/app.jar"]

在容器上运行的 Java 代码中有一个片段:

  1. String command = "ogrinfo PG:\\"host=host.docker.internal user=postgres dbname=test password=postgres\\"";
  2. Process process = Runtime.getRuntime().exec(command);

然后,输出为:

  1. Unable to open datasource `PG:"host=host.docker.internal'' with the following drivers.

但是,当我尝试直接从 bash 在容器上运行命令时,它成功了:

  1. root@7b5fb10431cf:/# ogrinfo PG:"host=host.docker.internal user=postgres dbname=test password=postgres"
  2. INFO: Open of `PG:host=host.docker.internal user=postgres dbname=test password=postgres''
  3. using driver `Postgresql'' successful.

为什么会存在这样的差异?

解决方法

连接String的语法很重要PostgreSQL / PostGIS,可能问题出在Process实例Java Runtime.exec上。 PG 命令的运行方式必须与您直接在容器中运行的方式相同,这应该适合您:

  1. String connection = "\\"host=host.docker.internal user=postgres dbname=test password=postgres\\"" ;
  2. String[] commands = {"bash","ogrinfo","PG:"+connection};
  3. Process process = Runtime.getRuntime().exec(commands);
,

基于@Hajed.Kh 的回答,我尝试了这个并且它有效:

  1. String[] commands = {
  2. "/bin/sh","-c",command
  3. };

Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法

Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法

详细信息

[root@centOS7 ~]# docker exec -it 3cae7605916d /bin/bash
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "/bin/bash": stat /bin/bash: no such file or directory: unknown

老规矩:先上答案 把脚本类型 /bin/bash,尝试换为 /bin/sh 试一下,如果你想对两种shell的区别有深入了解,点击这里。

注意:

如果你在Dockerfile中引用了自定义脚本,比如:entrypoint: ./entrypoint.sh,如果没有单独给该脚本通过chmod +x ./entrypoint.sh 添加执行权限,也可能会报这个错误。

前言

在docker学习中,大部分容器进入的脚本都是/bin/bash,比如tomcat,所以不假思索的认为其他容器进入方式的脚本类型也是/bin/bash,然而这是一个误区。

解析步骤 

1.首先,了解一些脚本的类型

[root@centOS7 ~]cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/bin/tcsh
/bin/csh
[root@centOS7 ~]# 

本机脚本解释器类型有4种。最常见的是前两种 (usr)/bin/sh和(usr)/bin/bash,还有一些不是很常见的脚本类型:ash、ksh、csh、zsh等,不同的shell都有自己的特点以及用途。

2.进入Tomcat容器内部,查Tomcat启动脚本解释器类型

docker exec -it tomcat /bin/bash
ls 
cd bin && ls
cat cat startup.sh

 不难发现,它的启动脚本解释器类型是/usr/bin/bash

3.进入Nginx容器内部,查Nginx启动脚本解释器类型

exit #退出tomcat容器
docker ps #查看正在运行的容器列表
docker exec -it 3cae7605916d /bin/sh  #进入nginx容器
cd /etc/init.d && ls
cat nginx  #并不是想要/bin/sh结果

发现,首行并不是想要的结果/bin/bash,不放弃继续找 

find / -name nginx -type f   #仅查找nginx启动文件
find / -name nginx #过滤出目录下所有的nginx

最后的最后,怎么找nginx的启动脚本,期望能找到首行的解释器是/bin/sh,但是事与愿违,不是乱码就是/sbin/openrc-run。

总结

经过各种求教,得到的答案,nginx:alpine精简版,在做镜像的时候,只装了sh,没有装bash,所以用不了bash。shell类型有很多种,但是sh类型的shell是最基础的,所以大部分镜像都支持。这就不难理解为什么docker exec -it  可以使用 /bin/sh进入镜像内部了。

docker exec使用小技巧:后面的/bin/或者/usr/bin/可以省略掉,直接写sh 或者 bash。

到此这篇关于Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process解决的文章就介绍到这了,更多相关Docker报错:OCI runtime exec failed内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!

今天关于java runtime exec 一直执行 按自己的时间停止并获取控制台数据java中的runtimeexception的讲解已经结束,谢谢您的阅读,如果想了解更多关于android udp 一直执行 GC_CONCURRENT freed、docker - 进入容器报错:OCI runtime exec failed: exec failed: container_linux.go:370: starting container pro、Docker Container 上 Java Runtime Exec 的问题、Docker报错:OCI runtime exec failed: exec failed: container_linux.go:380: starting container process的解决方法的相关知识,请在本站搜索。

本文标签: