Как полностью отключить Eclipse из командной строки Linux?
Есть ли способ отключить Eclipse из командной строки, так что файлы и рабочие пространства сохраняются? kill -3 ничего не делает. kill -1 и kill -15 (по умолчанию) заставляет Eclipse внезапно выйти с всплывающим окном JVM. kill -9 делает то же самое.
Вариант использования заключается в том, что я работаю удаленно на машине с загруженным Eclipse, и я хочу сохранить память, закрыв Eclipse, но я хочу, чтобы Eclipse сначала сохранил свое состояние.
Я мог бы использовать VNC или другое альтернативное программное обеспечение для совместного использования рабочего стола, но это действительно тяжело, и я бы предпочел решение командной строки.
EDIT: Системная информация: RHEL5.1 64-бит с использованием GNOME
Ответы
Ответ 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-процесс", когда при убитии исправлялась проблема),