1 |
Hendrik Jürgens schrieb: |
2 |
> Thomas Schweikle wrote: |
3 |
>>> Nils Andresen schrieb: |
4 |
>>> |
5 |
>>>>Moin, |
6 |
>>>> |
7 |
>>>>Volker Katz wrote: |
8 |
>>>> |
9 |
>>>> |
10 |
>>>>>Also in der Art: |
11 |
>>>>> |
12 |
>>>>>/bin/job1 & |
13 |
>>>>>/bin/job2 & |
14 |
>>>>>/bin/job3 & |
15 |
>>>>>while (not job1 finished && not job2 finished && not job3 finished) |
16 |
>>>>>/bin/job4 |
17 |
>>>>> |
18 |
>>>>> |
19 |
>>>> |
20 |
>>>>Macht |
21 |
>>>>( /bin/job1 & /bin/job2 & /bin/job3 ) && /bin/job4 |
22 |
>>>>nicht das ?! |
23 |
>>> |
24 |
>>> |
25 |
>>> Nein, macht es nicht: |
26 |
>>> - job 1 wird im Background ausgeführt |
27 |
>>> - job 2 wird im Background ausgeführt |
28 |
>>> - job 3 wird im Vordergrund ausgeführt |
29 |
>>> nach *erfolgreichem* beenden von job 3 wird job 4 ausgeführt. |
30 |
>>> |
31 |
>>> Die Klammern um job 1 bis job 3 sorgen nur dafür, dass das Environment |
32 |
>>> (bis auf den Rückgabewert) nicht verändert wird. |
33 |
>>> |
34 |
>>> (sleep 60 & sleep 60 & sleep 5) && echo "Fertig!" |
35 |
>>> ps axf nach 0s: |
36 |
>>> 13619 pts/1 Ss 0:00 \_ -/bin/bash |
37 |
>>> 2846 pts/1 S+ 0:00 | \_ -/bin/bash |
38 |
>>> 2847 pts/1 S+ 0:00 | \_ sleep 60 |
39 |
>>> 2848 pts/1 S+ 0:00 | \_ sleep 60 |
40 |
>>> 2849 pts/1 S+ 0:00 | \_ sleep 15 |
41 |
>>> |
42 |
>>> ps axf nach 10s: |
43 |
>>> 2847 pts/1 S 0:00 sleep 60 |
44 |
>>> 2848 pts/1 S 0:00 sleep 60 |
45 |
>>> |
46 |
>>> ps axf nach 61s: |
47 |
>>> |
48 |
> |
49 |
> Tach. |
50 |
> |
51 |
> Damit sollte das vielleicht so gehen. Die jobs 1-3 werden im Hintergrund |
52 |
> ausgeführt. Ihre PIDs in den Variablen job1-3 gespeichert und danach auf |
53 |
> das Beenden der Jobs gewartet, bevor job4 ausgeführt wird, |
54 |
> |
55 |
> #!/bin/bash |
56 |
> job1 & job1=$! |
57 |
> job2 & job2=$! |
58 |
> job3 & job3=$! |
59 |
> wait $job1 |
60 |
> wait $job2 |
61 |
> wait $job3 |
62 |
> job4 |
63 |
> |
64 |
> wait $wmpid |
65 |
|
66 |
Ja. nur gefällt mir die Variante aus |
67 |
<20050816151216.GA32458@××××××××××××××.lan> besser. Ich würde hergehen |
68 |
in das ganze in eine Schleife packen: |
69 |
|
70 |
for i in job1 job2 job3 jobn; do |
71 |
$i & pids="${pids} $!" |
72 |
done |
73 |
wait $pids |
74 |
echo "Fertig!" |
75 |
|
76 |
noch eleganter: |
77 |
|
78 |
function waitjob() { |
79 |
$* & pids="$pids $!" |
80 |
} |
81 |
|
82 |
waitjob job1 |
83 |
waitjob job2 |
84 |
waitjob jobn |
85 |
wait $pids |
86 |
echo "Fertig!" |
87 |
|
88 |
-- |
89 |
Thomas |
90 |
|
91 |
-- |
92 |
gentoo-user-de@g.o mailing list |