2015-11-16 1 views
1

[Ubuntu 14.04] J'ai une application de console java, et j'ai besoin de courir tout le temps (1er problème), ainsi que je peux ré-accéder à la console quand je veux (2ème problème).Console Java exécutée dans un écran de démarrage automatique sur Ubuntu

Pour résoudre le deuxième problème, j'utilise un écran, puis j'exécute le fichier jar. Alors que je peux ré-attacher l'écran pour accéder à mon application de console.

Je suis maintenant bloqué avec le 1er numéro. Je veux faire l'autostart de l'écran avec OS. Parce que j'ai besoin de l'application en cours d'exécution tout le temps. Quelqu'un me donne une idée? J'apprécie toute votre aide. Merci.


MISE A JOUR 17/11/2015: Avec @ aide pour Janos, il fonctionne très bien, sauf en utilisant @reboot. J'ai essayé crontab en commençant le script toutes les 5 minutes et ça a bien fonctionné. Mais quand je l'ai remplacé par @reboot, ça ne marchait plus!

Enfin j'ai choisi cette solution: Créer un écran avec un nom particulier, puis créer un fichier script sh pour vérifier si l'écran avec ce nom existait ou non. Sinon, lancez l'écran avec le fichier java. Enfin, créez une crontab pour exécuter le script toutes les 1h.

Un grand merci à @janos pour vos efforts et votre aide.

Répondre

1

Pour exécuter un programme après le démarrage du système, utilisez @reboot dans votre crontab:

@reboot /path/to/executable args 

Pour plus de détails, voir cette page d'aide Ubuntu:

https://help.ubuntu.com/community/CronHowto


Selon votre commentaires, vous semblez avoir des difficultés à exécuter Java + screen avec cron.Pour vous aider à déboguer, je vous suggère de créer un fichier de configuration personnalisée pour screen, appelons-le ~/screen-debug, avec un contenu comme celui-ci:

screen -t home 
screen -t java bash -c 'java -jar ...; echo Press enter to exit; read' 

Et utiliser une ligne crontab comme celui-ci pour le test:

*/5 * * * * screen -c ~/screen-debug -d -m -R java 

Qu'est-ce qui se passe ici:

  • Exécuter le travail toutes les 5 minutes
  • Utilisez un c écran spécifique onfiguration
  • écran de démarrage en mode détaché
  • Réutiliser la session de l'écran nommé « java »
    • Si une session avec ce nom n'existe pas, il créera
    • Si une session avec ce nom doesn « existe, il le réutiliser (démarre pas un autre écran)
  • il y aura deux fenêtres dans la session de l'écran:
    1. "home" étiqueté: un shell simple, comme si vous exécutez screen dans votre répertoire personnel
    2. Etiqueté "java": le programme Java, heureusement en cours d'exécution. Si ce n'est pas le cas, vous devriez voir le message d'erreur qui devrait vous aider à déboguer le problème, et une invite à "Appuyez sur Entrée pour quitter". Lorsque vous appuyez sur Entrée, le shell se termine dans cette fenêtre.

Une fois que vous obtenez ce travail, vous pouvez remplacer */5 * * * * avec @reboot.

+0

Je lance 'crontab -e' puis édite le fichier avec ce code: ' @reboot screen java -jar /mypath.jar myargs', puis je redémarre le système et je ne vois rien se produire. –

+0

Avez-vous l'expérience de l'exécution de commandes avec cron? Il est connu pour être notoirement rusé. Au lieu de '@ reboot', si vous utilisez' */5 * * * * '(exécuter la commande toutes les 5 minutes), ou similaire, cela fonctionne-t-il? – janos

+0

J'ai testé '* * * * *" echo cron travaillé >> /mypath/test.txt "' et ça a bien fonctionné! –