Is it possible to launch a command or Bash script exit terminal and NOT interrupt command?

My solution was to run cron at a specific time of day, but I'm sure there is something easier.


To avoid exit signals propagating to child processes of the terminal and shell, run the command with nohup, i.e.:

nohup cmd &
  • 1
    This is the correct answer. Without nohup, the started process is still considered a "child" of the terminal process and thus terminated if the terminal is closed. – Izzy Jul 13 '12 at 13:04
  • 3
    cmd & disown works too, since the & is treated like a ; command separator. The disown command removes the connection between the bash shell session and the backgrounded command. – lornix Jul 14 '12 at 20:34
  • 2
    zsh has a shorthand for this: cmd &|. – Thor Oct 26 '12 at 9:24
  • For this to work, I had to change a preference in Terminal.app. Under Profiles, select your active profile, then Shell>When the shell exits>Close if the shell exited cleanly – antoine May 9 '17 at 1:12

Using screen:

screen -S <session name> -d -m <your command>

after that you can quit the terminal, also you can reattach to it by:

screen -r <session name>

More info: reference


If you want to run a specific command or file every second or so in the background after exiting the terminal you could try this easy little thing;

nohup watch -n5 'bash script.sh' &

That would run scipt.sh every 5 seconds.

  • 1
    "nohup" is already covered by the accepted answer. And I'm pretty sure the asker mentioned cron because they were using it to say "Run this command a few seconds in the future", not to run it periodically. – David Richerby Aug 6 '15 at 21:01
  • 1
    My answer don't make things worse. Do see the point of down vote. Neural would be sufficient. – jamietelin Aug 6 '15 at 21:41

Put a "&" character after your command.


/home/your/script.sh &
  • 7
    in this case, when the terminal is closed, so is the process started by /home/your/script.sh -- as it was not detached from its "parent", but just "backgrounded". Use nohup to detach it for real. – Izzy Jul 13 '12 at 13:05
  • My bad, I didn't knew about that, but when I tested on my Debian, the command kept executing after closing the shell which launched it :/ – Flinth Jul 13 '12 at 14:03
  • 1
    I'm not sure where exactly the backgrounded process is attached to and when. But if you e.g. log in to a remote machine, it is definitely stopped as soon as you log out (except if it daemonized itself). So to be 100% sure, you rather use nohup -- which also logs all (now invisible) output into a file called nohup.out located in the directory you started the command from. – Izzy Jul 13 '12 at 14:10
  • Okay, well thank you for your explanations ^^ – Flinth Jul 13 '12 at 14:18
  • This answer might work ok when combined with the jobs command. Quite often i want to be able to get back to the shell process after backgrounding it. – djangofan Dec 7 '18 at 19:17

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy