Just to add the simplest/obvious answer, for completeness & posterity (only difference here is closing stdin, otherwise it's the same as the example in the question, including redirect stdout/stdin syntax):
(1) If you don't care about stderr & stdout:
$ nohup {prog} </dev/null >/dev/null 2>&1 &
(2) If you want to log stderr & stdout,
$ nohup {prog} </dev/null >/path/to/out.log 2>&1 &
(3) If you want to log stderr & stdout to separate files,
$ nohup {prog} </dev/null >/path/to/out.log 2>/path/to/err.log &
Rotate logs if you want to keep 'em; these examples will overwrite at every startup. Optionally name logs with a date, e.g., out-$(date '+%Y-%m-%d-%H:%M:%S').log Once you start going down that path,however, it's better to configure a service, as the other answers indicate, to let the system do the work for you. I do like screen / tmux, but only if I'm debugging a process that I want to actually reconnect the terminal eventually. Otherwise, I prefer background processes & logging.
nohupnordisownwill do anything related to theTERMsignal, only theHUPsignal (nohupmakes it ignore it anddisownstops the shell form sending it, so using both is not needed). Could you expand on the "etc." at the end?tmuxor GNUscreen?