Re: Thanks and Suggestions
- From: Robert Hajime Lanning <robert.lanning@xxxxxxxxx>
- Date: Mon, 2 Mar 2009 00:44:10 -0800
On Sun, Mar 1, 2009 at 7:09 PM, Chris Mirchandani <novashadow@xxxxxxx> wrote:
Thank you Mr. Lanning,
I tried your suggestion, see below, and it does work like I want, but I have 2 questions.
ssh joe@xxxxxxxxxxx "sleep 1000 < /dev/null> /dev/null 2>&1 &"
1) I see a lot of scripts use the form /dev/null> /dev/null 2>&1 rather than < /dev/null
> /dev/null 2>&1. Why don't you want/need the latter in scripts?
This actually depends on the command running.
This redirects STDIN (usually the keyboard) to read from /dev/null.
/dev/null is a special
file (called a device file) that gives the End Of File marker every
time it is read. If you
want the command to read from a file, then you replace "/dev/null"
/dev/nullThis redirects STDOUT (usually the screen) to /dev/null. Anything
written to /dev/null
is just discarded. So, if you want to save the output to a file,
then you replace "/dev/null"
with /path/to/output/file. You do have to be careful, as the ">"
operator truncates the file
when it opens it for writing.
This copies file descriptors.
STDIN is file descriptor 0
STDOUT is file descriptor 1
STDERR is file descriptor 2
So, 2>&1 copies file descriptor 1 to file descriptor 2, thus makes
STDERR goto the same
place as STDOUT.
If you want STDERR to goto a different file than STDOUT, then you can use
If you don't use "< /dev/null" then the command will still have the
terminal open for reading.
Sometimes this is just fine, as the command does not do anything with
the terminal (ie. read
from it.) Sometimes it isn't, if the command tries to read from
STDIN, it will interrupt your
If you want to close your shell completely, then you will need to
redirect STDIN for
the command, as the terminal will disappear (if it is a network or
Xwindow session.) In this
case, you will also want to use "nohup" to run the command. This will
set the process flag
to ignore the HangUp (SIGHUP) signal, that the shell sends to all it's
child processes upon
exit. Commands that do not specifically handle SIGHUP will default to
receiving the HUP signal.
In Linux, you can get a list of all available POSIX Signals via the
"kill -l" command or
looking in /usr/include/linux/signal.h.
2) If I enable logging for my remote ssh command, which is an ssh command, will
< /dev/null> /dev/null 2>&1 change logging in any way?
This all depends on how logging is implemented.
If it uses Syslog or writes directly to a file, no. If it logs to
STDOUT or STDERR, then yes.
See above for what happens to STDOUT and STDERR, if logging is done
via either of
If it uses Syslog or writes directly to a file, then the log will be
on the remote machine,
And, did Galoka think the Ulus were too ugly to save?
- RE: Thanks and Suggestions
- From: Chris Mirchandani
- RE: Thanks and Suggestions
- Prev by Date: Re: password prompt, but pki auth working!?...
- Next by Date: Re: Thanks and Suggestions
- Previous by thread: RE: Thanks and Suggestions
- Next by thread: Re: Thanks and Suggestions