如果我通过 snap 和 APT 安装了某个应用程序,我怎样才能知道当前正在运行哪一个?

如果我通过 snap 和 APT 安装了某个应用程序,我怎样才能知道当前正在运行哪一个?

如果我要以 snap 和 APT 的方式安装同一个应用程序,我该如何分别调用它们,又如何知道哪个应用程序正在运行?

我还不完全相信 snap 是否最适合最终用户,并且想比较一下几个软件包的性能。

答案1

分别调用每一个

您可以通过提供可执行文件的完整路径名来启动应用程序的特定版本。例如,使用 APT 安装的 Firefox 将通过 启动/usr/bin/firefox。Snap 应用程序的可执行文件位于 下/snap/bin/,因此/snap/bin/firefox将启动 Snap 版本。

输入firefox将启动 APT 版本,因为/usr/bin它在搜索路径中比/snap/bin默认 Ubuntu 安装中列出的更早。默认 PATH 是:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

当您简单地输入 时firefox,系统会搜索每个连续的目录(文件夹),直到firefox找到具有名称的可执行文件。如果安装了 APT 版本,它会在/usr/bin搜索 之前找到 中的可执行文件/snap/bin,因此搜索将停止并启动该可执行文件。

您可以了解将使用命令启动哪个可执行文件which

$ which firefox
/usr/bin/firefox

您可以使用以下命令了解已安装的可执行文件whereis

$ whereis firefox
firefox: /usr/bin/firefox /usr/lib/firefox /etc/firefox /snap/bin/firefox /usr/share/man/man1/firefox.1.gz

这里同时安装了APT和Snap版本的firefox。

知道哪一个正在运行

正在运行的进程

该命令ps ax列出所有正在运行的进程。因此:

ps ax | grep firefox

将列出所有名为“firefox”的进程。输出包括可执行文件的完整路径名。

特定窗口的创建者

还可以识别特定窗口的创建者,以了解打开的窗口是来自 APT 还是 snap 版本。但是,这相当复杂,而且并不总是可靠的。请参阅 Unix & Linux Stackexchange 问题什么过程创建了这个 X11 窗口?哪个进程创建了这个没有关联 PID 的窗口?

答案2

使用 gnome-calculator 的示例,许多人都有 deb 和 snap 格式:

  • 如何分别调用每一个:让我们找到完整的路径。

    $ which -a gnome-calculator     # -a keeps searching after the first hit
    /usr/bin/gnome-calculator
    /snap/bin/gnome-calculator
    
    $ whereis -b gnome-calculator   # -b returns binaries only
    gnome-calculator: /usr/bin/gnome-calculator /snap/bin/gnome-calculator
    
  • 如何确定哪一个正在运行。在此示例中,两个都在运行。差异显而易见。

    $ ps -x | grep gnome-calculator
    69445 ?        Sl     0:05 /snap/gnome-calculator/748/usr/bin/gnome-calculator
    69549 pts/0    Sl     0:01 gnome-calculator
    69727 pts/0    S+     0:00 grep --color=auto gnome-calculator
    
    $ pgrep -af gnome-calculator
    69445 /snap/gnome-calculator/748/usr/bin/gnome-calculator
    69549 gnome-calculator
    

相关内容