Não tenho ideia por onde começar a procurar. Tenho lido sobre daemons e não entendi o conceito.
Mais detalhes :
- Estou escrevendo um rastreador que nunca para e rastreia RSS na internet.
- O rastreador foi escrito em java - portanto, é um jar agora.
- Sou administrador de uma máquina que possui Ubuntu 11.04.
- Há algumas chances de a máquina travar, então gostaria que o rastreador fosse executado sempre que você inicializar a máquina.
- Além disso, gostaria que ele continuasse funcionando mesmo quando eu desconectasse. Não tenho certeza se isso é possível, mas na maioria das vezes estou desconectado e ainda quero rastreá-lo.
Alguma ideia? Alguém pode me apontar na direção certa?
Apenas procurando a solução mais simples.
Responder1
Aqui está uma maneira fácil de fazer isso usando SysVInit. Instruções:
Crie o script de início e parada do seu aplicativo. Coloque-o em algum diretório, no nosso exemplo é:
- Iniciar roteiro:
/usr/local/bin/myapp-start.sh
- Script de parada:
/usr/local/bin/myapp-stop.sh
Cada um fornecerá instruções para executar/parar o aplicativo. Por exemplo, o
myapp-start.sh
conteúdo pode ser tão simples quanto o seguinte:#!/bin/bash java -jar myapp.jar
Para o script de parada pode ser algo assim:
#!/bin/bash # Grabs and kill a process from the pidlist that has the word myapp pid=`ps aux | grep myapp | awk '{print $2}'` kill -9 $pid
- Iniciar roteiro:
Crie o seguinte script (
myscript
) e coloque-o em/etc/init.d
./etc/init.d/myscript
contente:#!/bin/bash # MyApp # # description: bla bla case $1 in start) /bin/bash /usr/local/bin/myapp-start.sh ;; stop) /bin/bash /usr/local/bin/myapp-stop.sh ;; restart) /bin/bash /usr/local/bin/myapp-stop.sh /bin/bash /usr/local/bin/myapp-start.sh ;; esac exit 0
Coloque o script para iniciar com o sistema (usando SysV). Basta executar o seguinte comando (como raiz):
update-rc.d myscript defaults
PS: Eu sei que o Upstart é ótimo e bla bla, mas prefiro o antigo sistema de inicialização SysV.
Responder2
Sim! É possível. :)Subir na vidaé o caminho a seguir para garantir que o serviço continue funcionando. Possui cinco pacotes, todos instalados por padrão:
- Upstart daemon init e utilitário initctl
- upstart-logd fornece o daemon logd e o arquivo de definição de tarefa para o serviço logd
- upstart-compat-sysv fornece arquivos de definição de trabalho para as tarefas rc e as ferramentas reboot, runlevel, shutdown e telinit que fornecem compatibilidade com SysVinit
- startup-tasks fornece arquivos de definição de trabalho para tarefas de inicialização do sistema
- system-services fornece arquivos de definição de trabalho para serviços tty
O aprendizado é muito prazeroso e vale a pena. A Upstart tem um site:http://upstart.ubuntu.com/
Responder3
3 sugestões rápidas...
Criar umaSscript tart em
/etc/rc3.d
(modo de console multiusuário) com correspondenteKmal scripts/etc/rc.0
e/etc/rc6.d
para encerrar seu programa Java de maneira controlada quando o sistema é desligado (runevel 0) ou reinicializado (runlevel 6) ConsulteUma introdução aos níveis de execução.Você poderá iniciar seu aplicativo Java no nível de execução 2 (rc2.d), mas, como rastreador, ele precisará de TCP/IP. Portanto, certifique-se de que seu serviço de rede esteja disponível/iniciado no nível de execução 2 com antecedência. A rede está definitivamente em alta no nível de execução 3.
/etc/init.d
contém todos os scripts de início/eliminação reais./etc/rcN.d
os diretórios contêm apenas links para eles, prefixados com S ou K para iniciá-los ou eliminá-los respectivamente, por nível de execução N.Um processo executado
crond
deve persistir entre logouts. Talvez adicione-o ao seu crontab.Um processo executado
nohup
também deve persistir. Vernohup: executa um comando mesmo depois de sair.$ nohup java -jar myapp.jar &
Por padrão,
myapp.jar
a saída padrão irá para um arquivo chamado./nohup.out
, ou$HOME/nohup.out
se o primeiro não for gravável.
Responder4
Scripts de inicialização simples com verificação de versão Java para Linuxagente de autenticação e janelasauth-agent.bat