How to Run a Program as a Service (Silent)?
I Have a Python Based Server Which I Start from the Terminal. This Particular Instance of the Terminal Then Gives Control to the Program, and the Program Uses...
I have a python based server which i start from the terminal. This particular instance of the terminal then gives control to the program, and the program uses it as a kind of logging window, until its closed. Is this normal, or should i somehow try to start the program some other way in which it will simply show as an active process? If i close the terminal from which i started the program, the program dies with it.
Thank you
5 Answers
Turn it to a daemon (service)
daemon --name="yourservicename" --output=log.txt sh yourscript.sh
Even old bash is using & for sending processes to background, but there is few other ways too .. but basic two are these :
1.)$~ your_command > outputfile_for_stdout &
# runs your command in background, giving you only PID so you can exit that process by `kill -9 PID_of_process`
# & goes at the end of row
2.)$~ your_command > outputfile_for_stdout
# this will run your program normally
# press Ctrl + Z then program will pause
$~ bg
# now your program is running in background
$~ fg
# now your program came back to foreground
3.)you can run terminal window under screen command so it will live until you either kill it or you reboot your machine
$~ screen
$~ run_all_your_commands
# Ctrl + A + D will then detach this screen
$~ screen -r will reattach it
Some other useful commands :
$~ jobs
# will show you all processes running right now, but without PID
$~ ps
# will show you all processes for actual terminal window
$ servicename &
Using & causes the program to run in the background, instead of blocking the shell until the program ends.
You can also use:
start-stop-daemon -SbCv -x your_command
here is init.d script to start and stop a program in the background.
From the terminal you could also run screen or follow up you command with &. Easy way to run continuous processes.