如何从 Linux 命令行彻底关闭 Eclipse?

     2023-02-16     134

关键词:

【中文标题】如何从 Linux 命令行彻底关闭 Eclipse?【英文标题】:How to cleanly shutdown Eclipse from Linux command line? 【发布时间】:2011-06-17 20:53:53 【问题描述】:

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

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

我可以使用 VNC 或其他桌面共享软件,但那真的很重,我更喜欢命令行解决方案。

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

【问题讨论】:

【参考方案1】:

我在gigi's answer 和another question 的帮助下解决了这个问题。您将需要包管理器提供的 wmctrlxdotool 实用程序。

除非你在同一个显示器上运行终端模拟器,否则你需要设置正确的显示器:

$ 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 上为我工作过。

编辑:请参阅 Scarabeetle's answer,了解您需要对其进行调整以使其从脚本中运行。

【讨论】:

谢谢!这很完美。 xdotool search Exit 的一点小改进是不必要的,因为它返回 0x03003c2d 的十进制形式。您可以像xdotool key --window 0x03003c2d Return 一样直接使用来自wmctrl -l 的十六进制窗口ID 并跳过搜索步骤。【参考方案2】:

没有足够的声誉来评论上面的pidge's answer... 它几乎可以工作,但我需要等待一些 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

【讨论】:

【参考方案3】:

任何添加的ShutdownHooks (more info here) 都应该在被SIGTERM 终止时由JVM 执行。因此,我认为问题在于 Eclipse 处理此类信号的编程方式。

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

编辑:pidge 提供了an answer below,但是其中详细说明了应该允许您从命令行干净地关闭 Eclipse 的步骤。

【讨论】:

这是对的。插件开发人员可以编写一个插件来侦听套接字上的关闭命令,并调用IWorkbench.close()。或者可以更新 eclipse 和启动器以支持更多的内容,而不仅仅是 openFile 操作。但是默认情况下eclipse没有任何东西。 今天我只调用$ kill pid kill -HUP pid 对我来说效果很好。这会让 eclipse 关闭,但仍然会更改它以删除其所有锁定文件等。【参考方案4】:

尝试杀死 java 进程。做ps -ea | grep java

【讨论】:

【参考方案5】:

你试过 wmctrl 吗? wmtrl -l 列出窗口和 wmlctrl -c -P 应该关闭窗口。 无论如何,您可能会在 eclipse 的确认对话框中遇到问题。

【讨论】:

安装了它并玩弄了一下。不能远程工作(通过 ssh shell)。在本地,它甚至没有列出 Eclipse 窗口。也许我只是用错了? 远程运行命令需要设置DISPLAY环境变量export DISPLAY=:0.0。请参阅我的答案以获取演练。【参考方案6】:

你试过kill -HUP (kill -1) 吗? -- 这是告诉进程与它交互的人已经离开并且应该适当清理的规范方式

【讨论】:

不,这不起作用 - Eclipse 突然退出(弹出 JVM 终止消息)。【参考方案7】:

这个问题的答案在类似的问题上对我有帮助:Eclipse hanging, how to kill it properly?

在我终止 eclipse 进程后,Eclipse 窗口一直保留在那里,直到我终止了 java 进程(我没有上面答案中的 javaw 进程。我只有一个“java”进程在被终止时解决了问题) .

【讨论】:

如何从命令行关闭 RedShift 集群?

】如何从命令行关闭RedShift集群?【英文标题】:HowcanIshutdownaRedShiftclusterfromthecommandline?【发布时间】:2014-10-0120:50:02【问题描述】:我想通过命令行关闭一个AWSRedShift集群,以避免在无人使用的夜间集群收费。我试图搜索该命令... 查看详情

启动纯命令行界面的 Linux 后如何打开应用程序? [关闭]

】启动纯命令行界面的Linux后如何打开应用程序?[关闭]【英文标题】:HowtoopenapplicationsafterbootingapurelyCommandlineinterfaceofLinux?[closed]【发布时间】:2014-02-0917:29:00【问题描述】:在纯命令行模式下启动linux后,如何打开应用程序,... 查看详情

如何从命令行关闭特定工作簿

】如何从命令行关闭特定工作簿【英文标题】:Howtocloseaspecificworkbookfromcommandline【发布时间】:2018-06-2005:57:03【问题描述】:我有一个打开excel的批处理脚本,一旦打开就会自动触发宏脚本。但是我希望它在宏完成后关闭工作簿... 查看详情

如何像 Nautilus 那样从命令行挂载? [关闭]

】如何像Nautilus那样从命令行挂载?[关闭]【英文标题】:HowtomountfromcommandlineliketheNautilusdoes?[closed]【发布时间】:2010-10-0318:20:54【问题描述】:在我的Ubuntulinux机器上,我可以通过单击桌面上的设备图标轻松安装USB连接的驱动器... 查看详情

如何在 Linux 中打开端口 [关闭]

】如何在Linux中打开端口[关闭]【英文标题】:HowtoopenportinLinux[closed]【发布时间】:2013-10-0219:02:52【问题描述】:我已经安装了在RHEL(centOS)上的8080端口上运行的Web应用程序。我只有命令行访问那台机器。我试图从我通过命令行连... 查看详情

如何从命令行生成 android debug.keystore?

...5【问题描述】:我使用的是无GUI的linux,所以我不能使用Eclipse为我生成一个。【问题讨论】:【参考方案1】:查看Android的documentation以使用keytool创建密钥库。他们 查看详情

如何从命令行/tty 启动 GNOME Wayland 会话? [关闭]

】如何从命令行/tty启动GNOMEWayland会话?[关闭]【英文标题】:HowtostartGNOMEWaylandsessionfromcommandline/tty?[closed]【发布时间】:2015-09-2116:57:30【问题描述】:我正在尝试使用Wayland。您可以通过startx命令使用X启动Gnome。有没有办法通过... 查看详情

如何在 linux 命令行上找到可能位于任何位置的文件/目录? [关闭]

】如何在linux命令行上找到可能位于任何位置的文件/目录?[关闭]【英文标题】:HowcanIfindafile/directorythatcouldbeanywhereonlinuxcommandline?[closed]【发布时间】:2014-08-3013:58:51【问题描述】:理想情况下,我可以使用像这样的程序find[fileo... 查看详情

从命令行构建 Eclipse Java 项目

】从命令行构建EclipseJava项目【英文标题】:BuildEclipseJavaProjectfromCommandLine【发布时间】:2010-09-1709:57:00【问题描述】:有没有办法从命令行编译基于Eclipse的Java项目?我正在尝试自动化我的构建(使用FinalBuilder而不是ant),我既... 查看详情

从命令行关闭正在运行的程序

...的事情:myProgram.exe-start--dosomething--myProgram.exe-stop我知道如何实现第一部分(main中的String[]args),但是 查看详情

linux中怎么从ftp回到命令行

...用到,下面小编就给大家介绍下Linux命令的用法。Linux下如何使用ftp命令  [root@www~]#yuminstallftp安装ftp支持RedHat系列版本下命令  [root@www~]#ftp输入ftp命令  FTP》open连接命令  FTP》to10.10.22.8连接主机  FTP》admin登入... 查看详情

如何从命令行在 GNOME 终端中打开一个新选项卡? [关闭]

】如何从命令行在GNOME终端中打开一个新选项卡?[关闭]【英文标题】:HowtoopenanewtabinGNOMETerminalfromcommandline?[closed]【发布时间】:2010-11-1409:48:19【问题描述】:我使用的是Ubuntu9.04x64,当我写的时候:gnome-terminal--tab在终端,我希... 查看详情

如何从 Unix 命令行安装 c 和 c++ 编译器,然后与 Eclipse 一起使用?

】如何从Unix命令行安装c和c++编译器,然后与Eclipse一起使用?【英文标题】:Howtoinstallcandc++compilersfromUnixcommandlineandthenusewithEclipse?【发布时间】:2011-11-2119:57:47【问题描述】:是否有一个命令可以让我自动安装C和C++编译器/链接... 查看详情

[bat]如何彻底关闭每个盘符默认的共享$(即使重启也有效)

Windows启动时都会默认打开admin$ipc$和每个盘符的共享,对于不必要的默认共享,一般都会把它取消掉,可当又需要打开此默认共享时,又该从哪里设置呢,一般来说有两个地方,MSDOS命令和计算机管理共享文件夹,下面主要从DOS... 查看详情

如何从命令行打开 Ubuntu Linux 上的 AVD 管理器?

】如何从命令行打开UbuntuLinux上的AVD管理器?【英文标题】:HowtoopentheAVDmanageronUbuntuLinuxfromthecommandline?【发布时间】:2015-01-2722:06:48【问题描述】:【问题讨论】:【参考方案1】:对于那些因为androidavd命令已被弃用而来到这里... 查看详情

在命令行 Linux 中仅显示子目录 [关闭]

...ed]【发布时间】:2014-03-0123:39:00【问题描述】:很简单:如何在linux中显示当前目录下的所有子目录?我在论坛上没有找到像这个问题一样直接的问题。谢谢:)【问题讨论】:***.com/questions/14352290/…的可能重复是的,我刚刚找到... 查看详情

从 DOS 命令行关闭正在运行的应用程序

...这样的应用程序,如下所示:startnotepadstart"mylove.mp3"但是如何从命令行关闭正在运行的应用程序?我在搜索中找到了taskkill,但我认为这不是正确的命令,因为它不起作用—— 查看详情

如何从命令行反转 Linux 中文件的列顺序

】如何从命令行反转Linux中文件的列顺序【英文标题】:HowtoreversecolumnorderofafileinLinuxfromthecommandline【发布时间】:2010-11-1617:05:36【问题描述】:我有一个名为ip-list的文件,其中包含两列:IP1<TAB>Server1IP2<TAB>Server2我想制... 查看详情