shell异步调用
舟率率 8/7/2023 shell
#!/bin/bash
fun1(){
# ./test1.py &
sleep 5 &
pid=$!
echo "父脚本:子脚本(PID=${pid})已启动"
wait
echo "父脚本:子脚本(PID=${pid})已结束"
}
fun2(){
# ./test2.py &
sleep 5 &
pid=$!
echo "父脚本:子脚本(PID=${pid})已启动"
wait
echo "父脚本:子脚本(PID=${pid})已结束"
}
fun1 &
fun2 &
echo "所有脚本开始异步执行"
wait # 如果fun里面没有wait,则整个脚本立刻退出,不会等待fun里面的sleep
echo "任务完成"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#!/bin/bash
#
# 异步执行(wait)使用样例-父脚本
#
echo "父脚本:启动子脚本.."
./test1.py &
# 通过将shell参数 $! 赋给pid变量,以记录子进程的进程ID
pid1=$!
echo "父脚本:子脚本(PID=${pid1})已启动"
./test2.py &
# 通过将shell参数 $! 赋给pid变量,以记录子进程的进程ID
pid2=$!
echo "父脚本:子脚本(PID=${pid2})已启动"
echo "所有任务开始异步执行"
wait
echo "父脚本:子脚本已结束,父脚本继续.."
echo "父脚本:父脚本执行结束。脚本退出!"
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25