как правильно отключить eclipse из командной строки linux?

<p>есть ли способ полностью отключить eclipse из командной строки, чтобы сохранить файлы и рабочие области? убить -3 ничего не делает. kill -1 и kill -15 (по умолчанию) приводят к внезапному завершению eclipse с всплывающим окном завершения jvm. kill -9 делает то же самое.</p><p>сценарий использования: я работаю удаленно на компьютере с загруженным eclipse и хочу сохранить память, закрыв eclipse, но я хочу, чтобы eclipse сначала сохранил его состояние.</p><p>я мог бы использовать vnc или какое-нибудь альтернативное программное обеспечение для обмена рабочими столами, но это действительно тяжело, и я бы предпочел решение для командной строки.</p><p>правка: системная информация: rhel5.1 64-разрядная с использованием gnome</p>

<p>любая добавленная <code>shutdownhooks</code> ( <a href="http://download.oracle.com/javase/1.4.2/docs/api/java/lang/runtime.html#addshutdownhook%28java.lang.thread%29">дополнительная информация здесь</a> ) должна быть выполнена jvm, когда завершена <code>sigterm</code>. поэтому, я думаю, проблема в том, как eclipse запрограммирован для обработки таких сигналов.</p><p>поскольку я не знаю, как процесс очистки реализован в eclipse, я могу только предположить, что он не вызывается никаким <code>shutdownhook</code> (а скорее <code>action</code> или чем-то подобным). </p><p>правка: pidge предоставил <a href="https://stackoverflow.com/a/12870625/79595">ответ ниже</a> однако, в котором подробно описываются шаги, которые должны позволить вам аккуратно завершить eclipse из командной строки.</p>

<p>я понял это с помощью <a href="https://stackoverflow.com/a/6391853/421297">ответа гиги</a> и <a href="https://stackoverflow.com/a/3800208/421297">другого вопроса</a> . вам понадобятся утилиты <a href="http://tripie.sweb.cz/utils/wmctrl/"><code>wmctrl</code></a> и <a href="http://www.semicomplete.com/projects/xdotool/"><code>xdotool</code></a> от вашего менеджера пакетов.</p><p>если вы не используете эмулятор терминала на одном и том же дисплее, вам нужно установить правильный дисплей:</p><pre><code>$ 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, по крайней мере.правка: см. <a href="https://stackoverflow.com/a/14623811/421297">ответ скарабита для настройки, вам нужно, чтобы он работал из сценария.

не хватает репутации, чтобы комментировать <a href="https://stackoverflow.com/a/12870625/1697540">ответ пиджа выше ... это почти работает, но мне нужно было дождаться окончания анимации 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 </code></pre>

<p>попробуйте убить процесс java (ов). do <code>ps -ea | grep java</code></p>

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

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

<p>ответ на этот вопрос был мне полезен в аналогичной проблеме: <a href="https://stackoverflow.com/questions/16961850/eclipse-hanging-how-to-kill-it-properly">eclipse висит, как правильно его убить?</a> </p><p>после того, как я убил процесс eclipse, окно eclipse оставалось там до тех пор, пока я не убил процесс java (у меня не было процесса javaw, как в ответе выше. у меня был только один процесс «java», который при уничтожении устранял проблему). </p>