it-swarm.com.ru

Как правильно отключить Eclipse из командной строки Linux?

Есть ли способ полностью отключить Eclipse из командной строки, чтобы сохранить файлы и рабочие области? убить -3 ничего не делает. kill -1 и kill -15 (по умолчанию) приводят к внезапному завершению Eclipse с всплывающим окном завершения JVM. kill -9 делает то же самое.

Сценарий использования: я работаю удаленно на компьютере с загруженным Eclipse и хочу сохранить память, закрыв Eclipse, но я хочу, чтобы Eclipse сначала сохранил его состояние.

Я мог бы использовать VNC или какое-нибудь альтернативное программное обеспечение для обмена рабочими столами, но это действительно тяжело, и я бы предпочел решение для командной строки.

Правка: Системная информация: RHEL5.1 64-разрядная с использованием GNOME

30
Maian

Любая добавленная ShutdownHooks ( дополнительная информация здесь ) должна быть выполнена JVM, когда завершена SIGTERM. Поэтому, я думаю, проблема в том, как Eclipse запрограммирован для обработки таких сигналов.

Поскольку я не знаю, как процесс очистки реализован в Eclipse, я могу только предположить, что он не вызывается никаким ShutdownHook (а скорее Action или чем-то подобным). 

Правка: pidge предоставил ответ ниже однако, в котором подробно описываются шаги, которые должны позволить вам аккуратно завершить Eclipse из командной строки.

3
vehk

Я понял это с помощью ответа Гиги и другого вопроса . Вам понадобятся утилиты wmctrl и xdotool от вашего менеджера пакетов.

Если вы не используете эмулятор терминала на одном и том же дисплее, вам нужно установить правильный дисплей:

$ export DISPLAY=:0.0

Тогда (несоответствующие окна исключены из примера):

# 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

Работал у меня на Ubuntu 12.04, по крайней мере.

Правка: См. ответ Скарабита для настройки, вам нужно, чтобы он работал из сценария.

42
pidge

Не хватает репутации, чтобы комментировать ответ Пиджа выше ... Это почти работает, но мне нужно было дождаться окончания анимации Gnome3 и затем сосредоточиться на окне «Подтверждение выхода»:

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

Попробуйте убить процесс Java (ов). Do ps -ea | grep Java

3
Sriram Bhargav Karnati

Вы пробовали с помощью wmctrl? Wmtrl -l Перечисляет окна и Wmlctrl -c -P Должны закрыть окно . В любом случае у вас могут возникнуть проблемы с диалоговым окном подтверждения Eclipse.

1
gigi

Вы пробовали kill -HUP (kill -1)? - это канонический способ сказать процессу, что тот, кто с ним взаимодействовал, ушел, и он должен очиститься соответствующим образом

0
Chris Dodd

Ответ на этот вопрос был мне полезен в аналогичной проблеме: Eclipse висит, как правильно его убить?

После того, как я убил процесс Eclipse, окно Eclipse оставалось там до тех пор, пока я не убил процесс Java (у меня не было процесса javaw, как в ответе выше. У меня был только один процесс «Java», который при уничтожении устранял проблему). 

0
user3131978