1

J'ai un soft qui se lance avec un jar, en mode terminal comme ça :
java -jar programme.1.0.jar &
comment je lui indique de s'arrêter (c'est un service, y'a pas d'UI pour l'arrêter) sans être obligé de le kill ? (si je le kill après j'ai des fichiers locks à effacer avant de pouvoir relancer).

y'a un moyen d'envoyer CTRL+C à un programme java lancé comme ça ?
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

2

Sous Windows ou sous Linux ? C'est quoi comme programme (un truc standard ou un machin "maison") ?

SCPCD a été invité sur ce sujet.

Il sait peut-être...
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

Linux, ubuntu server lts
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

4

À checker sur le net on dirait que si c'est pas prévu explicitement par le programme il n'y a pas tellement de solution pour le fermer proprement.
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches / Meilleur smiley = #helico#

5

C'est ce que j'ai cru comprendre aussi : https://adambien.blog/roller/abien/entry/sigterm_sigint_sigkill_and_java

Tu peux essayer d'envoyer le signal de fin de processus (kill -SIGTERM pid) ou d'interruption (kill -SIGINT pid - c'est équivalent à appuyer sur Ctrl-C) à ton processus Java.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

6

Je ne sais pas.
J'aurai tendance a dire qu'il y a pas d'autres solution qu'un kill en espérant que passer en paramètre un signal est pris en compte :/

C'est sous init.d ou systemd ?
avatar

7

Et puis sinon la solution de la dernière chance c'est un script qui kill le process puis nettoie les fichiers sémaphore, ou bien encore un wrapper/launcher autour de ton exécutable java qui catchera les SIGxxx et fera le nettoyage des fichiers lui-même (ce qui revient au même qu'une solution à base de script).
avatar
"If you see strict DRM and copy protection that threatens the preservation of history, fight it: copy the work, keep it safe, and eventually share it so it never disappears. [...] no one living 500 years from now will judge your infringing deeds harshly when they can load up an ancient program and see it for themselves."

Benj Edwards - Why History Needs Software Piracy

- - -
Achat ou échange: topic de mes recherches / Meilleur smiley = #helico#

8

C'est pareil avec un programme en C a vrai dire.

Apres la methode "propre" reste de faire dans l'ordre

SIGINT (l'équivalent du Ctrl+C) parceque le programme peux l'intercepter et quitter proprement

Si par quitté apres X secondes, on peux envoyer un SIGTERM, qui est un moyen de tuer un peu plus salement mais laisse pas trop le choix

Et si vraiment apres Y secondes on envois un SIGKILL qui la dit a l'OS, sort la bombe-H.

Et si apres ca il n'est toujours pas mort, on reboot la machine.

Le seul probleme avec tout ca c'est de recuperer le PID de l'app, il y a plusieurs apps dédié pour ca, mais j'ai pas le nom en tete.


TL;DR: SIGINT et SIGTERM peuvent etre recuperer par l'app (avec in signal handler) pour essayer de s'arreter proprement, SIGKILL l'OS ne laisse pas le choix.
Si apres un SIGKILL l'app est toujours la, elle est bloqué quelque part dans le code systeme, et n'est pas tuable, et souvent le seul moyen de recuperer c'est un reboot.
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.