繁体   English   中英

在一行中组合多个 linux 命令

[英]combine multiple linux commands in one line

我试图在一行中合并多个 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

如果你不介意把它们放在背景中,你可以通过把

  & ;     

在第一/第二和第二/第三之间。 这将基本上并行执行 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 {}'

希望它有效...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM