Sponsored Content
Top Forums Shell Programming and Scripting Preserve output order when redirecting stdout and stderr Post 302382098 by Boemm on Tuesday 22nd of December 2009 06:26:08 AM
Old 12-22-2009
Preserve output order when redirecting stdout and stderr

Hi,

I already searched through the forum and tried to find a answer for my problem but I didn't found a full working solution, thats way I start this new thread and hope, some can help out.

I wonder that I'm not able to find a working solution for the following scenario:

Working in bash I have some standard script or executable which outputs some messages to stdout and some to stderr.
I try to get write the output to 2 separate files and want the complete output in the order it's printed by the called script to console.

The redirect into 2 files and the additional output to console works with some nice redirections and/or sub shells, but in every case the order of the printed lines are afterwards mixed up ...
If using sub shells, the output is printed more or less randomly, depending on how long each sub shell needs to get executed.
If using redirections, then either all the stdout lines will be printed first and afterwards all the stderr lines or vice versa (depending on which of them are logged first with tee).

I hacked those 2 examples which shows the explained problems.
The first is the one with sub shells, the second the one with redirects:

1:
Code:
./test.sh 2> >(while read l; do echo $l >> stderr.log; echo err: $l; done) 1> >(while read l; do echo $l >> stdout.log; echo out: $l; done)

2:
Code:
(./test.sh 2>&1 1>&3 | tee errors.log) 3>&1 1>&2 | tee output.log

If you try it, you will see, both prints all the output to console and write them to the separate files, but the output is not in the right order some times ...

Can somebody help me out and provide a working solution for this annoying problem!?
I would also be glad about something in perl or some other usual scripting language.

Thanks in advantage!
Steffen
 

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

sending syslog output to stderr or stdout

Is there a way to send the syslog output for a given facility to stderr or stdout? I do not want to use the "tail" command to achieve this, I would like it to go directly to stderr. Thanks in advance (1 Reply)
Discussion started by: dmirza
1 Replies

2. Shell Programming and Scripting

redirecting STDOUT & STDERR

In bash, I need to send the STDOUT and STDERR from a command to one file, and then just STDERR to another file. Doing one or the other using redirects is easy, but trying to do both at once is a bit tricky. Anyone have any ideas? (9 Replies)
Discussion started by: jshinaman
9 Replies

3. Shell Programming and Scripting

getting stderr & stdout output lively modified

This is about getting all output to stderr and stdout localized. Nothing to do with redirecting output to a file (there already are some interesting threads about that issue on this forum). What I intend to do is capturing all lines of text sent to the screen, compare them with an array of... (2 Replies)
Discussion started by: teo ramirez
2 Replies

4. Shell Programming and Scripting

Redirecting STDERR message to STDOUT & file at same time

Friends I have to redirect STDERR messages both to screen and also capture the same in a file. 2 > &1 | tee file works but it also displays the non error messages to file, while i only need error messages. Can anyone help?? (10 Replies)
Discussion started by: vikashtulsiyan
10 Replies

5. Shell Programming and Scripting

Redirecting part of output to stdout

Hi, I am trying to execute a command like this: find ./ -name "*.gz" -exec sh -c 'zcat {} | awk -f parse.awk' \; >> output If I want to print the filename, i generally use the -print argument to the find command but when I am redirecting the output to a file, how can I print just the... (2 Replies)
Discussion started by: Legend986
2 Replies

6. Shell Programming and Scripting

redirect stdout and stderr to file wrong order problem with subshell

Hello I read a lot of post related to this topic, but nothing helped me. :mad: I'm running a ksh script with subshell what processing some ldap command. I need to check output for possible errors. #!/bin/ksh ... readinput < $QCHAT_INPUT |& while read -p line do echo $line ... (3 Replies)
Discussion started by: Osim
3 Replies

7. Shell Programming and Scripting

File descriptors, redirecting output, and stdout

Hello all. I've been lurking here for a year or two and finally decided to post. I need some assistance with file descriptors, stdout, and redirecting output. I've searched through a number of very helpful threads here (unfortunately I can't link to any of them yet due to my low post count...),... (2 Replies)
Discussion started by: Michael_K
2 Replies

8. Shell Programming and Scripting

Redirecting STDERR to file and screen, STDOUT only to file

I have to redirect STDERR messages both to screen and also capture the same in a file but STDOUT only to the same file. I have searched in this formum for a solution, but something like srcipt 3>&1 >&2 2>&3 3>&- | tee errs doesn't work for me... Has anyone an idea??? (18 Replies)
Discussion started by: thuranga
18 Replies

9. Shell Programming and Scripting

Lost redirecting stderr & stdout to 3 files - one each plus combined

Hi folks I need/want to redirect output (stdout, stderr) from an exec call to separate files. One for stderr only and two(!) different (!) ones for the combined output of stderr and stdout. After some research and testing i got this so far : (( exec ${command} ${command_parameters} 3>&1... (6 Replies)
Discussion started by: MDominok
6 Replies

10. Shell Programming and Scripting

Redirecting stdout output to whiptail menu box

As a result of whiptail menu option I am getting a data from a file. Naturally it is output to terminal as stdour. I like to redirect the output back to the menu. It can be done with single input of line of text , see attached. I just cannot see where or how the sample... (0 Replies)
Discussion started by: annacreek
0 Replies
CREATE-JAR-LINKS(1)						   User Commands					       CREATE-JAR-LINKS(1)

NAME
create-jar-links -f instructions_file [-a archive_file] [-p] SYNOPSIS
create-jar-links -f instructions_file [-a archive_file] [-p] OPTIONS
-a Archive file on which actions will be performed, as opposed to current directory -p Preserve original file names (-p to build-jar-repository) -f The instructions file to check against. -a Archive file on which actions will be performed, as opposed to current directory -p Preserve original file names (-p to build-jar-repository) -f The instructions file to check against. EXAMPLES
Suppose there is a clean source tarball (using clean-binary-files(1) and check-binary-files(1)). Following this, one can extract the tar- ball, cd to it, and run: create-jar-links -f <instructions> -d <custom_jar_map> This would call build-jar-repository(1) and create symlinks, with extra mappings (form vanilla jar names to jpp names) that are specifiable via the custom jar map. SEE ALSO
Regular Manual Pages check-binary-files(1), create-jar-links(1), build-jar-repository(1), jpackage-utils(7) Documentation Further reading should be found in clean-binary-files.txt located in your standard documentation directory. Original mail is here: https://www.zarb.org/pipermail/jpackage-discuss/2005-November/009158.html AUTHOR
Written by Deepak Bhole REPORTING BUGS
Report bugs using JPackage Bugzilla (http://www.jpackage.org/bugzilla/) create-jar-links (jpackage-utils) 1.7.5 February 2009 CREATE-JAR-LINKS(1)
All times are GMT -4. The time now is 09:44 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy