日期:2014-05-20  浏览次数:20690 次

关于java执行sh文件的问题
我现在的做法是将所有命令写入shell文件
大概有700个命令
然后用java执行shell文件的时候
执行了400条之后就卡住不动了

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

小弟在这感谢各位了

------解决方案--------------------
估计是遇到耗时的操作了。。。
------解决方案--------------------
是不是环境变量不同呢?建议你试验下shell文件里只写那个有问题的shell,然后用java执行下试试。
------解决方案--------------------
那说明不是shell命令的问题,试试获取这个Process的错误流,看看报什么错误。
------解决方案--------------------
那就是一起执行的问题了,内存耗光了?
------解决方案--------------------
类 Process
创建进程的方法可能无法针对某些本机平台上的特定进程很好地工作,比如,本机窗口进程,守护进程,Microsoft Windows 上的 Win16/DOS 进程,或者 shell 脚本。创建的子进程没有自己的终端或控制台。它的所有标准 io(即 stdin、stdout 和 stderr)操作都将通过三个流 (getOutputStream()、getInputStream() 和 getErrorStream()) 重定向到父进程。父进程使用这些流来提供到子进程的输入和获得从子进程的输出。因为有些本机平台仅针对标准输入和输出流提供有限的缓冲区大小,如果读写子进程的输出流或输入流迅速出现失败,则可能导致子进程阻塞,甚至产生死锁。 
不知道是否和这个有关
------解决方案--------------------
输出流没有flush被塞满了?这个可能性比较大