有没有办法找到应用程序的可执行名称,以便我可以在终端中启动它?

有没有办法找到应用程序的可执行名称,以便我可以在终端中启动它?

有没有办法找到应用程序的包/可执行文件名称(例如,文档查看器的 evince 或视频的 totem)?

答案1

(1)如果你知道程序名称

在命令行上尝试:

find /usr -name 'evince'

大多数程序都在 /usr/bin 目录中。

然后您可以在命令行中输入:

/usr/bin/evince

这将启动 evince 程序。

要了解 Linux 文件系统的层次结构(什么在哪里),您可以检查Linux 文档项目网站上有关 Linux 文件系统层次结构的页面

(2)如果你不知道程序的名称。

步骤 1:打开终端并列出所有正在运行的进程及其 PID(进程标识符号):

ps -e 

第一个进程列表

第 2 步:启动你的程序

步骤3:切换到终端并再次输入:

ps -e 

第二个进程列表

步骤 4:反复试验,找到程序的进程。

Ubuntuone-syncd 在两个列表中,PID 为 2911。ps 是终端中 ps⁻ 命令的进程。剩下三种可能:update-notifier、aptd 和 evince。

在命令行上,这三种可能性

man name_of_the_process

或者

info name_of_the_process

或者

name_of_the_process -h 

用真实进程名称替换 name_of_the_process。

在这种情况下如果我们输入

evince -h 

我们得到:

evince 后的帮助选项

所以 evince 就是我们一直在寻找的 GNOME 文档查看器。

答案2

Frank 的答案应该对你有用。我要补充一点,对于定位应用程序进程,我pstree更喜欢该命令,而不是平面列表ps。(从技术上讲,这个功能非常强大的ps命令可用于打印树。)但这里有一种替代方法。

您应该能够在应用程序的 .desktop 文件中找到应用程序的可执行文件名和 GUI 名称之间的映射,这些映射分散在系统的几个目录中。在终端中尝试此操作

grep -l "Categories=.*Settings" /usr/share/applications/*.desktop

列出描述设置对话框中显示的应用程序的主要系统 .desktop 文件。

grep -l "Categories=.*Settings" /usr/share/applications/*.desktop | grep -i sound

将该列表缩减为仅包含名称“sound”的文件。幸运的话,您要查找的程序将属于列出的 .desktop 文件之一。它们是文本文件。“Name=”行给出了 GUI 名称。您感兴趣的是“Exec=”行,它命名了可执行文件。然后,此行甚至可能完全起作用:

grep -l "Categories=.*Settings" /usr/share/applications/*.desktop | grep -i sound | xargs grep -e Name= -e Exec=

即使这不起作用,您想要的信息也几乎肯定在某个 .desktop 文件的 Exec 行中,可能在 /usr/share/applications 中,很可能在名称中带有“sound”的文件中。抱歉,我不能只告诉你程序名称。我面前没有 Unity 桌面。

答案3

桌面应用程序通过*.desktop文件。所以,如果你这样做,locate --regex '.desktop$'你会得到所有'*。桌面'系统上的文件。由于它们通常都是短文件,因此很容易找到“ EXEC=”行。

答案4

当你无法从列表中找出进程名称时(我在使用文档查看器时遇到了这个问题),你可以在运行应用程序之前执行以下操作来缩小嫌疑人列表

ps -e | awk  '{print $4}' > before.txt

运行应用程序(例如文档查看器)

ps -e | awk  '{print $4}' > after.txt

差异将告诉您哪些进程已启动。

diff before.txt after.txt | grep ">"

相关内容