</dev/null
is used to avoid having the script wait for input.
Quoting from the usage of < /dev/null & in the command line:
< /dev/null
is used to instantly send EOF to the program, so that it
doesn't wait for input (/dev/null
, the null device, is a special
file that discards all data written to it, but reports that the write
operation succeeded, and provides no data to any process that reads
from it, yielding EOF immediately). &
is a special type of command
separator used to background the preceding process.
So the command:
nohup myscript.sh >myscript.log 2>&1 </dev/null &
#\__/ \___________/ \__/ \________/ ^
# | | | | |
# | | | | run in background
# | | | |
# | | | don't expect input
# | | |
# | | redirect stderr to stdout
# | |
# | redirect stdout to myscript.log
# |
# keep the command running
# no matter whether the connection is lost or you logout
will move to background the command, outputting both stdout and stderr to myscript.log
without waiting for any input.