Run two watch commands simultaneously

2

I want to run two executables in the foreground by typing one line of code or running a shell script. These executables watch a directory and recompile some code while outputting their status to stdout.

I want the stdout to be presented in the same way as following two files in 'tail' like so:

tail -f foo.txt -f bar.txt

==> foo.txt <==
Something

==> bar.txt <==
Something else

When something changes it prints the filename before printing the output. It only prints the filename when it needs to indicate that the output is coming from the other file.

vaughan

Posted 2012-06-12T06:41:03.607

Reputation: 777

4You haven't actually asked a question. I'm not trying to be rude, but I honestly don't know what your question is after reading that. – Daniel Andersson – 2012-06-12T06:45:13.570

Sorry about that. I've added some more detail. – vaughan – 2012-06-13T01:40:21.087

Answers

1

Since the two executables write to standard output, you may be able to just tail the files produced by process substitution:

tail -f <( executable_one ) <( executable_two )

(Only one -f needed, by the way. It's a global option, not something you need to specify for each file.)

Each of the two executables runs separately, and its output is captured and redirected to a file handle which is passed tail. In the output, the file names will appear as something like "/dev/fd/63". Unfortunately, I don't know of a way to get tail to use an alternate name (like with grep and the --label option).

chepner

Posted 2012-06-12T06:41:03.607

Reputation: 5 645

0

Fran

Posted 2012-06-12T06:41:03.607

Reputation: 4 774