有没有办法找到应用程序的包/可执行文件名称(例如,文档查看器的 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 就是我们一直在寻找的 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 ">"