it-swarm.com.de

So fahren Sie Eclipse über die Linux-Befehlszeile sauber herunter

Gibt es eine Möglichkeit, Eclipse über die Befehlszeile ordnungsgemäß herunterzufahren, sodass Dateien und Arbeitsbereiche gespeichert werden? kill -3 macht nichts. kill -1 und kill -15 (Standardeinstellung) führen dazu, dass Eclipse mit dem Popup für die JVM-Beendigung plötzlich beendet wird. kill -9 macht dasselbe.

Der Anwendungsfall ist, dass ich remote auf einem Computer arbeite, auf dem Eclipse geladen ist, und ich möchte Speicher sparen, indem ich Eclipse schließe, aber ich möchte, dass Eclipse zuerst seinen Status speichert.

Ich könnte VNC oder eine alternative Desktop-Sharing-Software verwenden, aber das ist wirklich schwer und ich würde eine Befehlszeilenlösung vorziehen.

EDIT: Systeminfo: RHEL5.1 64-Bit mit GNOME

30
Maian

Alle hinzugefügten ShutdownHooks ( weitere Informationen hier ) sollten von der JVM ausgeführt werden, wenn sie von SIGTERM beendet werden. Ich denke, das Problem ist die Art und Weise, wie Eclipse mit solchen Signalen umgeht.

Da ich nicht weiß, wie der Bereinigungsprozess in Eclipse implementiert wird, kann ich nur davon ausgehen, dass er nicht von einer ShutdownHook (und eher von einer Action oder etwas Ähnlichem) aufgerufen wird. 

Edit: pidge hat eine Antwort unten bereitgestellt, jedoch mit welchen Schritten Sie Eclipse sauber von der Befehlszeile aus herunterfahren können.

3
vehk

Ich habe das mit Hilfe von gigis Antwort herausgefunden und noch eine Frage . Sie benötigen die Dienstprogramme wmctrl und xdotool von Ihrem Paketmanager.

Wenn Sie nicht in einem Terminalemulator auf demselben Display ausgeführt werden, müssen Sie das richtige Display einstellen:

$ export DISPLAY=:0.0

Dann (irrelevante Fenster aus Beispiel):

# 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

Mindestens für Ubuntu 12.04 gearbeitet.

BEARBEITEN: Siehe Scarabeetles Antwort für die Änderungen, die Sie benötigen, um das Skript aus einem Skript herauszuarbeiten.

42
pidge

Nicht genug Reputation, um die Antwort von pidge zu kommentieren oben ... Es funktioniert fast, aber ich musste warten, bis Gnome3-Animationen fertiggestellt sind, und dann das Fenster "Confirm Exit" aktivieren:

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
7
Scarabeetle

Versuchen Sie, den Java-Prozess (die Java-Prozesse) zu beenden. ps -ea | grep Java

Haben Sie es mit wmctrl versucht? Wmtrl -l Listet die Fenster auf und Wmlctrl -c -P Sollte das Fenster schließen. Wie auch immer könnte Probleme mit dem Bestätigungsdialog von Eclipse haben.

1
gigi

Haben Sie kill -HUP (kill -1) versucht? - das ist der kanonische Weg, einem Prozess mitzuteilen, dass derjenige, der mit ihm interagiert hat, verschwunden ist und dass er angemessen aufräumen sollte

0
Chris Dodd

Die Antwort auf diese Frage war mir in einer ähnlichen Ausgabe hilfreich: Eclipse hängt, wie man es richtig tötet?

Nachdem ich den Eclipse-Prozess beendet hatte, blieb das Eclipse-Fenster dort, bis ich den Java-Prozess abbrach. 

0
user3131978