蚊章汇 - LFCS
type: channel
link: https://linuxcn.bwsl.wang/tag/LFCS/
items: LFCS 系列第十四讲： Linux 进程资源用量监控和按用户设置进程限制
items: LFCS 系列第十三讲：如何配置并排除 GNU 引导加载程序（GRUB）故障
items: LFCS 系列第十二讲：如何使用 Linux 的帮助文档和工具
items: LFCS 系列第十一讲：如何使用命令 vgcreate、lvcreate 和 lvextend 管理和创建 LVM
items: LFCS 系列第十讲：学习简单的 Shell 脚本编程和文件系统故障排除
items: LFCS 系列第九讲
items: LFCS 系列第八讲：管理用户和用户组、文件权限和属性以及启用账户 sudo 访问权限
items: LFCS 系列第七讲：通过 SysVinit、Systemd 和 Upstart 管理系统自启动进程和服务
items: LFCS 系列第六讲：组装分区为RAID设备——创建和管理系统备份
items: LFCS 系列第五讲：如何在 Linux 中挂载/卸载本地文件系统和网络文件系统（Samba 和 NF

LFCS 系列第十四讲： Linux 进程资源用量监控和按用户设置进程限制
type: item
date: 2016-09-06T04:00:31+08:00
description: 由于 2016 年 2 月 2 号开始启用了新的 LFCS 考试要求，我们在已经发表的 LFCS 系列 基础上增加了一些必要的主题。为了准备考试，同时也建议你看看 LFCE 系列 文章。第十四讲： 监控 Linux 进程并为每个用户设置进程限制每个 Linux 系统管理员都应该知道如何验证硬件、资源和主要进程的完整性和可用性。另外，基于每个用户设置资源限制也是其中一项必备技能。在这篇文章中，我们会介绍一些能够确保系统硬件和软件正常工作的方法，这些方法能够避免潜在的会导致生产环境下线或钱财损失的问题发生。报告 Linux 进程统计信息你可以使用 mpstat 单独查看每个处理器或者系统整体的活动，可以是每次一个快照或者动态更新。为了使用这个工具，你首先需要安装 sysstat：# yum update && yum install sysstat [基于 CentOS 的系统] # aptitutde update && aptitude install sysstat [基于 Ubuntu 的系统] # zypper update && zypper install sysstat [基于 openSUSE 的系统] 你可以在 在 Linux 中学习 Sysstat 和其中的工具 mpstat、pidstat、iostat 和 sar 了解更多和 sysstat 和其中的工具相关的信息。安装完 mpstat 之后，就可以使用它生成处理器统计信息的报告。你可以使用下面的命令每隔 2 秒显示所有 CPU（用 -P ALL 表示）的 CPU 利用率（-u），共显示 3 次。# mpstat -P ALL -u 2 3 示例输出：Linux 3.19.0-32-generic (tecmint.com) Wednesday 30 March 2016 _x86_64_ (4 CPU) 11:41:07 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:09 IST all 5.85 0.00 1.12 0.12 0.00 0.00 0.00 0.00 0.00 92.91 11:41:09 IST 0 4.48 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 94.53 11:41:09 IST 1 2.50 0.00 0.50 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:09 IST 2 6.44 0.00 0.99 0.00 0.00 0.00 0.00 0.00 0.00 92.57 11:41:09 IST 3 10.45 0.00 1.99 0.00 0.00 0.00 0.00 0.00 0.00 87.56 11:41:09 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:11 IST all 11.60 0.12 1.12 0.50 0.00 0.00 0.00 0.00 0.00 86.66 11:41:11 IST 0 10.50 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 88.50 11:41:11 IST 1 14.36 0.00 1.49 2.48 0.00 0.00 0.00 0.00 0.00 81.68 11:41:11 IST 2 2.00 0.50 1.00 0.00 0.00 0.00 0.00 0.00 0.00 96.50 11:41:11 IST 3 19.40 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 79.60 11:41:11 IST CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idle 11:41:13 IST all 5.69 0.00 1.24 0.00 0.00 0.00 0.00 0.00 0.00 93.07 11:41:13 IST 0 2.97 0.00 1.49 0.00 0.00 0.00 0.00 0.00 0.00 95.54 11:41:13 IST 1 10.78 0.00 1.47 0.00 0.00 0.00 0.00 0.00 0.00 87.75 11:41:13 IST 2 2.00 0.00 1.00 0.00 0.00 0.00 0.00 0.00 0.00 97.00 11:41:13 IST 3 6.93 0.00 …

LFCS 系列第十三讲：如何配置并排除 GNU 引导加载程序（GRUB）故障
type: item
date: 2016-09-05T02:05:00+08:00
description: 由于 LFCS 考试需求的变动已于 2016 年 2 月 2 日生效，因此我们向 LFCS 系列 添加了一些必要的话题。为了准备认证考试，我们也强烈推荐你去看看 LFCE 系列。LFCS 系列第十三讲：配置并排除 Grub 引导加载程序故障。本文将会向你介绍 GRUB 的知识，并会说明你为什么需要一个引导加载程序，以及它是如何给系统增加功能的。Linux 引导过程 是从你按下你的电脑电源键开始，直到你拥有一个全功能的系统为止，整个过程遵循着这样的主要步骤：一个叫做 POST（上电自检）的过程会对你的电脑硬件组件做全面的检查。当 POST 完成后，它会把控制权转交给引导加载程序，接下来引导加载程序会将 Linux 内核（以及 initramfs）加载到内存中并执行。内核首先检查并访问硬件，然后运行初始化进程（主要以它的通用名 init 而为人熟知），接下来初始化进程会启动一些服务，最后完成系统启动过程。在该系列的第七讲（“SysVinit、Upstart 和 Systemd”）中，我们介绍了现代 Linux 发行版使用的一些服务管理系统和工具。在继续学习之前，你可能想要回顾一下那一讲的知识。GRUB 引导装载程序介绍在现代系统中，你会发现有两种主要的 GRUB 版本（一种是有时被称为 GRUB Legacy 的 v1 版本，另一种则是 v2 版本），虽说多数最新版本的发行版系统都默认使用了 v2 版本。如今，只有 红帽企业版 Linux 6 及其衍生系统仍在使用 v1 版本。因此，在本指南中，我们将着重关注 v2 版本的功能。不管 GRUB 的版本是什么，一个引导加载程序都允许用户：通过指定使用不同的内核来修改系统的行为；从多个操作系统中选择一个启动；添加或编辑配置区块来改变启动选项等。如今，GNU 项目负责维护 GRUB，并在它们的网站上提供了丰富的文档。当你在阅读这篇指南时，我们强烈建议你看下 GNU 官方文档。当系统引导时，你会在主控制台看到如下的 GRUB 画面。最开始，你可以根据提示在多个内核版本中选择一个内核（默认情况下，系统将会使用最新的内核启动），并且可以进入 GRUB 命令行模式（使用 c 键），或者编辑启动项（按下 e 键）。GRUB 启动画面你会考虑使用一个旧版内核启动的原因之一是之前工作正常的某个硬件设备在一次升级后出现了“怪毛病（acting up）”（例如，你可以参考 AskUbuntu 论坛中的这条链接）。在启动时会从 /boot/grub/grub.cfg 或 /boot/grub2/grub.cfg 文件中读取GRUB v2 的配置文件，而 GRUB v1 使用的配置文件则来自 /boot/grub/grub.conf 或 /boot/grub/menu.lst。这些文件不应该直接手动编辑，而应通过 /etc/default/grub 的内容和 /etc/grub.d 目录中的文件来更新。在 CentOS 7 上，当系统最初完成安装后，会生成如下的配置文件：GRUB_TIMEOUT=5 GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)" GRUB_DEFAULT=saved GRUB_DISABLE_SUBMENU=true GRUB_TERMINAL_OUTPUT="console" GRUB_CMDLINE_LINUX="vconsole.keymap=la-latin1 rd.lvm.lv=centos_centos7-2/swap crashkernel=auto vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos_centos7-2/root rhgb quiet" GRUB_DISABLE_RECOVERY="true" 除了在线文档外，你也可以使用下面的命令查阅 GNU GRUB 手册：# info grub 如果你对 /etc/default/grub 文件中的可用选项特别感兴趣的话，你可以直接查阅配置一节的帮助文档：# info -f grub -n 'Simple configuration' 使用上述命令，你会发现 GRUB_TIMEOUT 用于设置启动画面出现和系统自动开始启动（除非被用户中断）之间的时间。当该变量值为 -1 时，除非用户主动做出选择，否则不会开始启动。当同一台机器上安装了多个操作系统或内核后，GRUB_DEFAULT 就需要用一个整数来指定 GRUB 启动画面默认选择启动的操作系统或内核条目。我们既可以通过上述启动画面查看启动条目列表，也可以使用下面的命令：在 CentOS 和 openSUSE 系统上# awk -F\' '$1…

LFCS 系列第十二讲：如何使用 Linux 的帮助文档和工具
type: item
date: 2016-07-25T17:55:38+08:00
description: 由于 2016 年 2 月 2 号开始启用了新的 LFCS 考试要求, 我们在 LFCS 系列系列添加了一些必要的内容。为了考试的需要，我们强烈建议你看一下LFCE 系列。LFCS: 了解 Linux 的帮助文档和工具当你习惯了在命令行下进行工作，你会发现 Linux 已经有了许多使用和配置 Linux 系统所需要的文档。另一个你必须熟悉命令行帮助工具的理由是，在LFCS 和 LFCE 考试中，它们是你唯一能够使用的信息来源，没有互联网也没有百度。你只能依靠你自己和命令行。基于上面的理由，在这一章里我们将给你一些建议来可以让你有效的使用这些安装的文档和工具，以帮助你通过Linux 基金会认证考试。Linux 帮助手册 （ man ） man 手册是 manual 手册的缩写，就是其名字所揭示的那样：一个给定工具的帮助手册。它包含了命令所支持的选项列表（以及解释），有些工具甚至还提供一些使用范例。我们用 man 命令 跟上你想要了解的工具名称来打开一个帮助手册。例如：# man diff 这将打开diff的手册页，这个工具将逐行对比文本文件（如你想退出只需要轻轻的点一下 q 键）。下面我来比较两个文本文件 file1 和 file2。这两个文本文件包含了使用同一个 Linux 发行版相同版本安装的两台机器上的的安装包列表。输入diff 命令它将告诉我们 file1 和file2 有什么不同:# diff file1 file2 在Linux中比较两个文本文件< 这个符号是说file2缺失的行。如果是 file1缺失，我们将用 > 符号来替代指示。另外，7d6 意思是说file1的第7行要删除了才能和file2一致（24d22 和 41d38 也是同样的意思） 65,67d61 告诉需要删除从第 65 行到 67 行。我们完成了以上步骤，那么这两个文件将完全一致。此外，根据 man 手册说明，你还可以通过 -y 选项来以两路的方式显示文件。你可以发现这对于你找到两个文件间的不同根据方便容易。# diff -y file1 file2 比较并列出两个文件的不同此外，你也可以用diff来比较两个二进制文件。如果它们完全一样，diff 将什么也不会输出。否则，它将会返回如下信息：“Binary files X and Y differ”。–help 选项--help选项，大多数命令都支持它（并不是所有）， 它可以理解为一个命令的简短帮助手册。尽管它没有提供工具的详细介绍，但是确实是一个能够快速列出程序的所支持的选项的不错的方法。例如，# sed --help 将显示 sed （流编辑器）的每个支持的选项。sed命令的一个典型用法是替换文件中的字符。用 -i 选项（意思是 “原地编辑编辑文件”），你可以编辑一个文件而且并不需要打开它。 如果你想要同时备份一个原始文件，用 -i 选项加后缀来创建一个原始文件的副本。例如，替换 lorem.txt 中的Lorem 为 Tecmint（忽略大小写），并且创建一个原文件的备份副本，命令如下：# less lorem.txt | grep -i lorem # sed -i.orig 's/Lorem/Tecmint/gI' lorem.txt # less lorem.txt | grep -i lorem # less lorem.txt.orig | grep -i lorem 请注意lorem.txt文件中Lorem 都已经替换为 Tecmint，并且原文件 lorem.txt 被保存为lorem.txt.orig。替换文件中的文本/usr/share/doc 内的文档这可能是我最喜欢的方法。如果你进入 /usr/share/doc 目录，并列出该目录，你可以看到许多以安装在你的 Linux 上的工具为名称的文件夹。根据 文件系统层级标准，这些文件夹包含了许多帮助手册没有的信息，还有一些可以使配置更方便的模板和配置文件。例如，让我们来看一下 squid-3.3.8 （不同发行版的版本可能会不同），这还是一个非常受欢迎的 HTTP 代理和 squid 缓存服务器。让我们用cd命令进入目录：# cd /usr/share/doc/squid-3.3.8 列出当前文件夹列表：# ls 使用 ls 列出目录你应该特别注意 QUICKSTART 和 squid.conf.documented。这些文件分别包含了 Squid 详细文档及其经过详细备注的配置文件。对于别的安装包来说，具体的名字可能不同（有可能是 QuickRef 或者00QUICKSTART），但意思是一样的。对于另外一些安装包，比如 Apache web 服务器，在/usr/share/doc目录提供了配置模板，当你配置独立服务器或者虚…

LFCS 系列第十一讲：如何使用命令 vgcreate、lvcreate 和 lvextend 管理和创建 LVM
type: item
date: 2016-07-21T18:21:00+08:00
description: 由于 LFCS 考试中的一些改变已在 2016 年 2 月 2 日生效，我们添加了一些必要的专题到 LFCS 系列。我们也非常推荐备考的同学，同时阅读 LFCE 系列。LFCS：管理 LVM 和创建 LVM 分区在安装 Linux 系统的时候要做的最重要的决定之一便是给系统文件、home 目录等分配空间。在这个地方犯了错，再要扩大空间不足的分区，那样既麻烦又有风险。逻辑卷管理 （LVM）相较于传统的分区管理有许多优点，已经成为大多数（如果不能说全部的话） Linux 发行版安装时的默认选择。LVM 最大的优点应该是能方便的按照你的意愿调整（减小或增大）逻辑分区的大小。LVM 的组成结构：把一块或多块硬盘或者一个或多个分区配置成物理卷（PV）。一个用一个或多个物理卷创建出的卷组（VG）。可以把一个卷组想象成一个单独的存储单元。在一个卷组上可以创建多个逻辑卷。每个逻辑卷相当于一个传统意义上的分区 —— 优点是它的大小可以根据需求重新调整大小，正如之前提到的那样。本文，我们将使用三块 8 GB 的磁盘（/dev/sdb、/dev/sdc 和 /dev/sdd）分别创建三个物理卷。你既可以直接在整个设备上创建 PV，也可以先分区在创建。在这里我们选择第一种方式，如果你决定使用第二种（可以参考本系列第四讲：创建分区和文件系统）确保每个分区的类型都是 8e。创建物理卷，卷组和逻辑卷要在 /dev/sdb、/dev/sdc 和 /dev/sdd上创建物理卷，运行：# pvcreate /dev/sdb /dev/sdc /dev/sdd 你可以列出新创建的 PV ，通过：# pvs 并得到每个 PV 的详细信息，通过：# pvdisplay /dev/sdX （X 即 b、c 或 d）如果没有输入 /dev/sdX ，那么你将得到所有 PV 的信息。使用 /dev/sdb和/dev/sdc创建卷组 ，命名为vg00(在需要时是可以通过添加其他设备来扩展空间的，我们等到说明这点的时候再用，所以暂时先保留/dev/sdd`）：# vgcreate vg00 /dev/sdb /dev/sdc 就像物理卷那样，你也可以查看卷组的信息，通过：# vgdisplay vg00 由于 vg00 是由两个 8 GB 的磁盘组成的，所以它将会显示成一个 16 GB 的硬盘：LVM 卷组列表当谈到创建逻辑卷，空间的分配必须考虑到当下和以后的需求。根据每个逻辑卷的用途来命名是一个好的做法。举个例子，让我们创建两个 LV，命名为 vol_projects （10 GB） 和 vol_backups （剩下的空间）， 在日后分别用于部署项目文件和系统备份。参数 -n 用于为 LV 指定名称，而 -L 用于设定固定的大小，还有 -l （小写的 L）在 VG 的预留空间中用于指定百分比大小的空间。# lvcreate -n vol_projects -L 10G vg00 # lvcreate -n vol_backups -l 100%FREE vg00 和之前一样，你可以查看 LV 的列表和基础信息，通过：# lvs 或是查看详细信息，通过：# lvdisplay 若要查看单个 LV 的信息，使用 lvdisplay 加上 VG 和 LV 作为参数，如下：# lvdisplay vg00/vol_projects 逻辑卷列表如上图，我们看到 LV 已经被创建成存储设备了（参考 LV Path 那一行）。在使用每个逻辑卷之前，需要先在上面创建文件系统。这里我们拿 ext4 来做举例，因为对于每个 LV 的大小， ext4 既可以增大又可以减小（相对的 xfs 就只允许增大）：# mkfs.ext4 /dev/vg00/vol_projects # mkfs.ext4 /dev/vg00/vol_backups 我们将在下一节向大家说明，如何调整逻辑卷的大小并在需要的时候添加额外的外部存储空间。调整逻辑卷大小和扩充卷组现在设想以下场景。vol_backups 中的空间即将用完，而 vol_projects 中还有富余的空间。由于 LVM 的特性，我们可以轻易的减小后者的大小（比方说 2.5 GB），并将其分配给前者，与此同时调整每个文件系统的大小。幸运的是这很简单，只需：# lvreduce -L -2.5G -r /dev/vg00/vol_projects # lvextend -l +100%FREE -r /dev/vg00/vol_backups 减小逻辑卷和卷组在调整逻辑卷的时候，其中包含的减号 (-) 或加号 (+) 是十分重要的。否则 LV 将会被设置成指定的大小，而非调整指定大小。有些时候，你可能会遭遇那种无法仅靠调整逻辑卷的大小就可以解决的问题，那…

LFCS 系列第十讲：学习简单的 Shell 脚本编程和文件系统故障排除
type: item
date: 2016-07-07T21:26:00+08:00
description: Linux 基金会发起了 LFCS 认证 ( Linux 基金会认证系统管理员 （ Linux Foundation Certified Sysadmin ） )，这是一个全新的认证体系，旨在让世界各地的人能够参与到中等水平的 Linux 系统的基本管理操作的认证考试中去，这项认证包括：维护正在运行的系统和服务的能力、全面监控和分析的能力以及何时向上游团队请求支持的决策能力。LFCS 系列第十讲请看以下视频，这里边介绍了 Linux 基金会认证程序。本讲是系列教程中的第十讲，主要集中讲解简单的 Shell 脚本编程和文件系统故障排除。这两块内容都是 LFCS 认证中的必备考点。理解 终端 （ Terminals ） 和 Shell首先要声明一些概念。Shell 是一个程序，它将命令传递给操作系统来执行。Terminal 也是一个程序，允许最终用户使用它与 Shell 来交互。比如，下边的图片是 GNOME Terminal。Gnome Terminal启动 Shell 之后，会呈现一个命令提示符 (也称为命令行) 提示我们 Shell 已经做好了准备，接受标准输入设备输入的命令，这个标准输入设备通常是键盘。你可以参考该系列文章的 第一讲 如何在 Linux 上使用 GNU sed 等命令来创建、编辑和操作文件 来温习一些常用的命令。Linux 为提供了许多可以选用的 Shell，下面列出一些常用的：bash ShellBash 代表 Bourne Again Shell，它是 GNU 项目默认的 Shell。它借鉴了 Korn shell (ksh) 和 C shell (csh) 中有用的特性，并同时对性能进行了提升。它同时也是 LFCS 认证中所涵盖的各发行版中默认 Shell，也是本系列教程将使用的 Shell。sh ShellBourne SHell 是一个比较古老的 shell，多年来一直都是很多类 Unix 系统的默认 shell。ksh ShellKorn SHell (ksh shell) 也是一个 Unix shell，是 贝尔实验室 （ Bell Labs ） 的 David Korn 在 19 世纪 80 年代初的时候开发的。它兼容 Bourne shell ，并同时包含了 C shell 中的多数特性。一个 shell 脚本仅仅只是一个可执行的文本文件，里边包含一条条可执行命令。简单的 Shell 脚本编程如前所述，一个 shell 脚本就是一个纯文本文件，因此，可以使用自己喜欢的文本编辑器来创建和编辑。你可以考虑使用 vi/vim (参考本系列 第二讲 如何安装和使用纯文本编辑器 vi/vim)，它的语法高亮让我的编辑工作非常方便。输入如下命令来创建一个名为 myscript.sh 的脚本文件：# vim myscript.sh shell 脚本的第一行 (著名的 释伴行 （ shebang line ） ) 必须如下：#!/bin/bash （ ） 这条语句“告诉”操作系统需要用哪个解释器来运行这个脚本文件之后命令。现在可以添加需要执行的命令了。通过注释，我们可以声明每一条命令或者整个脚本的具体含义。注意，shell 会忽略掉以井号 (#) 开始的注释语句。#!/bin/bash echo 这是关于 LFCS 认证系列的第十部分 echo 今天是 $(date +%Y-%m-%d) 编写并保存脚本之后，通过以下命令来使脚本文件成为可执行文件：# chmod 755 myscript.sh 在执行脚本之前，我们需要说一下环境变量 ($PATH)，运行：echo $PATH 我们就会看到环境变量 ($PATH) 的具体内容：这是当输入命令时系统所搜索可执行程序的目录，每一项之间使用冒号 (:) 隔开。称它为环境变量，是因为它本是就是 shell 环境的一部分 —— 这是当 shell 每次启动时 shell 及其子进程可以获取的一系列信息。当我们输入一个命令并按下回车时，shell 会搜索 $PATH 变量中列出的目录并执行第一个知道的实例。请看如下例子：环境变量假如存在两个同名的可执行程序，一个在 /usr/local/bin，另一个在 /usr/bin，则会执行环境变量中最先列出的那个，并忽略另外一个。如果我们自己编写的脚本没有放在 $PATH 变量列出目录中的任何一个，则需要输入 ./filename 来执行它。而如果存储在 $PATH 变量中的任意一个目录，我们就可以像运行其他命令一样来运行之前编写的脚本了。# pwd # ./myscript.sh # cp myscript.sh ../bin # cd ../bin # pwd # myscript.sh 执行脚本if 条件语句无论何时，当…

LFCS 系列第九讲
type: item
date: 2016-06-13T16:24:00+08:00
description: 去年八月, Linux基金会宣布了一个全新的LFCS（ Linux基金会认证系统管理员 （ Linux Foundation Certified Sysadmin ） ）认证计划，这对广大系统管理员来说是一个很好的机会，管理员们可以通过认证考试来表明自己可以成功支持Linux系统的整体运营。 一个Linux基金会认证的系统管理员能有足够的专业知识来确保系统高效运行，提供第一手的故障诊断和监视，并且在需要的情况下将问题提交给工程师支持团队。Linux基金会认证系统管理员 – 第九讲请观看下面关于Linux基金会认证计划的演示。本文是本系列教程中的第九讲，今天在这篇文章中我们会引导你学习Linux软件包管理，这也是LFCS认证考试所需要的。软件包管理简单的说，软件包管理是系统中安装和维护软件的一种方法，这里说的维护包含更新和卸载。在Linux早期，程序只以源代码的方式发行，还带有所需的用户使用手册和必备的配置文件，甚至更多。现如今，大多数发行商一般使用预装程序或者被称为软件包的程序集合。用户可以使用这些预装程序或者软件包安装到该发行版中。然而，Linux最伟大的一点是我们仍然能够获得程序的源代码用来学习、改进和编译。软件包管理系统是如何工作的如果某一个软件包需要一定的资源，如共享库，或者需要另一个软件包，这就称之为依赖性。所有现在的包管理系统提供了一些解决依赖性的方法，以确保当安装一个软件包时，相关的依赖包也安装好了。打包系统几乎所有安装在现代Linux系统上的软件都会能互联网上找到。它要么由发行商通过中央仓库（中央仓库能包含几千个软件包，每个软件包都已经为发行版构建、测试并且维护好了）提供，要么能够直接得到可以下载和手动安装的源代码。由于不同的发行版使用不同的打包系统（Debian的*.deb文件/CentOS的*.rpm文件/openSUSE的专门为openSUSE构建的*.rpm文件），因此为一个发行版开发的软件包会与其他发行版不兼容。然而，大多数发行版都属于LFCS认证所涉及的三个发行版家族之一。高级和低级打包工具为了有效地进行软件包管理的任务，你需要知道，有两种类型的实用工具：低级工具（能在后端实际安装、升级、卸载软件包文件），以及高级工具（负责确保能很好的执行依赖性解决和元数据检索的任务——元数据也称为数据的数据）。发行版低级工具高级工具Debian版及其衍生版dpkgapt-get / aptitudeCentOS版rpmyumopenSUSE版rpmzypper让我们来看下低级工具和高级工具的描述。dpkg的是基于Debian的系统的一个低级包管理器。它可以安装，删除，提供有关资料，以及建立*.deb包，但它不能自动下载并安装它们相应的依赖包。阅读更多： 15个dpkg命令实例apt-get是Debian及其衍生版的高级包管理器，并提供命令行方式来从多个来源检索和安装软件包，其中包括解决依赖性。和dpkg不同的是，apt-get不是直接基于.deb文件工作，而是基于软件包的正确名称。阅读更多： 25个apt-get命令实例Aptitude是基于Debian的系统的另一个高级包管理器，它可用于快速简便的执行管理任务（安装，升级和删除软件包，还可以自动处理解决依赖性）。它在atp-get的基础上提供了更多功能，例如提供对软件包的几个版本的访问。rpm是Linux标准基础（LSB）兼容发行版所使用的一种软件包管理器，用来对软件包进行低级处理。就像dpkg一样，rpm可以查询、安装、检验、升级和卸载软件包，它多数用于基于Fedora的系统，比如RHEL和CentOS。阅读更多： 20个rpm命令实例相对于基于RPM的系统，yum增加了系统自动更新的功能和带依赖性管理的软件包管理功能。作为一个高级工具，和apt-get或者aptitude相似，yum需要配合仓库工作。阅读更多： 20个yum命令实例低级工具的常见用法使用低级工具处理最常见的任务如下。1. 从已编译（*.deb或*.rpm）的文件安装一个软件包这种安装方法的缺点是没有提供解决依赖性的方案。当你在发行版本库中无法获得某个软件包并且又不能通过高级工具下载安装时，你很可能会从一个已编译文件安装该软件包。因为低级工具不会解决依赖性问题，所以当安装一个没有解决依赖性的软件包时会出现出错并且退出。# dpkg -i file.deb [Debian版和衍生版] # rpm -i file.rpm [CentOS版 / openSUSE版] 注意：不要试图在CentOS中安装一个为openSUSE构建的.rpm文件，反之亦然！2. 从已编译文件中更新一个软件包同样，当某个安装的软件包不在中央仓库中时，你只能手动升级该软件包。# dpkg -i file.deb [Debia…

LFCS 系列第八讲：管理用户和用户组、文件权限和属性以及启用账户 sudo 访问权限
type: item
date: 2016-06-02T18:57:00+08:00
description: 去年八月份，Linux 基金会发起了全新的 LFCS（ Linux 基金会认证系统管理员 （ Linux Foundation Certified Sysadmin ） ）认证，旨在让世界各地的人能够参与到中等水平的 Linux 系统的基本管理操作的认证考试中去，这项认证包括：维护正在运行的系统和服务的能力、全面监控和分析的能力以及何时向上游团队请求支持的决策能力。第八讲： Linux 基金会认证系统管理员请看以下视频，里边将描述 LFCS 认证程序。本讲是系列教程的第八讲，在这一讲中，我们将引导你学习如何在 Linux 管理用户和用户组权限的设置，这些内容是 LFCS 认证的必备知识。由于 Linux 是一个多用户的操作系统（允许多个用户通过不同主机或者终端访问一个独立系统），因此你需要知道如何才能有效地管理用户：如何添加、编辑、禁用和删除用户账户，并赋予他们足以完成自身任务的必要权限。（LCTT 译注：本篇原文章节顺序有误，根据理解做了调整。）添加用户账户添加新用户账户，你需要以 root 运行以下两条命令中的任意一条：# adduser [new_account] # useradd [new_account] 当新用户账户添加到系统时，会自动执行以下操作：自动创建用户家目录（默认是 /home/username）。自动拷贝下列隐藏文件到新建用户的家目录，用来设置新用户会话的环境变量。.bash_logout .bash_profile .bashrc 自动创建邮件缓存目录 /var/spool/mail/username。自动创建与用户名相同的用户组。理解 /etc/passwd 中的内容/etc/passwd 文件中存储了所有用户账户的信息，每个用户在里边都有一条对应的记录，其格式（每个字段用冒号隔开）如下：[username]:[x]:[UID]:[GID]:[Comment]:[Home directory]:[Default shell] 字段 [username] 和 [Comment] 是不言自明的。第二个字段中 x 表明通过用户名 username 登录系统是有密码保护的， 密码保存在 /etc/shadow 文件中。[UID] 和 [GID] 字段用整数表示，代表该用户的用户标识符和对应所在组的组标志符。字段 [Home directory] 为 username 用户家目录的绝对路径。字段 [Default shell] 指定用户登录系统时默认使用的 shell。理解 /etc/group 中的内容/etc/group 文件存储所有用户组的信息。每行记录的格式如下：[Group name]:[Group password]:[GID]:[Group members] [Group name] 为用户组名称。字段 [Group password] 为 x 的话，则说明不使用用户组密码。[GID] 与 /etc/passwd 中保存的 GID 相同。[Group members] 用户组中的用户使用逗号隔开。添加用户账户修改用户信息添加用户账户之后，你可以使用 usermod 命令来修改用户信息中的部分字段，该命令基本语法如下：# usermod [options] [username] 设置账户的过期时间通过 –expiredate 标记后边接 年-月-日 格式的日期，如下：# usermod --expiredate 2014-10-30 tecmint 将用户添加到其他组使用 -aG 或者 –append –groups 选项，后边跟着用户组，如果有多个用户组，每个用户组之间使用逗号隔开。# usermod --append --groups root,users tecmint 改变用户家目录的默认位置使用 -d 或者 –home 选项，后边跟着新的家目录的绝对路径。# usermod --home /tmp tecmint 改变用户的默认 shell使用 –shell 选项，后边跟着新 shell 的路径。# usermod --shell /bin/sh tecmint 下面，我们一次运行上述命令：# usermod --expiredate 2014-10-30 --append --groups root,users --home /tmp --shell /bin/sh tecmint usermod 命令例示扩展阅读15 useradd Command Examples in Linux15 usermod Command Examples in Linux锁定和解锁账户对于已有用户账户，我们还可以：通过锁定密码来禁用账户使用 -L （大写 l）或者 –lock 选项来锁定用户密码。#…

LFCS 系列第七讲：通过 SysVinit、Systemd 和 Upstart 管理系统自启动进程和服务
type: item
date: 2016-05-20T18:01:00+08:00
description: 几个月前， Linux 基金会宣布 LFCS (Linux 基金会认证系统管理员) 认证诞生了，这个令人兴奋的新计划定位于让来自全球各地的初级到中级的 Linux 系统管理员得到认证。这其中包括维护已经在运行的系统和服务的能力、第一手的问题查找和分析能力、以及决定何时向开发团队提交问题的能力。第七讲： Linux 基金会认证系统管理员下面的视频简要介绍了 Linux 基金会认证计划。本讲是系列教程中的第七讲，在这篇文章中，我们会介绍如何管理 Linux 系统自启动进程和服务，这是 LFCS 认证考试要求的一部分。管理 Linux 自启动进程Linux 系统的启动程序包括多个阶段，每个阶段由一个不同的图示块表示。下面的图示简要总结了启动过程以及所有包括的主要组件。Linux 启动过程当你按下你机器上的电源键时，存储在主板 EEPROM 芯片中的固件初始化 POST(通电自检) 检查系统硬件资源的状态。POST 结束后，固件会搜索并加载位于第一块可用磁盘上的 MBR 或 EFI 分区的第一阶段引导程序，并把控制权交给引导程序。MBR 方式MBR 是位于 BIOS 设置中标记为可启动磁盘上的第一个扇区，大小是 512 个字节。前面 446 个字节：包括可执行代码和错误信息文本的引导程序接下来的 64 个字节：四个分区（主分区或扩展分区）中每个分区一条记录的分区表。其中，每条记录标示了每个一个分区的状态（是否活跃）、大小以及开始和结束扇区。最后 2 个字节： MBR 有效性检查的魔法数。下面的命令对 MBR 进行备份（在本例中，/dev/sda 是第一块硬盘）。结果文件 mbr.bkp 在分区表被破坏、例如系统不可引导时能排上用场。当然，为了后面需要的时候能使用它，我们需要把它保存到别的地方（例如一个 USB 设备）。该文件能帮助我们重新恢复 MBR，这只在我们操作过程中没有改变硬盘驱动布局时才有效。备份 MBR# dd if=/dev/sda of=mbr.bkp bs=512 count=1 在 Linux 中备份 MBR恢复 MBR# dd if=mbr.bkp of=/dev/sda bs=512 count=1 在 Linux 中恢复 MBREFI/UEFI 方式对于使用 EFI/UEFI 方式的系统， UEFI 固件读取它的设置来决定从哪里启动哪个 UEFI 应用。（例如， EFI 分区位于哪块磁盘或分区。接下来，加载并运行第二阶段引导程序(又名引导管理器)。GRUB[GRand Unified Boot] 是 Linux 中最常使用的引导管理器。今天大部分使用的系统中都能找到它两个中的其中一个版本。GRUB 有效配置文件： /boot/grub/menu.lst（旧发行版， EFI/UEFI 固件不支持）。GRUB2 配置文件： 通常是 /etc/default/grub。尽管 LFCS 考试目标没有明确要求了解 GRUB 内部知识，但如果你足够大胆并且不怕把你的系统搞乱（为了以防万一，你可以先在虚拟机上进行尝试）你可以运行：# update-grub 为了使更改生效，你需要以 root 用户修改 GRUB 的配置。首先， GRUB 加载默认的内核以及 initrd 或 initramfs 镜像。补充一句，initrd 或者 initramfs 帮助完成硬件检测、内核模块加载、以及发现挂载根目录文件系统需要的设备。一旦真正的根目录文件系统启动，为了显示用户界面，内核就会执行系统和服务管理器（init 或 systemd，进程号 PID 一般为 1）开始普通用户态的引导程序。init 和 systemd 都是管理其它守护进程的守护进程（后台进程），它们总是最先启动（系统引导时），最后结束（系统关闭时）。Systemd 和 Init自启动服务(SysVinit)Linux 中运行等级通过控制运行哪些服务来以不同方式使用系统。换句话说，运行等级控制着当前执行状态下可以完成什么任务（以及什么不能完成）。传统上，这个启动过程是基于起源于 System V Unix 的形式，通过执行脚本启动或者停止服务从而使机器进入指定的运行等级(换句话说，是一个不同的系统运行模式)。在每个运行等级中，独立服务可以设置为运行、或者在运行时关闭。一些主流发行版的最新版本中，已经移除了标准的 System V，而用一个称为 systemd（表示系统守护进程）的新服务和系统管理器代替，但为了兼容性，通常也支持 sysv 命令。这意味着你可以在基于 systemd 的发行版中运行大部分有名的 sysv 初始化工具。推荐阅读： Linux 为什么用 ‘systemd’ 代替 ‘init’除了启动系统进程，init 还会查看 /etc/inittab 来决定进…

LFCS 系列第六讲：组装分区为RAID设备——创建和管理系统备份
type: item
date: 2016-04-18T18:20:00+08:00
description: Linux 基金会已经发起了一个全新的 LFCS（ Linux 基金会认证系统管理员 （ Linux Foundation Certified Sysadmin ） ）认证，旨在让来自世界各地的人有机会参加到 LFCS 测试，获得关于有能力在 Linux 系统中执行中级系统管理任务的认证。该认证包括：维护正在运行的系统和服务的能力、全面监控和分析的能力以及何时向上游团队请求支持的决策能力。LFCS 系列第六讲以下视频介绍了 Linux 基金会认证程序。本讲是系列教程中的第六讲，在这一讲里，我们将会解释如何将分区组装为 RAID 设备——创建和管理系统备份。这些都是 LFCS 认证中的必备知识。了解RAID这种被称为独立磁盘冗余阵列（Redundant Array of Independent Disks）(RAID)的技术是将多个硬盘组合成一个单独逻辑单元的存储解决方案，它提供了数据冗余功能并且改善硬盘的读写操作性能。然而，实际的容错和磁盘 I/O 性能硬盘取决于如何将多个硬盘组装成磁盘阵列。根据可用的设备和容错/性能的需求，RAID 被分为不同的级别，你可以参考 RAID 系列文章以获得每个 RAID 级别更详细的解释。在 Linux 下使用 RAID（一）：介绍 RAID 的级别和概念我们选择用于创建、组装、管理、监视软件 RAID 的工具，叫做 mdadm (multiple disk admin 的简写）。---------------- Debian 及衍生版 ---------------- # aptitude update && aptitude install mdadm ---------------- Red Hat 和基于 CentOS 的系统 ---------------- # yum update && yum install mdadm ---------------- openSUSE 上 ---------------- # zypper refresh && zypper install mdadm # 将分区组装成 RAID 设备组装已有分区作为 RAID 设备的过程由以下步骤组成。1. 使用 mdadm 创建阵列如果先前其中一个分区已经格式化，或者作为了另一个 RAID 阵列的一部分，你会被提示以确认创建一个新的阵列。假设你已经采取了必要的预防措施以避免丢失重要数据，那么可以安全地输入 Y 并且按下回车。# mdadm --create --verbose /dev/md0 --level=stripe --raid-devices=2 /dev/sdb1 /dev/sdc1 创建 RAID 阵列2. 检查阵列的创建状态在创建了 RAID 阵列之后，你可以检查使用以下命令检查阵列的状态。# cat /proc/mdstat or # mdadm --detail /dev/md0 [More detailed summary] 检查 RAID 阵列的状态3. 格式化 RAID 设备如本系列第四讲所介绍的，按照你的需求/要求采用某种文件系统格式化你的设备。4. 监控 RAID 阵列服务让监控服务时刻监视你的 RAID 阵列。把# mdadm --detail --scan命令输出结果添加到 /etc/mdadm/mdadm.conf(Debian及其衍生版)或者/etc/mdadm.conf(Cent0S/openSUSE)，如下。# mdadm --detail --scan 监控 RAID 阵列# mdadm --assemble --scan [Assemble the array] 为了确保服务能够开机启动，需要以 root 权限运行以下命令。Debian 及其衍生版Debian 及其衍生版能够通过下面步骤使服务默认开机启动：# update-rc.d mdadm defaults 在 /etc/default/mdadm 文件中添加下面这一行AUTOSTART=true CentOS 和 openSUSE(systemd-based)# systemctl start mdmonitor # systemctl enable mdmonitor CentOS 和 openSUSE(SysVinit-based)# service mdmonitor start # chkconfig mdmonitor on 5. 检查RAID磁盘故障在支持冗余的的 RAID 级别中，在需要时会替换故障的驱动器。当磁盘阵列中的设备出现故障时，仅当存在我们第一次创建阵列时预留的备用设备时，磁盘阵列会将自动启动重建。检查 RAID 故障磁盘否则，我们需要手动将一个额外的物理驱动器插入到我们的系统，…

LFCS 系列第五讲：如何在 Linux 中挂载/卸载本地文件系统和网络文件系统（Samba 和 NF
type: item
date: 2016-04-11T16:37:00+08:00
description: Linux 基金会已经发起了一个全新的 LFCS（ Linux 基金会认证系统管理员 （ Linux Foundation Certified Sysadmin ） ）认证，旨在让来自世界各地的人有机会参加到 LFCS 测试，获得关于有能力在 Linux 系统中执行中间系统管理任务的认证。该认证包括：维护正在运行的系统和服务的能力、全面监控和分析的能力以及何时向上游团队请求支持的决策能力。LFCS 系列第五讲请看以下视频，这里边介绍了 Linux 基金会认证程序。本讲是系列教程中的第五讲，在这一讲里边，我们会解释如何在 Linux 中挂载/卸载本地和网络文件系统。这些都是 LFCS 认证中的必备知识。挂载文件系统在个硬盘分好区之后，Linux 需要通过某些方式对硬盘分区上的数据进行访问。Linux 并不会像 DOS 或者 Windows 那样给每个硬盘分区分配一个字母来作为盘符，而是将硬盘分区挂载到统一的目录树上的挂载点。挂载点是一个目录，挂载是一种访问分区上文件系统的方法，挂载文件系统实际上是将一个确切的文件系统（比如一个分区）和目录树中指定的目录联系起来的过程。换句话说，管理存储设备的第一步就是把设备关联到文件系统树。要完成这一步，通常可以这样：用 mount 命令来进行临时挂载（用完的时候，使用 umount 命令来卸载），或者通过编辑 /etc/fstab 文件之后重启系统来永久性挂载，这样每次开机都会进行挂载。不带任何选项的 mount 命令，可以显示当前已挂载的文件系统。# mount 检查已挂载的文件系统另外，mount 命令通常用来挂载文件系统。其基本语法如下：# mount -t type device dir -o options 该命令会指引内核将在设备上找到的文件系统（如已格式化为指定类型的文件系统）挂载到指定目录。像这样的形式，mount 命令不会再到 /etc/fstab 文件中进行确认。除非像下面，挂载指定的目录或者设备：# mount /dir -o options 或 # mount device -o options mount 命令会尝试寻找挂载点，如果找不到就会查找设备（上述两种情况下，mount 命令会在 /etc/fstab 查找相应的设备或挂载点），最后尝试完成挂载操作（这个通常可以成功执行，除非你的挂载点或者设备正在使用中，或者你调用 mount 命令的时候没有 root 权限）。你可以看到，mount 命令的每行输出都是如下格式：device on directory type (options) 例如：/dev/mapper/debian-home on /home type ext4 (rw,relatime,user_xattr,barrier=1,data=ordered) 读作：设备 dev/mapper/debian-home 挂载在 /home 下，它被格式化为 ext4，并且有以下挂载选项： rw，relatime，user\_xattr，barrier=1，data=ordered。mount 命令选项下面列出 mount 命令的常用选项async：允许在将要挂载的文件系统上进行异步 I/O 操作auto：标示该文件系统通过 mount -a 命令挂载，与 noauto 相反。defaults：该选项相当于 async,auto,dev,exec,nouser,rw,suid 的组合。注意，多个选项必须由逗号隔开并且中间没有空格。倘若你不小心在两个选项中间输入了一个空格，mount 命令会把后边的字符解释为另一个参数。loop：将镜像文件（如 .iso 文件）挂载为 loop 设备。该选项可以用来模拟显示光盘中的文件内容。noexec：阻止该文件系统中可执行文件的执行。与 exec 选项相反。nouser：阻止任何用户（除 root 用户外） 挂载或卸载文件系统。与 user 选项相反。remount：重新挂载文件系统。ro：只读模式挂载。rw：读写模式挂载。relatime：只要访问时间早于修改时间，就更新文件的的访问时间。user\_xattr：允许用户设置和移除可扩展文件系统属性。以 ro 和 noexec 模式挂载设备# mount -t ext4 /dev/sdg1 /mnt -o ro,noexec 在本例中，我们可以看到，在挂载点 /mnt 中尝试写入文件或者运行可执行文件都会显示相应的错误信息。# touch /mnt/myfile # /mnt/bin/echo “Hi there” 可读写模式挂载设备以默认模式挂载设备以下场景，我们在重新挂载设备的挂载点中，像上例一样尝试你写入文件和运行可执行文件。# mount -t ext4 /dev/…