我可以从 Ubuntu 的 GUI 中单击“电影播放器”,但我怎么知道相应的命令行 cmd。我想从命令行运行电影播放器。
这不仅与电影播放器的后台命令有关,我还想知道当我单击菜单上的某个图标时 x-window shell 运行的所有实际命令。
非常感谢。
答案1
打开控制台并输入
ps --sort 开始时间 x
这应该会为您提供一个活动进程列表,按启动时间排序,最新进程位于底部。例如,我刚刚启动 Firefox 并得到以下信息:
19713 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.3/firefox
19718 ? S 0:00 /bin/sh /usr/lib/firefox-3.6.3/run-mozilla.sh /usr/lib/firefox-3.6.3/firefox-bin
19722 ? Sl 0:01 /usr/lib/firefox-3.6.3/firefox-bin
19737 pts/2 R+ 0:00 ps --sort start_time x
当然ps --sort start_time x
永远是最新的过程。
答案2
右键单击图标并选择“属性”。在大多数情况下,这将告诉您与其关联的命令行。
答案3
Ubuntu 的三个主要 GUI 是 Gnome、KDE 和 Xfce。这些项目都试图遵循 freedesktop.org 上的免费桌面标准。Xfce 似乎遵循桌面入门标准,它定义了如何处理菜单项等等。
以下说明适用于 Gnome、KDE 和 Xfce。
菜单项(也称为“启动器”或“桌面条目”存储在 中)/usr/share/applications
。
您知道此应用程序称为“电影播放器”,因此要找到相应的文件,请执行以下操作:
stefanl@HOST:/usr/share/applications $ grep -i "movie player" *.desktop
totem.desktop:Name=Movie Player
Grep 显示“totem.desktop”包含相应内容。由此,我知道“Movie Player”与“totem”应用程序相关联。
现在,要查看此菜单项执行的命令,请搜索Exec
:
stefanl@HOST:/usr/share/applications $ grep Exec totem.desktop
Exec=totem %U
这些 Gnome/KDE/Xfce .desktop 文件的格式在 freedesktop.org 上有进一步描述桌面入门规格。 这桌面输入规范:Exec 键描述密钥的用途%U
:
URL 列表。每个 URL 都作为单独的参数传递给可执行程序。本地文件可以作为文件:URL 或文件路径传递。
答案4
笔记:这个答案是艺术家的回答。
此命令应显示所有目前正在运行当前用户执行的并且在过去 60 秒内启动的命令:
ps x --sort -start_time -U YOURUSERNAME -o start,command | \
awk '$1>=recently&&$1<=now' \
recently=$(date --date='60 seconds ago' +%T) now=$(date +%T) | sed 1,1d
要使用此命令,请单击图标或菜单项以执行命令,并在刚打开的程序仍在运行时执行上述命令。记得将其替换YOURUSERNAME
为您当前用户的用户名。
解释:
ps
将显示当前正在运行的进程。参数解释ps
:
x
:包括未通过终端执行的进程(实际上是tty
)。添加-t '?'
将显示仅有的与终端无关的进程。--sort -start_time
:按进程启动的时间对输出进行排序(降序)-U YOURUSERNAME
:更换您的用户名使用您的用户名将仅显示您的用户执行的进程。如果需要,可以删除此限制。-o start,command
:在输出中显示两列:进程的启动时间和执行的命令
awk
用于仅显示最近执行的进程。awk
参数解释:
$1>=recently&&$1<=now
:将输出限制为过去 60 秒内执行的进程。要更改此时间范围,请修改下一个参数(recently
变量赋值)recently=$(date --date='60 seconds ago' +%T)
:将前面参数中使用的awk
变量设置为60秒前的格式(时间格式)。recently
HH:MM:SS
ps
now=$(date +%T)
:将awk
变量设置now
为当前时间(这是为了排除 24 小时前执行的、看起来像是在未来执行的进程)
我添加了sed 1,1d
删除第一行输出,因为它将显示当前正在执行的命令,而显示该命令是没有意义的。
记住:对于某些程序,使用ps
查找执行了哪个进程的方法无法按预期工作。例如,如果您单击 Firefox 快捷方式但 Firefox 已在运行,则不会创建新进程,也不会更改旧进程的启动时间。但是,这种方法对于许多程序来说确实相当有效。