作者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/cn.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