Como executar um programa como um serviço (silencioso)?

18

Eu tenho um servidor baseado em python que eu inicio a partir do terminal. Esta instância particular do terminal, então, dá o controle ao programa, e o programa usa-o como uma espécie de janela de registro, até que seja fechado. Isso é normal, ou eu deveria de alguma forma tentar iniciar o programa de alguma outra forma em que ele simplesmente mostrará como um processo ativo? Se eu fechar o terminal do qual iniciei o programa, o programa morre com ele.

Obrigado

    
por U2ros 22.09.2012 / 14:08

5 respostas

7

Até mesmo o velho bash está usando & amp; para enviar os processos para o segundo plano, mas há algumas outras maneiras também ... mas os dois básicos são estes:

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

Alguns outros comandos úteis:

   $~ jobs
        # will show you all processes running right now, but without PID
   $~ ps
        # will show you all processes for actual terminal window
    
por lukassos 23.09.2012 / 19:42
24

Transforme em um daemon (serviço) em daemon --name="yourservicename" --output=log.txt sh yourscript.sh

    
por user91632 22.09.2012 / 14:29
5
$ servicename &

Usar & faz com que o programa seja executado em segundo plano, em vez de bloquear o shell até que o programa termine.

    
por dixoncx 22.09.2012 / 17:25
1

Você também pode usar:

start-stop-daemon -SbCv -x your_command

aqui está o script init.d para iniciar e parar um programa no fundo.

    
por druss 12.06.2015 / 23:57
0

No terminal, você também pode executar screen ou seguir o comando com & . Maneira fácil de executar processos contínuos.

    
por Nicholas 09.02.2018 / 02:55