Windows 10 是2015年7月29日上市的最新一代 Windows NT 系列系统，它是 Windows 8.1 的继任者。Windows 10 支持 Intel 32位平台，AMD64 以及 ARM v7 处理器。作为一个连续使用 linux 超过8年的用户，我想要去体验一下 Windows 10 ，因为有很多关于它的消息。这篇文章是我观察力的一个重大突破。我将从一个 linux 用户的角度去看待一切，所以这篇文章可能会有些偏向于 linux。尽管如此，本文也绝对不会有任何虚假信息。1、用谷歌搜索“download Windows 10”并且点击第一个链接。搜索 Windows 10你也可以直接打开： [[https://www.microsoft.com/en\_us/software-download/Windows10[1]](https://www.microsoft.com/en_us/software-download/Windows10%5B1%5D)2、微软要求我从 Windows 10， Windows 10 KN， Windows 10 N 和 Windows 10 单语言版中选择一个版本。选择版本以下是各个版本的简略信息：Windows 10 - 包含微软提供给我们的所有软件Windows 10N - 此版本不包含媒体播放器Windows 10KN - 此版本没有媒体播放能力Windows 10 单语言版 - 仅预装一种语言3、我选择了第一个选项“Windows 10”并且单击“确认”。之后我要选择语言，我选择了“英语”。微软给我提供了两个下载链接。一个是32位版，另一个是64位版。我单击了64位版--这与我的电脑架构相同。下载 Windows 10我的带宽是15M的，下载了整整3个小时。不幸的是微软没有提供系统的种子文件，否则整个过程会更加舒畅。镜像大小为 3.8 GB（LCTT译者注：就我的10M小水管，我使用迅雷下载用时50分钟）。我找不到更小的镜像，微软并没有为 Windows 提供网络安装镜像。我也没有办法在下载完成后去校验哈希值。（LCTT 译注：你知道的，这对于 Linux 来说都是常识了）我十分惊讶，Windows 在这样的问题上居然如此漫不经心。为了验证这个镜像是否正确下载，我需要把它刻到光盘上或者复制到我的U盘上然后启动它，一直静静的看着它安装直到安装完成。首先，我用 dd 命令将 win10 的 iso 镜像刻录到U盘上。# dd if=/home/avi/Downloads/Win10_English_x64.iso of=/dev/sdb1 bs=512M; sync 这需要一点时间。在此之后我重启系统并在 UEFI（BIOS）设置中选择从我的U盘启动。系统要求升级仅支持从 Windows 7 SP1 或者 Windows 8.1 升级全新安装处理器: 1GHz 以上内存: 1GB以上(32位)，2GB以上(64位)硬盘: 16GB以上(32位)，20GB以上(64位)显卡: 支持DirectX 9或更新 + WDDM 1.0 驱动Windows 10 安装过程1、Windows 10启动成功了。他们又换了logo，但是仍然没有信息提示我它正在做什么。Windows 10 Logo2、选择安装语言，时区，键盘，输入法，点击下一步。选择语言和时区3、点击“现在安装”。安装Ｗindows 104、下一步是输入密钥，我点击了“跳过”。Windows 10 产品密钥5、从列表中选择一个系统版本。我选择了 Windows 10专业版。选择系统版本6、到了协议部分，选中"我接受"然后点击下一步。同意协议7、下一步是选择（从 Windows 的老版本）升级到 Windows 10 或者安装 Ｗindows。我搞不懂为什么微软要让我自己选择：“安装Ｗindows”被微软建议为“高级”选项。但是我还是选择了“安装Windows”。选择安装类型8、选择驱动器，点击“下一步”。选择安装盘9、安装程序开始复制文件，准备文件，安装更新，之后进行收尾。如果安装程序能在安装时输出一堆字符来表示它在做什么就更好了。安装 Windows10、在此之后 Windows 重启了。它们说要继续的话，我们需要重启。安装进程11、我看到了一个写着“正在准备 Windows”的界面。它停了整整五分多钟！仍然没有说明它正在做什么。没有输出。正在准备 Windows12、又到了输入产品密钥的时间。我点击了“以后再说”，并使用快速设置。输入产品密钥使用快速设置13、又出现了三个界面，作为 Linux 用户我认为此处应有信息来告诉我安装程序在做什么，但是我想多了。载入 Windows获取更新还是载入 Ｗindows14、安装程序想要知道谁拥有这台机器，“我的组织”或者我自己。选择我自己并继续。选择组织15、在单击继续之前，安装程序提示我加入“Aruze Ad”或者“加入域”。我选择了后者。连接网络16、安装程序让我新建一个账户。所以我输入了“user\_name”就点击了下一步，我觉得我会收到一个要求我必须输入密码的信息。新建账户17、让我惊讶的是 Windows 甚至都没有显示一个警告或提示信息，告诉我必须创建密码。真粗心。不管怎样，现在我可以体验系统了。Windows 10的桌面环境Linux 用户(我)直到现在的体验没有网络安装镜像镜像文件太臃肿了没有验证 iso 是否为正确的方法（官方没有提供哈希值）启动与安装方式仍然与 XP，Win 7，Win 8 相同（可能吧...）和以前一样，安装程序没有输出它正在干什么 - 正在复制什么和正在安装什么软件包安装程序比 Linux 发行版的更加傻瓜和简单测试 Windows 1018、默认桌面很干净，上面只有一个回收站图标。我们可以直接从桌面搜索网络。底部的快捷方式分别是任务预览、网络、微软应用商店。和以前的版本一样，消息栏在右下角。桌面图标19、IE 浏览器被换成了 Edge 浏览器。微软把他们的老IE换成了 Edge （斯巴达计划）Edge 浏览器测试起来，这个浏览器至少比 IE 要快。他们有相同的用户界面。它的主页包含新闻更新。它还有一个搜索标题栏是“下一步怎么走”。由于浏览器的全面性能提升，它的加载速度非常快。Edge 的内存占用看起来正常。性能Edge 也有小娜加成（智能个人助理）、支持 Chrome 扩展、支持笔记（在浏览网页时记笔记）、分享（在选项卡上右击而不必打开其他选项卡）Linux 用户(我)此时体验20、微软确实提升了网页浏览体验。我绝对稳定性和质量还好。现在它并不落后。21、对我来说，Edge 的内存占用不算太大。但是有很多用户抱怨它的内存占用太多。22、很难说目前 Edge 已经准备好了与火狐或 Chrome竞争。让我们静观其变。更多的视觉体验23、重新设计的开始菜单 -- 看起来很简洁高效。Merto 磁贴大部分都会动。预先放置了最通用的应用。Windows而在 Linux 的 Gnome 桌面环境下。我仅仅需要按下 Win 键并输入应用名就可以搜索应用。桌面内进行搜索24、文件浏览器 -- 设计的很简洁。左边是进入文件夹的快捷方式。Windows 文件管理器我们的 Gnome 下的文件管理也同样的简洁高效。从图标上移走了不需要的图形图像是个加分点。Gnome 的文件管理25、设置 -- 尽管 Windows 10的设置有点精炼，但是我们还是可以把它与 linux 的设置进行对比。Windows 的设置Windows 10 设置Linux Gnome 上的设置Gnome 的设置26、应用列表 -- 目前，Linux上的应用列表要好于之前的版本（据我所记，那时我还是一个普通的 Windows 用户），但是 Windows 10 的还比 Gnome 3 的差一点。Windows 的应用列表Windows 10 的应用列表Gnome3 的应用列表Gnome3 的应用列表27、虚拟桌面 -- Windows 10 上的虚拟桌面是近来被提及最多的特性之一。这是 Windows 10 上的虚拟桌面。Windows 的虚拟桌面这是我们 Linux 用户使用了超过20年的虚拟桌面。Linux 的虚拟桌面Windows 10 的其他新特性28、Windows 10 自带 wifi 感知。它会把你的 wifi 密码分享给他人。任何在你 wifi 范围内并且曾经通过 Skype， Outlook， Hotmail 或 Facebook与你联系的人都能够获得你的网络接入权。这个特性的本意是让用户可以省时省力的连接网络。在微软对于 Tecmint 的问题的回答中，他们说道 -- 用户需要在每次到一个新的网络环境时自己去同意打开 wifi 感知。如果我们考虑到网络安全这将是很不安全的一件事。微软的说法并没有说服我。29、从 Windows 7 和 Windows 8.1 升级可以省下买新版的花费。（家庭版 $119 专业版$199）30、微软发布了第一个累积更新，这个更新在一小部分设备上会让系统一直重启。Windows可能不知道这个问题或者不知道它发生的原因。31、微软内建的“禁用/隐藏我不想要的更新”的功能在我这不起作用。这意味着一旦更新开始推送，你没有方法去禁用/隐藏他们。对不住啦，Windows 用户。Windows 10 包含的来源于 Linux 的功能Windows 10 有很多直接取自 Linux 的功能。如果 Linux 不以 GPL 发布的话，也许以下这些功能永远不会出现在 Windows上。32、命令行的包管理器 -- 是的，你没有听错！Windows 10内建了一个包管理器。它只在 Power Shell 下工作。OneGet 是Windows 的官方包管理器。Windows 10的包管理器无边窗口扁平化图标虚拟桌面离线/在线搜索一体化手机/桌面系统融合总体印象响应速度提升动画很好看资源占用少电池续航提升Edge 浏览器很稳定支持树莓派 2Windows 10 好的原因是 Windows 8/8.1 没有达到公众预期并且坏的可以旧瓶装新酒：Windows 10基本上就是以前的那一套换上新的图标测试后我对 Windows 10 的评价是：Windows 10 在视觉和感觉上做了一些更新（就如同 Windows 经常做的那样）。我要为斯巴达计划、虚拟桌面、命令行包管理器、整合在线/离线搜索的搜索栏点赞。这确实是一个更新后的产品 ，但是认为 Windows 10 将是 Linux 的最后一个棺材钉的人错了。Linux 走在 Windows 前面。它们的做事方法并不相同。在以后的一段时间里 Windows 不会站到 Linux这一旁。也没有什么让 Linux 用户值得去使用 Windows 10。这就是我要说的。希望你喜欢本文。如果你们喜欢本篇文章我会再写一些你们喜欢读的有趣的文章。在下方留下你的有价值的评论。via: http://www.tecmint.com/a-linux-user-using-Windows-10-after-more-than-8-years-see-comparison/作者：Avishek Kumar 译者：name1e5s 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Mhddfs：将多个小分区合并成一个大的虚拟存储
让我们假定你有30GB的电影，并且你有3个驱动器，每个的大小为20GB。那么，你会怎么来存放东西呢？很明显，你可以将你的视频分割成2个或者3个不同的卷，并将它们手工存储到驱动器上。这当然不是一个好主意，它成了一项费力的工作，它需要你手工干预，而且花费你大量时间。另外一个解决方案是创建一个 RAID磁盘阵列。然而，RAID在存储可靠性，磁盘空间可用性差等方面声名狼藉。另外一个解决方案，就是mhddfs。Mhddfs——在Linux中合并多个分区mhddfs是一个用于Linux的设备驱动，它可以将多个挂载点合并到一个虚拟磁盘中。它是一个基于FUSE的驱动，提供了一个用于大数据存储的简单解决方案。它可以将所有小文件系统合并，创建一个单一的大虚拟文件系统，该文件系统包含其成员文件系统的所有内容，包括文件和空闲空间。你为什么需要Mhddfs？你的所有存储设备会创建为一个单一的虚拟池，它可以在启动时被挂载。这个小工具可以智能地照看并处理哪个存储满了，哪个存储空着，以及将数据写到哪个存储中。当你成功创建虚拟驱动器后，你可以使用SAMBA来共享你的虚拟文件系统。你的客户端将在任何时候都看到一个巨大的驱动器和大量的空闲空间。Mhddfs特性获取文件系统属性和系统信息。设置文件系统属性。创建、读取、移除和写入目录和文件。在单一设备上支持文件锁和硬链接。mhddfs的优点mhddfs的缺点适合家庭用户mhddfs驱动没有内建在Linux内核中运行简单运行时需要大量处理能力没有明显的数据丢失没有冗余解决方案不需要分割文件不支持移动硬链接可以添加新文件到组成的虚拟文件系统 可以管理文件保存的位置 支持扩展文件属性 Linux中安装Mhddfs在Debian及其类似的移植系统中，你可以使用下面的命令来安装mhddfs包。# apt-get update && apt-get install mhddfs 安装Mhddfs到基于Debian的系统中在RHEL/CentOS Linux系统中，你需要开启epel仓库，然后执行下面的命令来安装mhddfs包。# yum install mhddfs 在Fedora 22及以上系统中，你可以通过dnf包管理来获得它，就像下面这样。# dnf install mhddfs 安装Mhddfs到Fedora如果万一mhddfs包不能从epel仓库获取到，那么你需要解决下面的依赖，然后像下面这样来编译源码并安装。FUSE头文件GCClibc6头文件uthash头文件libattr1头文件（可选）接下来，只需从下面建议的地址下载最新的源码包，然后编译。# wget http://mhddfs.uvw.ru/downloads/mhddfs_0.1.39.tar.gz # tar -zxvf mhddfs*.tar.gz # cd mhddfs-0.1.39/ # make 你应该可以在当前目录中看到mhddfs的二进制文件，以root身份将它移动到/usr/bin/和/usr/local/bin/中。# cp mhddfs /usr/bin/ # cp mhddfs /usr/local/bin/ 一切搞定，mhddfs已经可以用了。我怎么使用Mhddfs？1、 让我们看看当前所有挂载到我们系统中的硬盘。$ df -h 样例输出Filesystem Size Used Avail Use% Mounted on /dev/sda1 511M 132K 511M 1% /boot/efi /dev/sda2 451G 92G 336G 22% / /dev/sdb1 1.9T 161G 1.7T 9% /media/avi/BD9B-5FCE /dev/sdc1 555M 555M 0 100% /media/avi/Debian 8.1.0 M-A 1 注意这里的‘挂载点’名称，我们后面会使用到它们。2、 创建目录‘/mnt/virtual\_hdd’，所有这些文件系统将会在这里组织到一起。# mkdir /mnt/virtual_hdd 3、 然后，挂载所有文件系统。你可以通过root或者FUSE组中的某个用户来完成。# mhddfs /boot/efi, /, /media/avi/BD9B-5FCE/, /media/avi/Debian\ 8.1.0\ M-A\ 1/ /mnt/virtual_hdd -o allow_other 在Linux中挂载所有文件系统注意：这里我们使用了所有硬盘的挂载点名称，很明显，你的挂载点名称会有所不同。也请注意“-o allow\_other”选项可以让这个虚拟文件系统让其它所有人可见，而不仅仅是创建它的人。4、 现在，运行“df -h”来看看所有文件系统。它应该包含了你刚才创建的那个。 $ df -h 验证虚拟文件系统挂载你可以像对已挂在的驱动器那样给虚拟文件系统应用所有的选项。5、 要在每次系统启动创建这个虚拟文件系统，你应该以root身份添加下面的这行代码（在你那里会有点不同，取决于你的挂载点）到/etc/fstab文件的末尾。mhddfs# /boot/efi, /, /media/avi/BD9B-5FCE/, /media/avi/Debian\ 8.1.0\ M-A\ 1/ /mnt/virtual_hdd fuse defaults,allow_other 0 0 6、 如果在任何时候你想要添加/移除一个新的驱动器到/从虚拟硬盘，你可以挂载一个新的驱动器，拷贝/mnt/vritualhdd的内容，卸载卷，弹出你要移除的的驱动器并/或挂载你要包含的新驱动器。使用mhddfs命令挂载全部文件系统到Virtualhdd下，这样就全部搞定了。我怎么卸载Virtual\_hdd？卸载virtual\_hdd相当简单，就像下面这样# umount /mnt/virtual_hdd 卸载虚拟文件系统注意，是umount，而不是unmount，很多用户都输错了。到现在为止全部结束了。我正在写另外一篇文章，你们一定喜欢读的。到那时，请保持连线。请在下面的评论中给我们提供有用的反馈吧。请为我们点赞并分享，帮助我们扩散。via: http://www.tecmint.com/combine-partitions-into-one-in-linux-using-mhddfs/作者：Avishek Kumar 译者：GOLinux 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Mosh 表示 移动 Shell （ Mobile Shell ） ，是一个用于从客户端跨互联网连接远程服务器的命令行工具。它能用于 SSH 连接，但是比 Secure Shell 功能更多。它是一个类似于 SSH 而带有更多功能的应用。程序最初由 Keith Winstein 编写，用于类 Unix 的操作系统中，发布于GNU GPL v3协议下。Mosh Shell SSH 客户端Mosh的功能它是一个支持漫游的远程终端程序。在所有主流的类 Unix 版本中可用，如 Linux、FreeBSD、Solaris、Mac OS X 和 Android。支持不稳定连接支持智能的本地回显支持用户输入的行编辑响应式设计及在 wifi、3G、长距离连接下的鲁棒性在 IP 改变后保持连接。它使用 UDP 代替 TCP（在 SSH 中使用），当连接被重置或者获得新的 IP 后 TCP 会超时，但是 UDP 仍然保持连接。在很长的时候之后恢复会话时仍然保持连接。没有网络延迟。立即显示用户输入和删除而没有延迟像 SSH 那样支持一些旧的方式登录。包丢失处理机制Linux 中 mosh 的安装在 Debian、Ubuntu 和 Mint 类似的系统中，你可以很容易地用 apt-get 包管理器安装。# apt-get update # apt-get install mosh 在基于 RHEL/CentOS/Fedora 的系统中，要使用 yum 包管理器安装 mosh，你需要打开第三方的 EPEL。# yum update # yum install mosh 在 Fedora 22+的版本中，你需要使用 dnf 包管理器来安装 mosh。# dnf install mosh 我该如何使用 mosh？1、 让我们尝试使用 mosh 登录远程 Linux 服务器。$ mosh root@192.168.0.150 mosh远程连接注意：你有没有看到一个连接错误，因为我在 CentOS 7中还有打开这个端口。一个快速但是我并不建议的解决方法是：# systemctl stop firewalld [在远程服务器上] 更好的方法是打开一个端口并更新防火墙规则。接着用 mosh 连接到预定义的端口中。至于更深入的细节，也许你会对下面的文章感兴趣。如何配置 Firewalld2、 让我们假设把默认的 22 端口改到 70，这时使用 -p 选项来使用自定义端口。$ mosh -p 70 root@192.168.0.150 3、 检查 mosh 的版本$ mosh --version 检查mosh版本4、 你可以输入exit来退出 mosh 会话。$ exit 5、 mosh 支持很多选项，你可以用下面的方法看到：$ mosh --help Mosh 选项mosh 的优缺点mosh 有额外的需求，比如需要允许 UDP 直接连接，这在 SSH 不需要。动态分配的端口范围是 60000-61000。第一个打开的端口是分配好的。每个连接都需要一个端口。默认的端口分配是一个严重的安全问题，尤其是在生产环境中。支持 IPv6 连接，但是不支持 IPv6 漫游。不支持回滚不支持 X11 转发不支持 ssh-agent 转发总结mosh是一款在大多数linux发行版的仓库中可以下载的一款小工具。虽然它有一些差异尤其是安全问题和额外的需求，它的功能，比如漫游后保持连接是一个加分点。我的建议是任何一个使用ssh的linux用户都应该试试这个程序，mosh值得一试。via: http://www.tecmint.com/install-mosh-shell-ssh-client-in-linux/作者：Avishek Kumar 译者：geekpi 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Shilpa Nair 刚于2015年毕业。她之后去了一家位于 Noida，Delhi 的国家新闻电视台，应聘实习生的岗位。在她去年毕业季的时候，常逛 Tecmint 寻求作业上的帮助。从那时开始，她就常去 Tecmint。有关 RPM 方面的 Linux 面试题所有的问题和回答都是 Shilpa Nair 根据回忆重写的。“大家好！我是来自 Delhi 的Shilpa Nair。我不久前才顺利毕业，正寻找一个实习的机会。在大学早期的时候，我就对 UNIX 十分喜爱，所以我也希望这个机会能适合我，满足我的兴趣。我被提问了很多问题，大部分都是关于 RedHat 包管理的基础问题。”下面就是我被问到的问题，和对应的回答。我仅贴出了与 RedHat GNU/Linux 包管理相关的，也是主要被提问的。1，Linux 里如何查找一个包安装与否？假设你需要确认 ‘nano’ 有没有安装，你怎么做？回答：为了确认 nano 软件包有没有安装，我们可以使用 rpm 命令，配合 -q 和 -a 选项来查询所有已安装的包# rpm -qa nano 或 # rpm -qa | grep -i nano nano-2.3.1-10.el7.x86_64 同时包的名字必须是完整的，不完整的包名会返回到提示符，不打印任何东西，就是说这包（包名字不全）未安装。下面的例子会更好理解些：我们通常使用 vim 替代 vi 命令。当时如果我们查找安装包 vi/vim 的时候，我们就会看到标准输出上没有任何结果。# vi # vim 尽管如此，我们仍然可以像上面一样运行 vi/vim 命令来清楚地知道包有没有安装。只是因为我们不知道它的完整包名才不能找到的。如果我们不确切知道完整的文件名，我们可以使用通配符：# rpm -qa vim* vim-minimal-7.4.160-1.el7.x86_64 通过这种方式，我们可以获得任何软件包的信息，安装与否。2. 你如何使用 rpm 命令安装 XYZ 软件包？回答：我们可以使用 rpm 命令安装任何的软件包（*.rpm），像下面这样，选项 -i（安装），-v（冗余或者显示额外的信息）和 -h（在安装过程中，打印#号显示进度）。# rpm -ivh peazip-1.11-1.el6.rf.x86_64.rpm Preparing... ################################# [100%] Updating / installing... 1:peazip-1.11-1.el6.rf ################################# [100%] 如果要升级一个早期版本的包，应加上 -U 选项，选项 -v 和 -h 可以确保我们得到用 # 号表示的冗余输出，这增加了可读性。3. 你已经安装了一个软件包（假设是 httpd），现在你想看看软件包创建并安装的所有文件和目录，你会怎么做？回答：使用选项 -l（列出所有文件）和 -q（查询）列出 httpd 软件包安装的所有文件（Linux 哲学：所有的都是文件，包括目录）。# rpm -ql httpd /etc/httpd /etc/httpd/conf /etc/httpd/conf.d ... 4. 假如你要移除一个软件包，叫 postfix。你会怎么做？回答：首先我们需要知道什么包安装了 postfix。查找安装 postfix 的包名后，使用 -e（擦除/卸载软件包）和 -v（冗余输出）两个选项来实现。# rpm -qa postfix* postfix-2.10.1-6.el7.x86_64 然后移除 postfix，如下:# rpm -ev postfix-2.10.1-6.el7.x86_64 Preparing packages... postfix-2:3.0.1-2.fc22.x86_64 5. 获得一个已安装包的具体信息，如版本，发行号，安装日期，大小，总结和一个简短的描述。回答：我们通过使用 rpm 的选项 -qi，后面接包名，可以获得关于一个已安装包的具体信息。举个例子，为了获得 openssh 包的具体信息，我需要做的就是：# rpm -qi openssh [root@tecmint tecmint]# rpm -qi openssh Name : openssh Version : 6.8p1 Release : 5.fc22 Architecture: x86_64 Install Date: Thursday 28 May 2015 12:34:50 PM IST Group : Applications/Internet Size : 1542057 License : BSD .... 6. 假如你不确定一个指定包的配置文件在哪，比如 httpd。你如何找到所有 httpd 提供的配置文件列表和位置。回答： 我们需要用选项 -c 接包名，这会列出所有配置文件的名字和他们的位置。# rpm -qc httpd /etc/httpd/conf.d/autoindex.conf /etc/httpd/conf.d/userdir.conf /etc/httpd/conf.d/welcome.conf /etc/httpd/conf.modules.d/00-base.conf /etc/httpd/conf/httpd.conf /etc/sysconfig/httpd 相似地，我们可以列出所有相关的文档文件，如下：# rpm -qd httpd /usr/share/doc/httpd/ABOUT_APACHE /usr/share/doc/httpd/CHANGES /usr/share/doc/httpd/LICENSE ... 我们也可以列出所有相关的证书文件，如下：# rpm -qL openssh /usr/share/licenses/openssh/LICENCE 忘了说明上面的选项 -d 和 -L 分别表示 “文档” 和 “证书”，抱歉。7. 你找到了一个配置文件，位于‘/usr/share/alsa/cards/AACI.conf’，现在你不确定该文件属于哪个包。你如何查找出包的名字？回答：当一个包被安装后，相关的信息就存储在了数据库里。所以使用选项 -qf（-f 查询包拥有的文件）很容易追踪谁提供了上述的包。# rpm -qf /usr/share/alsa/cards/AACI.conf alsa-lib-1.0.28-2.el7.x86_64 类似地，我们可以查找（谁提供的）关于任何子包，文档和证书文件的信息。8. 你如何使用 rpm 查找最近安装的软件列表？回答：如刚刚说的，每一样被安装的文件都记录在了数据库里。所以这并不难，通过查询 rpm 的数据库，找到最近安装软件的列表。我们通过运行下面的命令，使用选项 -last（打印出最近安装的软件）达到目的。# rpm -qa --last 上面的命令会打印出所有安装的软件，最近安装的软件在列表的顶部。如果我们关心的是找出特定的包，我们可以使用 grep 命令从列表中匹配包（假设是 sqlite ），简单如下：# rpm -qa --last | grep -i sqlite sqlite-3.8.10.2-1.fc22.x86_64 Thursday 18 June 2015 05:05:43 PM IST 我们也可以获得10个最近安装的软件列表，简单如下：# rpm -qa --last | head 我们可以重定义一下，输出想要的结果，简单如下：# rpm -qa --last | head -n 2 上面的命令中，-n 代表数目，后面接一个常数值。该命令是打印2个最近安装的软件的列表。9. 安装一个包之前，你如果要检查其依赖。你会怎么做？回答：检查一个 rpm 包（XYZ.rpm）的依赖，我们可以使用选项 -q（查询包），-p（指定包名）和 -R（查询/列出该包依赖的包，嗯，就是依赖）。# rpm -qpR gedit-3.16.1-1.fc22.i686.rpm /bin/sh /usr/bin/env glib2(x86-32) >= 2.40.0 gsettings-desktop-schemas gtk3(x86-32) >= 3.16 gtksourceview3(x86-32) >= 3.16 gvfs libX11.so.6 ... 10. rpm 是不是一个前端的包管理工具呢？回答：不是！rpm 是一个后端管理工具，适用于基于 Linux 发行版的 RPM （此处指 Redhat Package Management）。YUM，全称 Yellowdog Updater Modified，是一个 RPM 的前端工具。YUM 命令自动完成所有工作，包括解决依赖和其他一切事务。最近，DNF（YUM命令升级版）在Fedora 22发行版中取代了 YUM。尽管 YUM 仍然可以在 RHEL 和 CentOS 平台使用，我们也可以安装 dnf，与 YUM 命令共存使用。据说 DNF 较于 YUM 有很多提高。知道更多总是好的，保持自我更新。现在我们移步到前端部分来谈谈。11. 你如何列出一个系统上面所有可用的仓库列表。回答：简单地使用下面的命令，我们就可以列出一个系统上所有可用的仓库列表。# yum repolist 或 # dnf repolist Last metadata expiration check performed 0:30:03 ago on Mon Jun 22 16:50:00 2015. repo id repo name status *fedora Fedora 22 - x86_64 44,762 ozonos Repository for Ozon OS 61 *updates Fedora 22 - x86_64 - Updates 上面的命令仅会列出可用的仓库。如果你需要列出所有的仓库，不管可用与否，可以这样做。# yum repolist all 或 # dnf repolist all Last metadata expiration check performed 0:29:45 ago on Mon Jun 22 16:50:00 2015. repo id repo name status *fedora Fedora 22 - x86_64 enabled: 44,762 fedora-debuginfo Fedora 22 - x86_64 - Debug disabled fedora-source Fedora 22 - Source disabled ozonos Repository for Ozon OS enabled: 61 *updates Fedora 22 - x86_64 - Updates enabled: 5,018 updates-debuginfo Fedora 22 - x86_64 - Updates - Debug 12. 你如何列出一个系统上所有可用并且安装了的包？回答：列出一个系统上所有可用的包，我们可以这样做：# yum list available 或 # dnf list available ast metadata expiration check performed 0:34:09 ago on Mon Jun 22 16:50:00 2015. Available Packages 0ad.x86_64 0.0.18-1.fc22 fedora 0ad-data.noarch 0.0.18-1.fc22 fedora 0install.x86_64 2.6.1-2.fc21 fedora 0xFFFF.x86_64 0.3.9-11.fc22 fedora 2048-cli.x86_64 0.9-4.git20141214.723738c.fc22 fedora 2048-cli-nocurses.x86_64 0.9-4.git20141214.723738c.fc22 fedora .... 而列出一个系统上所有已安装的包，我们可以这样做。# yum list installed 或 # dnf list installed Last metadata expiration check performed 0:34:30 ago on Mon Jun 22 16:50:00 2015. Installed Packages GeoIP.x86_64 1.6.5-1.fc22 @System GeoIP-GeoLite-data.noarch 2015.05-1.fc22 @System NetworkManager.x86_64 1:1.0.2-1.fc22 @System NetworkManager-libnm.x86_64 1:1.0.2-1.fc22 @System aajohan-comfortaa-fonts.noarch 2.004-4.fc22 @System .... 而要同时满足两个要求的时候，我们可以这样做。# yum list 或 # dnf list Last metadata expiration check performed 0:32:56 ago on Mon Jun 22 16:50:00 2015. Installed Packages GeoIP.x86_64 1.6.5-1.fc22 @System GeoIP-GeoLite-data.noarch 2015.05-1.fc22 @System NetworkManager.x86_64 1:1.0.2-1.fc22 @System NetworkManager-libnm.x86_64 1:1.0.2-1.fc22 @System aajohan-comfortaa-fonts.noarch 2.004-4.fc22 @System acl.x86_64 2.2.52-7.fc22 @System .... 13. 你会怎么在一个系统上面使用 YUM 或 DNF 分别安装和升级一个包与一组包？回答：安装一个包（假设是 nano），我们可以这样做， # yum install nano 而安装一组包（假设是 Haskell），我们可以这样做， # yum groupinstall 'haskell' 升级一个包（还是 nano），我们可以这样做， # yum update nano 而为了升级一组包（还是 haskell），我们可以这样做，# yum groupupdate 'haskell'14. 你会如何同步一个系统上面的所有安装软件到稳定发行版？回答：我们可以一个系统上（假设是 CentOS 或者 Fedora）的所有包到稳定发行版，如下， # yum distro-sync [在 CentOS/ RHEL] 或 # dnf distro-sync [在 Fedora 20之后版本] 似乎来面试之前你做了相当不多的功课，很好！在进一步交谈前，我还想问一两个问题。15. 你对 YUM 本地仓库熟悉吗？你尝试过建立一个本地 YUM 仓库吗？让我们简单看看你会怎么建立一个本地 YUM 仓库。回答：首先，感谢你的夸奖。回到问题，我必须承认我对本地 YUM 仓库十分熟悉，并且在我的本地主机上也部署过，作为测试用。1、 为了建立本地 YUM 仓库，我们需要安装下面三个包：# yum install deltarpm python-deltarpm createrepo 2、 新建一个目录(假设 /home/$USER/rpm)，然后复制 RedHat/CentOS DVD 上的 RPM 包到这个文件夹下# mkdir /home/$USER/rpm # cp /path/to/rpm/on/DVD/*.rpm /home/$USER/rpm 3、 新建基本的库头文件如下。# createrepo -v /home/$USER/rpm 4、 在路径 /etc/yum.repo.d 下创建一个 .repo 文件（如 abc.repo):cd /etc/yum.repos.d && cat << EOF abc.repo [local-installation]name=yum-local baseurl=file:///home/$USER/rpm enabled=1 gpgcheck=0 EOF 重要：用你的用户名替换掉 $USER。以上就是创建一个本地 YUM 仓库所要做的全部工作。我们现在可以从这里安装软件了，相对快一些，安全一些，并且最重要的是不需要 Internet 连接。好了！面试过程很愉快。我已经问完了。我会将你推荐给 HR。你是一个年轻且十分聪明的候选者，我们很愿意你加入进来。如果你有任何问题，你可以问我。我：谢谢，这确实是一次愉快的面试，我感到今天非常幸运，可以搞定这次面试...显然，不会在这里结束。我问了很多问题，比如他们正在做的项目。我会担任什么角色，负责什么，，，balabalabala小伙伴们，这之后的 3 天会经过 HR 轮，到时候所有问题到时候也会被写成文档。希望我当时表现不错。感谢你们所有的祝福。谢谢伙伴们和 Tecmint，花时间来编辑我的面试经历。我相信 Tecmint 好伙伴们做了很大的努力，必要要赞一个。当我们与他人分享我们的经历的时候，其他人从我们这里知道了更多，而我们自己则发现了自己的不足。这增加了我们的信心。如果你最近也有任何类似的面试经历，别自己蔵着。分享出来！让我们所有人都知道。你可以使用如下的表单来与我们分享你的经历。via: http://www.tecmint.com/linux-rpm-package-management-interview-questions/作者：Avishek Kumar 译者：wi-cuckoo 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
在2015年8月16日， Debian项目组庆祝了 Debian 的22周年纪念日；这也是开源世界历史最悠久、热门的发行版之一。 Debian项目于1993年由Ian Murdock创立。彼时，Slackware 作为最早的 Linux 发行版已经名声在外。22岁生日快乐! Debian Linux!Ian Ashly Murdock， 一个美国职业软件工程师， 在他还是普渡大学的学生时构想出了 Debian 项目的计划。他把这个项目命名为 Debian 是由于这个名字组合了他彼时女友的名字 Debra Lynn 和他自己的名字 Ian。 他之后和 Lynn 结婚并在2008年1月离婚。Debian 创始人:Ian MurdockIan 目前是 ExactTarget 的平台与开发社区的副总裁。Debian (如同Slackware一样) 都是由于当时缺乏满足合乎标准的发行版才应运而生的。 Ian 在一次采访中说：“免费提供一流的产品会是 Debian 项目的唯一使命。 尽管过去的 Linux 发行版均不尽然可靠抑或是优秀。 我印象里...比如在不同的文件系统间移动文件， 处理大型文件经常会导致内核出错。 但是 Linux 其实是很可靠的， 自由的源代码让这个项目本质上很有前途。”"我记得过去我像其他想解决问题的人一样， 想在家里运行一个像 UNIX 的东西。 但那是不可能的， 无论是经济上还是法律上或是别的什么角度。 然后我就听闻了 GNU 内核开发项目， 以及这个项目是如何没有任何法律纷争"， Ian 补充到。 他早年在开发 Debian 时曾被自由软件基金会(FSF)资助， 这份资助帮助 Debian 取得了长足的发展； 尽管一年后由于学业原因 Ian 退出了 FSF 转而去完成他的学位。Debian开发历史Debian 0.01 – 0.09 : 发布于 1993 年八月 – 1993 年十二月。Debian 0.91 : 发布于 1994 年一月。 有了原始的包管理系统， 没有依赖管理机制。Debian 0.93 rc5 : 发布于 1995 年三月。 “现代”意义的 Debian 的第一次发布， 在基础系统安装后会使用dpkg 安装以及管理其他软件包。Debian 0.93 rc6: 发布于 1995 年十一月。 最后一次 a.out 发布， deselect 机制第一次出现， 有60位开发者在彼时维护着软件包。Debian 1.1: 发布于 1996 年六月。 项目代号 – Buzz， 软件包数量 – 474， 包管理器 dpkg， 内核版本 2.0， ELF 二进制。Debian 1.2: 发布于 1996 年十二月。 项目代号 – Rex， 软件包数量 – 848， 开发者数量 – 120。Debian 1.3: 发布于 1997 年七月。 项目代号 – Bo， 软件包数量 974， 开发者数量 – 200。Debian 2.0: 发布于 1998 年七月。 项目代号 - Hamm， 支持构架 – Intel i386 以及 Motorola 68000 系列， 软件包数量: 1500+， 开发者数量: 400+， 内置了 glibc。Debian 2.1: 发布于1999 年三月九日。 项目代号 – slink， 支持构架 - Alpha 和 Sparc， apt 包管理器开始成型， 软件包数量 – 2250。Debian 2.2: 发布于 2000 年八月十五日。 项目代号 – Potato， 支持构架 – Intel i386， Motorola 68000 系列， Alpha， SUN Sparc， PowerPC 以及 ARM 构架。 软件包数量: 3900+ (二进制) 以及 2600+ (源代码)， 开发者数量 – 450。 有一群人在那时研究并发表了一篇论文， 论文展示了自由软件是如何在被各种问题包围的情况下依然逐步成长为优秀的现代操作系统的。Debian 3.0: 发布于 2002 年七月十九日。 项目代号 – woody， 支持构架新增 – HP， PA\_RISC， IA-64， MIPS 以及 IBM， 首次以DVD的形式发布， 软件包数量 – 8500+， 开发者数量 – 900+， 支持加密。Debian 3.1: 发布于 2005 年六月六日。 项目代号 – sarge， 支持构架 – 新增 AMD64（非官方渠道发布）， 内核 – 2.4 以及 2.6 系列， 软件包数量: 15000+， 开发者数量 : 1500+， 增加了诸如 OpenOffice 套件， Firefox 浏览器， Thunderbird， Gnome 2.8， 支持: RAID， XFS， LVM， Modular Installer。Debian 4.0: 发布于 2007 年四月八日。 项目代号 – etch， 支持构架 – 如前，包括 AMD64。 软件包数量: 18，200+ 开发者数量 : 1030+， 图形化安装器。Debian 5.0: 发布于 2009 年二月十四日。 项目代号 – lenny， 支持构架 – 新增 ARM。 软件包数量: 23000+， 开发者数量: 1010+。Debian 6.0: 发布于 2009 年七月二十九日。 项目代号 – squeeze， 包含的软件包: 内核 2.6.32， Gnome 2.3. Xorg 7.5， 同时包含了 DKMS， 基于依赖包支持。 支持构架 : 新增 kfreebsd-i386 以及 kfreebsd-amd64， 基于依赖管理的启动过程。Debian 7.0: 发布于 2013 年五月四日。 项目代号: wheezy， 支持 Multiarch， 私有云工具， 升级了安装器， 移除了第三方软件依赖， 全功能多媒体套件-codec， 内核版本 3.2， Xen Hypervisor 4.1.4 ，软件包数量: 37400+。Debian 8.0: 发布于 2015 年五月二十五日。 项目代号: Jessie， 将 Systemd 作为默认的初始化系统， 内核版本 3.16， 增加了快速启动(fast booting)， service进程所依赖的 cgroups 使隔离部分 service 进程成为可能， 43000+ 软件包。 Sysvinit 初始化工具在 Jessie 中可用。注意: Linux的内核第一次是在1991 年十月五日被发布， 而 Debian 的首次发布则在1993 年九月十三日。 所以 Debian 已经在只有24岁的 Linux 内核上运行了整整22年了。Debian 的那些事1994年管理和重整了 Debian 项目以使得其他开发者能更好地加入，所以在那一年并没有发布面向用户的更新， 当然， 内部版本肯定是有的。Debian 1.0 从来就没有被发布过。 一家 CD-ROM 的生产商错误地把某个未发布的版本标注为了 1.0， 为了避免产生混乱， 原本的 Debian 1.0 以1.1的面貌发布了。 从那以后才有了所谓的官方CD-ROM的概念。每个 Debian 新版本的代号都是玩具总动员里某个角色的名字哦。Debian 有四种可用版本: 旧稳定版(old stable)， 稳定版(stable)， 测试版(testing) 以及 试验版(experimental)。 始终如此。Debian 项目组一直工作在不稳定发行版上， 这个不稳定版本始终被叫做Sid(玩具总动员里那个邪恶的臭小孩)。 Sid是unstable版本的永久名称， 同时Sid也取自'Still In Development"(译者:还在开发中)的首字母。 Sid 将会成为下一个稳定版， 当前的稳定版本代号为 jessie。Debian 的官方发行版只包含开源并且自由的软件， 绝无其他东西. 不过 contrib 和非自由软件包使得安装那些本身自由但是其依赖的软件包不自由(contrib)的软件和非自由软件成为了可能。Debian 是一堆Linux 发行版之母。 举几个例子:Damn Small LinuxKNOPPIXLinux AdvancedMEPISUbuntu64studio (不再活跃开发)LMDEDebian 是世界上最大的非商业 Linux 发行版。它主要是由C编写的(32.1%)， 一并的还有其他70多种语言。Debian 开发语言贡献表，图片来源: XmoduloDebian 项目包含6，850万行代码， 以及 450万行空格和注释。国际空间站放弃了 Windows 和红帽子， 进而换成了 Debian - 在上面的宇航员使用落后一个版本的稳定发行版， 目前是 squeeze; 这么做是为了稳定程度以及来自 Debian 社区的雄厚帮助支持。感谢上帝! 我们差点就听到来自国际空间宇航员面对 Windows Metro 界面的尖叫了 :P黑色星期三2002 年十一月二十日， Twente 大学的网络运营中心(NOC)着火。 当地消防部门放弃了服务器区域。 NOC维护着satie.debian.org 的网站服务器， 这个网站包含了安全、非美国相关的存档、新维护者资料、数量报告、数据库等等；这一切都化为了灰烬。 之后这些服务由 Debian 重建了。未来版本下一个待发布版本是 Debian 9， 项目代号 – Stretch， 它会带来什么还是个未知数。 满心期待吧!有很多发行版在 Linux 发行版的历史上出现过一瞬间然后很快消失了。 在多数情况下， 维护一个日渐庞大的项目是开发者们面临的挑战。 但这对 Debian 来说不是问题。 Debian 项目有全世界成百上千的开发者、维护者。 它在 Linux 诞生的之初起便一直存在。Debian 在 Linux 生态环境中的贡献是难以用语言描述的。 如果 Debian 没有出现过， 那么 Linux 世界将不会像现在这样丰富和用户友好。 Debian 是为数不多可以被认为安全可靠又稳定的发行版，是作为网络服务器完美选择。这仅仅是 Debian 的一个开始。 它走过了这么长的征程， 并将一直走下去。 未来即是现在！ 世界近在眼前！ 如果你到现在还从来没有使用过 Debian， 我只想问， 你还再等什么? 快去下载一份镜像试试吧， 我们会在此守候遇到任何问题的你。Debian 主页via: http://www.tecmint.com/happy-birthday-to-debian-gnu-linux/作者：Avishek Kumar 译者：jerryling315 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Linux 小技巧：Chrome 小游戏，让文字说话，计划作业，重复执行命令
重要的事情说两遍，我完成了一个Linux提示与彩蛋系列，让你的Linux获得更多创造和娱乐。Linux提示与彩蛋系列本文，我将会讲解Google-chrome内建小游戏，在终端中如何让文字说话，使用‘at’命令设置作业和使用watch命令重复执行命令。1. Google Chrome 浏览器小游戏彩蛋网线脱掉或者其他什么原因连不上网时，Google Chrome就会出现一个小游戏。声明，我并不是游戏玩家，因此我的电脑上并没有安装任何第三方的恶意游戏。安全是第一位。所以当Internet发生出错，会出现一个这样的界面：不能连接到互联网按下空格键来激活Google-chrome彩蛋游戏。游戏没有时间限制。并且还不需要浪费时间安装使用。不需要第三方软件的支持。同样支持Windows和Mac平台，但是我的平台是Linux，我也只谈论Linux。当然在Linux，这个游戏运行很好。游戏简单，但也很花费时间。使用空格/向上方向键来跳跃。请看下列截图：Google Chrome中玩游戏2. Linux 终端中朗读文字对于那些不能文字朗读的设备，有个小工具可以实现文字说话的转换器。用各种语言写一些东西，espeak就可以朗读给你。系统应该默认安装了Espeak，如果你的系统没有安装，你可以使用下列命令来安装：# apt-get install espeak (Debian) # yum install espeak (CentOS) # dnf install espeak (Fedora 22 及其以后) 你可以让espeak接受标准输入的交互输入并及时转换成语音朗读出来。如下：$ espeak [按回车键] 更详细的输出你可以这样做：$ espeak --stdout | aplay [按回车键][再次回车] espeak设置灵活，也可以朗读文本文件。你可以这样设置：$ espeak --stdout /path/to/text/file/file_name.txt | aplay [Hit Enter] espeak可以设置朗读速度。默认速度是160词每分钟。使用-s参数来设置。设置每分钟30词的语速：$ espeak -s 30 -f /path/to/text/file/file_name.txt | aplay 设置每分钟200词的语速：$ espeak -s 200 -f /path/to/text/file/file_name.txt | aplay 说其他语言，比如北印度语（作者母语），这样设置：$ espeak -v hindi --stdout 'टेकमिंट विश्व की एक बेहतरीन लाइंक्स आधारित वेबसाइट है|' | aplay 你可以使用各种语言，让espeak如上面说的以你选择的语言朗读。使用下列命令来获得语言列表：$ espeak --voices 3. 快速调度任务我们已经非常熟悉使用cron守护进程执行一个计划命令。Cron是一个Linux系统管理的高级命令，用于计划定时任务如备份或者指定时间或间隔的任何事情。但是，你是否知道at命令可以让你在指定时间调度一个任务或者命令？at命令可以指定时间执行指定内容。例如，你打算在早上11点2分执行uptime命令，你只需要这样做：$ at 11:02 uptime >> /home/$USER/uptime.txt Ctrl+D Linux中计划任务检查at命令是否成功设置，使用：$ at -l 浏览计划任务at支持计划多个命令，例如：$ at 12:30 Command – 1 Command – 2 … command – 50 … Ctrl + D 4. 特定时间重复执行命令有时，我们可以需要在指定时间间隔执行特定命令。例如，每3秒，想打印一次时间。查看现在时间，使用下列命令。$ date +"%H:%M:%S Linux中查看日期和时间为了每三秒查看一下这个命令的输出，我需要运行下列命令：$ watch -n 3 'date +"%H:%M:%S"' Linux中watch命令watch命令的‘-n’开关设定时间间隔。在上述命令中，我们定义了时间间隔为3秒。你可以按你的需求定义。同样watch 也支持其他命令或者脚本。至此。希望你喜欢这个系列的文章，让你的linux更有创造性，获得更多快乐。所有的建议欢迎评论。欢迎你也看看其他文章，谢谢。via: http://www.tecmint.com/text-to-speech-in-terminal-schedule-a-job-and-watch-commands-in-linux/作者：Avishek Kumar 译者：VicYu/Vic020 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
我已经写过 Linux 提示和技巧 系列的一篇文章。写这篇文章的目的是让你知道这些小技巧可以有效地管理你的系统/服务器。在Linux中创建 Cdrom ISO 镜像和监控用户在这篇文章中，我们将看到如何使用 CD/DVD 驱动器中载入的碟片来创建 ISO 镜像；打开随机手册页学习；看到登录用户的详细情况和查看浏览器内存使用量，而所有这些完全使用本地工具/命令，无需任何第三方应用程序/组件。让我们开始吧……用 CD 碟片创建 ISO 映像我们经常需要备份/复制 CD/DVD 的内容。如果你是在 Linux 平台上，不需要任何额外的软件。所有需要的是进入 Linux 终端。要从 CD/DVD 上创建 ISO 镜像，你需要做两件事。第一件事就是需要找到CD/DVD 驱动器的名称。要找到 CD/DVD 驱动器的名称，可以使用以下三种方法。1. 从终端/控制台上运行 lsblk 命令（列出块设备）$ lsblk 找块设备从上图可以看到，sr0 就是你的 cdrom （即 /dev/sr0 ）。2. 要查看有关 CD-ROM 的信息，可以使用以下命令$ less /proc/sys/dev/cdrom/info 检查 Cdrom 信息从上图可以看到， 设备名称是 sr0 （即 /dev/sr0）。3. 使用 dmesg 命令 也会得到相同的信息，并使用 egrep 来自定义输出。命令 ‘dmesg‘ 命令的输出/控制内核缓冲区信息。‘egrep‘ 命令输出匹配到的行。egrep 使用选项 -i 和 -color 时会忽略大小写，并高亮显示匹配的字符串。$ dmesg | egrep -i --color 'cdrom|dvd|cd/rw|writer' 查找设备信息从上图可以看到，设备名称是 sr0 （即 /dev/sr0）。一旦知道 CD/DVD 的名称后，在 Linux 上你可以用下面的命令来创建 ISO 镜像（你看，只需要 cat 即可！）。$ cat /dev/sr0 > /path/to/output/folder/iso_name.iso 这里的‘sr0‘是我的 CD/DVD 驱动器的名称。你应该用你的 CD/DVD 名称来代替。这将帮你创建 ISO 镜像并备份 CD/DVD 的内容无需任何第三方应用程序。创建 CDROM 的 ISO 映像随机打开一个手册页如果你是 Linux 新人并想学习使用命令行开关，这个技巧就是给你的。把下面的代码行添加在〜/ .bashrc文件的末尾。/use/bin/man $(ls /bin | shuf | head -1) 记得把上面一行脚本添加在用户的.bashrc文件中，而不是根目录的 .bashrc 文件。所以，当你下次登录本地或远程使用 SSH 时，你会看到一个随机打开的手册页供你阅读。对于想要学习命令行开关的新手，这被证明是有益的。下面是在终端登录两次分别看到的。LoadKeys 手册页Zgrep 手册页希望你知道如何退出手册页浏览——如果你已经厌烦了每次都看到手册页，你可以删除你添加到 .bashrc文件中的那几行。查看登录用户的状态了解其他用户正在共享服务器上做什么。一般情况下，你是共享的 Linux 服务器的用户或管理员的。如果你担心自己服务器的安全并想要查看哪些用户在做什么，你可以使用命令 w。这个命令可以让你知道是否有人在执行恶意代码或篡改服务器，让他停下或使用其他方法。'w' 是查看登录用户状态的首选方式。要查看登录的用户正在做什么，从终端运行命令“w”，最好是 root 用户。# w 检查 Linux 用户状态查看浏览器的内存使用状况最近有不少谈论关于 Google-chrome 的内存使用量。如要检查浏览器的内存使用情况，只需在地址栏输入 “about:memory”，不要带引号。我已经在 Google-Chrome 和 Mozilla 的 Firefox 网页浏览器进行了测试。你可以查看任何浏览器，如果它工作得很好，你可能会承认我们在下面的评论。你也可以杀死浏览器进程在 Linux 终端的进程/服务中。在 Google Chrome 中，在地址栏输入 about:memory，你应该得到类似下图的东西。查看 Chrome 内存使用状况在Mozilla Firefox浏览器，在地址栏输入 about:memory，你应该得到类似下图的东西。查看 Firefox 内存使用状况如果你已经了解它是什么，除了这些选项。要检查内存用量，你也可以点击最左边的 ‘Measure‘ 选项。Firefox 主进程它将通过浏览器树形展示进程内存使用量。目前为止就这样了。希望上述所有的提示将会帮助你。如果你有一个（或多个）技巧，分享给我们，将帮助 Linux 用户更有效地管理他们的 Linux 系统/服务器。我会很快在这里发帖，到时候敬请关注。请在下面的评论里提供你的宝贵意见。喜欢请分享并帮助我们传播。via: http://www.tecmint.com/creating-cdrom-iso-image-watch-user-activity-in-linux/作者：Avishek Kumar 译者：strugglingyouth 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
对于那些主要通过控制台或终端使用 Linux 命令行来工作的 Linux 用户来说，他们真切地感受到了 Linux 的强大。 然而在 Linux 的分层文件系统中进行导航有时或许是一件头疼的事，尤其是对于那些新手来说。现在，有一个用 Python 写的名为 autojump 的 Linux 命令行实用程序，它是 Linux ‘cd’命令的高级版本。Autojump – Linux 文件系统导航的最快方式这个应用原本由 Joël Schaerer 编写，现在由 +William Ting 维护。Autojump 应用可以从用户那里学习并帮助用户在 Linux 命令行中进行更轻松的目录导航。与传统的 cd 命令相比，autojump 能够更加快速地导航至目的目录。autojump 的特色自由开源的应用，在 GPL V3 协议下发布。自主学习的应用，从用户的导航习惯中学习。更快速地导航。不必包含子目录的名称。对于大多数的标准 Linux 发行版本，能够在软件仓库中下载得到，它们包括 Debian (testing/unstable), Ubuntu, Mint, Arch, Gentoo, Slackware, CentOS, RedHat 和 Fedora。也能在其他平台中使用，例如 OS X(使用 Homebrew) 和 Windows (通过 Clink 来实现)使用 autojump 你可以跳至任何特定的目录或一个子目录。你还可以用文件管理器打开某个目录，并查看你在某个目录中所待时间的统计数据。前提版本号不低于 2.6 的 Python第 1 步: 做一次完整的系统升级1、 以 root 用户的身份，做一次系统更新或升级，以此保证你安装有最新版本的 Python。# apt-get update && apt-get upgrade && apt-get dist-upgrade [基于 APT 的系统] # yum update && yum upgrade [基于 YUM 的系统] # dnf update && dnf upgrade [基于 DNF 的系统] 注 : 这里特别提醒，在基于 YUM 或 DNF 的系统中，更新和升级执行相同的行动，大多数时间里它们是通用的，这点与基于 APT 的系统不同。第 2 步: 下载和安装 Autojump2、 正如前面所言，在大多数的 Linux 发行版本的软件仓库中， autojump 都可获取到。通过包管理器你就可以安装它。但若你想从源代码开始来安装它，你需要克隆源代码并执行 python 脚本，如下面所示：从源代码安装若没有安装 git，请安装它。我们需要使用它来克隆 git 仓库。# apt-get install git [基于 APT 的系统] # yum install git [基于 YUM 的系统] # dnf install git [基于 DNF 的系统] 一旦安装完 git，以普通用户身份登录，然后像下面那样来克隆 autojump：$ git clone git://github.com/joelthelion/autojump.git 接着，使用 cd 命令切换到下载目录。$ cd autojump 下载，赋予安装脚本文件可执行权限，并以 root 用户身份来运行安装脚本。# chmod 755 install.py # ./install.py 从软件仓库中安装3、 假如你不想麻烦，你可以以 root 用户身份从软件仓库中直接安装它:在 Debian, Ubuntu, Mint 及类似系统中安装 autojump :# apt-get install autojump 为了在 Fedora, CentOS, RedHat 及类似系统中安装 autojump, 你需要启用 EPEL 软件仓库。# yum install epel-release # yum install autojump 或 # dnf install autojump 第 3 步: 安装后的配置4、 在 Debian 及其衍生系统 (Ubuntu, Mint,…) 中, 激活 autojump 应用是非常重要的。为了暂时激活 autojump 应用，即直到你关闭当前会话或打开一个新的会话之前让 autojump 均有效，你需要以常规用户身份运行下面的命令:$ source /usr/share/autojump/autojump.sh on startup 为了使得 autojump 在 BASH shell 中永久有效，你需要运行下面的命令。$ echo '. /usr/share/autojump/autojump.sh' >> ~/.bashrc 第 4 步: Autojump 的预测试和使用5、 如先前所言， autojump 将只跳到先前 cd 命令到过的目录。所以在我们开始测试之前，我们要使用 cd 切换到一些目录中去，并创建一些目录。下面是我所执行的命令。$ cd $ cd $ cd Desktop/ $ cd $ cd Documents/ $ cd $ cd Downloads/ $ cd $ cd Music/ $ cd $ cd Pictures/ $ cd $ cd Public/ $ cd $ cd Templates $ cd $ cd /var/www/ $ cd $ mkdir autojump-test/ $ cd $ mkdir autojump-test/a/ && cd autojump-test/a/ $ cd $ mkdir autojump-test/b/ && cd autojump-test/b/ $ cd $ mkdir autojump-test/c/ && cd autojump-test/c/ $ cd 现在，我们已经切换到过上面所列的目录，并为了测试创建了一些目录，一切准备就绪，让我们开始吧。需要记住的一点 : j 是 autojump 的一个封装，你可以使用 j 来代替 autojump， 相反亦可。6、 使用 -v 选项查看安装的 autojump 的版本。$ j -v 或 $ autojump -v 查看 Autojump 的版本7、 跳到先前到过的目录 ‘/var/www‘。$ j www 跳到目录8、 跳到先前到过的子目录‘/home/avi/autojump-test/b‘ 而不键入子目录的全名。$ jc b 跳到子目录9、 使用下面的命令，你就可以从命令行打开一个文件管理器，例如 GNOME Nautilus ，而不是跳到一个目录。$ jo www 打开目录在文件管理器中打开目录你也可以在一个文件管理器中打开一个子目录。$ jco c 打开子目录在文件管理器中打开子目录10、 查看每个文件夹的权重和全部文件夹计算得出的总权重的统计数据。文件夹的权重代表在这个文件夹中所花的总时间。 文件夹权重是该列表中目录的数字。(LCTT 译注: 在这一句中，我觉得原文中的 if 应该为 is)$ j --stat 查看文件夹统计数据提醒 : autojump 存储其运行日志和错误日志的地方是文件夹 ~/.local/share/autojump/。千万不要重写这些文件，否则你将失去你所有的统计状态结果。$ ls -l ~/.local/share/autojump/ Autojump 的日志11、 假如需要，你只需运行下面的命令就可以查看帮助 :$ j --help Autojump 的帮助和选项功能需求和已知的冲突autojump 只能让你跳到那些你已经用 cd 到过的目录。一旦你用 cd 切换到一个特定的目录，这个行为就会被记录到 autojump 的数据库中，这样 autojump 才能工作。不管怎样，在你设定了 autojump 后，你不能跳到那些你没有用 cd 到过的目录。你不能跳到名称以破折号 (-) 开头的目录。或许你可以考虑阅读我的有关操作文件或目录 的文章，尤其是有关操作那些以‘-‘ 或其他特殊字符开头的文件和目录的内容。在 BASH shell 中，autojump 通过修改 $PROMPT_COMMAND 环境变量来跟踪目录的行为，所以强烈建议不要去重写 $PROMPT_COMMAND 这个环境变量。若你需要添加其他的命令到现存的 $PROMPT_COMMAND 环境变量中，请添加到$PROMPT_COMMAND 环境变量的最后。结论:假如你是一个命令行用户， autojump 是你必备的实用程序。它可以简化许多事情。它是一个在命令行中导航 Linux 目录的绝佳的程序。请自行尝试它，并在下面的评论框中让我知晓你宝贵的反馈。保持联系，保持分享。喜爱并分享，帮助我们更好地传播。via: http://www.tecmint.com/autojump-a-quickest-way-to-navigate-linux-filesystem/作者：Avishek Kumar 译者：FSSlc 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
我们在Linux上工作时，每个人都会遇到需要查找shell命令的帮助信息的时候。 尽管内置的帮助像man pages、whatis命令有所助益， 但man pages的输出非常冗长， 除非是个有linux经验的人，不然从大量的man pages中获取帮助信息是非常困难的，而whatis命令的输出很少超过一行， 这对初学者来说是不够的。在Linux Shell中解释Shell命令有一些第三方应用程序， 像我们在Linux 用户的命令行速查表提及过的'cheat'命令。cheat是个优秀的应用程序，即使计算机没有联网也能提供shell命令的帮助， 但是它仅限于预先定义好的命令。Jackson写了一小段代码，它能非常有效地在bash shell里面解释shell命令，可能最美之处就是你不需要安装第三方包了。他把包含这段代码的的文件命名为“explain.sh”。explain.sh工具的特性易嵌入代码。不需要安装第三方工具。在解释过程中输出恰到好处的信息。需要网络连接才能工作。纯命令行工具。可以解释bash shell里面的大部分shell命令。无需使用root账户。先决条件唯一的条件就是'curl'包了。 在如今大多数Linux发行版里面已经预安装了curl包， 如果没有你可以按照下面的命令来安装。# apt-get install curl [On Debian systems] # yum install curl [On CentOS systems] 在Linux上安装explain.sh工具我们要将下面这段代码插入'~/.bashrc'文件（LCTT译注: 若没有该文件可以自己新建一个）中。我们要为每个用户以及对应的'.bashrc'文件插入这段代码，但是建议你不要加在root用户下。我们注意到.bashrc文件的第一行代码以（#）开始， 这个是可选的并且只是为了区分余下的代码。explain.sh 标记代码的开始， 我们将代码插入.bashrc文件的底部。（备注：原代码有误，处理 https 时需要指定加密套件，据微信网友“高小树”同学的改进，原来的-Gs应该修改为-G --ciphers ecdhe_ecdsa_aes_128_sha。谢谢“高小树”同学。）# explain.sh begins explain () { if [ "$#" -eq 0 ]; then while read -p "Command: " cmd; do curl -G --ciphers ecdhe_ecdsa_aes_128_sha "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$cmd" done echo "Bye!" elif [ "$#" -eq 1 ]; then curl -G --ciphers ecdhe_ecdsa_aes_128_sha "https://www.mankier.com/api/explain/?cols="$(tput cols) --data-urlencode "q=$1" else echo "Usage" echo "explain interactive mode." echo "explain 'cmd -o | ...' one quoted command to explain it." fi } explain.sh工具的使用在插入代码并保存之后，你必须退出当前的会话然后重新登录来使改变生效（LCTT译注：你也可以直接使用命令source ~/.bashrc 来让改变生效）。每件事情都是交由‘curl’命令处理， 它负责将需要解释的命令以及命令选项传送给mankier服务，然后将必要的信息打印到Linux命令行。不必说的就是使用这个工具你总是需要连接网络。让我们用explain.sh脚本测试几个笔者不懂的命令例子。1.我忘了‘du -h’是干嘛用的， 我只需要这样做:$ explain 'du -h' 获得du命令的帮助2.如果你忘了'tar -zxvf'的作用，你可以简单地如此做:$ explain 'tar -zxvf' Tar命令帮助3.我的一个朋友经常对'whatis'以及'whereis'命令的使用感到困惑，所以我建议他：在终端简单的地敲下explain命令进入交互模式。$ explain 然后一个接着一个地输入命令，就能在一个窗口看到他们各自的作用：Command: whatis Command: whereis Whatis/Whereis命令的帮助你只需要使用“Ctrl+c”就能退出交互模式。4. 你可以通过管道来请求解释更多的命令。$ explain 'ls -l | grep -i Desktop' 获取多条命令的帮助同样地，你可以请求你的shell来解释任何shell命令。 前提是你需要一个可用的网络。输出的信息是基于需要解释的命令，从服务器中生成的，因此输出的结果是不可定制的。对于我来说这个工具真的很有用，并且它已经荣幸地添加在我的.bashrc文件中。你对这个项目有什么想法？它对你有用么？它的解释令你满意吗？请让我知道吧！请在下面评论为我们提供宝贵意见，喜欢并分享我们以及帮助我们得到传播。via: http://www.tecmint.com/explain-shell-commands-in-the-linux-shell/作者：Avishek Kumar 译者：dingdongnigetou 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出
Nishita Agarwal是Tecmint的用户，她将分享关于她刚刚经历的一家公司（印度的一家私人公司Pune）的面试经验。在面试中她被问及许多不同的问题，但她是iptables方面的专家，因此她想分享这些关于iptables的问题和相应的答案给那些以后可能会进行相关面试的人。所有的问题和相应的答案都基于Nishita Agarwal的记忆并经过了重写。“嗨，朋友！我叫Nishita Agarwal。我已经取得了理学学士学位，我的专业集中在UNIX和它的变种（BSD，Linux）。它们一直深深的吸引着我。我在存储方面有1年多的经验。我正在寻求职业上的变化，并将供职于印度的Pune公司。”下面是我在面试中被问到的问题的集合。我已经把我记忆中有关iptables的问题和它们的答案记录了下来。希望这会对您未来的面试有所帮助。1. 你听说过Linux下面的iptables和Firewalld么？知不知道它们是什么，是用来干什么的？答案 : iptables和Firewalld我都知道，并且我已经使用iptables好一段时间了。iptables主要由C语言写成，并且以GNU GPL许可证发布。它是从系统管理员的角度写的，最新的稳定版是iptables 1.4.21。iptables通常被用作类UNIX系统中的防火墙，更准确的说，可以称为iptables/netfilter。管理员通过终端/GUI工具与iptables打交道，来添加和定义防火墙规则到预定义的表中。Netfilter是内核中的一个模块，它执行包过滤的任务。Firewalld是RHEL/CentOS 7（也许还有其他发行版，但我不太清楚）中最新的过滤规则的实现。它已经取代了iptables接口，并与netfilter相连接。2. 你用过一些iptables的GUI或命令行工具么？答案 : 虽然我既用过GUI工具，比如与Webmin结合的Shorewall；以及直接通过终端访问iptables，但我必须承认通过Linux终端直接访问iptables能给予用户更高级的灵活性、以及对其背后工作更好的理解的能力。GUI适合初级管理员，而终端适合有经验的管理员。3. 那么iptables和firewalld的基本区别是什么呢？答案 : iptables和firewalld都有着同样的目的（包过滤），但它们使用不同的方式。iptables与firewalld不同，在每次发生更改时都刷新整个规则集。通常iptables配置文件位于‘/etc/sysconfig/iptables‘，而firewalld的配置文件位于‘/etc/firewalld/‘。firewalld的配置文件是一组XML文件。以XML为基础进行配置的firewalld比iptables的配置更加容易，但是两者都可以完成同样的任务。例如，firewalld可以在自己的命令行界面以及基于XML的配置文件下使用iptables。4. 如果有机会的话，你会在你所有的服务器上用firewalld替换iptables么？答案 : 我对iptables很熟悉，它也工作的很好。如果没有任何需求需要firewalld的动态特性，那么没有理由把所有的配置都从iptables移动到firewalld。通常情况下，目前为止，我还没有看到iptables造成什么麻烦。IT技术的通用准则也说道“为什么要修一件没有坏的东西呢？”。上面是我自己的想法，但如果组织愿意用firewalld替换iptables的话，我不介意。5. 你看上去对iptables很有信心，巧的是，我们的服务器也在使用iptables。iptables使用的表有哪些？请简要的描述iptables使用的表以及它们所支持的链。答案 : 谢谢您的赞赏。至于您问的问题，iptables使用的表有四个，它们是：Nat 表Mangle 表Filter 表Raw 表Nat表 : Nat表主要用于网络地址转换。根据表中的每一条规则修改网络包的IP地址。流中的包仅遍历一遍Nat表。例如，如果一个通过某个接口的包被修饰（修改了IP地址），该流中其余的包将不再遍历这个表。通常不建议在这个表中进行过滤，由NAT表支持的链称为PREROUTING 链，POSTROUTING 链和OUTPUT 链。Mangle表 : 正如它的名字一样，这个表用于校正网络包。它用来对特殊的包进行修改。它能够修改不同包的头部和内容。Mangle表不能用于地址伪装。支持的链包括PREROUTING 链，OUTPUT 链，Forward 链，Input 链和POSTROUTING 链。Filter表 : Filter表是iptables中使用的默认表，它用来过滤网络包。如果没有定义任何规则，Filter表则被当作默认的表，并且基于它来过滤。支持的链有INPUT 链，OUTPUT 链，FORWARD 链。Raw表 : Raw表在我们想要配置之前被豁免的包时被使用。它支持PREROUTING 链和OUTPUT 链。6. 简要谈谈什么是iptables中的目标值（能被指定为目标），他们有什么用答案 : 下面是在iptables中可以指定为目标的值：ACCEPT : 接受包QUEUE : 将包传递到用户空间 (应用程序和驱动所在的地方)DROP : 丢弃包RETURN : 将控制权交回调用的链并且为当前链中的包停止执行下一调用规则7. 让我们来谈谈iptables技术方面的东西，我的意思是说实际使用方面你怎么检测在CentOS中安装iptables时需要的iptables的rpm？答案 : iptables已经被默认安装在CentOS中，我们不需要单独安装它。但可以这样检测rpm：# rpm -qa iptables iptables-1.4.21-13.el7.x86_64 如果您需要安装它，您可以用yum来安装。# yum install iptables-services 8. 怎样检测并且确保iptables服务正在运行？答案 : 您可以在终端中运行下面的命令来检测iptables的状态。# service status iptables [On CentOS 6/5] # systemctl status iptables [On CentOS 7] 如果iptables没有在运行，可以使用下面的语句---------------- 在CentOS 6/5下 ---------------- # chkconfig --level 35 iptables on # service iptables start ---------------- 在CentOS 7下 ---------------- # systemctl enable iptables # systemctl start iptables 我们还可以检测iptables的模块是否被加载：# lsmod | grep ip_tables 9. 你怎么检查iptables中当前定义的规则呢？答案 : 当前的规则可以简单的用下面的命令查看：# iptables -L 示例输出Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination 10. 你怎样刷新所有的iptables规则或者特定的链呢？答案 : 您可以使用下面的命令来刷新一个特定的链。# iptables --flush OUTPUT 要刷新所有的规则，可以用：# iptables --flush 11. 请在iptables中添加一条规则，接受所有从一个信任的IP地址（例如，192.168.0.7）过来的包。答案 : 上面的场景可以通过运行下面的命令来完成。# iptables -A INPUT -s 192.168.0.7 -j ACCEPT 我们还可以在源IP中使用标准的斜线和子网掩码：# iptables -A INPUT -s 192.168.0.7/24 -j ACCEPT # iptables -A INPUT -s 192.168.0.7/255.255.255.0 -j ACCEPT 12. 怎样在iptables中添加规则以ACCEPT，REJECT，DENY和DROP ssh的服务？答案 : 但愿ssh运行在22端口，那也是ssh的默认端口，我们可以在iptables中添加规则来ACCEPT ssh的tcp包（在22号端口上）。# iptables -A INPUT -p tcp --dport 22 -j ACCEPT REJECT ssh服务（22号端口）的tcp包。# iptables -A INPUT -p tcp --dport 22 -j REJECT DENY ssh服务（22号端口）的tcp包。# iptables -A INPUT -p tcp --dport 22 -j DENY DROP ssh服务（22号端口）的tcp包。# iptables -A INPUT -p tcp --dport 22 -j DROP 13. 让我给你另一个场景，假如有一台电脑的本地IP地址是192.168.0.6。你需要封锁在21、22、23和80号端口上的连接，你会怎么做？答案 : 这时，我所需要的就是在iptables中使用‘multiport‘选项，并将要封锁的端口号跟在它后面。上面的场景可以用下面的一条语句搞定：# iptables -A INPUT -s 192.168.0.6 -p tcp -m multiport --dport 22,23,80,8080 -j DROP 可以用下面的语句查看写入的规则。# iptables -L Chain INPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT icmp -- anywhere anywhere ACCEPT all -- anywhere anywhere ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:ssh REJECT all -- anywhere anywhere reject-with icmp-host-prohibited DROP tcp -- 192.168.0.6 anywhere multiport dports ssh,telnet,http,webcache Chain FORWARD (policy ACCEPT) target prot opt source destination REJECT all -- anywhere anywhere reject-with icmp-host-prohibited Chain OUTPUT (policy ACCEPT) target prot opt source destination 面试官 : 好了，我问的就是这些。你是一个很有价值的雇员，我们不会错过你的。我将会向HR推荐你的名字。如果你有什么问题，请问我。作为一个候选人我不愿不断的问将来要做的项目的事以及公司里其他的事，这样会打断愉快的对话。更不用说HR轮会不会比较难，总之，我获得了机会。同时我要感谢Avishek和Ravi（我的朋友）花时间帮我整理我的面试。朋友！如果您有过类似的面试，并且愿意与数百万Tecmint读者一起分享您的面试经历，请将您的问题和答案发送到admin@tecmint.com。谢谢！保持联系。如果我能更好的回答我上面的问题的话，请记得告诉我。via: http://www.tecmint.com/linux-firewall-iptables-interview-questions-and-answers/作者：Avishek Kumar 译者：wwy-hust 校对：wxy本文由 LCTT 原创翻译，Linux中国 荣誉推出