使用for循环在bash中启动多个进程

使用for循环在bash中启动多个进程,bash,ubuntu,Bash,Ubuntu,在ubuntu上,我试图使用for循环在同一主机上启动多个filebeat实例,但我遇到了一个奇怪的行为 我正试图启动的命令 for i in `seq 1 2` ; do /etc/filebeat-test/filebeat-$i/filebeat & done 以及我得到的错误消息,然后当我退出命令时: Exiting: error loading config file: stat filebeat.yml: no such file or directory ^C [1]-

在ubuntu上,我试图使用for循环在同一主机上启动多个filebeat实例,但我遇到了一个奇怪的行为

我正试图启动的命令

for i in `seq 1 2` ; do /etc/filebeat-test/filebeat-$i/filebeat &  done
以及我得到的错误消息,然后当我退出命令时:

Exiting: error loading config file: stat filebeat.yml: no such file or directory
^C
[1]-  Termine 1               /etc/filebeat-test/filebeat-$i/filebeat
[2]+  Termine 1               /etc/filebeat-test/filebeat-$i/filebeat


看起来$i没有被解释

奇怪的是,我让这个命令运行了几次,但2秒钟后它就不工作了。我还尝试从一个文件启动它,并用“$I”替换$I,得到相同的结果

知道发生了什么吗?
感谢您的帮助

这对您有用吗:

#set-x#取消对其的注释以查看lopp循环时实际发生的情况
对于'seq 1 2'中的i;do(/etc/filebeat test/filebeat-$i/filebeat&);完成

这对您有用吗:

#set-x#取消对其的注释以查看lopp循环时实际发生的情况
对于'seq 1 2'中的i;do(/etc/filebeat test/filebeat-$i/filebeat&);完成

您需要添加括号
do(少量命令和参数)&;done
我认为在某些情况下,每个作业都需要一个bash env,然后它就变成了
do(bash(少量命令和参数))&;完成
在需要时小心使用变量和转义符在这种情况下,这与
filebeat
的路径关系不大,更多的是与任何实例都缺少可查找的
filebeat.yml
有关,更不用说(大概)为每个实例单独设置一个。@francoisP,使用您的语法运行命令时,我遇到了同样的问题。@chepner。如果我在没有for循环(/etc/filebeat-test/filebeat-1/filebeat)的情况下运行该命令,它工作正常,因此filebeat.yml的路径似乎不是问题。另外,它也不能解释为什么我让命令运行了好几次。但是您在某种程度上是对的,因为它似乎可以找到每个实例的二进制文件,而不是唯一的conf文件。您需要添加括号
do(少量命令和参数)&;done
我认为在某些情况下,每个作业都需要一个bash env,然后它就变成了
do(bash(少量命令和参数))&;完成
在需要时小心使用变量和转义符在这种情况下,这与
filebeat
的路径关系不大,更多的是与任何实例都缺少可查找的
filebeat.yml
有关,更不用说(大概)为每个实例单独设置一个。@francoisP,使用您的语法运行命令时,我遇到了同样的问题。@chepner。如果我在没有for循环(/etc/filebeat-test/filebeat-1/filebeat)的情况下运行该命令,它工作正常,因此filebeat.yml的路径似乎不是问题。另外,它也不能解释为什么我让命令运行了好几次。但您在某种程度上是对的,因为它似乎可以找到每个实例的二进制文件,而不是唯一的conf文件