25 October 2014

nohup command in Linux

Often you come across a situation where you try to open a machine remotely using ssh and try to start a server or a run a command indefinitely.

But once you close the ssh session, your session also terminates and the background process also terminates. So here is a solution.

To open ssh remotely,

prompt $] ssh username@machinename
Ex: ssh root@172.16.1.1
Ex: ssh root@example.com 
prompt $] ssh -X username @machinename 
Ex. ssh -X root@172.16.1.1 

(this -X indicates the remote session can be opened in X window (GUI) mode)

Assume we need to start a httpd server in the remote machine.
we can issue the command like this

usage:
prompt$] nohup command 
if any error or log information may be stored in the nohup.out file. if you want to redirect to a file use the redirected symbol (1>  indicates standard output and 2> indicates standard Error). Specify the filenames for the output. Here is the typical nohup command to start the httpd server.

prompt $] nohup  /etc/init.d/httpd start  1> file.out 2> file.err & 
nohup is the command simply tells "no hangup". This will send the output to non-tty.
The above command will start the httpd server and any error or output will be written on to the files file.err and file.out respectively (The & indicates the background process that closes the current terminal and prompts for further inputs).
nohup
nohup in Linux


This command I learnt when i try to deploy Sage math libraries in a IBM Blade Server. We were really struggling to run the notebook in sagemath library. But finally accomplished using the nohup command.

The alternative to nohup is crontab or cronjob can be used.



 T S Pradeep Kumar