thanks, Jan Mercl and Péter Szilágyi.
sorry, hardware setup is not a good exaple for this.
for my poor english, I write the question in short but make more confusion.
as we know, go 1.0.x runtime has not a office support for daemonize .
and I have write a pure go package named xdaemon, like ruby daemonize do:
1. start/stop/status/reload;
2. run in background or foreground;
2. worker processor monitor
3. run worker in no-root user;
4. when run in root, initial tcp socket listener on port < 1024 and send the socket fd to children worker(run as nobody) for security;
5. logging, signal handle etc.
I done this by using os.Exec with specail command args, and it work greate.
for easy to use, I done every thing in package init();
a new application who using xdaemon can focus at the app logic without deal with daemonize/listening/seuid...
xdaemon should be the first package init() to run, to make sure the other package init() only run in worker.
BTW: unix command nohup, can not done all we need.
ruby daemonize: