在一行中组合多个linux命令
我试图在一行中合并多个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 编辑:如果您不希望使用&&
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
命令,我现在无法测试。无论如何,如果我的回答对你有帮助,请标记为“已解决”。