在一行中组合多个linux命令

时间:2013-12-09 15:03:02

标签: linux centos centos5

我试图在一行中合并多个linux命令来执行部署操作。例如

nohup php 1.php
nohup php 2.php
nohup php 3.php
nohup php 4.php

我希望他能并行完成所有这些,这有可能吗? .sh文件? 坦克你

3 个答案:

答案 0 :(得分:3)

在linux中,您可以使用&&按顺序执行命令,只有在前一个命令成功的情况下才会执行命令。

nohup php 1.php && nohup php 2.php && nohup php 3.php

编辑:如果您不想要&&运算符提供的错误检查,请使用分号(;)来链接命令,如下所示:

nohup php 1.php ; nohup php 2.php ; nohup php 3.php

答案 1 :(得分:1)

如果您不介意将它们放入后台,可以通过添加

来实现
  & ;     

在第1 /第2和第2 /第3之间。这将基本上并行地执行3。

&amp ;:执行bg
;不管第1次成功与否,都要做第2次命令

答案 2 :(得分:0)

你也可以这样做:

nohup sh -c 'php 1.php; php 2.php; php 3.php' &

编辑 为了回答你的问题,这个过程是平行的。您可以通过编写ps命令来验证这一点。 例如:使用sleep命令:

nohup sh -c 'sleep 30 && sleep 30' &

输出:

 ....
 6920    7340    7340       6868  pty2    17763 16:33:27 /usr/bin/sleep
 6404    4792    4792       7004  pty2    17763 16:33:26 /usr/bin/sleep
 ....

编辑2: 好的,然后尝试使用parallel命令。 (你可能必须安装它)

创建文件cmd.txt

1.php
2.php
3.php

然后执行此命令(尚未尝试,但它应该工作)。如果你有更多/少于4个核心,你可以更改--max-procs个数字:

cat cmd.txt | parallel --max-procs=4 --group 'php {}'

希望它有效......