2010-04-27 5 views
6

Bien que cette question ait été résolue ici plusieurs fois sur SW, je n'ai pas trouvé de conclusion sur la meilleure approche.Meilleure façon de démoniser une application Java sous Linux

Je ne cherche pas à utiliser un wrapper externe, car je les ai trouvés en train de lancer le processus java sous un niveau inférieur, ce qui réduit potentiellement les performances, donc il semble que seules les méthodes shell restent.

I jusqu'à présent trouvé 3 méthodes shell différentes:

  • start-stop-daemon
  • RedHat démon fonction init.d
  • nohup au démarrage/désavouer après le début

Qu'est-ce que les gens utilisent, et peuvent recommander comme la méthode la plus fiable?

Merci.

+0

"Ce que vous utilisez" les questions d'interrogation sont hors sujet pour SO – Raedwald

+0

"Ce que vous utilisez" EST le sujet, il est SI ennuyeux que vous décidiez de fermer simplement les choses parce qu'elles sont "basées sur l'opinion". Ironique n'est pas? – Nazar

Répondre

5

Alors que la réponse standard à cette semble être jsvc, j'ai utilisé daemon tools de djb pour être un excellent moyen de faire quelque chose dans un démon.

J'ai java, python et quelques scripts shell qui s'exécutent tous en tant que démons, avec un moyen simple de les démarrer/arrêter et une bonne journalisation.

J'ai déjà utilisé daemontools en tant qu'utilisateur root sur initctl comme prévu, mais après quelques mois, j'ai décidé de l'exécuter manuellement, sous un utilisateur normal, et en utilisant svscan-start pour une meilleure journalisation.

-1

Vous pouvez essayer d'utiliser screen (écran de démarrage, puis lancer le programme java, puis fermez [pas quitter] l'écran)

+0

Pas tout à fait une suggestion terrible, je le fais pour certaines choses. Mais je pense que c'est loin d'avoir l'intention de lancer quelque chose en tant que démon. Encore, merci pour la suggestion. –

1

Je pas exclure les emballages extérieurs complètement.
J'ai remarqué un logiciel très respecté utilisant le Tanuki Wrapper http://wrapper.tanukisoftware.org/.

Cela présente l'avantage supplémentaire que le programme peut également être exécuté facilement en tant que service Windows, avec une approche cohérente.

+0

Il ne sera pas capable de l'exécuter en tant que service Windows sous Linux. – danben

+0

Eh bien, je n'ai pas vraiment regardé les développements mono de près, mais ce n'était pas le point de toute façon. Pourquoi restreindre l'application à l'exécution sur Linux uniquement inutilement. Peut-être que d'autres peuvent trouver le besoin de lancer l'application et se retrouver dans une position où ils ne peuvent fonctionner que sur Windows. Plutôt que de chasser les utilisateurs potentiels, pourquoi ne pas limiter les restrictions et encourager la réutilisation. – crowne

5

Si je veux exécuter une application en arrière-plan en tant que démon, je le fais comme ceci:

nohup java -jar MyJar &

Il n'y a rien particulièrement peu fiables à ce sujet - il nohup empêche de recevoir un SIGHUP lors de la déconnexion et & exécute un processus en arrière-plan.

Facultativement, vous pouvez rediriger la sortie vers autre chose que nohup.out.

2

J'utiliserais la fonction démon RedHat init.d. Cela vous permet de redémarrer l'application lorsque le serveur le fait. L'exécution de nohup ne gère pas les redémarrages du serveur, etc.

1

J'ai déjà utilisé Akuma avec succès. Le fait que ce soit une bibliothèque Java facilite vraiment les choses, l'intégration de la fonctionnalité est triviale.

3

Jetez un oeil à http://yajsw.sourceforge.net/. Il s'agit d'une réimplémentation gratuite et quelque peu compatible de Java Service Wrapper TanukiSoftware avec un support 64 bits gratuit. Il existe également un tableau comparatif pour YAJSW, JSW, ACD et L4J.

Questions connexes