Redirect bash script to syslog
#!/usr/bin/env bash
exec > >(tee /var/log/myscript.log|logger -t myscript -s 2>/dev/console) 2>&1
The pattern exec > $X 2>&1
does two things: the last bit redirects standard error to go to standard output, and the first bit sends standard output to the file $X
. Here our $X
is the process substitution >( $process )
which takes the standard input of $proces
s and presents it as a file handle. Putting these two together, we have both our standard out and our standard error going to the standard input of $process
. Our $process
here first runs tee, which sends its standard input to both standard out and to the file listed. We then pipe our standard out into the logger command, which sends it to syslog. The use of /dev/console
is left as an exercise to the reader.
Written by Jesusaurus
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Shell
Authors
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#