[英]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.