Eu desenvolvi um rastreador em PHP que analisa uma URL com cabeçalhos específicos e coloca todas as URLs de conteúdo na fila. Funciona bem.
Desenvolvi esse código no ubuntu 14.04 e coloquei um arquivo .conf na pasta / etc / init com este conteúdo:
# Info
description "Warm the varnish to get the list of products"
author "Juanjo Aguilella"
# Events
start on startup
stop on shutdown
# Automatically respawn
respawn
respawn limit 100 5
# Run the script
# Note, in this example, if your PHP script return
# the string "ERROR", the daemon will stop itself.
script
[ $(exec /usr/bin/php -f /var/www/crawler.php) = 'ERROR' ] && ( stop; exit 1; )
end script
Funciona bem no Ubuntu 14.04 e posso iniciar e parar o daemon usando "sudo service crawler start" e "sudo service crawler stop"
Agora, no ambiente de produção, tenho um servidor Ubuntu 16.04 e coloco o mesmo código na mesma pasta, mas ao tentar iniciar o serviço, recebo a mensagem "Falha ao iniciar o crawler.service. Unidade crawler.service não encontrada"
Você pode me ajudar?
Saudações
ubuntu
daemon
ubuntu-16.04
Juanjo Aguilella Marés
fonte
fonte
Respostas:
Adicionando a resposta a @Juanjo Aguilella Marés, e depois de copiar / vincular seu script
/etc/systemd/system
, você poderá iniciá-lo automaticamente quando o servidor iniciar:Source Digital Ocean
Também é uma boa idéia não executá-lo como root. Apenas mude a
user
linha do seu script:fonte
Eu resolvi o problema:
a) Crie um arquivo crawler.service em / etc / systemd / system com este código:
meu arquivo bash contém diferentes execuções em paralelo ao mesmo arquivo php com este código:
o sono entre execuções é necessário para salvar o problema da execução tão rapidamente do serviço.
Se você tem alguma sugestão sobre a solução, por favor, comente, eu não tenho muita experiência em arquivos bash e arquivos systemd, mas no momento funciona bem.
fonte
O sistema init para 14.04 é inicial. O sistema init para 16.04 é systemd. Você deve converter seu script inicial em um arquivo de unidade systemd . Existem muitos outros recursos disponíveis também.
fonte
1] Para criar um serviço, vá para / etc / systemd / system /
2] Crie um arquivo de serviceName, por exemplo, chatSocket.service
3] Coloque o conteúdo para arquivar como indicado abaixo
4] Recarregue a configuração pressionando:
sudo systemctl daemon-reload
5] Ative o serviço por padrão para que, quando o serviço de inicialização do sistema for iniciado automaticamente:
sudo systemctl enable my_service.service
6] Inicie seu serviço usando o comando abaixo:
sudo systemctl start my_service.service
fonte