Tutorial :How do I start a command from terminal so that terminal is not the parent?



Question:

Let's take example of a command "example-command".

  1. I open terminal
  2. I write example-command in terminal, and example-command executes.
  3. Now if I close terminal, example-command gets killed too.
  4. I now try with "example-command &", but the same behaviour.

How do I execute a command so that when I close the terminal, the command doesn't get terminated?


Solution:1

There are two ways, identical in result.

  1. Use nohup when you start your program. E.g., nohup example-command. You can background and work with it normally; it will simply continue running after you've quit.
  2. Alternatively, as @alamar noted, if you use bash as your shell, you can us the disown command. Unfortunately, as far as I know, disown is bash-specific; if you use another shell, such tcsh, you may be restricted to the nohup form above.


Solution:2

Please search for similar questions first.

Besides the ways listed above, you can do:

setsid command_name  

For example:

setsid xclock  

Thanks


Solution:3

In Zsh (not bash) you can:

example-command &; disown {pid}  

or just

example-command &; disown  


Solution:4

You could also consider using the screen command.


Solution:5

nohup example-command


Solution:6

You can also use the 'at' or 'batch' commands and give it the current time.


Solution:7

disown is a bash builtin. You could create a wrapper shellscript for your command such as

#!/bin/bash  $1 &  P=`which $1`  disown `pidof ${P}`  

Not the most robust script (by any means) but may help get you going. For example:

$./launch_script.sh myProgram  

You can also do this in the source of the program if you are editing it.


Solution:8

Run: example-command

Press: Control-Z

Run: bg


Note:If u also have question or solution just comment us below or mail us on toontricks1994@gmail.com
Previous
Next Post »