我试图在一行中合并多个Linux命令来执行部署操作。例如
nohup php 1.php
nohup php 2.php
nohup php 3.php
nohup php 4.php
我想同时执行所有这些命令,可以在.sh文件中执行吗?
你也可以这样做。
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 {}'
希望它能工作...
在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次命令。