Redirect STDOUT & STDERR to file and then on screen


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Redirect STDOUT & STDERR to file and then on screen
# 1  
Old 07-25-2012
Redirect STDOUT & STDERR to file and then on screen

Dear all,
redirecting STDOUT & STDERR to file is quite simple, I'm currently using:
Code:
exec 1>>/tmp/tmp.log; exec 2>>/tmp/tmp.log

But during script execution I would like the output come back again to screen, how to do that?

Thanks
Lucas
# 2  
Old 07-25-2012
This isn't simple, and can change the order of your output, because it means making one stream print into two separate places. To do that, you need to use tee or something like tee and connect to them with fifos.

Code:
mkfifo /tmp/$$-err /tmp/$$-out

( exec tee -a stdout.log </tmp/$$-out ) &
( exec tee -a stderr.log </tmp/$$-err >&2 ) &

exec 1>/tmp/$$-out
exec 2>/tmp/$$-err
rm -f /tmp/$$-out /tmp/$$-err


echo "This into stdout.log"
echo "This into stderr.log" >&2

This can change the order of your output because the path is no longer direct. stderr was guaranteed to be unbuffered, before, but now must pass through several buffers on its way to the terminal.

Last edited by Corona688; 07-25-2012 at 04:45 PM.. Reason: -a for append
This User Gave Thanks to Corona688 For This Post:
# 3  
Old 07-25-2012
Thanks, I'll try it, but from your code, I still don't understand how activate screen log OR file log! Smilie

Because I don't need both at the same time, and the flow is something like:

Code:
Start Application >> Log files
execute some commands >> Log files
execute other commands >> Log files
if $1 = "--debug" then disable Log files and show the output on screen
      execute some commands > Screen Log
else
      execute other commands >> Log files
exit

# 4  
Old 07-25-2012
Oh, you just want to save them for later? That's much easier!

Code:
# Save backups of FD's
exec 5>&1
exec 6>&2

...

# Redirect into files
exec 1>stdout.log
exec 2>stderr.log

...

# Restore to terminal
exec 1>&5
exec 2>&6

This User Gave Thanks to Corona688 For This Post:
# 5  
Old 07-25-2012
Thanks a million, it works perfect! Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Redirect STDOUT & STDERR to file and then on screen

Dear all, redirecting STDOUT & STDERR to file is quite simple, I'm currently using: Code: exec 1>>/tmp/tmp.log; exec 2>>/tmp/tmp.log But during script execution I would like the output come back again to screen, how to do that? Thanks Luc edit by bakunin: please use CODE-tags like the... (6 Replies)
Discussion started by: tmonk1
6 Replies

2. 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

3. Shell Programming and Scripting

Prepend TimeStamp to STDERR & STDOUT to a file

Currently I am redirecting STDERR and STDOUT to a log file by doing the following { My KSH script contents } 2>&1 | $DEBUGLOG Problem is the STDERR & STDOUT do not have any date/time associated. I want this to be something that i can embed into a script opposed to an argument I use... (4 Replies)
Discussion started by: nitrobass24
4 Replies

4. 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

5. Red Hat

Redirect STDOUT and STDERR of chsh

EDIT: Nevermind, figured it out! Forgot to put backslashes in my perl script to not process literals! Hi everyone. I am trying to have this command pass silently. (no output) chsh -s /bin/sh news Currently it outputs. I've tried.... &> /dev/null 1> /dev/null 2>&1 /dev/null 1>&2... (1 Reply)
Discussion started by: austinharris43
1 Replies

6. Shell Programming and Scripting

Redirect stdout/stderr to a file globally

Hi I am not if this is possible: is it possible in bach (or another shell) to redirect GLOBALLY the stdout/stderr channels to a file. So, if I have a script script.sh cmd1 cmd2 cmd3 I want all stdout/stderr goes to a file. I know I can do: ./script.sh 1>file 2>&1 OR ... (2 Replies)
Discussion started by: islegmar
2 Replies

7. Shell Programming and Scripting

How to redirect stderr and stdout to a file

Hi friends I am facing one problem while redirecting the out of the stderr and stdout to a file let example my problem with a simple example I have a file (say test.sh)in which i run 2 command in the background ps -ef & ls & and now i am run this file and redirect the output to a file... (8 Replies)
Discussion started by: sushantnirwan
8 Replies

8. 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

9. Shell Programming and Scripting

stderr & stdout to a file and the right exit code

Hi all, I need to redirect stdout and stderr to a file in a ksh shell. That's not a problem. But I need also the correct exit code for the executed command. In the example below I redirect correctly the stdout & stderr to a file, but I have the exit code of tee command and not for the mv... (2 Replies)
Discussion started by: up69
2 Replies

10. Shell Programming and Scripting

Redirect stdout and stderr

How can I redirect and append stdout and stderr to a file when using cron? Here is my crontab file: */5 * * * * /dir/php /dir/process_fns.php >>& /dir/dump.txt Cron gives me an 'unexpected character found in line' when trying to add my crontab file. Regards, Zach Curtis POPULUS (8 Replies)
Discussion started by: zcurtis
8 Replies
Login or Register to Ask a Question

Featured Tech Videos