Existe-t-il un moyen de fermer proprement Eclipse à partir de la ligne de commande, de telle sorte que les fichiers et les espaces de travail soient enregistrés? tuer -3 ne fait rien. kill -1 et kill -15 (valeur par défaut) oblige Eclipse à se fermer brusquement avec une fenêtre contextuelle de terminaison de machine virtuelle Java. kill -9 fait la même chose.
Le cas d'utilisation est que je travaille à distance sur une machine sur laquelle Eclipse est chargé et que je souhaite économiser de la mémoire en fermant Eclipse, mais je souhaite qu'Eclipse enregistre d'abord son état.
Je pourrais utiliser VNC ou un autre logiciel de partage de bureau, mais c'est vraiment lourd et je préférerais de loin une solution en ligne de commande.
EDIT: Informations système: RHEL5.1 64 bits sous GNOME
Toute variable ajoutée ShutdownHooks
( plus d’informations ici ) doit être exécutée par la machine virtuelle lorsqu’elle est terminée par SIGTERM
. Par conséquent, je pense que le problème est la manière dont Eclipse est programmé pour traiter de tels signaux.
Comme je ne sais pas comment le processus de nettoyage est implémenté dans Eclipse, je ne peux que supposer qu'il n'est appelé par aucune ShutdownHook
(et plutôt par une Action
ou quelque chose de similaire).
Edit: pidge a fourni une réponse ci-dessous mais quelles sont les étapes à suivre pour vous permettre d’arrêter Eclipse proprement à partir de la ligne de commande.
J'ai compris cela avec l'aide de réponse de gigi et une autre question . Vous aurez besoin des utilitaires wmctrl
et xdotool
de votre gestionnaire de paquets.
Sauf si vous utilisez un émulateur de terminal sur le même écran, vous devez définir le bon écran:
$ export DISPLAY=:0.0
Puis (fenêtres non pertinentes supprimées de l'exemple):
# List windows
$ wmctrl -l
...
0x030000fa 0 kcirb Java - Eclipse
# Tell Eclipse window to close gracefully
$ wmctrl -c Eclipse
# Darn, there's a confirmation dialog
$ wmctrl -l
...
0x030000fa 0 kcirb Java - Eclipse
0x03003c2d 0 kcirb Confirm Exit
# Send return key to the window
$ xdotool key --window 0x03003c2d Return
Travaillé pour moi sur Ubuntu 12.04 au moins.
EDIT: Voir Réponse de Scarabeetle pour les ajustements nécessaires pour le faire fonctionner à partir d’un script.
Pas assez de réputation pour commenter la réponse de pidge ci-dessus ... Cela fonctionne presque, mais je devais attendre la fin de l'animation Gnome3, puis mettre en évidence la fenêtre "Confirmer la sortie":
export DISPLAY=:0.0 # Do this in main X session
wmctrl -c "Eclipse SDK" # Close main window
sleep 1 # Wait for animation
wmctrl -a "Confirm Exit" # Give focus to the dialog
# Send a Return keypress to press the OK button
xdotool key --window $(xdotool search "Confirm Exit") Return
Essayez de tuer les processus Java. Faire ps -ea | grep Java
Avez-vous essayé avec wmctrl? Wmtrl -l Répertorie les fenêtres et Wmlctrl -c -P Devrait fermer la fenêtre. La boîte de dialogue de confirmation d’Eclipse peut poser problème.
Avez-vous essayé kill -HUP
(kill -1
)? - C’est le moyen canonique de dire à un processus que celui qui interagissait avec lui est parti et qu’il doit être nettoyé de manière appropriée
La réponse à cette question m'a été utile dans un problème similaire: Eclipse suspendu, comment le tuer correctement?
Après avoir tué le processus Eclipse, la fenêtre Eclipse y a été conservée jusqu'à ce que je supprime le processus Java.