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