如果我同时安装了相同的应用程序作为snap和使用APT,我将如何能够分别调用它们,并且如何知道哪个正在运行?
我还没有完全确信snap对最终用户来说是最好的选择,我想比较一下几个软件包的性能。
我还没有完全确信snap对最终用户来说是最好的选择,我想比较一下几个软件包的性能。
分别调用它们
您可以通过提供可执行文件的完整路径名称启动应用程序的特定版本。例如,使用APT安装的Firefox将被启动为/usr/bin/firefox
。snap应用程序的可执行文件位于/snap/bin/
下,因此/snap/bin/firefox
将启动snap版本。
输入firefox
将启动APT版本,因为在默认的Ubuntu安装中/usr/bin
在搜索路径中早于/snap/bin
。默认的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版本,它将在搜索/snap/bin
之前,在/usr/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
ps ax
列出所有正在运行的进程。因此:ps ax | grep firefox
将列出所有名称为“firefox”的进程。输出包括可执行文件的完整路径名。
特定窗口的创建者
还可以识别特定窗口的创建者,以了解打开的窗口是来自APT还是snap版本。然而,这相当复杂且不总是可靠。请参阅Unix & Linux Stackexchange的问题What process created this X11 window?和What process created this window with no PID associated?。
xkill
命令来终止创建特定窗口或对话框的进程。然而,杀死进程并检查日志以确定是哪个进程的方法并不理想,但在开发环境中可以解决问题。 - Risav Karnawhich chromium-browser
命令会输出/usr/bin/chromium-browser
,但它仍然运行的是一个snap包。 - run_the_racepgrep -a
(或者pgrep -af
来匹配完整的命令行),而不是通过管道连接ps
和grep
。 - Byte Commander
buckle<tab><tab>
来查看有哪些选项可用,我可以看到结果是"buckle bucklespring.buckle",然后如果我使用whereis buckle
,它会回应*/usr/games/buckle告诉我这是一个已安装的deb软件包。如果我使用whereis bucklespring
,我会得到/snap/bin/bucklespring.buckle*,告诉我这是一个snap软件。(为什么我两者都有,我不知道!!?)。在这种情况下,我可以通过路径选择,但由于名称不同,我不需要这样做。 - guiverc