加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

bash – 如何并行运行多个shell脚本

发布时间:2020-12-15 18:27:37 所属栏目:安全 来源:网络整理
导读:我有一些测试脚本,每个脚本都运行一个测试 PHP应用程序.每个脚本都会永远运行 因此,cat.sh,dog.sh和foo.sh各自运行一个PHP脚本.每个shell脚本都循环运行程序,因此它会永远运行,每次运行后都会休眠. 我试图弄清楚如何同时并行运行脚本.在stdout / term窗口中
我有一些测试脚本,每个脚本都运行一个测试 PHP应用程序.每个脚本都会永远运行

因此,cat.sh,dog.sh和foo.sh各自运行一个PHP脚本.每个shell脚本都循环运行程序,因此它会永远运行,每次运行后都会休眠.

我试图弄清楚如何同时并行运行脚本.在stdout / term窗口中查看程序的输出.

我想,做以下事情可能有用:

foo.sh > &2
dog.sh > &2
cat.sh > &2

在shell脚本中它就足够了,但它不起作用.

foo.sh,runs foo.php once,and it runs correctly
dog.sh,runs dog.php in a never ending loop. it runs as expected
cat.sh,runs cat.php in a never ending loop
 *** this never runs!!!

似乎shell脚本永远不会运行cat.sh.如果我在一个单独的窗口/术语中单独运行cat.sh,它将按预期运行.

有没有人对如何让这些脚本并行运行有任何想法?

您当前的设置是按顺序运行命令.第一个运行并完成,允许第二个启动.第二个永远不会结束,所以第三个永远不会有机会开始.

试试这个:

foo.sh >foo.out 2>foo.err &
dog.sh >dog.out 2>dog.err &
cat.sh >cat.out 2>cat.err &

这将告诉每个命令在后台运行,并将其输出和错误信息发送到文件.当命令在后台运行时,它将从当前会话中分离,并允许下一个命令运行.将&符号(&)作为该行的最后一个字符非常重要.否则,可能无法正确识别.

或者,让每个shell脚本运行相关的.php脚本,您显然使用与上面相同的语义调用它.在这种情况下,您的foo.sh可能包含:

#!/bin/bash
php foo.php >foo.out 2>foo.err &

最后,如果您需要真正的并行操作,请查看GNU Parallel.

注意:如果您确实希望输出进入屏幕/终端,则可以不进行输出重定向:

foo.sh &

但请记住,同时运行多个命令会导致输出混乱(您现在可能知道哪个输出或错误来自哪个命令),如果您注销,则输出无处可去.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读