2019年2月

如你所知,用户可以在 Ubuntu 系统上使用 sudo 权限执行任何管理任务。在 Linux 机器上创建新用户时,他们无法执行任何管理任务,直到你将其加入 sudo 组的成员。在这个简短的教程中,我们将介绍如何将普通用户添加到 sudo 组以及移除给定的权限,使其成为普通用户。

在 Linux 上向普通用户授予 sudo 权限

通常,我们使用 adduser 命令创建新用户,如下所示。

$ sudo adduser ostechnix

如果你希望新创建的用户使用 sudo 执行管理任务,只需使用以下命令将它添加到 sudo 组:

$ sudo usermod -a -G sudo hduser

上面的命令将使名为 ostechnix 的用户成为 sudo 组的成员。

你也可以使用此命令将用户添加到 sudo 组。

$ sudo adduser ostechnix sudo

现在,注销并以新用户身份登录,以使此更改生效。此时用户已成为管理用户。

要验证它,只需在任何命令中使用 sudo 作为前缀。

$ sudo mkdir /test
[sudo] password for ostechnix:

移除用户的 sudo 权限

有时,你可能希望移除特定用户的 sudo 权限,而不用在 Linux 中删除它。要将任何用户设为普通用户,只需将其从 sudo 组中删除即可。

比如说如果要从 sudo 组中删除名为 ostechnix 的用户,只需运行:

$ sudo deluser ostechnix sudo

示例输出:

Removing user `ostechnix' from group `sudo' ...
Done.

此命令仅从 sudo 组中删除用户 ostechnix,但不会永久地从系统中删除用户。现在,它成为了普通用户,无法像 sudo 用户那样执行任何管理任务。

此外,你可以使用以下命令撤消用户的 sudo 访问权限:

$ sudo gpasswd -d ostechnix sudo

sudo 组中删除用户时请小心。不要从 sudo 组中删除真正的管理员。

使用命令验证用户 ostechnix 是否已从 sudo 组中删除:

$ sudo -l -U ostechnix
User ostechnix is not allowed to run sudo on ubuntuserver.

是的,用户 ostechnix 已从 sudo 组中删除,他无法执行任何管理任务。

sudo 组中删除用户时请小心。如果你的系统上只有一个 sudo 用户,并且你将他从 sudo 组中删除了,那么就无法执行任何管理操作,例如在系统上安装、删除和更新程序。所以,请小心。在我们的下一篇教程中,我们将解释如何恢复用户的 sudo 权限。

就是这些了。希望这篇文章有用。还有更多好东西。敬请期待!

干杯!


via: https://www.ostechnix.com/how-to-grant-and-remove-sudo-privileges-to-users-on-ubuntu/

作者:SK 选题:lujun9972 译者:geekpi 校对:wxy

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

(LCTT 译注:本文原文发表于 2016 年,可能有些信息已经过时。)

在 Linux 平台上玩游戏 并不是什么新鲜事,现在甚至有专门的 Linux 游戏发行版,但是这不意味着在 Linux 上打游戏的体验和在 Windows 上一样顺畅。

为了确保我们和 Windows 用户同样地享受游戏乐趣,哪些问题是我们应该考虑的呢?

WinePlayOnLinux 和其它类似软件不总是能够让我们玩所有流行的 Windows 游戏。在这篇文章里,我想讨论一下为了拥有最好的 Linux 游戏体验所必须处理好的若干因素。

1 SteamOS 是开源平台,但 Steam for Linux 并不是

正如 StemOS 主页所说, 即便 SteamOS 是一个开源平台,但 Steam for Linux 仍然是专有的软件。如果 Steam for Linux 也开源,那么它从开源社区得到的支持将会是巨大的。既然它不是,那么 Ascension 计划的诞生自然是不可避免的

Ascension 是一个开源的游戏启动器,旨在能够启动从任何平台购买、下载的游戏。这些游戏可以是 Steam 平台的、Origin 游戏平台的、Uplay 平台的,以及直接从游戏开发者主页下载的,或者来自 DVD、CD-ROM 的。

Ascension 计划的开端是这样:某个观点的分享激发了一场与游戏社区读者之间有趣的讨论,在这场讨论中读者们纷纷发表了自己的观点并给出建议。

2 与 Windows 平台的性能比较

在 Linux 平台上运行 Windows 游戏并不总是一件轻松的任务。但是得益于一个叫做 CSMT(多线程命令流)的特性,尽管离 Windows 级别的性能还有相当长的路要走,PlayOnLinux 现在依旧可以更好地解决这些性能方面的问题。

Linux 对游戏的原生支持在过去发行的游戏中从未尽如人意。

去年,有报道说 SteamOS 比 Windows 在游戏方面的表现要差得多。古墓丽影去年在 SteamOS 及 Steam for Linux 上发行,然而其基准测试的结果与 Windows 上的性能无法抗衡。

这明显是因为游戏是基于 DirectX 而不是 OpenGL 开发的缘故。

古墓丽影是第一个使用 TressFX 的游戏。下面这个视频包涵了 TressFX 的比较:

下面是另一个有趣的比较,它显示出使用 Wine + CSMT 带来的游戏性能比 Steam 上原生的 Linux 版游戏带来的游戏性能要好得多!这就是开源的力量!

以防 FPS 损失,TressFX 已经被关闭。

以下是另一个有关在 Linux 上最新发布的 “Life is Strange” 在 Linux 与 Windows 上的比较:

Steam for Linux 开始在这个新游戏上展示出比 Windows 更好的游戏性能,这是一件好事。

在发布任何 Linux 版的游戏前,开发者都应该考虑优化游戏,特别是基于 DirectX 并需要进行 OpenGL 转制的游戏。我们十分希望 Linux 上的 杀出重围:人类分裂 Deus Ex: Mankind Divided 在正式发行时能有一个好的基准测试结果。由于它是基于 DirectX 的游戏,我们希望它能良好地移植到 Linux 上。该游戏执行总监说过这样的话

3 专有的 NVIDIA 驱动

相比于 NVIDIAAMD 对于开源的支持绝对是值得称赞的。尽管 AMD 因其更好的开源驱动在 Linux 上的驱动支持挺不错,而 NVIDIA 显卡用户由于开源版本的 NVIDIA 显卡驱动 “Nouveau” 有限的能力,仍不得不用专有的 NVIDIA 驱动。

曾经,Linus Torvalds 大神也分享过他关于“来自 NVIDIA 的 Linux 支持完全不可接受”的想法。

你可以在这里观看完整的谈话,尽管 NVIDIA 回应 承诺更好的 Linux 平台支持,但其开源显卡驱动仍如之前一样毫无起色。

4 需要 Linux 平台上的 Uplay 和 Origin 的 DRM 支持

以上的视频描述了如何在 Linux 上安装 Uplay DRM。视频上传者还建议说并不推荐使用 Wine 作为 Linux 上的主要的应用和游戏支持软件。相反,更鼓励使用原生的应用。

以下视频是一个关于如何在 Linux 上安装 Origin DRM 的教程。

数字版权管理(DRM)软件给游戏运行又加了一层阻碍,使得在 Linux 上良好运行 Windows 游戏这一本就充满挑战性的任务更有难度。因此除了使游戏能够运行之外,W.I.N.E 不得不同时负责运行像 Uplay 或 Origin 之类的 DRM 软件。如果能像 Steam 一样,Linux 也能够有自己原生版本的 Uplay 和 Origin 那就好了。

5 DirectX 11 对于 Linux 的支持

尽管我们在 Linux 平台上有可以运行 Windows 应用的工具,每个游戏为了能在 Linux 上运行都带有自己的配套调整需求。尽管去年在 Code Weavers 有一篇关于 DirectX 11 对于 Linux 的支持 的公告,在 Linux 上畅玩新发大作仍是长路漫漫。

现在你可以从 Codweavers 购买 Crossover 以获得可得到的最佳 DirectX 11 支持。这个在 Arch Linux 论坛上的频道清楚展现了将这个梦想成真需要多少的努力。以下是一个 Reddit 频道 上的有趣 发现。这个发现提到了来自 Codeweavers 的 DirectX 11 补丁,现在看来这无疑是好消息。

6 不是全部的 Steam 游戏都可跑在 Linux 上

随着 Linux 游戏玩家一次次错过主要游戏的发行,这是需要考虑的一个重点,因为大部分主要游戏都在 Windows 上发行。这是如何在 Linux 上安装 Windows 版的 Steam 的教程

7 游戏发行商对 OpenGL 更好的支持

目前开发者和发行商主要着眼于用 DirectX 而不是 OpenGL 来开发游戏。现在随着 Steam 正式登录 Linux,开发者应该同样考虑在 OpenGL 下开发。

Direct3D 仅仅是为 Windows 平台而打造。而 OpenGL API 拥有开放性标准,并且它不仅能在 Windows 上同样也能在其它各种各样的平台上实现。

尽管是一篇很老的文章,但这个很有价值的资源分享了许多有关 OpenGL 和 DirectX 现状的很有想法的信息。其所提出的观点确实十分明智,基于按时间排序的事件也能给予读者启迪。

在 Linux 平台上发布大作的发行商绝不应该忽视一个事实:在 OpenGL 下直接开发游戏要比从 DirectX 移植到 OpenGL 合算得多。如果必须进行平台转制,移植必须被仔细优化并谨慎研究。发布游戏可能会有延迟,但这绝对值得。

有更多的烦恼要分享?务必在评论区让我们知道。


via: https://itsfoss.com/linux-gaming-problems/

作者:Avimanyu Bandyopadhyay 译者:tomjlw 校对:wxy

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

不,你不需要 Emacs 也能用 Org,这是我开源工具系列的第 16 集,将会让你在 2019 年变得更加有生产率。

每到年初似乎总有这么一个疯狂的冲动来寻找提高生产率的方法。新年决心,正确地开始一年的冲动,以及“向前看”的态度都是这种冲动的表现。软件推荐通常都会选择闭源和专利软件。但这不是必须的。

这是我 2019 年改进生产率的 19 个新工具中的第 16 个。

Org (非 Emacs)

Org 模式 (或者就称为 Org) 并不是新鲜货,但依然有许多人没有用过。他们很乐意试用一下以体验 Org 是如何改善生产率的。但最大的障碍来自于 Org 是与 Emacs 相关联的,而且很多人都认为两者缺一不可。并不是这样的!一旦你理解了其基础,Org 就可以与各种其他工具和编辑器一起使用。

Org,本质上,是一个结构化的文本文件。它有标题、子标题,以及各种关键字,其他工具可以根据这些关键字将文件解析成日程表和代办列表。Org 文件可以被任何纯文本编辑器编辑(例如,VimAtomVisual Studio Code),而且很多编辑器都有插件可以帮你创建和管理 Org 文件。

一个基础的 Org 文件看起来是这样的:

* Task List
** TODO Write Article for Day 16 - Org w/out emacs
   DEADLINE: <2019-01-25 12:00>
*** DONE Write sample org snippet for article
    - Include at least one TODO and one DONE item
    - Show notes
    - Show SCHEDULED and DEADLINE
*** TODO Take Screenshots
** Dentist Appointment
   SCHEDULED: <2019-01-31 13:30-14:30>

Org 是一种大纲格式,它使用 * 作为标识指明事项的级别。任何以 TODO(是的,全大些)开头的事项都是代办事项。标注为 DONE 的工作表示该工作已经完成。SCHEDULEDDEADLINE 标识与该事务相关的日期和时间。如何任何地方都没有时间,则该事务被视为全天活动。

使用正确的插件,你喜欢的文本编辑器可以成为一个充满生产率和组织能力的强大工具。例如,vim-orgmode 插件包括创建 Org 文件、语法高亮的功能,以及各种用来生成跨文件的日程和综合代办事项列表的关键命令。

Atom 的 Organized 插件可以在屏幕右边添加一个侧边栏,用来显示 Org 文件中的日程和代办事项。默认情况下它从配置项中设置的路径中读取多个 Org 文件。Todo 侧边栏允许你通过点击未完事项来将其标记为已完成,它会自动更新源 Org 文件。

还有一大堆 Org 工具可以帮助你保持生产率。使用 Python、Perl、PHP、NodeJS 等库,你可以开发自己的脚本和工具。当然,少不了 Emacs,它的核心功能就包括支持 Org。

Org 模式是跟踪需要完成的工作和时间的最好工具之一。而且,与传闻相反,它无需 Emacs,任何一个文本编辑器都行。


via: https://opensource.com/article/19/1/productivity-tool-org-mode

作者:Kevin Sonney 选题:lujun9972 译者:lujun9972 校对:wxy

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

看一下 less、Antiword 和 odt2xt 这三个实用程序,它们都可以在终端中查看文件。

我常说,你不需要使用命令行也可以高效使用 Linux —— 我知道许多 Linux 用户从不打开终端窗口,并且也用的挺好。然而,即使我不认为自己是一名技术人员,我也会在命令行上花费大约 20% 的计算时间,包括操作文件、处理文本和使用实用程序。

我经常在终端窗口中做的一件事是查看文件,无论是文本还是需要用到文字处理器的文件。有时使用命令行实用程序比启动文本编辑器或文字处理器更容易。

下面是我在命令行中用来查看文件的三个实用程序。

less

less 的美妙之处在于它易于使用,它将你正在查看的文件分解为块(或页面),这使得它们更易于阅读。你可以使用它在命令行查看文本文件,例如 README、HTML 文件、LaTeX 文件或其他任何纯文本文件。我在上一篇文章中介绍了 less

要使用 less,只需输入:

less file_name

通过按键盘上的空格键或 PgDn 键向下滚动文件,按 PgUp 键向上移动文件。要停止查看文件,按键盘上的 Q 键。

Antiword

Antiword 是一个很好地实用小程序,你可以使用它将 Word 文档转换为纯文本。只要你想,还可以将它们转换为 PostScriptPDF。在本文中,让我们继续使用文本转换。

Antiword 可以读取和转换 Word 2.0 到 2003 版本创建的文件(LCTT 译注:此处疑为 Word 2000,因为 Word 2.0 for DOS 发布于 1984 年,而 WinWord 2.0 发布于 1991 年,都似乎太老了)。它不能读取 DOCX 文件 —— 如果你尝试这样做,Antiword 会显示一条错误消息,表明你尝试读取的是一个 ZIP 文件。这在技术上说是正确的,但仍然令人沮丧。

要使用 Antiword 查看 Word 文档,输入以下命令:

antiword file_name.doc

Antiword 将文档转换为文本并显示在终端窗口中。不幸的是,它不能在终端中将文档分解成页面。不过,你可以将 Antiword 的输出重定向到 lessmore 之类的实用程序,一遍对其进行分页。通过输入以下命令来执行此操作:

antiword file_name.doc | less

如果你是命令行的新手,那么我告诉你 | 称为管道。这就是重定向。

odt2txt

作为一个优秀的开源公民,你会希望尽可能多地使用开放格式。对于你的文字处理需求,你可能需要处理 ODT 文件(由诸如 LibreOffice Writer 和 AbiWord 等文字处理器使用)而不是 Word 文件。即使没有,也可能会遇到 ODT 文件。而且,即使你的计算机上没有安装 Writer 或 AbiWord,也很容易在命令行中查看它们。

怎样做呢?用一个名叫 odt2txt 的实用小程序。正如你猜到的那样,odt2txt 将 ODT 文件转换为纯文本。要使用它,运行以下命令:

odt2txt file_name.odt

与 Antiword 一样,odt2txt 将文档转换为文本并在终端窗口中显示。和 Antiword 一样,它不会对文档进行分页。但是,你也可以使用以下命令将 odt2txt 的输出管道传输到 lessmore 这样的实用程序中:

odt2txt file_name.odt | more

你有一个最喜欢的在命令行中查看文件的实用程序吗?欢迎留下评论与社区分享。


via: https://opensource.com/article/19/2/view-files-command-line

作者:Scott Nesbitt 选题:lujun9972 译者:MjSeven 校对:wxy

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

十多年来,我一直都是 GNU-Linux 以及 Debian 的用户。随着我越来越频繁的使用桌面环境,我发现对我来说除了少数基于 web 的服务以外我的大多数需求都可以通过 Debian 软件库里自带的桌面应用解决。

我的需求之一就是进行单位换算。尽管有很多很多在线服务可以做这件事,但是我还是需要一个可以在桌面环境使用的应用。这主要是因为隐私问题以及我不想一而再再而三的寻找在线服务做事。为此我搜寻良久,直到找到 Qalculate!。

Qalculate! 最强多功能计算器应用

最佳计算器应用 Qalculator

这是 aptitude 上关于 Qalculate! 的介绍,我没法总结的比他们更好了:

强大易用的桌面计算器 - GTK+ 版

Qalculate! 是一款外表简单易用,内核强大且功能丰富的应用。其功能包含自定义函数、单位、高计算精度、作图以及可以输入一行表达式(有容错措施)的图形界面(也可以选择使用传统按钮)。

这款应用也发行过 KDE 的界面,但是至少在 Debian Testing 软件库里,只出现了 GTK+ 版的界面,你也可以在 GitHub 上的这个仓库里面看到。

不必多说,Qalculate! 在 Debian 的软件源内处于可用状态,因此可以使用 apt 命令或者是基于 Debian 的发行版比如 Ubuntu 提供的软件中心轻松安装。在 Windows 或者 macOS 上也可以使用这款软件。

Qalculate! 特性一览

列出全部的功能清单会有点长,请允许我只列出一部分功能并使用截图来展示极少数 Qalculate! 提供的功能。这么做是为了让你熟悉 Qalculate! 的基本功能,并在之后可以自由探索 Qalculate! 到底还能干什么。

  • 代数
  • 微积分
  • 组合数学
  • 复数
  • 数据集
  • 日期与时间
  • 经济学
  • 对数和指数
  • 几何
  • 逻辑学
  • 向量和矩阵
  • 杂项
  • 数论
  • 统计学
  • 三角学

使用 Qalculate!

Qalculate! 的使用不是很难。你甚至可以在里面写简单的英文。但是我还是推荐先阅读手册以便充分发挥 Qalculate! 的潜能。

使用 Qalculate 进行字节到 GB 的换算

摄氏度到华氏度的换算

qalc 是 Qalculate! 的命令行版

你也可以使用 Qalculate! 的命令行版 qalc

$ qalc 62499836 byte to gibibyte
62499836 * byte = approx. 0.058207508 gibibyte

$ qalc 40 degree celsius to fahrenheit
(40 * degree) * celsius = 104 deg*oF

Qalculate! 的命令行界面可以让不喜欢 GUI 而是喜欢命令行界面(CLI)或者是使用无头结点(没有 GUI)的人可以使用 Qalculate!。这些人大多是在服务器环境下工作。

如果你想要在脚本里使用这一软件的话,我想 libqalculate 是最好的解决方案。看一看 qalc 以及 qalculate-gtk 是如何依赖于它工作的就足以知晓如何使用了。

再提一嘴,你还可以了解下如何根据一系列数据绘图,其他应用方式就留给你自己发掘了。不要忘记查看 /usr/share/doc/qalculate/index.html 以获取 Qalculate! 的全部功能。

注释:注意 Debian 更喜欢 gnuplot,因为其输出的图片很精美。

附加技巧:你可以通过在 Debian 下通过命令行感谢开发者

如果你使用 Debian 而且喜欢哪个包的话,你可以使用如下命令感谢 Debian 下这个软件包的开发者或者是维护者:

reportbug --kudos $PACKAGENAME

因为我喜欢 Qalculate!,我想要对 Debian 的开发者以及维护者 Vincent Legout 的卓越工作表示感谢:

reportbug --kudos qalculate

建议各位阅读我写的关于如何使用报错工具在 Debian 中上报 BUG的详细指南。

一位高分子化学家对 Qalculate! 的评价

经由作者 Philip Prado,我们联系上了 Timothy Meyers 先生,他目前是在高分子实验室工作的高分子化学家。

他对 Qaclulate! 的专业评价是:

看起来几乎任何科学家都可以使用这个软件,因为如果你知道指令以及如何使其生效的话,几乎任何数据计算都可以使用这个软件计算。

我觉得这个软件少了些物理常数,但我想不起来缺了哪些。我觉得它没有太多有关流体动力学的东西,再就是少了点部分化合物的光吸收)系数,但这些东西只对我这个化学家来说比较重要,我不知道这些是不是对别人来说也是特别必要的。自由能可能也是。

最后,我分享的关于 Qalculate! 的介绍十分简陋,其实际功能与你的需要以及你的想象力有关系。希望你能喜欢 Qalculate!


via: https://itsfoss.com/qalculate/

作者:Shirish 选题:lujun9972 译者:name1e5s 校对:wxy

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

有几个命令可以报告在 Linux 系统上安装和使用了多少内存。根据你使用的命令,你可能会被细节淹没,也可能获得快速简单的答案。

在 Linux 系统中有很多种方法获取有关安装了多少内存的信息及查看多少内存正在被使用。有些命令提供了大量的细节,而其他命令提供了简洁但不一定易于理解的答案。在这篇文章中,我们将介绍一些查看内存及其使用状态的有用的工具。

在我们开始之前,让我们先来回顾一些基础知识。物理内存和虚拟内存并不是一回事。后者包括配置为交换空间的磁盘空间。交换空间可能包括为此目的特意留出来的分区,以及在创建新的交换分区不可行时创建的用来增加可用交换空间的文件。有些 Linux 命令会提供关于两者的信息。

当物理内存占满时,交换空间通过提供可以用来存放内存中非活动页的磁盘空间来扩展内存。

/proc/kcore 是在内存管理中起作用的一个文件。这个文件看上去是个普通文件(虽然非常大),但它并不占用任何空间。它就像其他 /proc 下的文件一样是个虚拟文件。

$ ls -l /proc/kcore
-r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore

有趣的是,下面查询的两个系统并没有安装相同大小的内存,但 /proc/kcore 的大小却是相同的。第一个系统安装了 4 GB 的内存,而第二个系统安装了 6 GB。

system1$ ls -l /proc/kcore
-r--------. 1 root root 140737477881856 Jan 28 12:59 /proc/kcore
system2$ ls -l /proc/kcore
-r--------  1 root root 140737477881856 Feb  5 13:00 /proc/kcore

一种不靠谱的解释说这个文件代表可用虚拟内存的大小(没准要加 4 KB),如果这样,这些系统的虚拟内存可就是 128TB 了!这个数字似乎代表了 64 位系统可以寻址多少内存,而不是当前系统有多少可用内存。在命令行中计算 128 TB 和这个文件大小加上 4 KB 很容易。

$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128
140737488355328
$ expr 1024 \* 1024 \* 1024 \* 1024 \* 128 + 4096
140737488359424

另一个用来检查内存的更人性化的命令是 free。它会给出一个易于理解的内存报告。

$ free
              total        used        free      shared  buff/cache   available
Mem:        6102476      812244     4090752       13112     1199480     4984140
Swap:       2097148           0     2097148

使用 -g 选项,free 会以 GB 为单位返回结果。

$ free -g
              total        used        free      shared  buff/cache   available
Mem:              5           0           3           0           1           4
Swap:             1           0           1

使用 -t 选项,free 会显示与无附加选项时相同的值(不要把 -t 选项理解成 TB),并额外在输出的底部添加一行总计数据。

$ free -t
              total        used        free      shared  buff/cache   available
Mem:        6102476      812408     4090612       13112     1199456     4983984
Swap:       2097148           0     2097148
Total:      8199624      812408     6187760

当然,你也可以选择同时使用两个选项。

$ free -tg
              total        used        free      shared  buff/cache   available
Mem:              5           0           3           0           1           4
Swap:             1           0           1
Total:            7           0           5

如果你尝试用这个报告来解释“这个系统安装了多少内存?”,你可能会感到失望。上面的报告就是在前文说的装有 6 GB 内存的系统上运行的结果。这并不是说这个结果是错的,这就是系统对其可使用的内存的看法。

free 命令也提供了每隔 X 秒刷新显示的选项(下方示例中 X 为 10)。

$ free -s 10
              total        used        free      shared  buff/cache   available
Mem:        6102476      812280     4090704       13112     1199492     4984108
Swap:       2097148           0     2097148

              total        used        free      shared  buff/cache   available
Mem:        6102476      812260     4090712       13112     1199504     4984120
Swap:       2097148           0     2097148

使用 -l 选项,free 命令会提供高低内存使用信息。

$ free -l
              total        used        free      shared  buff/cache   available
Mem:        6102476      812376     4090588       13112     1199512     4984000
Low:        6102476     2011888     4090588
High:             0           0           0
Swap:       2097148           0     2097148

查看内存的另一个选择是 /proc/meminfo 文件。像 /proc/kcore 一样,这也是一个虚拟文件,它可以提供关于安装或使用了多少内存以及可用内存的报告。显然,空闲内存和可用内存并不是同一回事。MemFree 看起来代表未使用的 RAM。MemAvailable 则是对于启动新程序时可使用的内存的一个估计。

$ head -3 /proc/meminfo
MemTotal: 6102476 kB
MemFree: 4090596 kB
MemAvailable: 4984040 kB

如果只想查看内存总计,可以使用下面的命令之一:

$ awk '/MemTotal/ {print $2}' /proc/meminfo
6102476
$ grep MemTotal /proc/meminfo
MemTotal: 6102476 kB

DirectMap 将内存信息分为几类。

$ grep DirectMap /proc/meminfo
DirectMap4k: 213568 kB
DirectMap2M: 6076416 kB

DirectMap4k 代表被映射成标准 4 k 页的内存大小,DirectMap2M 则显示了被映射为 2 MB 的页的内存大小。

getconf 命令将会提供比我们大多数人想要看到的更多的信息。

$ getconf -a | more
LINK_MAX 65000
_POSIX_LINK_MAX 65000
MAX_CANON 255
_POSIX_MAX_CANON 255
MAX_INPUT 255
_POSIX_MAX_INPUT 255
NAME_MAX 255
_POSIX_NAME_MAX 255
PATH_MAX 4096
_POSIX_PATH_MAX 4096
PIPE_BUF 4096
_POSIX_PIPE_BUF 4096
SOCK_MAXBUF
_POSIX_ASYNC_IO
_POSIX_CHOWN_RESTRICTED 1
_POSIX_NO_TRUNC 1
_POSIX_PRIO_IO
_POSIX_SYNC_IO
_POSIX_VDISABLE 0
ARG_MAX 2097152
ATEXIT_MAX 2147483647
CHAR_BIT 8
CHAR_MAX 127
--More--

使用类似下面的命令来将其输出精简为指定的内容,你会得到跟前文提到的其他命令相同的结果。

$ getconf -a | grep PAGES | awk 'BEGIN {total = 1} {if (NR == 1 || NR == 3) total *=$NF} END {print total / 1024" kB"}'
6102476 kB

上面的命令通过将下方输出的第一行和最后一行的值相乘来计算内存。

PAGESIZE                           4096    <==
_AVPHYS_PAGES                      1022511
_PHYS_PAGES                        1525619 <==

自己动手计算一下,我们就知道这个值是怎么来的了。

$ expr 4096 \* 1525619 / 1024
6102476

显然值得为以上的指令之一设置个 alias

另一个具有非常易于理解的输出的命令是 top 。在 top 输出的前五行,你可以看到一些数字显示多少内存正被使用。

$ top
top - 15:36:38 up 8 days, 2:37, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 266 total, 1 running, 265 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.4 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 3244.8 total, 377.9 free, 1826.2 used, 1040.7 buff/cache
MiB Swap: 3536.0 total, 3535.7 free, 0.3 used. 1126.1 avail Mem

最后一个命令将会以一个非常简洁的方式回答“系统安装了多少内存?”:

$ sudo dmidecode -t 17 | grep "Size.*MB" | awk '{s+=$2} END {print s / 1024 "GB"}'
6GB

取决于你想要获取多少细节,Linux 系统提供了许多用来查看系统安装内存以及使用/空闲内存的选择。


via: https://www.networkworld.com/article/3336174/linux/how-much-memory-is-installed-and-being-used-on-your-linux-systems.html

作者:Sandra Henry-Stocker 选题:lujun9972 译者:leommxj 校对:wxy

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