2017-10-16 4 views
0

J'ai le problème suivant lors de l'utilisation du script bash.L'exécution du script bash en tant que service et l'écriture dans un autre script bash ne fonctionnent pas

Voici ce que j'ai dans le fichier script « démarrage »:

#!/bin/bash 

java -cp ../lib/online-store.jar:../lib/* com.online.store.Main 

OnlineStorePID=$! 

if [$OnlineStorePID -ne 0] then 
    echo "kill $OnlineStorePID" > shutdown 
fi 

En fait ce que je fais, est d'exécuter une application java, obtenir le numéro de processus et d'écrire à un autre fichier bash. Tout ce processus fonctionne quand j'exécute le script de démarrage, et le fichier de script 'shutdown' est mis à jour avec succès avec une ligne contenant 'kill processIDNumber' cmd.

Maintenant, je l'ai essayé de créer un service sur Ubuntu pour ce script en utilisant les commandes suivantes:

sudo systemctl daemon-reload 
sudo systemctl enable online-store.service 
sudo systemctl start online-store 

Quand je commence le service de l'application java démarre correctement, mais le fichier de script d'arrêt est pas mis à jour. Il semble que l'echo "kill" ligne $ OnlineStorePID "> shutdown" n'est pas exécutée. Je ne reçois aucune erreur de plainte. Est-ce que quelqu'un sait quel est le problème ici.

Voici mon fichier de service:

[Unit] 
Description=Online store service 
Requires=multi-user.target 
After=multi-user.target 
Wants=mysql.service 

[Service] 
WorkingDirectory=/home/user/Desktop/online-store-service 

#path to executable. 
ExecStart=/home/user/Desktop/online-store-service/bin/startup 
ExecStop=/home/user/Desktop/online-store-service/bin/shutdown 

SuccessExitStatus=143 
TimeoutStopSec=10 
Restart=on-failure 
RestartSec=5 

[Install] 
WantedBy=multi-user.target 
+0

Minecraft à la rescousse;) https: //minecraft.gamepedia .com/Tutoriels/Ubuntu_startup_script – mko

+0

Qu'est-ce qui se trouve dans votre fichier de service? – 123

+0

Vous n'avez pas besoin du service 'execstop' pour vous, pas besoin d'essayer de gérer vous-même les pids. – 123

Répondre

0

Modifier votre script et exécutez la commande java comme ci-dessous en tant que processus de retour au sol

java -cp ../lib/online-store.jar:../lib/* com.online.store.Main >/dev/null 2>&1 & 
+0

Cela fonctionne (le script d'arrêt est mis à jour avec le cmd) mais j'obtiens une erreur sur le démarrage du service "Échec avec le résultat 'exit-code'" –

+0

fournissez-moi votre script d'arrêt avec tous les détails. –