Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
同时在终端中执行多个while-true java程序_Java_Bash_Shell_Terminal - Fatal编程技术网

同时在终端中执行多个while-true java程序

同时在终端中执行多个while-true java程序,java,bash,shell,terminal,Java,Bash,Shell,Terminal,我有一个大问题,我想执行这样一个java程序,我想同时处理100个文件并输入文件号作为参数 public class infiniteloop { public static void main(String[] argv){ while(true){ // set the texfile name with argv[0] // waiting for start //read and process a text

我有一个大问题,我想执行这样一个java程序,我想同时处理100个文件并输入文件号作为参数

public class infiniteloop {
  public static void main(String[] argv){
     while(true){
         // set the texfile name with argv[0]
         // waiting for start 
         //read and process a text
     }
  }
}
我试着用这段代码,但当我试着运行它时,你会被第一个程序的执行卡住

#!bin/bash
java -c .:somejar.jar infiniteloop 100001
java -c .:somejar.jar infiniteloop 100002
.
.
.
永远不会运行第二个命令,可能会创建终端的新实例?新建选项卡并在新选项卡中执行每个选项卡?,工作将在具有ssh的远程服务器中进行。

在第一行末尾添加一个“&”

java -c .:somejar.jar infiniteloop 100001 &
java -c .:somejar.jar infiniteloop 100002
它将使它在后台运行,因此它将继续运行第二个命令。

在第一行末尾添加一个“&”

java -c .:somejar.jar infiniteloop 100001 &
java -c .:somejar.jar infiniteloop 100002

它将使其在后台运行,因此它将继续运行第二个命令。

在每个命令的末尾添加一个
&
字符在后台运行每个进程:

#!/bin/bash
java -c .:somejar.jar infiniteloop 100001 &
java -c .:somejar.jar infiniteloop 100002 &
...
java -c .:somejar.jar infiniteloop <last filename>
#/bin/bash
java-c.:somejar.jar InfiniteLop 100001&
java-c.:somejar.jar InfiniteLop 100002&
...
java-c.:somejar.jar infiniteloop
每个进程都将在后台启动,以便脚本可以继续执行下一个命令


还要注意:
#中缺少的
/
/bin/bash
在每个命令末尾添加一个
&
字符在后台运行每个进程:

#!/bin/bash
java -c .:somejar.jar infiniteloop 100001 &
java -c .:somejar.jar infiniteloop 100002 &
...
java -c .:somejar.jar infiniteloop <last filename>
#/bin/bash
java-c.:somejar.jar InfiniteLop 100001&
java-c.:somejar.jar InfiniteLop 100002&
...
java-c.:somejar.jar infiniteloop
每个进程都将在后台启动,以便脚本可以继续执行下一个命令


还要注意:
#中缺少的
/
/bin/bash

您希望在每行末尾包含
&
字符,因此您的代码如下所示

#!bin/bash
java -c .:somejar.jar infiniteloop 100001 &
java -c .:somejar.jar infiniteloop 100002 &

请注意,这是Bash的一个特性,而不是java进程本身

您希望在每行末尾包含
&
字符,因此您的代码如下所示

#!bin/bash
java -c .:somejar.jar infiniteloop 100001 &
java -c .:somejar.jar infiniteloop 100002 &

请注意,这是Bash的一个特性,而不是java进程本身

看看Java线程

这很好地解释了这一点

class线程演示
{
公共静态void main(字符串[]args)
{
对于(int i=0;i

这并不是最好的方法,但它应该可以工作。

看看Java线程

这很好地解释了这一点

class线程演示
{
公共静态void main(字符串[]args)
{
对于(int i=0;i

这不是执行此操作的最佳方法,但它应该有效

,并在文件末尾添加“wait”。否则脚本将终止并终止所有子进程。“wait”将强制它等待它们全部退出。你到底为什么要尝试运行几十个无限循环?@Wug因为这是两个不同的
进程
,它们不共享任何资源,我相信你错了。我不能尝试,我在工作,在windows上。你试试看怎么样?尽管如此,我还是遇到了这个问题与运行java程序类似。该脚本在启动其子进程时立即终止,并将其所有子进程都带上,我通过添加wait来解决它。@Wug当
进程退出时,它将终止其所有子进程,这是真的。但是,这里的情况并非如此,因为这些是刚刚发生的不同进程运行相同的代码。我不明白为什么这会阻止bash在退出时杀死它生成的所有Java。并在文件末尾添加“wait”。否则脚本将终止并杀死所有子进程。“wait”将强制它等待它们全部退出。你到底为什么要尝试运行几十个无限循环?@Wug因为这是两个不同的
进程
,它们不共享任何资源,我相信你错了。我不能尝试,我在工作,在windows上。你试试看怎么样?尽管如此,我还是遇到了这个问题与运行java程序类似。该脚本在启动其子进程时立即终止,并将其所有子进程都带上,我通过添加wait来解决它。@Wug当
进程退出时,它将终止其所有子进程,这是真的。但是,这里的情况并非如此,因为这些是刚刚发生的不同进程运行相同的代码。我不明白为什么这会阻止bash在退出时杀死它所产生的所有Java。