Como fazer programa rodar independente do terminal? [RESOLVIDO]

1. Como fazer programa rodar independente do terminal? [RESOLVIDO]

Rafael Sampaio
9u31220

(usa Linux Mint)

Enviado em 20/01/2014 - 23:33h

Fala galera do VOL.

Eu executo um programa via terminal e aquele terminal fica preso rodando o programa, não posso fechá-lo nem rodar outro programa neste terminal. Se eu executar o programa em segundo plano com $programa& ele fica imprimindo coisas na tela mesmo em segundo plano mas aí eu posso fechar o terminal, o problema é que parece que o programa recebe o sinal 1 e reinicia.

Eu gostaria de executar um programa de maneira que o terminal ficasse livre, que o programa não ficasse imprimindo coisas na tela (a não ser que eu chame ele para o primeiro plano) e se eu fechar o terminal não gostaria que reiniciasse, é possível?

O programa que eu me refiro é um tipo de servidor feito por mim que eu pretendo rodar em um VPS, ele foi programado pensando em rodar no terminal mas eu não tenho certeza se esse é o melhor procedimento para servidores, ter que criar um terminal, logar com um usuário e executar no terminal ainda mais que em um VPS eu só terei acesso a um terminal ssh e isso complica tudo. Mas eu não tenho idéia de como rodar o servidor de forma diferenta da explicada acima.

Obrigado.


  


2. MELHOR RESPOSTA

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/01/2014 - 20:31h

O comando que permite executar um programa desvinculado do terminal é o nohup.

Agora, se é um servidor feito por você ele deve executar como um daemon em segundo plano. Aí, tem que resolver com programação mesmo ou através do script que iniciar esse programa. Estude sobre scripts de inicialização...

3. Re: Como fazer programa rodar independente do terminal? [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 21/01/2014 - 01:33h

Bom ai depende... se fosse você esperimentaria mandar a saída do programa para um log e chama-lo em background por um script ou mesmo um comando sei lá, tipo:

"./programa.bin >> /home/logs/log"&


4. Re: Como fazer programa rodar independente do terminal? [RESOLVIDO]

Perfil removido
removido

(usa Nenhuma)

Enviado em 21/01/2014 - 10:29h

Use o comando:

./programa.bin >> /dev/null

Isto vai enviar todas as mensagens para lugar nenhum, mas pelo menos não serão mostrados na tela.


5. Re: Como fazer programa rodar independente do terminal? [RESOLVIDO]

Rafael Sampaio
9u31220

(usa Linux Mint)

Enviado em 21/01/2014 - 11:59h

Obrigado, isso resolve parte dos meus problemas, mas como fazer com que o programa não reinicie?
E no caso de um VPS eu só terei um terminal ssh, se eu executar por esse terminal (mesmo se for em sugundo plano) e depois sair (deslogar meu usuário) será que ele vai continuar rodando?


6. Re: Como fazer programa rodar independente do terminal? [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 21/01/2014 - 19:27h

9u31220 escreveu:

Obrigado, isso resolve parte dos meus problemas, mas como fazer com que o programa não reinicie?
E no caso de um VPS eu só terei um terminal ssh, se eu executar por esse terminal (mesmo se for em sugundo plano) e depois sair (deslogar meu usuário) será que ele vai continuar rodando?


Bom o programa reiniciar sozinho é por que foi mal escrito colega... não sei o código logo não sei qual seria o problema.

Pode-se implementar um shell script para verificar se o programa esta rodando e subi-lo caso não esteja, ai é com você.


7. Re: Como fazer programa rodar independente do terminal? [RESOLVIDO]

Rafael Sampaio
9u31220

(usa Linux Mint)

Enviado em 21/01/2014 - 20:43h

px escreveu:

9u31220 escreveu:

Obrigado, isso resolve parte dos meus problemas, mas como fazer com que o programa não reinicie?
E no caso de um VPS eu só terei um terminal ssh, se eu executar por esse terminal (mesmo se for em sugundo plano) e depois sair (deslogar meu usuário) será que ele vai continuar rodando?


Bom o programa reiniciar sozinho é por que foi mal escrito colega... não sei o código logo não sei qual seria o problema.

Pode-se implementar um shell script para verificar se o programa esta rodando e subi-lo caso não esteja, ai é com você.



Todo programa bem ou mal escrito recebe o sinal 1 quando eu fecho o terminal. De acordo com http://www.vivaolinux.com.br/artigo/Sinais-em-Linux/?pagina=2 o sinal 1 (ou HUP) é o de reiniciar, mas parece que ele tem outra interpretação de avisar o progrma que o terminal fechou.



8. Re: Como fazer programa rodar independente do terminal? [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 21/01/2014 - 22:11h

9u31220 escreveu:

px escreveu:

9u31220 escreveu:

Obrigado, isso resolve parte dos meus problemas, mas como fazer com que o programa não reinicie?
E no caso de um VPS eu só terei um terminal ssh, se eu executar por esse terminal (mesmo se for em sugundo plano) e depois sair (deslogar meu usuário) será que ele vai continuar rodando?


Bom o programa reiniciar sozinho é por que foi mal escrito colega... não sei o código logo não sei qual seria o problema.

Pode-se implementar um shell script para verificar se o programa esta rodando e subi-lo caso não esteja, ai é com você.



Todo programa bem ou mal escrito recebe o sinal 1 quando eu fecho o terminal. De acordo com http://www.vivaolinux.com.br/artigo/Sinais-em-Linux/?pagina=2 o sinal 1 (ou HUP) é o de reiniciar, mas parece que ele tem outra interpretação de avisar o progrma que o terminal fechou.


Exatamente, todo programa bem ou mal escrito recebe o sinal 1... mas só os mal escritos param de rodar!

Como já disseram se este programa tem de ficar em background teria de ser feito um daemon do mesmo, ou seja, escrito da forma que "não feche"...

T+






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts