Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

Я понял это с помощью gigi answer и еще один вопрос. Вам понадобится 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 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

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

РЕДАКТИРОВАТЬ: см. ответ Scarabeetle за те настройки, которые вам нужны, чтобы заставить его работать с script.

Ответ 3

Недостаточно репутации, чтобы прокомментировать ответ на вопрос... Он почти работает, но мне нужно дождаться окончания анимации 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

Ответ 4

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

Ответ 5

Вы пытались использовать wmctrl? wmtrl -l перечисляет окна и wmlctrl -c -P должен закрыть окно. В любом случае у вас могут возникнуть проблемы с диалоговым окном подтверждения eclipse.

Ответ 6

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

Ответ 7

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

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