[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

redirection of stdout & stderr

Posted on 2001-08-08
8
Medium Priority
?
1,391 Views
Last Modified: 2012-06-27
I've been trying to redirect output of errors from a script job (through cron) to mailx. This works fine, but I loose the stderr going out to the logfile. Ideally I'd like to get stderr & stdout to a log file AND stderr on it's own to mailx.
e.g.
/tmp/test > /tmp/test.log 2 > 'mailx root'

I've been playing with variations of using "tee" to output to two destinations, but no joy...
I've also tried to manipulate file descriptors but still no joy...
e.g.
/tmp/test > /tmp/test.log 3>&2 2>&1 3 > 'mailx root'

am I going in the right direction or lost altogether ?
0
Comment
Question by:ferguswilson
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 5

Expert Comment

by:ecw
ID: 6367753
/tmp/test 2>&1 >/tmp/test.log | mailx root
0
 

Author Comment

by:ferguswilson
ID: 6368768
ecw,
your suggestion is doing the same thing
it just directs the errors FROM the logfile TO mailx
0
 
LVL 5

Expert Comment

by:ecw
ID: 6375616
If you don't mind using a tempfile, maybe ...

  (/tmp/test 2>&1 1>&3 | tee /tmp/test.err) > /tmp/test.log 3>&1 ; test -z /tmp/test.err || mailx root < /tmp/test.err

0
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 

Author Comment

by:ferguswilson
ID: 6383407
not really, temp files wouldn't really be a good idea. If I was to go down the road of extra files, I'd be taking a different route than this.
0
 
LVL 51

Accepted Solution

by:
ahoffmann earned 400 total points
ID: 6383508
(script > logfile) 2>&1|tee -a logfile|mailx root
0
 
LVL 5

Expert Comment

by:paulqna
ID: 6383726
Basically you can:

  1.redirect stdout to a file
  2.redirect stderr to a file
  3.redirect stdout to a stderr
  4.redirect stderr to a stdout
  5.redirect stderr and stdout to a file
  6.redirect stderr and stdout to stdout
  7.redirect stderr and stdout to stderr

Consider this:
exec 3>&1; script 2>&1 1>&3 3>&- | mailx root 1>&2 3>&-

Normal output would be unaffected. The closes there were in case something really cared about all its FDs. We send stderr to sed, and then put it back out 2.

Or did I misunderstood the original question ? ;)
0
 

Author Comment

by:ferguswilson
ID: 6383829
ahoffmann,
this done the trick for me, thanks.
for the record though, it sent an email even if there wern't any errors going to stderr;
e.g.
Your "cron" job
(/sys/test > /sys/test.log) 2>&1|tee /sys/test.log|mailx root
 produced the following output:
UX:mailx: WARNING: No message !?!  Message not sent

...but putting in || at the end resolved it
(/sys/test > /sys/test.log) 2>&1|tee /sys/test.log||mailx root

thanks for your help,
Fergus.
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 6383935
aah, nice trick: ||
You got used to shells ;-)
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hello fellow BSD lovers, I've created a patch process for patching openjdk6 for BSD (FreeBSD specifically), although I tried to keep all BSD versions in mind when creating my patch. Welcome to OpenJDK6 on BSD First let me start with a little …
Using libpcap/Jpcap to capture and send packets on Solaris version (10/11) Library used: 1.      Libpcap (http://www.tcpdump.org) Version 1.2 2.      Jpcap(http://netresearch.ics.uci.edu/kfujii/Jpcap/doc/index.html) Version 0.6 Prerequisite: 1.      GCC …
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
Suggested Courses

650 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question