例如,如果我通过 ubuntu 桌面小部件更改音量,我认为它会向 shell 发出一些命令或运行脚本。
是否可以看到它运行的内容?
答案1
通常,在 GUI 中执行某些操作不会调用 shell 命令。有时会发生这种情况,但并不常见。相反,GUI 和命令行程序(包括 shell)都调用相同的底层编程接口。
如果您想了解程序如何执行某些操作,请检查其文档或源代码。你可以尝试观察它,但可能很难弄清楚。
在 Linux 上,斯特雷斯程序列出了系统调用由程序制作的。找出程序的进程ID(例如通过命令ps xww
),比如1234,然后运行
strace -p1234 -o widget.strace
执行您想要观察的操作,然后杀死 strace(终端中的Ctrl+ )。C查看输出文件并尝试找出答案。你会看到很多与X服务器(read
并write
调用特定的文件描述)由于 GUI 操作。如果该操作由 X 服务器执行,您将需要进一步分析该协议。您还可以通过以下方式观察远程调用D总线;要了解这些,请运行dbus-monitor
以获取人类可读的 D-Bus 流量跟踪。否则看看程序还做了什么。
Ubuntu 上的声音通常通过脉冲音频。该应用程序使用 D-Bus 与 Pulseaudio 服务器进行通信。 Pulseaudio 有一个命令行界面,其中包含名称以 开头的程序pa
,包括pavucontrol
控制音量。