在一行中组合多个linux命令

在一行中组合多个linux命令,linux,centos,centos5,Linux,Centos,Centos5,我试图在一行中合并多个linux命令以执行部署操作。比如说 nohup php 1.php nohup php 2.php nohup php 3.php nohup php 4.php 我想并行执行所有这些命令,可以在.sh文件中执行吗?在linux中,您可以使用&&顺序执行命令,并且只有在前一个命令成功执行时,才会执行命令 nohup php 1.php && nohup php 2.php && nohup php 3.php 编辑:如果您不希望使用&&

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

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

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

在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

在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/2和2/3之间。这将基本上并行地执行3

&:在bg中执行

; 不管第一个命令是否成功,都执行第二个命令如果您不介意将它们放在后台,您可以通过

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

&:在bg中执行

; 无论第一次命令是否成功,都执行第二次命令您也可以这样做:

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 {}'

希望它能工作…

您也可以这样做:

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 {}'

希望它能起作用……

上面的步骤可以做到这一点。如果在之后使用“ps”进行检查,您将看到3个php实例正在运行(假设它们足够长,至少需要几秒钟)。处理器为您处理这些。上面的操作应该可以做到这一点。如果在之后使用“ps”进行检查,您将看到3个php实例正在运行(假设它们足够长,至少需要几秒钟)。处理器为您处理。工作正常,但一个接一个不是并行的,如何并行运行所有文件?当我运行php文件并获得上传时,我看到文件一个接一个地运行,而不是并行运行…@user3083317,阅读我写的内容:
您可能必须安装它
,并且有可能阻止打印输出?这应该可以工作,输出不会打印在屏幕上,进程将在后台运行:
sh-c“cat cmd.txt | parallel--max procs=4--组'nohup php{}&>/dev/null”&
您知道如何在之后关闭putty会话吗。也许最后使用
exit
命令,我现在无法测试。不管怎样,如果我的回答对你有帮助,标记为“已解决”。这很好,但一个接一个不是并行的,如何并行运行所有文件?当我运行php文件并获得上传时,我看到文件一个接一个地运行,而不是并行运行…@user3083317,阅读我写的内容:
您可能必须安装它
,并且有可能阻止打印输出?这应该可以工作,输出不会打印在屏幕上,进程将在后台运行:
sh-c“cat cmd.txt | parallel--max procs=4--组'nohup php{}&>/dev/null”&
您知道如何在之后关闭putty会话吗。也许最后使用
exit
命令,我现在无法测试。无论如何,如果我的回答对你有帮助,请标记为“已解决”。