You could use screen or a similar tool like tmux or byoblu.
Otherwise use the NOHUP command.
nohup is a POSIX command to ignore the HUP (hangup) signal. The HUP signal is, by convention, the way a terminal warns dependent processes of logout.
Output that would normally go to the terminal goes to a file called nohup.out if it has not already been redirected.
nohup is a low-level utility simply configuring a command to ignore a signal. As seen below, nohup is very far from being a full-featured batch system solving all the problems of running programs asynchronously.
$ nohup abcd &
$ exit
Alternatives:
The screen or tmux command can also detach a process from the current shell. It allows to reattach to the process later on.
e.g. the following call will run somescript.sh detached from SIGHUP and in the background:
$ screen -A -m -d -S somename ./somescript.sh &
https://en.wikipedia.org/wiki/Nohup
My advice is to learn to use screen (or tmux) so you can later re-attach the process to the main shell and interact with it.
bitcoind -daemon
? Otherwise, what version of bitcoind are you using, and what do you see in debug.log?