What does 2>&1 mean?
Sometimes I call my SQL script via shell script which generally have this kind of statement in it,
$SCRIPTDIR/run_me.sh 2>&1 > $LOGDIR/log_me.log
What above statement does for me is, it runs run_me.sh script from my script folder and logs the detail in files called log_me.log in my log folder. Over here what I am interested in is what is 2>&1. Well firstly let me define three data streams in linux i.e. STDIN, STDOUT, and STDERR,
STDIN : Standard input usually comes from the keyboard or from another program
STDOUT : The program usually prints to standard output
STDERR : The program sometimes prints to standard error
In Linux/Unix, The built-in numberings for them are 0, 1, and 2, in that order.
The command above is redirecting standard error into standard output (you have to put an & in front of the destination when you do this) and redirecting standard output into my log file, which is a place I want to dump anything my scripts writes out.
So effectively, all output from this command should be logged into my log file. So in case of any issue I can always look at the log to find out the trouble area.
--------------------------------------------------------------------------------------------
Sometimes there will be cases where a directory is filled with lots of files e.g. dump directory with lots of trace file. In such case when I tried following,
/bin/rm *.trc
I got following error message:
bash: /bin/rm: Argument list too long
Solution:
find . -name "*.trc"| xargs /bin/rm.
Depending on the number of files, after a while all files will be erased.
Wednesday, June 3, 2009
Subscribe to:
Post Comments (Atom)
1 comment:
find -name "*.trc" -exec rm {} \; would make it too ... one line ;)
Post a Comment