簡體   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