last updated: Mar 19, 2024

To launch a process in the background, use a trailing &. This command launches a subshell in the background:

(sleep 5 && echo "done") &

If you close your current shell, that job will die.

One way to make the job stay alive even if you close your shell is to use nohup

nohup bash -c "sleep 5 && echo "done" >> /tmp/done" &

I had to change the subshell from () to bash -c because nohup doesn't work with subshell notation.

By default, nohup will send the output of the command to a file called nohup.out:

If the standard output is a terminal, the standard output is appended to the file nohup.out in the current directory.

To avoid this, you can redirect your output somewhere. Here I've redirected it to a temp file:

nohup bash -c "npm i && make dist webpack stylus" &> $(mktemp) &

↑ up