分类 技术 下的文章

本教程将展示如何在 Ubuntu 中使用 MTP 访问安卓设备以及如何访问 SD 卡内容。

MTP,即 媒体传输协议 media transfer protocol ,是图片传输协议的扩展,它在安卓 6.0(棉花糖)版本中实现。在更新了安卓 6.0 之后,你无法将安卓设备用作典型的大容量存储设备,以便让你直接插入并在文件管理器(例如 Thunar 或 GNOME Files)中查看内部存储内容和 SD 卡内容。这是由于操作系统无法确定 MTP 设备,而且还没有实现支持的设备列表。

在 Ubuntu、Linux Mint 中访问 Android 设备的步骤

使用以下命令为启用 MTP 的设备 mtpfs 安装 libmtp FUSE 文件系统:

sudo apt install go-mtpfs
sudo apt install libmtp
sudo apt install mtpfs mtp-tools

使用 USB 线缆将你的安卓设备插入 Ubuntu。

在你的安卓设备上,在主屏幕下拉,然后单击 “触摸获得更多选项Touch for more options”。

在下面的菜单中,选择“ 传输文件(MTP) Transfer File (MTP) ”选项:

MTP Option1

MTP Option2

在终端中运行以下命令查找设备 ID 等。你可以在设备的命令输出中看到 VIDPID。记下这两个数字(在下图中高亮显示):

mtp-detect

mtp-detect Command Output

使用以下命令使用文本编辑器打开安卓规则文件:

sudo gedit /etc/udev/rules.d/51-android.rules

如果你使用的是未安装 gedit 的最新 Ubuntu,请使用以下命令:

sudo gnome-text-editor /etc/udev/rules.d/51-android.rules

51-android.rules 文件中使用你设备的 VID 和 PID 输入以下行(你在上面的步骤中记下):

SUBSYSTEM=="usb", ATTR{idVendor}=="22b8", ATTR{idProduct}=="2e82", MODE="0666"

保存并关闭文件。

运行以下命令通过 systemd 重启设备管理器:

sudo service udev restart

访问内容的后续步骤

接下来的步骤主要用于访问你的 Android 设备的外部 SD 卡的内容。

我必须这样做,因为文件管理器没有显示 SD 卡的内容。不过,这不是一个解决方案,但它是一种临时方案,根据这个 Google 论坛帖子,它适用于大多数用户,并且适用于我的带有闪迪 SD 卡的摩托罗拉 G 2nd Gen:

  • 在 Ubuntu 中安全删除你连接的设备。
  • 关闭设备。从设备中取出 SD 卡。
  • 在没有 SD 卡的情况下打开设备。
  • 再次关闭设备。
  • 将 SD 卡重新插入并再次打开设备。

重启你的 Ubuntu 机器并插入你的安卓设备。

现在你可以看到你的安卓设备的内部存储和 SD 卡的内容。

MTP Device Contents in Ubuntu

总结

上述在 Ubuntu 中访问安卓设备内容的教程在旧版和新版 Ubuntu 中的安卓设备(三星、一加和摩托罗拉)上都可以使用。如果你在访问内容时遇到困难,可以试试这些步骤,它可能会起作用。在我看来,MTP 与老式的即插即用方案相比非常慢。


via: https://www.debugpoint.com/how-to-access-android-devices-internal-storage-and-sd-card-in-ubuntu-linux-mint-using-media-transfer-protocol-mtp/

作者:Arindam 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Julia 是一门高度抽象的动态编程语言。虽然它是一门能够开发所有程序的通用语言,但它有几个特点,非常适用于科学计算和数值计算。Python 在 1990 年初作为一种简单的面向对象的程序语言出现,如今已经有了显著的发展。本文将从它们在神经网络和机器学习的性能表现上进行讨论。

Julia 的架构以动态语言中的 参数多态性 parametric polymorphism 多重派发 multiple dispatch 的编程范式为主要特色。它允许使用或不使用 消息传递接口 message passing interface (MPI)或内置的 “OpenMP 式” 线程进行并发、并行和分布式计算,以及直接调用 C 和 FORTRAN 库而无需额外的代码。Julia 使用 即时 just-in-time (JIT)编译器,Julia 社区将其称为 “ 即时预编译 just-ahead-of-time (JAOT)”,因为它在运行之前默认将所有代码编译为机器码。

与 Python 不同,Julia 是专为统计学和机器学习而设计的。Julia 可以快速的完成线性代数的运算,但 Python 很慢。这是因为 Python 从来都不是为了适应机器学习用到的矩阵和方程而设计的。Python 本身并不差,特别是 Numpy,但在没有使用包的情况下,Julia 更像是为数学量身定制的。相比 Python,Julia 的运算符更像 R,这是一个显著的优势。大部分的线性代数运算可以用更少的时间和精力去完成。

众所周知,近年来 Python 在机器学习和数据科学领域占据主导地位。因为在 Python 中我们可以使用各种各样的第三方库来帮助我们编写机器学习的代码。虽然 Python 有这么多优势,但仍有一个主要的缺点——它是一门解释性语言,速度非常慢。现在是数据时代,数据越多我们处理它的时间就越长,这也是 Julia 出现的理由。

到目前为止,有关 Julia 的研究工作都集中在高性能或者 Julia 的科学计算能力等主题上。但在这里,我们将讨论 Julia 不仅能够有效地处理复杂的科学计算,还能够处理基于商业的问题,以及像 Python 一样处理机器学习和神经网络。

实验目标与实验设计

Julia 像 Python 一样简洁,但却像 C 一样是一门编译语言。首先我们来测试 Julia 要比 Python 快多少。为此,我们先在一些简单的程序上测试它们,然后来到我们实验的重点,测试它们的机器学习和深度学习能力。

Julia 和 Python 都提供了许多库和开源的基准测试工具。为了在 Julia 中进行基准测试和计算时间,我们使用了 CPUTimetime 库;对于 Python,我们同样使用了 time 模块。

矩阵乘法

一开始我们尝试了简单的算术运算,但由于这些运算不会产生太大的时间差异,我们决定比较矩阵乘法的时间差异。我们创建了两个 (10 * 10) 的随机浮点数矩阵,并对它们施以点积。众所周知,Python 有一个 Numpy 库,常被用于计算矩阵和向量。而 Julia 也有一个 LinearAlgebra 库,常用于计算矩阵和向量。因此我们分别比较了各自使用和不使用库的矩阵乘法的耗时。本文用到的所有源码已经放在了 GitHub 存储库。下面给出了用 Julia 编写的 10×10 矩阵乘法程序:

@time LinearAlgebra.mul!(c,x,y)
 
function MM()
x = rand(Float64,(10,10))
y = rand(Float64,(10,10))
c = zeros(10,10)
 
for i in range(1,10)
for j in range(1,10)
for k in range(1,10)
c[i,j] += x[i,k]*y[k,j]
end
end
end
end
@time MM
 
0.000001 seconds
MM (generic function with 1 method)

Julia 使用库耗时 0.000017 秒,使用循环耗时 0.000001 秒。

使用 Python 编写相同的矩阵乘法程序如下。 从结果可以发现,与不使用库相比,使用库的程序花费的时间更少:

import numpy as np
import time as t
x = np.random.rand(10,10)
y = np.random.rand(10,10)
start = t.time()
z = np.dot(x, y)
print(“Time = “,t.time()-start)
Time = 0.001316070556640625
 
import random
import time as t
l = 0
h= 10
cols = 10
rows= 10
 
choices = list (map(float, range(l,h)))
x = [random.choices (choices , k=cols) for _ in range(rows)]
y = [random.choices (choices , k=cols) for _ in range(rows)]
 
result = [([0]*cols) for i in range (rows)]
 
start = t.time()
 
for i in range(len(x)):
for j in range(len(y[0])):
for k in range(len(result)):
result[i][j] += x[i][k] * y[k][j]
 
print(result)
print(“Time = “, t.time()-start)
 
Time = 0.0015912055969238281

Python 使用库耗时 0.0013 秒,使用循环耗时 0.0015 秒。

线性搜索

我们进行的下一个实验是对十万个随机生成的数字进行线性搜索。这里使用了两种方法,一种是使用 for 循环,另一种是使用运算符。我们使用 1 到 1000 的整数执行了 1000 次搜索,正如你在下面的输出中看到的那样,我们还打印了我们在数据集中找到了多少个整数。下面给出了使用循环和使用 IN 运算符的时间。这里我们使用了 CPU 3 次运行时间的中位数。

使用 Julia 编写的程序和运行结果如下:

(LCTT 译注:此处原文缺失 Julia 代码)

使用 Python 编写的程序和运行结果如下:

import numpy as np
import time as t
x = np.random.rand(10,10)
y = np.random.rand(10,10)
start = t.time()
z = np.dot(x, y)
print(“Time = “,t.time()-start)
Time = 0.001316070556640625
 
import random
import time as t
l = 0
h= 10
cols = 10
rows= 10
 
choices = list (map(float, range(l,h)))
x = [random.choices (choices , k=cols) for _ in range(rows)]
y = [random.choices (choices , k=cols) for _ in range(rows)]
 
result = [([0]*cols) for i in range (rows)]
 
start = t.time()
 
for i in range(len(x)):
for j in range(len(y[0])):
for k in range(len(result)):
result[i][j] += x[i][k] * y[k][j]
 
print(result)
print(“Time = “, t.time()-start)
 
Time = 0.0015912055969238281
FOR_SEARCH:
Elapsed CPU time: 16.420260511 seconds
matches: 550
Elapsed CPU time: 16.140975079 seconds
matches: 550
Elapsed CPU time: 16.49639576 seconds
matches: 550

IN:
Elapsed CPU time: 6.446583343 seconds
matches: 550
Elapsed CPU time: 6.216615487 seconds
matches: 550
Elapsed CPU time: 6.296716556 seconds
matches: 550

从以上结果来看,在 Julia 中使用循环和运算符并不会产生显著的时间差异。但是在 Python 中循环几乎比运算符 IN 多花了三倍的时间。有趣的是,在这两种情况下,Julia 都比 Python 快得多。

线性回归

下一个实验是测试机器学习算法。我们选择了以一种最常见和最简单的机器学习算法,使用简单数据集的线性回归。我们使用了一个包含 237 条数据的数据集 “Head Brain”,数据集的两列分别为 “HeadSize” 和 “BrainWeight”。接下来,我们使用 “head size” 数据去计算 “brain weight”。在 Python 和 Julia 中我们都没有使用第三方库,而是从零实现了线性回归算法。

Julia:

GC.gc()
@CPUtime begin
linear_reg()
end
elapsed CPU time: 0.000718 seconds

Python:

gc.collect()
start = process_time()
linear_reg()
end = process_time()

print(end-start)
elapsed time: 0.007180344000000005

上面给出了 Julia 和 Python 所花费的时间。

逻辑回归

接下来,我们使用两种语言的库对最常见的机器学习算法(即逻辑回归)进行了实验。对于 Python 我们使用最常见的库 sklearn;对于 Julia,我们使用 GLM 库。我们在这里用到的数据集是有关银行客户的信息,其中包含 10,000 个数据条目。目标变量是一个二元变量,区分消费者是否继续使用银行账户。

下面给出了 Julia 进行逻辑回归所花费的时间:

@time log_rec()
0.027746 seconds (3.32 k allocations: 10.947 MiB)

下面给出了 Python 进行逻辑回归所花费的时间:

gc.collect()
start = process_time()
LogReg()
end = process_time()
print(end-start)

Accuracy : 0.8068
0.34901400000000005

神经网络

在各种程序和数据集上测试这两种语言后,我们在神经网络上使用 MNIST 数据集继续测试它们。该数据集包含从零到九的手绘数字的灰度图像。每张图像为 28×28 像素。每个像素值表示该像素的亮度或暗度,该值是包含 0 到 255 之间的整数。该数据还包含一个标签列,该列表示在相关图像中绘制的数字。

Figure 1: Example of MNIST data set

图 1 是 MNIST 数据集的示例。

对两种语言我们都建立了一个简单的神经网络来测试它们耗费的时间。神经网络的结构如下:

Input ---> Hidden layer ---> Output

该神经网络包含了一个输入层、隐层还有输出层。为了避免神经网络的复杂度过高,我们对数据集没有进行任何的预处理工作。在 Julia 和 Python 中我们都进行了40次训练并比较它们的时间差异。

Figure 2: Julia takes 5.76 seconds in a neural network

在 Julia 中,Flux 库通常被用于建立神经网络;在 Python 中我们常使用 Keras 库。图 2 展示了 Julia 在神经网络上的耗时。图 3 展示了 Python 的神经网络经过了若干次训练的耗时。

Figure 3: Python takes 110.3 seconds in a neural network

这个结果展示了 Julia 和 Python 在处理神经网络时存在巨大的时间差异。

表 1 总结了此次实验的测试结果并计算了 Julia 和 Python 时间差异的百分比。

实验Julia(秒)Python(秒)时间差(%)
矩阵乘法(不使用库)0.0000010.001599.9
矩阵乘法(使用库)0.0000170.001398.69
线性搜索(使用循环)0.4216.497.43
线性搜索(使用 IN 操作符)0.436.293.06
线性回归0.0007180.0071890
逻辑回归0.0250.3490192.83
神经网络5.76110.394.77

我们进行的所有实验都表明,随着程序复杂性以及数据集大小的增加,Julia 和 Python 之间的执行时间差异也会增加。由这个结果我们可以推断,Julia 是一门更适合机器学习和神经网络的编程语言。


via: https://www.opensourceforu.com/2022/09/julia-and-python-which-language-is-quicker/

作者:B Thangaraju 选题:lkxed 译者:Return7g 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

都有谁可以访问你的家庭网络?随着物联网(IoT)的普及,有时在运行在你家庭网络上的服务比你想象的更多。我们应当设法保护它免受不需要的访问。

今天,互联网连接的典型结构是家里有一个路由器,通常是一个位于你家某个地方的小盒子,它充当了通往互联网世界的网关。路由器创建了一个本地网络,你将你的设备连接到这个本地网络,包括你的电脑、手机、电视、游戏机,以及其他任何需要连接到互联网或相互连接的设备。我们很容易将路由器当作一个分界线,一边是互联网而另一边是你的设备。但这是一个可怕的误解,因为在现实中,你的路由器的一边是整个计算机网络世界,另一边是你的数字生活。当你直接使用互联网时,你是在访问别人的计算机网络的共享区域。当你不使用互联网时,它却并没有消失,有很多脚本和程序被设计用以访问数以百万计的路由器,试图找到开放的端口或服务。随着物联网(IoT)的普及,有时在运行在你家庭网络上的服务比你想象的更多。通过以下三个步骤,你可以审计并保护你的家庭网络免受不必要的访问和攻击。

1、协议先行

路由器的部分工作是将互联网与你的家庭网络分开。但当你访问互联网时,你邀请互联网的某些部分进入你的家庭。这意味着你创建了一个例外规则,绕过了阻止互联网进入你的本地网络的一般规则。

在许多网站上,通过你的路由器的仅是文本内容。例如,当你访问你最喜欢的博客网站,阅读最新的科技新闻时,你下载了几页文字。你阅读文本,然后继续访问。这是一个简单的一对一的连接。

然而,HTTPS 协议是强大的,在互联网上运行的应用程序也充满了多样性。例如,当你访问某个网站时,你不只是在下载文本。你会得到图形,也许还有脚本或电子书。你还在后台下载 cookie,这有助于网站管理员了解谁在访问网站、加强对移动设备的支持、为更好的可访问性提供新设计并了解读者喜欢的内容。当你网上冲浪时,你可能不会想到 cookie 或流量分析是与你交互的东西,它是被“藏入”页面交互的东西,因为 HTTPS 协议的设计是广泛而通用的,在多数场景被高度信任。当你通过 HTTPS(或者说,在一个浏览器中)访问一个网站时,你可能在不知情的情况下默认同意自动下载文件,但你认为这些文件是有用的和无关紧要的。对于一种旨在减少信任的文件共享模式,你可以尝试一下 GeminiGopher 协议。

当你加入一个视频会议时,你也使用了类似的协议。你不仅要下载页面上的文字、用于流量监控的cookie,还要下载视频和音频材料。

有些网站的设计甚至更进一步,它们被设计成允许用户分享其电脑屏幕,有时甚至是对他们电脑的控制。这样设计的初衷是有助于远程技术人员修复电脑上的问题,但在现实中,用户可能被欺骗访问这一网站,导致财务凭证和个人数据被盗。

如果一个提供文字文章的网站要求你允许它在你阅读时调用网络摄像头,你理应高度警惕。当一个设备需要访问互联网时,你也应当保持同样的谨慎和警惕。当你把一个设备连接到网络时,重要的是要关注你同意了何种隐性协议。一个旨在控制你房子里的照明的设备不应该要求互联网接入,但事实上许多设备需要并且没有明确说明你授予该设备什么权限。许多物联网设备都希望接入互联网,这样你就可以在离家时通过互联网访问该设备。这也是“智慧家庭”的部分吸引力。然而,我们不可能知道所有设备运行的是什么代码。在可能的情况下,使用开源和值得信赖的软件,如 Home Assistant 来与你的物联网设备对接。

2、创建访客网络

许多现代路由器可以为你的家庭创建第二个网络(通常在配置面板中称为 “访客网络”)。你可能觉得你不需要访客网络,但实际上,访客网络是十分有意义的。它旨在为访问你房子的人提供互联网访问,而你不需要告诉他们你的私人网络密码。例如在我家的门厅里,我有一个牌子标明了访客网络的名称和密码。任何来访的人都可以加入该网络以访问互联网。

另一方面可以用于物联网、边缘设备和家庭实验室的应用。当我去年购买 “可编程” 的圣诞灯时,我惊讶地发现,为了连接这些灯,它们必须连接到互联网。当然,这些来自无名工厂的 50 美元的灯没有附带源代码,也没有任何方法可以与嵌入在适配器中的固件进行交互或检查,所以我对我同意将它们连接到我的本地网络有一定的顾虑。它们已经被永久地归入了我的访客网络。

每个路由器供应商都是不同的,所以没有关于如何在你的路由器上创建一个 “沙盒” 访客网络的通用指令。一般来说,你通过一个网络浏览器访问你的家庭路由器。你的路由器的地址有时印在路由器的底部,它以 192.168 或 10 开头。

访问路由器地址,用你配置互联网服务时使用的凭证登录。这通常是简单的 “admin” 和一个数字密码(有时,这个密码也印在路由器上)。如果你不知道登录方式,请致电给你的互联网供应商或者制造商咨询。

在图形界面中,找到 “访客网络” 的面板。这个选项在我的路由器的高级配置中,但它可能在你的路由器的其他地方,它甚至可能不叫 “访客网络”(或者它甚至可能不是一个选项)。具体情况因厂商而异。

创建访客网络

这可能需要耐心的寻找。如果你发现你的设备有这个选择,那么你可以为访客建立一个访客网络,包括在不受信任的灯泡上运行的应用程序。

3、配置防火墙

你的路由器可能已经存在一个默认运行的防火墙。防火墙将不需要的流量挡在你的网络之外,通常是将传入的数据包限制在 HTTP 和 HTTPS(浏览器流量)以及其他一些常用的协议上,并拒绝不是你发起的请求。你可以通过登录你的路由器并寻找 “防火墙” 或 “安全” 设置来检查防火墙是否正在运行。

然而,许多设备可以运行它们自己的防火墙。网络之所以被称为网络是因为在网络上的设备互相能进行连接。在设备之间设置防火墙,就像在你的房子里锁上一扇门。客人可以在大厅里游荡,但如果没有合适的钥匙,他们就不会被邀请进入你的私人办公室。

在 Linux 上,你可以使用 firewalld 接口和 firewall-cmd 命令来配置你的防火墙。在其他操作系统上,防火墙有时在一个标有 “安全” 或 “共享” 的控制面板中(有时两者都有)。 大多数默认的防火墙设置只允许出站流量(即你通过打开浏览器并导航到一个网站而启动的流量)和响应你的请求的入站流量(即响应你的导航的网络数据)。不是由你发起的传入流量会被阻止。

你可以根据需要配置相关规则以允许特定的流量,例如 SSH 连接VNC 连接,或 游戏服务器 主机。

监控你的网络

这些技巧有助于建立起你对周围发生的事情的认识。下一步是 监控你的网络。你可以从简单的开始,例如在你的访客网络的测试服务器上运行 Fail2ban。看一下日志,如果你的路由器提供日志的话。你不必对 TCP/IP 和数据包以及其他进阶知识了如指掌,就可以看到互联网是一个繁忙而嘈杂的地方,当你在家里安装一个新设备时,无论是物联网、移动设备、台式机或笔记本电脑、游戏机,甚至是 树莓派,而亲身体会到这一点对你采取预防措施有很大启发。


via: https://opensource.com/article/22/9/protect-home-network

作者:Seth Kenlon 选题:lkxed 译者:PeterPan0106 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

我在 Linux 上使用 inxi 来检查我的笔记本电脑电池、CPU 信息,甚至天气。

Coding on a computer

当我在查询有关笔记本电脑电池健康状况的信息时,我偶然发现了 inxi。它是一个命令行系统信息工具,可提供有关你的 Linux 计算机(无论是笔记本电脑、台式机还是服务器)的大量信息。

inxi 命令采用 GPLv3 许可证,许多 Linux 发行版都包含它。据它的 Git 存储库称:“inxi 努力支持最广泛的操作系统和硬件,从最简单的消费台式机到最先进的专业硬件和服务器。”

文档很完善,并且该项目在线维护了完整的 手册页。安装后,你可以使用 man inxi 命令访问系统上的手册页。

在 Linux 上安装 inxi

通常,你可以从发行版的软件仓库或应用中心安装 inxi。例如,在 Fedora、CentOS、Mageia 或类似发行版上:

$ sudo dnf install inxi

在 Debian、Elementary、Linux Mint 或类似发行版上:

$ sudo apt install inxi

你可以在 此处 找到有关 Linux 发行版安装选项的更多信息。

在 Linux 上使用 inxi 的 3 种方法

当你安装了 inxi,你可以探索它的所有选项。有许多选项可帮助你了解有关系统的更多信息。最基本的命令提供了系统的基本概览:

$ inxi -b
System:
  Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
        Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS
Machine:
  Type: Laptop System: HP product: Dev One Notebook PC v: N/A
        serial: <superuser required>
  Mobo: HP model: 8A78 v: KBC Version 01.03 serial: <superuser required>
        UEFI: Insyde v: F.05 date: 06/14/2022
Battery:
  ID-1: BATT charge: 50.6 Wh (96.9%) condition: 52.2/53.2 Wh (98.0%)
CPU:
  Info: 8-core AMD Ryzen 7 PRO 5850U with Radeon Graphics [MT MCP]
        speed (MHz): avg: 915 min/max: 400/4507
Graphics:
  Device-1: AMD Cezanne driver: amdgpu v: kernel
  Device-2: Quanta HP HD Camera type: USB driver: uvcvideo
  Display: x11 server: X.Org v: 1.21.1.3 driver: X: loaded: amdgpu,ati
        unloaded: fbdev,modesetting,radeon,vesa gpu: amdgpu
        resolution: 1920x1080~60Hz
  OpenGL:
        renderer: AMD RENOIR (LLVM 13.0.1 DRM 3.47 5.19.0-76051900-generic)
        v: 4.6 Mesa 22.0.5
Network:
  Device-1: Realtek RTL8822CE 802.11ac PCIe Wireless Network Adapter
        driver: rtw_8822ce
Drives:
  Local Storage: total: 953.87 GiB used: 75.44 GiB (7.9%)
Info:
  Processes: 347 Uptime: 15m Memory: 14.96 GiB used: 2.91 GiB (19.4%)
  Shell: Bash inxi: 3.3.13

1、显示电池状态

你可以使用 -B 选项检查电池健康状况。结果显示系统电池 ID、充电情况和其他信息:

$ inxi -B
Battery:
ID-1: BATT charge: 44.3 Wh (85.2%) condition: 52.0/53.2 Wh (97.7%)

2、显示 CPU 信息

使用 -C 选项了解有关 CPU 的更多信息:

$ inxi -C
CPU:
  Info: 8-core model: AMD Ryzen 7 PRO 5850U with Radeon Graphics bits: 64
    type: MT MCP cache: L2: 4 MiB
  Speed (MHz): avg: 400 min/max: 400/4507 cores: 1: 400 2: 400 3: 400
    4: 400 5: 400 6: 400 7: 400 8: 400 9: 400 10: 400 11: 400 12: 400 13: 400
    14: 400 15: 400 16: 400

inxi 的输出默认使用彩色文本。你可以根据需要使用“颜色开关”进行更改以提高可读性。

命令选项是 -c 后跟 0 到 42 之间的任意数字以适合你的习惯。

$ inxi -c 42

以下是使用配色 5 和 7 的几个不同选项的示例:

inxi -c 5 command

该软件可以使用 Linux 系统中的传感器显示硬件温度、风扇速度和有关系统的其他信息。输入 inxi -s 并读取以下结果:

inxi -s

3、组合选项

如果支持,你可以组合 inxi 的选项以获得复杂的输出。例如,inxi -S 提供系统信息,-v 提供详细输出。将两者结合起来可以得到以下结果:

$ inxi -S
System:
  Host: pop-os Kernel: 5.19.0-76051900-generic x86_64 bits: 64
        Desktop: GNOME 42.3.1 Distro: Pop!_OS 22.04 LTS

$ inxi -Sv
CPU: 8-core AMD Ryzen 7 PRO 5850U with Radeon Graphics (-MT MCP-)
speed/min/max: 634/400/4507 MHz Kernel: 5.19.0-76051900-generic x86_64
Up: 20m Mem: 3084.2/15318.5 MiB (20.1%) Storage: 953.87 GiB (7.9% used)
Procs: 346 Shell: Bash inxi: 3.3.13

额外功能:查看天气

inxi 可以收集到的信息并不只有你的电脑。使用 -w 选项,你还可以获取你所在地区的天气信息:

$ inxi -w
Weather:
  Report: temperature: 14 C (57 F) conditions: Clear sky
  Locale: Wellington, G2, NZL
        current time: Tue 30 Aug 2022 16:28:14 (Pacific/Auckland)
        Source: WeatherBit.io

你可以通过指定你想要的城市和国家以及 -W 来获取世界其他地区的天气信息:

$ inxi -W rome,italy
Weather:
  Report: temperature: 20 C (68 F) conditions: Clear sky
  Locale: Rome, Italy current time: Tue 30 Aug 2022 06:29:52
        Source: WeatherBit.io

总结

有许多很棒的工具可以收集有关你的计算机的信息。我根据机器、桌面或我的心情使用不同的工具。你最喜欢的系统信息工具是什么?

图片来源:(Don Watkins,CC BY-SA 4.0)


via: https://opensource.com/article/22/9/linux-inxi-command

作者:Don Watkins 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

现在,试试看这 4 个简单的步骤,来清理你的 Ubuntu 系统吧。

这份精简指南将告诉你如何清理 Ubuntu 系统以及如何释放一些磁盘空间。

如果你的 Ubuntu 系统已经运行了至少一年,尽管系统是最新的,你仍然可能会觉得你的 Ubuntu 系统运行缓慢且滞后。

在过去,因为你想试验某一应用程序,或是在看到了它的好评推荐之后,而安装了许多应用程序,但你并没有删除它们。下面这些方法可以帮助你找出一些可以释放的隐藏磁盘空间。

清理 Ubuntu 系统的步骤

1、清理 Apt 缓存

Apt 缓存是 Ubuntu 系统保存你下载过的所有文件的地方,以供你之后可以查看它。大多数用户不会去清理 Apt 缓存,而它却可能会占用数百兆字节。

打开终端,并运行以下命令,可以得到你的 Apt 缓存有多少:

du -sh /var/cache/apt/archives

如果你的 Ubuntu 系统已经安装了很久的话,你将看到这个数字非常大。运行以下命令来清理 Apt 缓存。

sudo apt-get clean

2、删除无用的内核

如果你已经运行 Ubuntu 系统超过了一年,那么你很可能安装多个内核。如果你的硬件是最新的,并且与 Linux 兼容而没有太多配置,你可以删除旧的内核,保留最新的内核。

在终端运行以下命令来删除旧的内核:

sudo apt-get autoremove --purge

Autoremove Purge

3、删除旧的应用程序和软件包

如果你是一个喜欢尝试 Linux 应用程序的人,那么你的系统中肯定有一些不再需要的没用的应用程序。

现在,你可能已经忘记了你安装过的应用程序名称。不过你可以在终端运行以下命令来查看你最近安装的内容:

你会得到通过 apt 命令安装的应用程序和软件包的列表:

history | grep "apt-get install"

List of apt installed app – History

你将得到最近安装的应用程序列表:

grep " install " /var/log/dpkg.log.1
zgrep " install " /var/log/dpkg.log.2.gz

你可以运行以下命令来删除应用程序和软件包:

sudo apt remove app1 package1

4、使用系统清理应用

有大量免费和原生的系统 清理应用 可以使用。但是,我认为 BleachBit 是清理系统最好的一个应用,因为它经久不衰。

使用以下命令安装 BleachBit 或通过应用商店安装。

sudo apt install bleachbit

安装后,打开 BleachBit,并运行扫描。它会向你显示浏览器占用的所有缓存文件、临时文件、垃圾等,你只需单击一个按钮即可清理它。

附送技巧

清理 Flatpak 软件包

Flatpak 应用程序和 运行时 runtime 会占用大量磁盘空间。因为在设计上,Flatpak 的可执行文件结合了运行时。尽管运行时可以在相关应用程序之间共享,但许多未使用的剩余运行时可能会占用你的磁盘空间。

删除一些未使用的 Flatpak 包最直接的方法是下面的命令。在终端运行这一命令。

flatpak uninstall --unused

可以参考 这篇文章 了解有关 Flatpak 包的更多信息。

清理未使用的 Snap 项目

如果你使用 Ubuntu 系统,那么你很有可能使用的是 Snap 软件包。随着时间的推移,Snap 会积累不相关的运行时和文件。你可以使用以下脚本来清理一些没用的 snap 运行时。

将下面的脚本复制到一个新文件中,并将其命名为 clean_snap.sh

然后使用 chmod +x clean_snap.sh 命令来赋予它可执行权限,并通过 ./clean_snap.sh 运行

#!/bin/bash  
#Removes old revisions of snaps  
#CLOSE ALL SNAPS BEFORE RUNNING THIS  
set -eu  
LANG=en_US.UTF-8 
snap list --all | awk '/disabled/{print $1, $3}' |
      while read snapname revision; do
          snap remove "$snapname" --revision="$revision"
      done

可以参考 这篇文章 了解有关清理 Snap 包的更多信息。

更多技巧

你还可以使用以下命令来手动搜索大文件。

find /home -type f -exec du -h {} + | sort -hr | head -20

例如,运行以下命令,你会得到根目录 / 中的前 20 个大文件。现在你可以查看大文件,并使用文件管理器手动删除它们。请注意删除文件时要非常小心。尽量不要涉及 /home 目录以外的任何内容。

Find Large files in Linux

总结

这样就完成了。如果你按照上述步骤操作,你一定能够释放 Ubuntu 系统中的一些空间,现在你的系统有剩余空间了。你可以按照这些措施来清理 Ubuntu 系统。不要忘记使用最新的软件包,使你的系统保持到最新。

?️ 如果你认为使用上述的技巧可以释放一些磁盘空间,并使得你的 Ubuntu 更快了,请在下方评论区留言。你通常又是使用什么命令来清理你的 Ubuntu 系统?

快留言告诉我吧。


via: https://www.debugpoint.com/4-simple-steps-clean-ubuntu-system-linux/

作者:Arindam 选题:lkxed 译者:Donkey-Hao 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出

Colima 是 macOS 和 Linux 上的 Docker Desktop 替代品,它现在由 DDEV 支持。

DDEV 是一个开源工具,可以在几分钟内轻松启动和运行本地 PHP 开发环境。由于其每个项目的环境配置可以扩展、版本控制和共享,所以它很强大和灵活。简而言之,DDEV 旨在允许开发团队在其工作流程中使用容器,而无需复杂的定制配置。

DDEV 用灵活、现代、基于容器的解决方案取代了更传统的 AMP 栈解决方案(WAMP、MAMP、XAMPP 等)。因为它使用容器,DDEV 允许每个项目使用任何一组应用、Web 服务器版本、数据库服务器、搜索索引服务器和其他类型的软件。

2022 年 3 月,DDEV 团队 宣布支持 Colima,这是 macOS 和 Linux 上的开源 Docker Desktop 替代品。Colima 是开源的,据所有报告显示,它比其替代方案有所 性能提升,所以使用 Colima 似乎是一个没有问题的选择。

迁移到 Colima

首先,Colima 几乎是 Docker Desktop 的替代品。我说几乎是因为在将它用于现有的 DDEV 项目时需要重新配置。具体来说,必须重新导入数据库。解决方法是先导出数据库,然后启动 Colima,然后再导入。很简单。

Colima 要求安装 Docker 或 Podman 命令。在 Linux 上,它还需要 Lima。

Docker 默认随 Docker Desktop for macOS 一起安装,但它也可以作为独立命令使用。如果你想要 100% 纯 Colima,你可以卸载 Docker Desktop for macOS,并独立安装和配置 Docker 客户端。完整的安装说明可以在 DDEV 文档站点上找到

容器技术栈图片

容器技术栈图片 图片来源:(Mike Anello,CC BY-SA 4.0)

如果你选择继续使用 Colima 和 Docker Desktop,那么在命令行执行 docker 命令时,你必须首先指定要使用的容器。下一节将对此进行更多介绍。

在 macOS 上安装 Colima

我目前有一些本地项目使用 Docker,还有一些使用 Colima。当我了解了基础知识,在它们之间切换就不难了。

  1. 使用 Homebrew brew install colima 安装 Colima
  2. ddev poweroff(为了安全起见)
  3. 接下来,使用 colima start --cpu 4 --memory 4 启动 Colima,--cpu--memory 选项只需执行一次。第一次之后,只需要 colima start
  4. 如果你像我一样是 DDEV 用户,那么你可以使用常用的 ddev 命令(ddev configddev start 等)启动一个全新的 Drupal 9 站点。建议启用 DDEV 的 mutagen 功能以最大化性能

在 Colima 和 Docker Desktop 之间切换

如果你还没有准备好使用 Colima,你可以同时安装 Colima 和 Docker Desktop。

  1. 首先关闭 ddev:ddev poweroff
  2. 然后停止Colima:colima stop
  3. 现在运行 docker context use default 告诉 Docker 客户端你要使用哪个容器。默认名称是 Docker Desktop for Mac。当 colima start 运行时,它会自动将 Docker 切换到 colima 上下文
  4. 要继续使用默认(Docker Desktop)上下文,请使用 ddev start 命令。

从技术上讲,启动和停止 Colima 不是必需的,但是在两个上下文之间切换时的 ddev poweroff 命令是必要的。

Colima 停止时,最新版本的 Colima 会将 Docker 上下文恢复为 default,因此不再需要 docker context use default 命令。无论如何,我仍然使用 docker context show 来验证 default(Docker Desktop for Mac)或 colima 上下文是否正在使用。基本上,术语 context 指的是 Docker 客户端将命令发送到哪个容器提供者。

尝试 Colima

总的来说,我喜欢我目前所看到的。我没有遇到任何问题,而且基于 Colima 的网站看起来更快些(尤其是在启用 DDEV 的 Mutagen 功能时)。我肯定会预见自己在未来几周内将项目网站迁移到 Colima。

本文最初发布在 DrupalEasy 博客 并经许可重新发布。


via: https://opensource.com/article/22/9/docker-desktop-colima

作者:Michael Anello 选题:lkxed 译者:geekpi 校对:wxy

本文由 LCTT 原创编译,Linux中国 荣誉推出