在一行中组合多个Linux命令

问题描述 投票:0回答:3

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

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

我想同时执行所有这些命令,可以在.sh文件中执行吗?

linux centos centos5
3个回答
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

然后执行这个命令(还没试过,但应该能用)。--max-procs 如果你有超过4个核心的数字。

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

希望它能工作...


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次2次,和第2次3次之间。 这将使3个命令基本上是并行执行的。

&: 在bg中执行;无论第1次成功与否,都要执行第2次命令。

© www.soinside.com 2019 - 2024. All rights reserved.