I haven't been able to run cgminer as a background job which can then be brought to the foreground. Whenever I tried, cgminer just stops while in background - this is why I ended up using nohup. I'm open to better solutions, of course.
I don't know what you are using for init there are a few ways around it, if your using something oldish like SystemV (it has the /etc/init.d file structure) I have used this method a few times with limited success;-
http://askubuntu.com/questions/257808/how-can-i-use-init-d-or-some-other-method-to-run-a-screen-script-on-boot-up/The issue with SystemV is that it is brain dead when it comes to monitoring processes and if the miner dies in background its dead. You can do some sort of bash loop but its not ideal.
Id your using a more modern distro that has systemd instead everything gets easy, use this;-
[Unit]
Description=cgminer
After=network.target openntpd.service
[Service]
Type=forking
ExecStart=/usr/bin/screen -dmS cgminer /opt/minepeon/bin/cgminer --api-listen --api-allow W:127.0.0.1 --sharelog /opt/minepeon/log/share.log -c /opt/mi
nepeon/etc/miner.conf
ExecStop=/usr/bin/screen -S cgminer -X quit
Restart=always
[Install]
WantedBy=multi-user.target
And systemd will baby sit the process for you, you can even switch too it (screen -r) kill the miner and get dumped out and when you look at your process list it is still there

.
Neil