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 09-25-2018
Redirect STDOUT & STDERR to file and then on screen

Dear all,
redirecting STDOUT & STDERR to file is quite simple, I'm currently using:
Code:
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

Moderator's Comments:
Mod Comment edit by bakunin: please use CODE-tags like the ones i edited in for you. Thanl you.

Last edited by bakunin; 09-25-2018 at 05:33 PM..
# 2  
Old 09-25-2018
Do you really want to capture ALL remaining session? Above execs aren't necessarily the killall tool for what you need. Howsoever, did you consider teeing output to /dev/tty?
# 3  
Old 09-25-2018
You will need to restore file descriptors to their original values.
This can be done from inside the script in point of code you like.

During runtime, outside of the script, possibly with some gdb hackery, but i would advise against it.

Example for both operations can be found by searching keywords above.

Hope that helps.
Regards
Peasant.
# 4  
Old 09-25-2018
One file descriptor can't write to two streams by itself. You'll need tee or something else to accomplish this.
# 5  
Old 09-25-2018
I usually use this paradigm at the top of a script:
Code:
# Redirect the stdout/stderr to screen AND log file

mkfifo /tmp/$$-err /tmp/$$-out
# to merge stdout/stderr to log file AND screen
( exec tee -a ${FILE_LOG} </tmp/$$-out ) &
( exec tee -a ${FILE_LOG} </tmp/$$-err >&2 ) &

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


Last edited by vgersh99; 09-25-2018 at 05:58 PM..
This User Gave Thanks to vgersh99 For This Post:
# 6  
Old 09-25-2018
Quote:
Originally Posted by vgersh99
I usually this paradigm at the top of a script:
That is a really clever way to do it. I will shamelessly steal that immediately and include it into my own scripts. Thank you!

bakunin
This User Gave Thanks to bakunin For This Post:
# 7  
Old 09-26-2018
Quote:
exec 1>>/tmp/tmp.log; exec 2>>/tmp/tmp.log
Two file handles for the same file? I guess this can loose some previous writes when switching to the other handle.
Correct is
Code:
exec 1>>/tmp/tmp.log 2>&1

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

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

2. 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: exec 1>>/tmp/tmp.log; exec 2>>/tmp/tmp.logBut during script execution I would like the output come back again to screen, how to do that? Thanks Lucas (4 Replies)
Discussion started by: Lord Spectre
4 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