Como executar um script php através da linha de comando (e mantê-lo funcionando após log out)

StackOverflow https://stackoverflow.com/questions/575345

Pergunta

Eu estou tentando executar um script php no meu servidor privado virtual remoto através da linha de comando. O processo que eu sigo é:

  1. Inicie sessão no servidor usando PuTTY
  2. Na linha de comando prompt, digite> php myScript.php

O script é executado apenas multa. Mas o problema é que o script pára de funcionar assim que eu fechar a janela do console do PuTTY.

Eu preciso do script para continuar a correr sem parar. Como eu posso fazer isso? Estou executando Debian no servidor.

Agradecemos antecipadamente.

Foi útil?

Solução

Eu acredito que Ben tem a resposta correta, ou seja, usar o comando nohup. nohup significa nohangup e significa que seu programa deve ignorar um sinal de hangup, gerado quando você está sessão putty for desligada tanto por você logout ou porque você tem sido excedido.

Você precisa estar ciente de que a saída do seu comando será anexado a um arquivo no diretório atual chamado nohup.out (ou $ HOME / nohup.out se as permissões de impedi-lo de criar nohup.out no diretório atual) . Se o seu programa gera um monte de saída, então este arquivo pode ficar muito grande, alternativamente, você pode usar o redirecionamento de shell para redirecionar a saída do script para outro arquivo.

nohup php myscript.php >myscript.output 2>&1 &

Este comando irá executar o script e enviar todas as saídas (padrão e erro) ao myscript.output arquivo que será criado de novo cada vez que você executar o programa.

A final e faz com que o script para ser executado em segundo plano para que você possa fazer outras coisas enquanto ele está sendo executado ou o logout.

Outras dicas

Uma maneira fácil é executá-lo embora nohup:

nohup php myScript.php & 

Se você executar o comando php em um screen, retire a screen, então ele não vai terminar quando você fechar o console.

Tela é um multiplexer terminal que permite que você gerencie vários processos através de um terminal físico. Cada processo recebe sua própria janela virtual, e você pode saltar entre janelas virtuais que interagem com cada processo. Os processos geridos pela tela continuar a executar quando sua janela não está ativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top