2011-06-17 19 views
26

Czy istnieje sposób na czyste zamknięcie Eclipse z wiersza poleceń, tak, że pliki i obszary robocze są zapisywane? kill -3 nic nie robi. kill -1 i kill -15 (domyślnie) powoduje, że Eclipse nagle wychodzi z wyskakującym okienkiem JVM. kill -9 robi to samo.Jak bezpiecznie wyłączyć system Eclipse z wiersza poleceń systemu Linux?

Używam tego, że pracuję zdalnie na komputerze z zainstalowanym Eclipse i chcę zaoszczędzić pamięć, zamykając Eclipse, ale chcę, aby Eclipse najpierw zapisał swój stan.

Mogę użyć VNC lub jakiegoś alternatywnego oprogramowania do udostępniania pulpitu, ale to naprawdę ciężkie, a ja wolę rozwiązanie z linii poleceń.

EDIT: Informacje o systemie: RHEL5.1 64-bit przy użyciu GNOME

Odpowiedz

3

Każda dodana ShutdownHooks (more info here) powinny być wykonywane przez JVM, gdy zakończone SIGTERM. Dlatego myślę, że problemem jest sposób programowania Eclipse w celu radzenia sobie z takimi sygnałami.

Ponieważ nie wiem, w jaki sposób proces czyszczenia jest zaimplementowany w środowisku Eclipse, mogę jedynie założyć, że nie jest on wywoływany przez żadną inną wartość: ShutdownHook (a raczej przez Action lub coś podobnego).

Edycja: pidge pod warunkiem an answer below jednak, który szczegóły kroki, które powinny umożliwiać zamknięcie Eclipse z linii poleceń.

+1

To prawda. Deweloper wtyczek może napisać wtyczkę do nasłuchu na gnieździe dla polecenia close i wywołać 'IWorkbench.close()'. Lub Zaćmienie i program uruchamiający można zaktualizować, aby obsługiwał coś więcej niż tylko działanie openFile. Ale domyślnie nie ma nic, co przychodzi z zaćmieniem. –

+0

dziś po prostu nazywam $ kill pid – jorgeu

+0

kill -HUP pid działa dobrze dla mnie. To powoduje zaćmienie systemu do wyłączenia, ale nadal daje mu zmianę, aby usunąć wszystkie pliki blokady itp. –

1

Czy próbowałeś z wmctrl? wmtrl -l zawiera listę okien i wmlctrl -c-P powinien zamknąć okno. W każdym razie możesz mieć problemy z dialogiem potwierdzenia zaćmienia.

+0

Zainstalowałem go i nieco go przekręciłem. Nie działa zdalnie (przez powłokę SSH). Lokalnie nie wyświetla nawet okna Zaćmienie. Może używam tego źle? – Maian

+0

Musisz ustawić zmienną środowiskową DISPLAY 'export DISPLAY =: 0.0', jeśli zdalnie uruchamiasz tę komendę. Zobacz moją odpowiedź na samouczek. – pidge

0

Czy próbowałeś kill -HUP (kill -1)? - to jest kanoniczny sposób powiedzieć, że ktokolwiek został proces interakcji z nim zniknął i należy go oczyścić odpowiednio

+0

Nie, to nie zadziałało - Eclipse wychodzi nagle (pojawia się komunikat o wygaśnięciu JVM). – Maian

38

Wyjaśniałem to z pomocą gigi's answer i another question. Będziesz potrzebował narzędzi wmctrl i xdotool od swojego menedżera pakietów.

Chyba że działa w emulatorze terminala na tym samym ekranie, trzeba ustawić właściwą display:

$ export DISPLAY=:0.0 

wówczas (nieistotne okna pomijana od przykładzie):

# 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 

# Find the window id 
$ xdotool search Exit 
Defaulting to search window name, class, and classname 
50347053 

# Send return key to the window 
$ xdotool key --window 50347053 Return 

pracował dla mnie na Ubuntu 12.04, przynajmniej.

EDYCJA: Zobacz Scarabeetle's answer dla poprawek, które trzeba wykonać, aby działał ze skryptu.

+3

dzięki! To działało idealnie. Jeden drobny punkt ulepszenia 'xdotool search Exit' jest niepotrzebny, ponieważ zwraca dziesiętną postać' 0x03003c2d'. Możesz bezpośrednio użyć identyfikatora okna szesnastkowego z 'wmctrl -l' jak' klucz xdotool - okno powrotu 0x03003c2d' i pominąć krok wyszukiwania. – rkyser

7

mało reputacji komentować pidge's answer powyżej ... To prawie działa, ale musiałem czekać na jakiś animacji Gnome3 do końca i wtedy dać ostrość do okna „Potwierdź Exit”:

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 
2

Spróbuj zabić proces (y) Java.Czy ps -ea | grep java

0

Odpowiedź na to pytanie było pomocne dla mnie w podobnej kwestii: Eclipse hanging, how to kill it properly?

Po zabiłem proces eclipse okno Eclipse przechowywane tam aż zabiłem proces java (nie mają javaw proces jak w powyższej odpowiedzi. Miałem tylko jeden proces "java", który po zabiciu naprawił problem).

Powiązane problemy