![]() |
![]() |
|
|
For running jobs overnight and without interruption, it is nice to know how these commands work.
| nohup | This command is designed to let a process continue
running after you have logged out. nohup means no-hangup. Normally
when you log out, any non-backgrounded processes are sent the HUP or TERM
signal so they will
stop running (see note from Greg). with nohup that process is adopted by process
#1 ( the root process ) and will continue to run while you are out having
lunch, dinner, sleeping or whatever. A good way to run something in this
manner is to set a job running with nohup and run the output of
the process (both stdout and stderr) to a file. Then your data can be
analyzed later. The simplest case is as follows.
Lets say you have a program called longjob which you requires
a few cmdline args and which outputs some information. Using the
following command: |
| nice | Now that you know how to start jobs in the background, you
need to know how to make those jobs be considerate of other users on the
machine. The command nice is used to change the priority of
a particular job. For most cases, nice will not significantly
affect the speed of the job. If no one is working on the machine, there
are very few processes running. So even though the 'niced' process is
at a lower priority, it still gets the enough processing time to run
at nearly its normal speed. If someone sits down on the machine and
starts to work, the 'niced' process will get less processor time but
the user will not be upset that the machine is running so slow. So it
is nice to nice your long jobs. This works well in conjunction with nohup as well. Simply run the above command as follows:
% nohup nice -20 longjob arg1 arg2 >& output.information &
This will decrement the job priority by 20 and run it in the background
without hanging up on logout.You'll have to consult the man pages on nice for the exact commandline syntax. I seem to recall a difference between the SGI and SUN calling params. Also, it depends if you are using the csh built-in command, or the binary standalone program. |
Last Updated: $Date: 1997/11/21 23:04:52 $NOTE from G.Sherwood:
One note about the nohup command. I don't think tcsh (also csh on Solaris)
will send the HUP signal by default to any background processes
when it exits. You have to use the 'hup' builtin command to
get it to do this. I'm just pointing this out because I never
use the nohup command when running long jobs - I just put them in the
background.