java 下载处于挂起状态_即使脚本执行完成,Java也会挂起。
我试图从我的Java代码中执行脚本,看起来像:
Process p = Runtime.getRuntime().exec(cmdarray, envp, dir); // cmdarray is a String array
// consisting details of the script and its arguments
final Thread err = new Thread(...); // Start reading error stream
err.start();
final Thread out = new Thread(...); // Start reading output stream
out.start();
p.waitFor();
// Close resources
脚本的执行结束了(它不再是PID)了,但是Java被卡住了。
waitFor()
过程的方法!.
是的,我在两个单独的线程中读取输出和错误流。是的,它们在末端连接(之后
WAIT()
)
脚本基本上安装了一些RPM(比如10个左右)并对其进行配置。所以脚本运行60秒多一点。
它看起来类似于以下内容:
#!/bin/sh
#exec 3>&1 >/var/log/some_log 2>&1
# If the above line is uncommented, Java recognizes that the
# process is over and terminates fine.
tar xzf a-package-having-rpms.tar.gz
cd unpacked-folder
(sh installer-script.sh) #This installs 10 odd rpms in a subshell and configures them
cd ..
rm -rf unpacked-folder
exit 0
令人震惊的是,如果我把下面的一行放在脚本(顶部),Java就知道脚本已经结束,它完美地终止了这个过程。
exec 3>&1 > /var/log/some_log 2>&1
对于记录,脚本不会生成任何输出。零字符!。因此,将exec语句置于此处毫无意义!
但是,神奇的是,将脚本中的Excel语句放入Java中就可以了!.
为什么??
如何避免脚本中的不合逻辑的exec语句?.
如果您对installer-script.sh的外观感兴趣,那么:
#!/bin/sh
exec 3>&1 >>/var/log/another-log.log 2>&1
INSDIR=$PWD
RPMSDIR=$INSDIR/RPMS
cd $RPMSDIR
#
rpm -i java-3.7.5-1.x86_64.rpm
rpm -i --force perl-3.7.5-1.x86_64.rpm
rpm -i --nodeps mysql-libs-5.0.51a-1.vs.i386.rpm
rpm -i --nodeps mysql-5.0.51a-1.vs.i386.rpm
rpm -i --nodeps mysql-server-5.0.51a-1.vs.i386.rpm
rpm -i --nodeps perl-DBD-MySQL-3.0007-2.el5.i386.rpm
rpm -i --nodeps perl-XML-Parser-2.34-6.1.2.2.1.i386.rpm
.
.
.
现在,为什么Java需要知道第一个脚本中的Excel命令已经结束了?
我怎样才能避开那个主管?,特别是因为第一个脚本不产生任何输出。
屏住呼吸等待答案!
java 下载处于挂起状态_即使脚本执行完成,Java也会挂起。相关推荐
- java下载xlsx文件_【小坑】java下载excel文件
excel文件的导入导出是很常见的功能,这次做了个下载的功能,踩了一些坑,记下来避免以后重复踩-- 1.inputstream序列化问题 Could not write JSON document: ...
- java面试题成都_成都汇智动力-java面试——多线程面试题
原标题:成都汇智动力-java面试--多线程面试题 1.多线程有什么用?发挥多核CPU的优势 防止阻塞 便于建模 2.创建线程的方式继承Thread类 实现Runnable接口 至于哪个好,不用说肯定 ...
- java 删除过期文件_定时脚本: 删除HDFS中的过期文件
1. 基本原理: 通过hadoop fs -ls *命令获取相关文件或目录的修改时间,然后与设定的过期时间进行比较,之后执行删除操作即可 2. 相关代码: #!/bin/bash source ~/. ...
- java 判断是否夏令时_确定指定日期的Java夏令时(DST)是否处于活动状态
我有一个Java类,它占用一个位置的纬度/经度,并在夏时制开启和关闭时返回GMT偏移量.我正在寻找一个简单的方法来确定Java如果当前日期是在夏令时间,所以我可以应用正确的偏移量.目前,我只对美国时区 ...
- java分布式调度框架_基于Redis的分布式Java任务执行和调度框架
Redisson是使用Redis实现分布式任务执行和调度的Java开源项目,它是通过标准JDK的ExecutorService和ScheduledExecutorService API实现的,被提交的 ...
- java是脚本语言吗_从脚本语言到Java
从脚本语言到Java 板桥里人 jdon.com 2002/3 以前我是一直用脚本语言,使用多了,不知不觉一直把数据库设计当作系统设计的主要任务,使用java后,我觉得数据库设计只是一个基础 和前期工 ...
- java护照号码校验_学无止境之小白学java……第001天
学习主题:预科阶段 对应视频: http://www.itbaizhan.cn/course/id/18.html 对应作业: 1. 为什么需要学编程,什么样的人可以做程序员? 编程是现实逻辑的表达, ...
- java azure blob 查询_快速入门:适用于 Java 的 Azure Blob 存储客户端库 v8 | Microsoft Docs...
您现在访问的是微软AZURE全球版技术文档网站,若需要访问由世纪互联运营的MICROSOFT AZURE中国区技术文档网站,请访问 https://docs.azure.cn. 快速入门:使用 Jav ...
- java编译器jdk版本_以编程方式确定Java类的JDK编译版本
java编译器jdk版本 当需要确定使用哪个JDK版本来编译特定的Java .class文件时, 通常使用的方法是使用javap并在javap输出中查找列出的"主要版本". 我在我 ...
最新文章
- html图片滚动红点_HTML中更换或添加网站背景图片的代码怎么写?(示例)
- python字符串转浮点数
- JQuery 实现遮罩层
- JavaScript原生对象常用方法总结
- 纯css 无视宽高设置垂直水平居中
- mysql 动态插入日期_mysql 如何动态传入一个时间得到此时间的某个时间点
- AWS redshift-hdb pg(Greenplum), 内置函数、数据类型、字符集
- opencv Camshift
- 大数据第一季--java基础(day27)-徐培成-专题视频课程
- B站纪录片发布会,发布的不只是纪录片
- 10个团建小游戏备选方案
- Delphi 2005 失望的尝鲜!
- 618年中大促 ,全场6折起!限量周边8件套!
- 领导 - 如何培养您的团队的信心
- Android横向滚动卡片,RecyclerView+CardView实现横向卡片式滑动效果
- CMT2300A 是一款超低功耗,高性能,适用于各种 127 至 1020 MHz 无线应用
- 艾永亮:戴森,你凭什么卖得这么贵?
- C++中tan、atan、sin、cos等三角函数用法的代码演示及结果,注意角度和弧度的转换!
- 洛谷 P2325 王室联邦
- 初学者友好项目 - 使用 CNN 的猫狗分类 ​