关于java执行sh文件的问题

liuzuowei007 2011-09-16 02:26:29
我现在的做法是将所有命令写入shell文件
大概有700个命令
然后用java执行shell文件的时候
执行了400条之后就卡住不动了

请问这是什么问题呢。。
这个sh文件在命令行直接执行就没问题
卡住不动的那条直接在命令行执行也没问题
问问各位大大 这其中涉及到什么执行超时的概念吗

小弟在这感谢各位了
...全文
767 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuzuowei007 2012-03-02
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 aluo412 的回复:]
大哥们,这个问题是怎么解决的,我也遇到了类似的问题。
[/Quote]
最后还是决定不执行那么多了
设置一个定时shell不断扫描一个文件 如果文件里是0就不执行
如果是1就执行之前的文件
java程序写文件 将文件里的0改成1 执行完再将文件置为0
aluo412 2012-02-23
  • 打赏
  • 举报
回复
大哥们,这个问题是怎么解决的,我也遇到了类似的问题。
liuzuowei007 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shuwei003 的回复:]
类 Process
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)操作都将通过三个流 (getOutputStream()、getInputStream()……
[/Quote]

[Quote=引用 10 楼 jc8futao 的回复:]
输出流没有flush被塞满了?这个可能性比较大
[/Quote]


我加了下面的代码,还是不行

OutputStream ps = p.getOutputStream();
ps.flush();
liuzuowei007 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 shuwei003 的回复:]
类 Process
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)操作都将通过三个流 (getOutputStream()、getInputStream()……
[/Quote]
我试试
jc8futao 2011-09-16
  • 打赏
  • 举报
回复
输出流没有flush被塞满了?这个可能性比较大
shuwei003 2011-09-16
  • 打赏
  • 举报
回复
类 Process
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)操作都将通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。
不知道是否和这个有关
liuzuowei007 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 hxysjm520 的回复:]
那就是一起执行的问题了,内存耗光了?
[/Quote]

对啊 所以我问问一起执行的时候涉及什么超时的事么
内存肯定没耗光啊 我每次执行都到那卡住。。。
我要崩溃了。。。
hxysjm520 2011-09-16
  • 打赏
  • 举报
回复
那就是一起执行的问题了,内存耗光了?
liuzuowei007 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 shuwei003 的回复:]
那说明不是shell命令的问题,试试获取这个Process的错误流,看看报什么错误。
[/Quote]
打印过了。。没有错。。
都是命令执行完的控制台打印信息。。
这条命令跟其他能正常执行的命令完全一样 也完全没问题
可是一起执行的时候执行到这就卡着不动了
shuwei003 2011-09-16
  • 打赏
  • 举报
回复
那说明不是shell命令的问题,试试获取这个Process的错误流,看看报什么错误。
liuzuowei007 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 shuwei003 的回复:]
是不是环境变量不同呢?建议你试验下shell文件里只写那个有问题的shell,然后用java执行下试试。
[/Quote]
试了。。没问题。。
shuwei003 2011-09-16
  • 打赏
  • 举报
回复
是不是环境变量不同呢?建议你试验下shell文件里只写那个有问题的shell,然后用java执行下试试。
liuzuowei007 2011-09-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 yangting_lisa 的回复:]
估计是遇到耗时的操作了。。。
[/Quote]

就是文件里要执行的命令有点多
这个耗时的操作系统会在一段时间后停止它的执行吗?
小笨熊 2011-09-16
  • 打赏
  • 举报
回复
估计是遇到耗时的操作了。。。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧