作者LaAc (深淵戰士)
看板Linux
標題[問題] 利用shell script一次執行多個程式
時間Tue Jan 3 19:22:00 2023
在跑模擬的時候通常需要一次執行數個檔案,因為不想要一行行輸入指令,所以想說寫個
script一起跑,雖然成功了但只能一次執行一個檔案,前面的完成後下一個才能跑,於是
我想把script改成可以一次跑所有檔案的樣子:
#!/bin/bash
cd test
chmod u+x *.sh
./A ; ./B ; ./C ; ./D
ABCD各是一個script,執行程式的指令就寫在裡面,長這樣:
#!/bin/bash
cd ..
cd A
[執行程式的指令]
我以為這樣用分號區隔代表一次執行所有指令的意思,但是這樣子好像還是只能一個一個
跑,不知道是哪裡寫錯了呢?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.114.108.42 (臺灣)
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1672744924.A.049.html
※ 編輯: LaAc (118.231.138.15 臺灣), 01/03/2023 19:28:30
1F:推 Bencrie: ; 是說不管執行結果一個一個執行 01/03 19:38
2F:→ Bencrie: 你要同時四個就用 &,./A & 會送背景 01/03 19:39
3F:→ Bencrie: 送背景以後用 $! 去取 PID,之後可以用 wait 去取 exit 01/03 19:40
4F:→ Bencrie: code。 01/03 19:40
感謝 我去試試看
※ 編輯: LaAc (118.231.138.15 臺灣), 01/03/2023 20:28:57
5F:推 enthos: nohup ./a& ; nohup ./b & 01/04 15:38
感謝 這樣寫也可以跑!
※ 編輯: LaAc (118.231.138.15 臺灣), 01/05/2023 01:02:56
6F:推 dces4212: 借問 nohup只用在避免session關掉時相關程式也被關掉的 01/05 18:46
7F:→ dces4212: 情境吧? 01/05 18:46
8F:推 Bencrie: 是。不過我都用 tmux 01/05 19:02
9F:推 holishing: tmux+1 , 比較舊的系統可能可以裝screen 01/06 22:18
10F:推 rickieyang: 一直都用screen,懶得重新適應tmux @@ 01/07 01:00
11F:推 holishing: tmux 我只有不能 big5 轉 utf8 這點不習慣 ( 01/07 01:33
12F:推 Typebrook: coproc, setsid 也可以參考一下,各有不同的使用情境 01/07 10:38
13F:推 Gold740716: ./A & pa=$!; ./B & pb=$!; wait; kill $pa $pd 01/07 22:24
14F:推 Gold740716: bash 也可以用 disown 01/08 00:06
15F:→ newversion: &後面不能有分號; 會出錯 01/08 10:26
16F:推 simpson083: #!/bin/bash 02/14 00:26
17F:→ simpson083: cd test chmod u+x *.sh 02/14 00:26
18F:→ simpson083: ./A & ./B & ./C & ./D & 02/14 00:26
19F:→ simpson083: wait 02/14 00:26
20F:→ simpson083: 這樣,這個 script 就會在一次執行中同時執行 A, B, C 02/14 00:26
21F:→ simpson083: , D 四個檔案,並且在所有執行完成後才結束整個執行 02/14 00:26