J'ai écrit un script bash pour exécuter mon fichier jar dans un environnement Ubuntu ou Red Hat. Voici mon script bash
#!/bin/bash
Java_HOME=/usr/lib/Java/jdk1.8.0_131
$Nohup Java -jar /home/chikin/Downloads/hardcoded.jar & tail -f Nohup.out
Mon script bash exécute le fichier jar que j’ai développé. J’espère imprimer la sortie du fichier jar dans Nohup.out
ou dans n’importe quel fichier txt, afin que je puisse facilement identifier tout problème, mais cela semble comme si rien n’imprimait quand j’exécutais le script, c’est l’impression de toutes les sorties dans le terminal. Mais lorsque j'exécute Nohup Java -jar /home/chikin/Downloads/hardcoded.jar &
directement à partir du terminal, il est capable d'imprimer toutes les sorties du fichier jar dans Nohup.out. Puis-je savoir pourquoi mon script ne fonctionne pas? Mon script ne parvient pas non plus à se déclencher à chaque fois que je redémarre ma machine Ubuntu. J'ai testé de nombreuses solutions, mais aucune d'entre elles ne fonctionnait bien.
Sauf si vous avez exporté la valeur de Nohup
dans l'environnement du script (par exemple, export Nohup=/usr/bin/Nohup
), alors $Nohup
sera évalué à la chaîne vide - d'où votre commande
$Nohup Java -jar /home/chikin/Downloads/hardcoded.jar
devient simple
Java -jar /home/chikin/Downloads/hardcoded.jar
alors Nohup
n'est pas appelé du tout. Vous voulez probablement
Nohup Java -jar /home/chikin/Downloads/hardcoded.jar & tail -f Nohup.out
(sans le $
).
Il est probablement préférable de rendre le fichier de sortie explicite:
Nohup Java -jar /home/chikin/Downloads/hardcoded.jar > Nohup.out & tail -f Nohup.out
comme indiqué dans la page de manuel, les règles pour le fichier de sortie dépendent du fait que la sortie standard soit un terminal ou non:
If standard output is a terminal, append output to 'Nohup.out' if pos‐
sible, '$HOME/Nohup.out' otherwise. If standard error is a terminal,
redirect it to standard output. To save output to FILE, use 'Nohup
COMMAND > FILE'.