如何从Linux命令行干净地关闭Eclipse?

Mai*_*ian 30 eclipse linux workspace command-line kill

有没有办法从命令行干净地关闭Eclipse,以便保存文件和工作区?杀-3没有做任何事情.kill -1和kill -15(默认值)导致Eclipse突然弹出JVM终止弹出窗口.kill -9做同样的事情.

用例是我在装有Eclipse的机器上远程工作,我希望通过关闭Eclipse来节省内存,但我希望Eclipse先保存其状态.

我可以使用VNC或一些替代桌面共享软件,但这非常重,我更喜欢命令行解决方案.

编辑:系统信息:RHEL5.1使用GNOME 64位

pid*_*dge 42

我在gigi的回答另一个问题的帮助下想出了这一点.您将需要包管理器中的wmctrlxdotool实用程序.

除非您在同一显示器上的终端仿真器中运行,否则您需要设置正确的显示:

$ export DISPLAY=:0.0
Run Code Online (Sandbox Code Playgroud)

然后(从示例中省略了不相关的窗口):

# 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
Run Code Online (Sandbox Code Playgroud)

至少在Ubuntu 12.04上为我工作过.

编辑:请参阅Scarabeetle的答案,了解使脚本运行所需的调整.

  • 谢谢!这很完美.一个小的改进点`xdotool search Exit`是不必要的,因为它返回十进制形式的`0x03003c2d`.您可以直接使用`wmctrl -l`中的十六进制窗口ID,如`xdotool key --window 0x03003c2d Return`,并跳过搜索步骤. (3认同)

Sca*_*tle 7

没有足够的声誉评论上面的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
Run Code Online (Sandbox Code Playgroud)


veh*_*ehk 3

任何添加的内容ShutdownHooks更多信息请参见此处)应由 JVM 在 终止时执行SIGTERM。因此,我认为问题出在 Eclipse 处理此类信号的编程方式上。

由于我不知道清理过程是如何在 Eclipse 中实现的,我只能假设它没有被任何调用ShutdownHook(而是被一个Action或类似的东西调用)。

编辑:pidge 在下面提供了一个答案,但是其中详细说明了允许您从命令行彻底关闭 Eclipse 的步骤。