<div dir="ltr"><div dir="ltr"></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, Apr 2, 2021 at 4:16 PM Mike Miller wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On Fri, 2 Apr 2021, gregrwm wrote:<br>> From Mike Miller 26 Mar 2021 14:24:39<br>
>> On Thu, 25 Mar 2021, gregrwm wrote:<br>
>>> question for bashers:<br>
>>><br>
>>> a bash command entered as a foreground job may fork, leave something <br>
>>> in the background, and exit to the bash prompt, and the job in the <br>
>>> background will print it's output whenever it has any.  So far so <br>
>>> good.<br>
>>><br>
>>> i want to enter a command which launches 3 subcommands in parallel, <br>
>>> wait up to 3 seconds unless all 3 subcommands finish sooner, sort all <br>
>>> their output-so-far together, print it, and exit to the bash prompt at <br>
>>> this point, and if any of the subcommands weren't finished, leave them <br>
>>> in the background and let them print more output whenever they have <br>
>>> any.<br>
>>><br>
>>> easy?  hard?<br>
>><br>
>>
<br>>> Can you use tee to send output to a temp file?<br>
>><br>
>> process | tee file | whatevs<br>
>><br>
>> Data coming out of "process" will go to "file" but it will also go to <br>
>> "whatevs" for further processing.<br>
>><br>
>> Then you read from file.  Mutiple processes could make multiple files. <br>
>> Use the temp command to make the files.  One thing I'm not completely <br>
>> sure of: does tee write continously to file, or does it do it in only <br>
>> at certain moments, like after each block of data comes out?  I'm <br>
>> guessing continuous but not sure.<br>
>><br>
>> Mike<br>
><br>
><br>
> what's behind the question is asking several hosts for their list of <br>
> virtual guests and sorting the list together, and it would be nice to <br>
> come up with the sorted list right away even if one or more of the hosts <br>
> is down.  my current and obvious compromise just waits for all results <br>
> before finishing.<br><br><br>
If you have some idea of how many lines you'll be sorting, you should be <br>
able to sort that many lines into a file while waiting for the remaining <br>
lines.  To put the first $N lines into a temp file, do this:<br>
<br>
process | tee >(head -$N | sort > tempfile_$N) | whatevs<br>
<br>
The whole unsorted output still goes to "whatevs".  So you could string <br>
together a bunch of those tee commands and have them process increasingly <br>
more numbers of lines.  Or you could do this...<br>
<br>
process | tee tempfile | whatevs<br>
<br>
Then just do this whenever you please:<br>
<br>
sort tempfile | less<br>
Mike</blockquote><div><br></div></div><div><br></div><div>it's a good suggestion.  what i've done with it:  toss the subcommands into the background, tee them to a file, see the unsorted output as it arrives on standard out, and run a second command that sorts from the file.  the only bit still missing would be to wait either for all subcommands to finish, or 3 seconds, whichever comes first, and then do the sort.  but this is already good enough.  thanks!</div><div><br></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr">this concludes test 42 of big bang inflation dynamics.  in the advent of
 an actual universe, further instructions will be provided.  000000000000000000000042<br></div></div></div>