David Both 发布的文章

考虑使用轻量级桌面环境 LXDE 作为你 Linux 桌面的理由

去年年底,升级到 Fedora 25 所装的新版本 KDE Plasma 给我带来了严重问题,让我难以完成任何工作。出于两个原因我决定尝试其它 Linux 桌面环境。第一,我需要完成我的工作。第二,一心使用 KDE 已经有很多年,我认为是时候尝试一些不同的桌面了。

我第一个尝试了几周的替代桌面是 Cinnamon,我在 1 月份介绍过它。这次我已经使用了 LXDE( 轻量级 X11 桌面环境 Lightweight X11 Desktop Environment )大概 6 周,我发现它有很多我喜欢的东西。这是我使用 LXDE 的 8 个理由。

1、 LXDE 支持多个面板

和 KDE 以及 Cinnamon 一样,LXDE 支持包括系统菜单、应用启动器的面板,以及显示正在运行应用图标的任务栏。我第一次登录到 LXDE 时,面板的配置看起来异常熟悉。LDXE 看起来已经根据我的 KDE 配置情况为我准备好了喜欢的顶部和底部面板,并包括了系统托盘设置。顶部面板上的应用程序启动器看似来自 Cinnamon 。面板上的东西使得启动和管理程序变得容易。默认情况下,只在桌面底部有一个面板。

 title=

打开了 Openbox 配置管理器的 LXDE 桌面。这个桌面还没有更改过,因此它使用了默认的颜色和图标主题。

2、 Openbox 配置管理器提供了一个用于管理和体验桌面外观的简单工具。

它为主题、窗口修饰、多个显示器的窗口行为、移动和调整窗口大小、鼠标控制、多桌面等提供了选项。虽然这看起来似乎很多,但它远不如配置 KDE 桌面那么复杂,尽管如此 Openbox 仍然提供了绝佳的效果。

3、 LXDE 有一个强大的菜单工具

桌面偏好 Desktop Preference 菜单的 高级 Advanced 标签页有个有趣的选项。这个选项的名称是 “ 点击桌面时显示窗口管理器提供的菜单 Show menus provided by window managers when desktop is clicked ”。选中这个复选框,当你右击桌面时,会显示 Openbox 桌面菜单,而不是标准的 LXDE 桌面菜单。

Openbox 桌面菜单包括了几乎每个你可能想要的菜单选项,所有都可从桌面便捷访问。它包括了所有的应用程序菜单、系统管理、以及首选项。它甚至有一个菜单包括了所有已安装的终端模拟器应用程序的列表,因此系统管理员可以轻易地启动他们喜欢的终端。

4、 LXDE 桌面的设计干净简单

它没有任何会妨碍你完成工作的东西。尽管你可以添加一些文件、目录、应用程序的链接到桌面,但是没有可以添加到桌面的小部件。在我的 KDE 和 Cinnamon 桌面上我确实喜欢一些小部件,但它们很容易被覆盖住,然后我就需要移动或者最小化窗口,或者使用 “ 显示桌面 Show Desktop ” 按钮清空整个桌面才能看到它们。 LXDE 确实有一个 “ 图标化所有窗口 Iconify all windows ” 按钮,但我很少需要使用它,除非我想看我的壁纸。

5、 LXDE 有一个强大的文件管理器

LXDE 默认的文件管理器是 PCManFM,因此在我使用 LXDE 的时候它成为了我的文件管理器。PCManFM 非常灵活、可以配置为适用于大部分人和场景。它看起来没有我常用的文件管理器 Krusader 那么可配置,但我确实喜欢 Krusader 所没有的 PCManFM 侧边栏。

PCManFM 允许打开多个标签页,可以通过右击侧边栏的任何条目或者单击图标栏的新标签图标打开。PCManFM 窗口左边的 位置 Places 面板显示了应用程序菜单,你可以从 PCManFM 启动应用程序。 位置 Places 面板上面也显示了一个设备图标,可以用于查看你的物理存储设备,一系列带按钮的可移除设备允许你挂载和卸载它们,还有可以便捷访问的主目录、桌面、回收站。 位置 Places 面板的底部包括一些默认目录的快捷方式,例如 Documents、Music、Pictures、Videos 以及 Downloads。你也可以拖拽其它目录到 位置 Places 面板的快捷方式部分。 位置 Places 面板可以换为正常的目录树。

6、 如果在现有窗口后面打开,新窗口的标题栏会闪烁

这是一个在大量现有窗口中定位新窗口的好方法。

7、 大部分现代桌面环境允许多个桌面,LXDE 也不例外

我喜欢使用一个桌面用于我的开发、测试以及编辑工作,另一个桌面用于普通任务,例如电子邮件和网页浏览。LXDE 默认提供两个桌面,但你可以配置为只有一个或者多个。右击 桌面切换器 Desktop Pager 配置它。

通过一些有害但不是破坏性的测试,我发现最大允许桌面数目是 100。我还发现当我把桌面数目减少到低于我实际已经在使用的 3 个时,不活动桌面上的窗口会被移动到桌面 1。多么有趣的发现!

8、 Xfce 电源管理器是一个小巧但强大的应用程序,它允许你配置电源管理如何工作

它提供了一个标签页用于通用配置,以及用于系统、显示和设备的标签页。设备标签页显示了我系统上已有设备的表格,例如电池供电的鼠标、键盘,甚至我的 UPS(不间断电源)。它显示了每个设备的详细信息,包括厂商和系列号,如果可用的话,还有电池充电状态。当我写这篇博客的时候,我 UPS 的电量是 100%,而我罗技鼠标的电量是 75%。 Xfce 电源管理器还在系统托盘显示了一个图标,因此你可以从那里快速了解你设备的电池状态。

关于 LXDE 桌面还有很多喜欢的东西,但这些就是抓住了我的注意力,它们也是对我使用现代图形用户界面工作非常重要、不可或缺的东西。

我注意到奇怪的一点是,我一直没有弄明白桌面(Openbox)菜单的 “ 重新配置 Reconfigure ” 选项是干什么的。我点击了几次,从没有注意到有任何类型的任何活动表明该选项实际起了作用。

我发现 LXDE 是一个简单但强大的桌面。我享受使用它写这篇文章的几周时间。通过允许我访问我想要的应用程序和文件,同时在其余时间保持不会让我分神,LXDE 使我得以高效地工作。我也没有遇到任何妨碍我完成工作的问题——当然,除了我用于探索这个好桌面所花的时间。我非常推荐 LXDE 桌面。

我现在正在试用 GNOME 3 和 GNOME Shell,并将在下一期中报告。


作者简介:

David Both 是一个 Linux 和开源倡导者,他居住在北卡罗莱纳州的 Raleigh。他在 IT 行业已经超过 40 年,在他工作的 IBM 公司教授 OS/2 超过 20 年,他在 1981 年为最早的 IBM PC 写了第一个培训课程。他教过 Red Hat 的 RHCE 课程,在 MCI Worldcom、 Cisco 和北卡罗莱纳州 工作过。他一直在使用 Linux 和开源软件近 20 年。


via: https://opensource.com/article/17/3/8-reasons-use-lxde

作者:David Both 译者:ictlyh 校对:wxy

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

探索 rsync 在备份方案中的作用。

在系统管理员的工作中备份无疑是一个重要的部分。当没有完整备份或者良好规划的备份和实施时,就可能或早或晚不可挽回地丢失重要的数据。

所有公司,无论大小,都运营在数据之上。考虑到丢失业务数据造成的经济和业务损失,从最小的个人公司到最大的跨国企业,没有一个公司能在丢失大部分数据以后得以幸存。你的办公室可以通过保险赔偿重建,但是你的数据就不可能再恢复了。

这里提到的丢失是指数据的完全损坏。而不是指数据被偷走,那是另一种灾难。我这里说的是数据被完全摧毁。

即使你只是个人用户而不是一个企业,备份你自己的数据也是非常重要的,我有二十年来的个人财务数据和我现在已经关闭的企业的数据,以及大量的电子发票。也包括近年来我创作的大量不同类型的文档、报告和数据报表。我不想失去任何这些数据。

所以备份是我数据长期安全的必要保障。

备份软件选择

有许多软件可以执行备份。大多数 Linux 发行版提供至少一种开源的备份软件。同时也有许多商业备份软件,但是这些都不符合我的需求,所以我决定使用基础的 Linux 工具来进行备份。

在我为 Open Source Yearbook 写的文章, 最佳搭档之 2015:tar 和 ssh 中,我说明了昂贵的商业备份软件在设计实施可行的备份计划中并不是必要的。

从去年开始我尝试了另一种选择, rsync 命令,它有许多我已经从中受益的有趣特性。我的主要需求是所创建的备份,用户不需要解压备份压缩包就能定位和恢复文件,以便节约创建备份的时间。

这篇文章的目的只是为了说明 rsync 在我的备份方案中的作用。并不是 rsync 的全部能力或者它的各种适用场景的概览。

rsync 命令

Andrew Tridgell 和 Paul Mackerras 编写了 rsync ,首次发布于 1996 年。它的目标是向另一台电脑同步文件。你注意到了他们为什么取这个名字了吗(remotely synchronize)?它是大多数发行版都提供的开源软件。

rsync 能够用于同步两个目录或目录树,无论它们是在同一个计算机上还是不同的计算机上,而且不仅如此,它还能做到更多。它创建或者更新的目录与源目录完全一样。新的目录不是以 tar 或 zip 等打包存储,而是普通的目录和文件,常见的 Linux 工具都能轻松访问,而这正是我所需要的。

rsync 的最重要的特性之一是它处理源目录被修改的已有文件的方式。它使用分块校验来比较源文件和目标文件,而不是从源把整个文件复制过去。如果两个文件所有块的校验和都相同,那么就不用传输数据。否则只有被改变的块被传输。这样节约了远程同步消耗的大量时间和带宽。比如,我第一次使用 rsync 脚本来把我所有的主机备份到一个外接的大型 usb 硬盘上需要三个小时,因为所有的数据都需要传输过去。而接下来的备份需要的时间就只是 3 到 8 分钟,这取决于上次备份以来创建和改变了多少文件。我使用 time 命令来记录实际花费的时间。昨天晚上,我只花了三分钟来从六个远程系统和本地工作站备份大概 750 Gb 数据。实际上只有在白天改变的几百 Mb 数据需要备份。

下面的命令可以用来同步两个目录及其任意子目录的内容。也就是说,在新目录的内容和源目录同步完之后,它们的内容完全一样。

rsync -aH sourcedir targetdir

-a 选项表示归档模式,它会保持权限、所有关系和符号(软)链接。-H 选项用来保持硬链接。注意源目录和目标目录都可以在远程主机上。

假设昨天我们使用 rsync 同步了两个目录。今天我们想再同步一次,但是我们从源目录删除了一些文件。rsync 默认只复制新的和改变过的文件到新目录里,而不去改变新目录里被我们删除的文件,但是如果你想让那些在源目录里被删除的文件在新目录里也被删除,那么你可以加上 --delete 选项来删除。

另一个有趣的选项,也是我个人最喜欢的选项是 --link-dest,因为它极大地增加了 rsync 的能力和灵活性。--link-dest 使每日备份只花费很少的额外空间和很短的时间。

用这个选项指定前一天的备份目录,以及今天的备份目录,然后 rsync 会创建今天的新备份目录,并将昨天备份目录里的每一个文件在今天的备份目录中创建硬链接。现在我们在今天的备份目录中有一大堆指向昨天备份的硬链接。文件没有被重复创建,而是创建了一些硬链接。对于硬链接,在 Wikipedia 中有非常详细的描述。而在用昨天的备份目录文件的硬链接创建了今天的备份之后,rsync 和平常一样进行备份,如果在文件中检测到了变化,就不会做硬链接,而是从昨天的备份目录里复制一个文件的副本,再把源文件中变化的部分复制过去。(LCTT 译注:此处疑似原文表述不清,参见 generator.ctry_dests_reg 函数,先根据 match_level 选择复制或者硬链接,而不是创建硬链接后再判断 match_level

现在我们的命令类似于下面这样。

rsync -aH --delete --link-dest=yesterdaystargetdir sourcedir todaystargetdir

你也可能想要排除一些不想要备份的目录或者文件。那么就可以使用 --exclude 选项。用这个选项加上你想排除文件或目录的模式。你可以用下面的新命令来排除浏览器的缓存。

rsync -aH --delete --exclude Cache --link-dest=yesterdaystargetdir sourcedir todaystargetdir

注意:你想排除的每一个文件的模式前面都分别需要加上 --exclude 选项。

rsync 可以同步远程主机,无论是作为同步源头还是目标。再举一个例子,我们假设想要把名为 remote1 的远程主机的目录同步到本地。因为 ssh 作为与远程主机交换数据的默认协议,我一直使用 ssh 选项。现在命令类似于下面这样。

rsync -aH -e ssh --delete --exclude Cache --link-dest=yesterdaystargetdir remote1:sourcedir todaystargetdir

这就是我的 rsync 备份命令的最终版本。

你可以依靠 rsync 的大量选项来定制你的同步过程。大多数情况而言,我刚刚描述的简单命令就足以胜任我的个人需要。你可以阅读 rsync 丰富的文档来了解它的其他能力。

部署备份

我的备份自动运行因为—“万物皆可自动化”。我写了一个 BASH 脚本使用 rsync 创建每天的备份。包括确保备份介质被挂载,生成每天的备份目录的名字,以及在备份介质中创建合适的目录结构,最后执行真正的备份再卸载备份介质。

我用 cron 每天早晨执行脚本确保我永远不会忘记备份。

我的脚本 rsbu 和配置文件 rsbu.conf 可以在 GitHub 上获取。

恢复测试

所有没有经过测试的备份计划都不完整的。你可以通过测试恢复某个文件或者整个目录,以确保备份在照常工作并且可以通过它来在数据全部丢失后恢复。我见过太多备份由于种种理由失败,以及由于缺乏测试忽略的问题导致宝贵的数据被丢失。

选择一个文件恢复到比如 /tmp 的测试目录,这样你就不会覆盖任何备份后被更新的文件。验证文件的内容是否是你预期的。恢复用 rsync 备份的文件仅仅只是找到你的备份文件然后把它复制到你想恢复的地方去那样简单。

我有几次不得不恢复我的个人文件,偶尔是整个目录。大多数是自己意外删除了文件或者目录。有几次是因为硬盘崩溃。这些备份迟早会派上用场。

最后一步

但仅仅创建备份并不能拯救你的业务,你需要定期的地创建备份,使最近的一次备份储存在另一台远程机器上,如果有可能,放在另外一个建筑物中或几英里之外。这样可以确保大规模的灾难不会摧毁你的所有备份。

对于小型企业的一个合理选择是在可移动介质上做每日备份,晚上把最新的备份带回家里,第二天早上把更早的备份带到办公室。你就会有几个轮流的拷贝。甚至可以把最新的备份带到银行并放到你的保管箱里,然后带回之前的备份。


作者简介:

David Both - 他居住在北卡罗来纳州的罗列,是 Linux 和开源提倡者。他已经从事 IT 行业 40 多年。在 IBM 教授了二十多年 OS/2。在 IBM 的时候,他在 1981 年为最初的 IBM 个人电脑编写了第一门培训课程。他为红帽教授 RHCE 课程,并曾在世通公司、思科、北卡罗来纳州政府工作。他使用 Linux 和开源软件已经有二十年左右了。


via: https://opensource.com/article/17/1/rsync-backup-linux

作者:David Both 译者:trnhoe 校对:wxy

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

探索 /dev 目录可以让您知道如何直接访问到 Linux 中的设备。

Linux 目录结构中有很多有趣的功能,这次我会讲到 /dev 目录一些迷人之处。在继续阅读这篇文章之前,建议你看看我前面的文章。Linux 文件系统一切皆为文件,这两篇文章介绍了一些有趣的 Linux 文件系统概念。请先看看 - 我会等你看完再回来。

……

太好了 !欢迎回来。现在我们可以继续更详尽地探讨 /dev 目录。

设备文件

设备文件也称为设备特定文件。设备文件用来为操作系统和用户提供它们代表的设备接口。所有的 Linux 设备文件均位于 /dev 目录下,是根 (/) 文件系统的一个组成部分,因为这些设备文件在操作系统启动过程中必须可以使用。

关于这些设备文件,要记住的一件重要的事情,就是它们大多不是设备驱动程序。更准确地描述来说,它们是设备驱动程序的门户。数据从应用程序或操作系统传递到设备文件,然后设备文件将它传递给设备驱动程序,驱动程序再将它发给物理设备。反向的数据通道也可以用,从物理设备通过设备驱动程序,再到设备文件,最后到达应用程序或其他设备。

让我们以一个典型命令的数据流程来直观地看看。

dboth-dev-dir_0.png

图 1:一个典型命令的简单数据流程。

在上面的图 1 中,显示一个简单命令的简化数据流程。从一个 GUI 终端仿真器,例如 Konsole 或 xterm 中发出 cat /etc/resolv.conf 命令,它会从磁盘中读取 resolv.conf 文件,磁盘设备驱动程序处理设备的具体功能,例如在硬盘驱动器上定位文件并读取它。数据通过设备文件传递,然后从命令到设备文件,然后到 6 号伪终端的设备驱动,然后在终端会话中显示。

当然, cat 命令的输出可以以下面的方式被重定向到一个文件, cat /etc/resolv.conf > /etc/resolv.bak ,这样会创建该文件的备份。在这种情况下,图 1 左侧的数据流量将保持不变,而右边的数据流量将通过 /dev/sda2 设备文件、硬盘设备驱动程序,然后到硬盘驱动器本身。

这些设备文件使得使用标准流 (STD/IO) 和重定向访问 Linux 或 Unix 计算机上的任何一个设备非常容易。只需将数据流定向到设备文件,即可将数据发送到该设备。

设备文件类别

设备文件至少可以按两种方式划分。第一种也是最常用的分类是根据与设备相关联的数据流进行划分。比如,tty (teletype) 和串行设备被认为是基于字符的,因为数据流的传送和处理是以一次一个字符或字节进行的;而块类型设备(如硬盘驱动器)是以块为单位传输数据,通常为 256 个字节的倍数。

您可以在终端上以一个非 root 用户,改变当前工作目录(PWD)到 /dev ,并显示长目录列表。 这将显示设备文件列表、文件权限及其主、次设备号。 例如,下面的设备文件只是我的 Fedora 24 工作站上 /dev 目录中的几个文件。 它们表示磁盘和 tty 设备类型。 注意输出中每行的最左边的字符。 b 代表是块类型设备,c 代表字符设备。

brw-rw----   1 root disk        8,   0 Nov  7 07:06 sda 
brw-rw----   1 root disk        8,   1 Nov  7 07:06 sda1 
brw-rw----   1 root disk        8,  16 Nov  7 07:06 sdb 
brw-rw----   1 root disk        8,  17 Nov  7 07:06 sdb1 
brw-rw----   1 root disk        8,  18 Nov  7 07:06 sdb2
crw--w----   1 root tty         4,   0 Nov  7 07:06 tty0 
crw--w----   1 root tty         4,   1 Nov  7 07:07 tty1 
crw--w----   1 root tty         4,  10 Nov  7 07:06 tty10 
crw--w----   1 root tty         4,  11 Nov  7 07:06 tty11

识别设备文件更详细和更明确的方法是使用设备主要以及次要号。 磁盘设备主设备号为 8,将它们指定为 SCSI 块设备。请注意,所有 PATA 和 SATA 硬盘驱动器都由 SCSI 子系统管理,因为旧的 ATA 子系统多年前就由于代码质量糟糕而被认为不可维护。造成的结果就是,以前被称为 “hd[a-z]” 的硬盘驱动器现在被称为 “sd[a-z]”。

你大概可以从上面的示例中推出磁盘驱动器次设备号的模式。次设备号 0、 16、 32 等等,直到 240,是整个磁盘的号。所以主/次 8/16 表示整个磁盘 /dev/sdb , 8/17 是第一个分区的设备文件,/dev/sdb1。数字 8/34 代表 /dev/sdc2

在上面列表中的 tty 设备文件编号更简单一些,从 tty0 到 tty63 。

Kernel.org 上的 Linux 下的已分配设备文件是设备类型和主次编号分配的正式注册表。它可以帮助您了解所有当前定义的设备的主要/次要号码。

趣味设备文件

让我们花几分钟时间,执行几个有趣的实验,演示 Linux 设备文件的强大和灵活性。 大多数 Linux 发行版都有 1 到 7 个虚拟控制台,可用于使用 shell 接口登录到本地控制台会话。 可以使用 Ctrl-Alt-F1(控制台 1),Ctrl-Alt-F2(控制台 2)等键盘组合键来访问。

请按 Ctrl-Alt-F2 切换到控制台 2。在某些发行版,登录显示的信息包括了与此控制台关联的 tty 设备,但大多不包括。它应该是 tty2,因为你是在控制台 2 中。

以非 root 用户身份登录。 然后你可以使用 who am i 命令 — 是的,就是这个命令,带空格 — 来确定哪个 tty 设备连接到这个控制台。

在我们实际执行此实验之前,看看 /dev 中的 tty2 和 tty3 的设备列表。

ls -l /dev/tty[23]

有大量的 tty 设备,但我们不关心他们中的大多数,只注意 tty2 和 tty3 设备。 作为设备文件,它们没什么特别之处。它们都只是字符类型设备。我们将使用这些设备进行此实验。 tty2 设备连接到虚拟控制台 2,tty3 设备连接到虚拟控制台 3。

Ctrl-Alt-F3 切换到控制台 3。再次以同一非 root 用户身份登录。 现在在控制台 3 上输入以下命令。

echo "Hello world" > /dev/tty2

Ctrl-Alt-f2 键以返回到控制台 2。字符串 “Hello world”(没有引号)将显示在控制台 2。

该实验也可以使用 GUI 桌面上的终端仿真器来执行。 桌面上的终端会话使用 /dev 中的伪终端设备,如 /dev/pts/1。 使用 Konsole 或 Xterm 打开两个终端会话。 确定它们连接到哪些伪终端,并使用一个向另一个发送消息。

现在继续实验,使用 cat 命令,试试在不同的终端上显示 /etc/fstab 文件。

另一个有趣的实验是使用 cat 命令将文件直接打印到打印机。 假设您的打印机设备是 /dev/usb/lp0,并且您的打印机可以直接打印 PDF 文件,以下命令将在您的打印机上打印 test.pdf 文件。

cat test.pdf > /dev/usb/lp0

/dev 目录包含一些非常有趣的设备文件,这些文件是硬件的入口,人们通常不认为这是硬盘驱动器或显示器之类的设备。 例如,系统存储器 RAM 不是通常被认为是“设备”的东西,而 /dev/mem 是通过其可以实现对存储器的直接访问的入口。 下面的例子有一些有趣的结果。

dd if=/dev/mem bs=2048 count=100

上面的 dd 命令提供比简单地使用 cat 命令 dump 所有系统的内存提供了更多的控制。 它提供了指定从 /dev/mem 读取多少数据的能力,还允许指定从存储器哪里开始读取数据。虽然读取了一些内存,但内核响应了以下错误,在 /var/log/messages 中可以看到。

Nov 14 14:37:31 david kernel: usercopy: kernel memory exposure attempt detected from ffff9f78c0010000 (dma-kmalloc-512) (2048 bytes)

这个错误意味着内核正在通过保护属于其他进程的内存来完成它的工作,这正是它应该工作的方式。 所以,虽然可以使用 /dev/mem 来显示存储在 RAM 内存中的数据,但是访问的大多数内存空间是受保护的并且会导致错误。 只可以访问由内核内存管理器分配给运行 dd 命令的 BASH shell 的虚拟内存,而不会导致错误。 抱歉,但你不能窥视不属于你的内存,除非你发现了一个可利用的漏洞。

/dev 中还有一些非常有趣的设备文件。 设备文件 nullzerorandomurandom 不与任何物理设备相关联。

例如,空设备 /dev/null 可以用作来自 shell 命令或程序的输出重定向的目标,以便它们不显示在终端上。 我经常在我的 BASH 脚本中使用这个,以防止向用户展示可能会让他们感到困惑的输出。 /dev/null 设备可用于产生一个空字符串。 使用如下所示的 dd 命令查看 /dev/null 设备文件的一些输出。

# dd if=/dev/null  bs=512 count=500 | od -c     
0+0 records in
0+0 records out
0 bytes copied, 1.5885e-05 s, 0.0 kB/s
0000000

注意,因为空字符什么也没有所以确实没有可见的输出。 注意看看字节数。

/dev/random/dev/urandom 设备也很有趣。 正如它们的名字所暗示的,它们都产生随机输出,不仅仅是数字,而是任何字节组合。 /dev/urandom 设备产生的是确定性的随机输出,并且非常快。 这意味着输出由算法确定,并使用种子字符串作为起点。 结果,如果原始种子是已知的,则黑客可以再现输出,尽管非常困难,但这是有可能的。 使用命令 cat /dev/urandom 可以查看典型的输出,使用 Ctrl-c 退出。

/dev/random 设备文件生成非确定性的随机输出,但它产生的输出更慢一些。 该输出不是由依赖于先前数字的算法确定的,而是由击键动作和鼠标移动而产生的。 这种方法使得复制特定系列的随机数要困难得多。使用 cat 命令去查看一些来自 /dev/random 设备文件输出。尝试移动鼠标以查看它如何影响输出。

正如其名字所暗示的,/dev/zero 设备文件产生一个无止境的零作为输出。 注意,这些是八进制零,而不是ASCII字符零(0)。 使用如下所示的 dd 查看 /dev/zero 设备文件中的一些输出

# dd if=/dev/zero  bs=512 count=500 | od -c
0000000  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0  \0
*
500+0 records in
500+0 records out
256000 bytes (256 kB, 250 KiB) copied, 0.00126996 s, 202 MB/s
0764000

请注意,此命令的字节数不为零。

创建设备文件

在过去,在 /dev 中的设备文件都是在安装时创建的,导致一个目录中有几乎所有的设备文件,尽管大多数文件永远不会用到。 在不常发生的情况,例如需要新的设备文件,或意外删除后需要重新创建设备文件,可以使用 mknod 程序手动创建设备文件。 前提是你必须知道设备的主要和次要号码。

CentOS 和 RHEL 6、7,以及 Fedora 的所有版本——可以追溯到至少 Fedora 15,使用较新的创建设备文件的方法。 所有设备文件都是在引导时创建的。 这是因为 udev 设备管理器在设备添加和删除发生时会进行检测。这可实现在主机启动和运行时的真正的动态即插即用功能。 它还在引导时执行相同的任务,通过在引导过程的很早的时期检测系统上安装的所有设备。 Linux.com 上有一篇很棒的对 udev 的描述

回到 /dev 中的文件列表,注意文件的日期和时间。 所有文件都是在上次启动时创建的。 您可以使用 uptime 或者 last 命令来验证这一点。在上面我的设备列表中,所有这些文件都是在 11 月 7 日上午 7:06 创建的,这是我最后一次启动系统。

当然, mknod 命令仍然可用, 但新的 MAKEDEV (是的,所有字母大写,在我看来是违背 Linux 使用小写命令名的原则的) 命令提供了一个创建设备文件的更容易的界面。 在当前版本的 Fedora 或 CentOS 7 中,默认情况下不安装 MAKEDEV 命令;它安装在 CentOS 6。您可以使用 YUM 或 DNF 来安装 MAKEDEV 包。

结论

有趣的是,我很久没有创建一个设备文件的需要了。 然而,最近我遇到一个有趣的情况,其中一个我常使用的设备文件没有创建,我不得不创建它。 之后该设备再没出过问题。所以丢失设备文件的情况仍然可以发生,知道如何处理它可能很重要。

设备文件有无数种,您遇到的设备文件我可能没有涵盖到。 这些信息在所下面引用的资源中有大量的细节信息可用。 关于这些文件的功能和工具,我希望我已经给您一些基本的了解,下一步您自己可以探索更多。

资源


via: https://opensource.com/article/16/11/managing-devices-linux

作者:David Both 译者:erlinux 校对:jasminepeng

本文由 LCTT 组织编译,Linux中国 荣誉推出