Linux 工具秘籍(一)
原文:
zh.annas-archive.org/md5/CA17A1452E9A171FA85666D109FEB63D译者:飞龙
前言
《Linux 实用工具手册》展示了如何解决 Linux 计算机上的典型问题。信息以“配方格式”提供,允许用户快速高效地找到所需的主题。执行任务的步骤得到了清晰的解释并经过了测试以确保准确性。还有一个关于 shell 脚本的部分。
本书涵盖内容
第一章,使用终端/命令行,介绍了如何充分利用 Linux 命令行。
第二章,桌面,介绍了 Linux 可用的一些桌面环境。
第三章,文件和目录,解释了文件、目录以及如何管理它们。
第四章,网络和互联网,涵盖了连接性以及连接性中断时如何修复。
第五章,权限、访问和安全,简要概述了 Linux 安全功能。
第六章,进程,解释了如何在 Linux 中管理进程。
第七章,磁盘和分区,简要介绍了磁盘管理。
第八章,使用脚本,介绍了如何在 Linux 中编写脚本。
第九章,使用 Cron 自动化任务,解释了如何自动运行作业。
第十章,内核,介绍了如何为您的系统制作自定义内核。
附录 A,Linux 最佳实践,展示了如何像专业人士一样设置和运行您的系统。
附录 B,寻找帮助,涵盖了快速定位所需信息。
您需要为本书做好准备
要跟随本书中的示例,您需要在计算机上运行主流 Linux 发行版。作者使用了 Red Hat 的 Fedora 来创建本书以及示例和脚本。但是,任何发行版都应该可以正常工作。请注意,大多数可以从制造商的网站免费下载和安装。
本书适合对象
本书适用于希望了解更多关于 Linux 的有些经验的计算机用户。该配方格式旨在允许快速访问经常出现的典型任务。
约定
在本书中,您会发现一些文本样式,用于区分不同类型的信息。以下是一些这些样式的示例,以及它们的含义解释。
文本中的代码、数据库表名、文件夹名、文件名、文件扩展名、路径名、虚拟 URL、用户输入和 Twitter 句柄显示如下:“我们可以通过使用include指令包含其他上下文。”
任何命令行输入或输出都以以下形式书写:
export PS1=”screen$WINDOW \h \u \w \$ "
新术语和重要单词以粗体显示。例如,屏幕上看到的单词,如菜单或对话框中的单词,会以这种形式出现在文本中:“点击下一步按钮会将您移至下一个屏幕”。
注意
警告或重要提示会以这种形式出现在一个框中。
提示
提示和技巧会以这种形式出现。
文本部分的命令将以这种形式指示:运行cd /tmp
读者反馈
我们始终欢迎读者的反馈。请让我们知道您对本书的看法——您喜欢或不喜欢的地方。读者的反馈对我们开发您真正受益的标题非常重要。
要向我们发送一般反馈,只需发送电子邮件至<feedback@packtpub.com>,并在消息主题中提及书名。
如果有您擅长的话题,并且您有兴趣撰写或为书籍做出贡献,请参阅我们的作者指南www.packtpub.com/authors。
客户支持
现在您是 Packt 书籍的自豪所有者,我们有许多事情可以帮助您充分利用您的购买。
勘误
尽管我们已经尽一切努力确保内容的准确性,但错误确实会发生。如果您在我们的书中发现错误——也许是文本或代码中的错误——我们将不胜感激地向我们报告。通过这样做,您可以帮助其他读者避免挫折,并帮助我们改进本书的后续版本。如果您发现任何勘误,请访问www.packtpub.com/submit-errata报告,选择您的书,点击勘误提交表链接,并输入您的勘误详情。一旦您的勘误经过验证,您的提交将被接受,并且勘误将被上传到我们的网站上,或者添加到该标题的勘误列表中的任何现有勘误下的勘误部分。您可以通过从www.packtpub.com/support选择您的标题来查看任何现有的勘误。
盗版
互联网上的版权盗版是所有媒体的持续问题。在 Packt,我们非常重视版权和许可的保护。如果您在互联网上发现我们作品的任何非法副本,请立即向我们提供位置地址或网站名称,以便我们采取补救措施。
请通过链接到涉嫌盗版材料的电子邮件<copyright@packtpub.com>与我们联系。
我们感谢您在保护我们的作者和为您带来有价值的内容方面的帮助。
问题
如果您在书的任何方面遇到问题,请通过<questions@packtpub.com>与我们联系,我们将尽力解决。
第一章:使用终端/命令行
在本章中,我们将涵盖:
-
命令检索和行编辑
-
使用历史记录
-
文件名自动完成
-
shell 提示
-
其他环境变量
-
使用别名
-
.bashrc文件 -
处理文件名中的空格和特殊字符
-
了解
$?变量 -
重定向和管道
-
将输出从一个终端发送到另一个终端
-
使用 Screen 程序
介绍
了解如何有效使用命令行将真正帮助您充分利用计算机。在输入命令时,有许多节省时间和精力的方法,您只需要知道它们是什么。
有许多不同的 Linux 环境可用。本章重点介绍了流行的Bash shell。
命令检索和行编辑
标准的 Bash 终端自动设置为插入模式,因此您无需按Insert键来插入文本。使用上下箭头键来回忆以前的命令,然后使用其他光标键根据需要编辑该行。
准备工作
对于此示例,您只需要运行 Bash shell 的终端。其他终端可能没有这些功能。
如何做...
我们将按以下方式运行一些命令:
-
输入命令
route并按Enter键。 -
对
uptime、ls、date和sync执行相同的操作,每次输入命令后按Enter。 -
现在再按一次上箭头键。您应该会看到以下命令:
sync
-
现在再按两次上箭头键。您应该会看到
date和ls。 -
按Enter。
ls命令将再次运行。按Enter将始终运行显示的命令。
它是如何工作的...
该行存储在具有完整编辑功能的缓冲区中。当按下Enter键时,该缓冲区将被发送到操作系统。
用于检索和编辑的键的摘要如下:
-
上箭头:用于向上滚动历史缓冲区
-
下箭头:用于向下滚动历史缓冲区
-
Home:用于将光标移动到行的开头
-
End:用于将光标移动到行的末尾
-
删除:用于删除光标右侧的字符
-
退格键:用于删除光标左侧的字符并移动行
-
左右箭头:这些是光标移动键
使用历史记录
标准的 Bash shell 包括一个history功能。它记录每个命令在一个数据库中,可以通过运行history命令来显示。在本节中,我们已经展示了如何做到这一点。
准备工作
您只需要一个 Bash 终端来按照给定的步骤进行操作。
请参阅以下屏幕截图:
如何做...
-
运行一些命令,如
route、uptime、date和sync。 -
运行
history命令。 -
查找您想再次运行的命令,但是不要输入命令,而是输入感叹号(
!),然后输入历史列表中命令旁边的数字,然后按Enter。 -
该命令将再次运行。
它是如何工作的...
将命令行历史视为线性数据库。您可以向上或向下滚动,直到看到所需的命令。这也有助于回忆一段时间前所做的事情。HISTSIZE环境变量控制将在缓冲区中保存多少个命令。
提示
在使用此功能时要小心。确保在运行之前输入正确的命令。
文件名自动完成
运行命令时,您无需输入完整的文件名。这样可以节省大量时间和精力,还可以帮助防止输入错误。
Tab键用于调用文件名自动完成。请参阅以下屏幕截图:
您只需输入足够的字符使您想要的文件名变得唯一,然后按Tab。如果您没有输入足够的字符,您将听到控制台发出哔哔声(在大多数 shell 中)。如果现在再次按Tab,则将显示所有可能性。
准备工作
在此示例中,你只需要运行 Bash shell 的终端。
如何做...
- 切换到你的主目录,我的情况下是:
cd /home/jklewis.
- 使用以下命令创建一个目录:
mkdir Linuxbook
- 使用以下命令切换到
Linuxbook:
cd Linuxbook
ls > file2.txt
ls > file3.txt
ls > file4.txt
ls > unique1.txt
- 现在让我们创建一些虚拟文件;使用以下命令运行:
ls > file1.txt
-
现在输入
ls -la u,然后按 Tab。其余的文件名 "unique1.txt" 将出现。按 Enter。 -
现在输入
ls -al file并按 Tab。什么也不会发生,你的控制台可能会响起。再次按 Tab。现在所有 4 个文件名将出现。 -
添加一个
4,再次按 Tab,然后按 Enter。命令ls -la file4将运行。
这可能看起来复杂甚至笨拙,但如果你给它一个机会,你将很快成为专家。
shell 提示符
标准终端通常具有相当晦涩的命令行提示符。这应该通过修改 PS1 环境变量来更改。
如何做...
以下是一个示例:
参考行 export PS1="\u \h \w $ "
-
\u命令表示显示此 shell 的当前用户。 -
\h命令显示此计算机的主机名。 -
\w命令表示显示当前目录的完整路径。强烈建议进行此更改,因为用户不必一直输入 pwd (Print Working Directory) 来了解正在使用的目录。 -
$表示显示$或#取决于有效的 UID。
还有更多...
还有许多其他选项,比如显示时间和日期,使用颜色等。要获取更多信息,请运行 man bash 并搜索 PS1。
其他环境变量
PS1 变量只是成百上千个环境变量中的一个。别担心,你不必全部了解它们!以下是一些非常有用的变量:
-
PS1: 显示并设置命令行提示符 -
USER: 显示当前用户 -
HOSTNAME: 显示此计算机的当前主机名 -
HOME: 显示当前用户的主目录 -
SHELL: 显示此终端正在运行的当前 shell -
TERM: 显示正在使用的终端类型 -
PATH: 显示并设置程序搜索的目录 -
PWD: 显示当前工作目录 -
EDITOR: 可以设置为所需文本编辑器的完整路径,以便与某些命令一起使用,如crontab -e -
TZ: 显示并设置时区变量 -
HISTSIZE: 显示并设置历史缓冲区的大小
其中大多数都是不言自明的;但有一些需要更多讨论。PATH 环境变量是在文件系统中搜索命令的地方。
echo 命令用于显示变量的内容:
如何做...
- 在
PATH前加一个点意味着程序将首先在当前目录中查找,然后再搜索其余的路径。例如,在代码开发期间,这非常有用。通过运行以下命令来实现这一点:
export PATH=".:$PATH"
EDITOR变量可以设置为你喜欢的文本编辑器。大多数人使用vi (或 vim);但是,你可以指向你想要的编辑器。如果更改了这个,请确保使用完整路径。要更改EDITOR变量,请执行以下操作:
export EDITOR=/lewis/bin64/kw
export可以通过将其设置为空来移除:
export EDITOR=
- 按照惯例,环境变量通常以大写字母编写。查看 man 手册和/或在 Google 上搜索有关这些变量的更多信息。
它是如何工作的...
把这些环境变量想象成你使用编程语言时的变量一样。在这种情况下,变量的类型由操作系统确定。例如,你可以输入 A=1 或 A="This is a string"。
操作系统知道区别。此外,还有变量范围。请注意,我上面没有使用 export。这意味着此 A 局部于此 shell。只有导出变量才能使其在其他 shell 中可用(在源文件后)。
使用别名
如果您可以轻松创建一个简单的命令而无需将其制作成脚本,那不是很好吗?好吧,有办法。这是使用别名完成的。
如何做...
以下是创建别名的步骤:
-
输入
tput clear并按Enter。您的屏幕应该已经清空了。 -
现在输入
alias cls="tput clear"。现在当您运行cls时,它将执行相同的操作。 -
让我们再创建一些。要显示长目录列表,请输入
alias la="ls -la"。输入'la'来运行别名。 -
要显示最新文件的长列表,请输入
'alias lt="ls -latr"'。
如果您创建了一个别名,然后决定不再需要它,可以使用unalias命令将其删除,例如unalias cls。
您还可以使用别名有效地在文件系统中移动。这非常方便,将为您节省大量的输入。以下是一些示例:
-
mkdir /home/jklewis/linuxbook -
alias lbook="cd /home/jklewis/linuxbook" -
lbook
现在您将进入该目录。这是我在我的系统上经常使用的东西:
-
export LBOOK="/home/jklewis/linuxbook" -
alias lbook="cd $LBOOK" -
lbook
如您所见,运行lbook将带您到如上所示的目录。但是,您也可以使用LBOOK变量将文件复制到该目录:
-
cd /tmp -
touch f1.txt -
cp f1.txt $LBOOK
文件f1.txt现在将存在于/home/jklewis/linuxbook目录中。当使用非常长的文件名时,这将变得更加方便。
提示
要删除lbook别名,请运行unalias lbook
您可以通过只运行alias而不使用任何参数来列出您的别名。每当您发现自己不断输入相同的命令或文件名时,请考虑为其创建别名。
还有更多...
请注意,上述示例仅在该终端中有效,并且不会在重新启动后保留。请参阅下一节,了解如何使更改永久生效。
此外,在某些情况下,您想要做的可能对于别名来说太复杂了,例如,检查正确数量的参数。这就是您可以创建一个 shell 脚本的地方,这将在第八章中介绍,使用脚本。
.bashrc 文件
我们可以查看和更改许多环境变量。但是,我们肯定不想每次启动新 shell 时都输入这些内容。有一个特殊的文件,名为.bashrc,用于存储您的设置。它位于用户的主目录中。例如,root 用户的.bashrc文件位于/root目录中。
以下是我其中一个系统的.bashrc文件:
如何做...
行的描述如下:
-
要注释一行,请在其前面加上
#符号。 -
要创建一个变量,请使用
export标签。 -
要创建别名,请使用
alias标签(如本章前面所示)。 -
允许控制语句;请参见前面屏幕截图中的
if子句。 -
修改您的
.bashrc文件后,请记得使用点运算符对其进行源操作,如下所示:
. .bashrc
处理文件名中的空格和特殊字符
Linux(和 Unix)文件系统最初并不是为处理文件名中的空格而设计的。这可能会导致许多问题,因为 shell 会将空格后的每个项目视为另一个文件或参数。解决方案是使用引号、反斜杠或Tab键。
以下各节假定用户尚未修改 Bash 内部字段分隔符(IFS)变量。
如何做...
请参阅以下屏幕截图。我故意创建了三个“坏”文件名:
-
运行
ls -la file with blanks.txt并注意错误。 -
现在再次运行它,但用引号括起文件名:
ls -la "file with blanks.txt";现在它将正常工作。 -
输入
ls -la file并按Tab。它会为您转义空格。 -
运行
ls -la special>.txt。观察错误。 -
在使用以下命令之前加上引号:
ls -la "special>.txt"
-
现在尝试
ls -la -startswithdash.txt,然后尝试用引号括起来。不起作用,对吧? -
使用以下命令在文件名之前加上
./操作符:
ls -la ./-starWtswithdash.txt
正如你所看到的,如果文件名中使用了特殊字符,这也可能是一个问题。仔细研究一下,它会变得清晰的。记住Tab键;它对几乎每种情况都非常有效。如果文件以破折号开头,使用./操作符。它表示引用当前目录中的文件。
还有...
空格和特殊字符的问题在脚本中更加严重。这将在第八章使用脚本中更详细地介绍。
理解$?变量
通常,当在 Linux 中运行命令时,它执行一个任务;它要么报告它做了什么,要么指示发生了错误。还会生成一个内部返回代码,并通过运行echo $?命令显示出来。请注意,这必须是在原始命令之后输入的下一个东西。
以下截图显示了echo $?:
如何做...
这是**echo $?**的一个快速示例:
- 运行以下命令:
ping -c 1 packt.com
- 它应该成功。运行以下命令:
echo $?
-
你应该得到一个
0表示成功。 -
现在运行以下命令:
ping -c 1 phooey
提示
可能需要一两秒才能完成。
- 再次运行
echo $?。它应该返回一个非零值表示失败。
它是如何工作的...
一般来说,返回值为零表示成功。非零返回表示发生了错误,在许多情况下,返回的代码表示了错误是什么。记住这一点,下次你输入一个命令,按Enter,并且没有任何东西发生时,就会得到 shell 提示符。
还有...
命令的man和info页面通常包含一个条目,显示错误的含义。如果man页面缺少,可以查阅网页。
重定向和管道
假设你运行一个命令,比如route,并想将输出保存在一个文件中。重定向(>)操作符用于这个目的,而不是将输出发送到屏幕上。
如何做...
让我们尝试一些重定向:
-
输入
ifconfig > file1.txt。你看不到任何东西,因为输出已经进入文件中。 -
运行
cat file1.txt。现在你应该看到输出。 -
这也适用于另一个方向,要从文件中读取,运行以下命令:
sort < file1.txt
- 你甚至可以一步完成两个操作:
sort < file1.txt > output-file.txt
- 你还可以使用管道操作符将输出发送到另一个命令。例如,运行
route | grep eth0。上面的命令将只显示包含短语eth0的route行。
还有...
这是我经常使用的一个东西。假设我很久以前用 C 语言写了一个程序,有几个版本,并且想找到最新的版本。我可以运行locate来找到它们:
locate crc.c
这可能会返回很多行。我怎样才能对每个文件运行ls来找到最新的文件?通过将输出导入xargs命令,然后再运行ls:
locate crc.c | xargs ls -la
现在将显示每个文件的时间和日期。
这一开始可能有点复杂,但如果你稍微尝试一下,它将成为你的第二天性。
从一个终端发送输出到另一个终端
这是 Linux/UNIX 系统独有的一个非常方便的功能。它在脚本中最有用,但也可以在命令行上使用。如果你有一个可用的系统,请尝试给定的步骤。
准备工作
你需要两个打开的终端。
如何做...
我们将在以下步骤中展示如何将一个终端的输出发送到另一个终端:
-
在一个终端中运行
tty命令。输出应该是类似/dev/pts/16的东西。 -
在另一个终端中运行
route命令。你将在那个终端中看到输出。 -
现在再次运行
route,但现在使用命令:
route > /dev/pts/16
- 输出将进入另一个终端。
它是如何工作的...
Linux 系统上的终端是具有自己的缓冲空间的设备。通过名称引用设备,你可以向其写入。
还有...
这个功能在脚本中更有用,我们将在第八章中看到,使用脚本。
使用 Screen 程序
Screen是一个全屏窗口管理器,与其他进程(通常是其他终端/ shell)共享物理终端。通常在没有其他管理器或桌面可用时使用,例如在服务器上。它具有滚动回退历史缓冲区,并且还允许在窗口之间复制和粘贴文本。
准备就绪
以下是一些 Screen 可用的许多键绑定的简要列表:
-
Ctrl + A + ?:它显示命令列表及其键绑定
-
Ctrl + A + C:它会弹出一个新窗口
-
Ctrl + A + D:它会分离一个窗口
-
Ctrl + A + N:它用于转到序列中的下一个窗口
-
Ctrl + A + P:它用于转到序列中的上一个窗口
-
Ctrl + A + #(其中#是一个数字):它用于直接转到该窗口
-
Ctrl + A + ":它显示窗口列表;用户可以通过数字选择任何一个
以下是一些经常使用的命令列表:
-
screen -list:它显示所有窗口 -
screen <program>:它创建一个新窗口并在其中运行该程序
如何做...
运行 Screen 实用程序的示例如下:
-
在终端中运行
screen -L命令。 -
现在按下Ctrl + A,然后按C。这将创建另一个窗口。
-
再做两次。
-
尝试输入Ctrl + A + 0。
-
尝试Ctrl + A + 3。
它是如何工作的...
在上一节中,第 1 步将创建一个新窗口,“窗口 0”。如果您正在窗口管理器中运行,您可能会注意到标题更改,显示它是哪个窗口。
第 2 步将创建另一个窗口。完成第 3 步后,您将总共有 4 个窗口。
当您执行第 4 步中的操作时,您应该在窗口 0中。输入Ctrl + a + 3将带您到窗口 3。
还有更多...
这是一个有用的提示,如果您只运行命令行而没有桌面,您可能希望在.bashrc文件中将您的PS1变量更改为以下内容:
export PS1="screen$WINDOW \h \u \w \$ "
现在提示将始终显示您在哪个窗口。
这仅描述了 Screen 可以做的一小部分。请参阅man页面以获取更多信息。
第二章:桌面
在本章中,我们将涵盖这些桌面环境:
-
GNOME 2
-
KDE 桌面
-
xfce
-
LXDE
-
Unity
-
Mate
介绍
计算机桌面通常由窗口,图标,目录/文件夹,工具栏和一些艺术品组成。窗口管理器处理用户看到的内容和执行的任务。桌面有时也被称为图形用户界面(GUI)。
Linux 系统有许多不同的桌面可用。以下是一些较常见的桌面的概述。
GNOME 2
GNOME 2是由 Red Hat 公司主要开发的桌面环境和图形用户界面。它提供了一个非常强大和传统的桌面界面。有一个启动器菜单,可以更快地访问应用程序,还有任务栏(称为面板)。请注意,在大多数情况下,这些可以放置在用户希望的屏幕上。
运行在 Fedora 14 上的 GNOME 2 的截图如下:
这显示了桌面,命令窗口和计算机文件夹。顶部和底部的“行”是面板。从顶部开始,从左到右依次是应用程序,位置和系统菜单。然后是一个屏幕保护程序,Firefox 浏览器,终端,Evolution和记事本。中间是锁屏应用程序,最右边是有关更新的通知,音量控制,Wi-Fi 强度,电池电量,日期/时间和当前用户。请注意,我已经定制了其中的一些,例如时钟。
准备就绪
如果您有一台运行 GNOME 2 桌面的计算机,可以在本节中跟着做。一种很好的方法是通过运行来自许多不同 Linux 发行版的 Live 镜像。
显示添加到面板窗口的截图如下:
如何做...
让我们稍微调整一下这个桌面:
-
通过在任务栏的空白位置上右键单击来打开此对话框。
-
添加一些酷的东西。向下滚动,直到看到天气报告,点击它,然后点击底部的添加按钮。
-
在面板上,您现在应该看到类似0°F的东西。右键单击它。
-
这将打开一个对话框,选择首选项。
-
您现在在常规选项卡上。随意更改您想要的任何内容,然后选择位置选项卡,并输入您的信息。
-
完成后,关闭对话框。在我的系统上,正确的信息立即显示出来。
-
现在让我们添加更酷的东西。再次打开添加到面板对话框,这次添加工作区切换器。
-
默认的工作区数量是两个,我建议添加两个。完成后,关闭对话框。
-
现在您会在屏幕右下角看到四个小方框。点击其中一个会带您到该工作区。这是 GNOME 2 非常方便的一个功能。
还有更多...
我发现 GNOME 2 非常直观和易于使用。它功能强大,可以进行广泛的定制。但是它也有一些缺点。它往往有些“沉重”,在性能较差的机器上可能表现不佳。它也不总是正确报告错误。例如,使用 Firefox 打开一个在您的系统上不存在的本地文件(即file:///tmp/LinuxBook.doc)。应该出现一个文件未找到对话框。现在尝试打开另一个本地文件,该文件存在,但您没有权限访问。它不会报告错误,实际上似乎什么也没做。如果发生这种情况,请记住这一点。
KDE 桌面
KDE桌面是为台式电脑和强大的笔记本电脑设计的。它允许进行广泛的定制,并且可以在许多不同的平台上使用。以下是一些其特点的描述。
准备就绪
如果您有一台运行 KDE 桌面的 Linux 机器,可以跟着做。这些截图来自运行 Fedora 18 的 Live Media 镜像上的 KDE。
最右边的桌面图标允许用户访问工具箱:
你可以使用这个对话框添加面板、小部件、活动、快捷方式、锁定屏幕,以及更多。
底部的默认面板以 Fedora 图标开始。这个图标叫做Kickoff 应用程序启动器,允许用户快速访问某些项目。这些包括收藏夹、应用程序、一个计算机文件夹、一个最近使用文件夹,以及一个离开按钮。
如果你点击下一个图标,它会带出活动管理器。在这里你可以创建活动并监视它们。下一个图标允许你选择当前在前台的桌面,接下来的项目是当前打开的窗口。最右边是剪贴板。
这是剪贴板菜单的截图:
接下来是音量控制、设备通知器和网络状态。
这是接口和连接对话框的截图:
最后,有一个按钮可以显示隐藏的图标和时间。
如何做...
让我们向这个桌面添加一些东西:
-
我们应该添加一个控制台。在桌面的空白处右键单击。会出现一个对话框,选择Konsole。现在你应该有一个终端了。
-
通过点击空白处关闭该对话框。
-
现在让我们添加一些更多的桌面。右键单击屏幕左下角的第三个图标。会出现一个对话框,点击添加虚拟桌面。我个人喜欢有四个这样的桌面。
-
现在让我们向面板添加一些东西。在面板的空白处右键单击,将鼠标悬停在面板选项上;点击添加小部件。
-
你会看到一些小部件。注意列表可以滚动查看更多内容。例如,滚动到网页浏览器,然后双击它。
-
网页浏览器图标会出现在靠近时间的面板上。
还有更多...
显然你可以使用 KDE 桌面进行相当多的自定义。我建议尝试所有不同的选项,看看哪些是你最喜欢的。
KDE 实际上是一个由开源开发者组成的大社区,KDE Plasma 桌面是其中的一部分。这个桌面可能是被审查的桌面中最重的,但也是最强大的之一。我认为这是需要一个非常精心设计的桌面环境的人的一个不错选择。
xfce
xfce 是 Linux 和 UNIX 系统的另一个桌面环境。它倾向于运行得非常流畅,不使用太多系统资源。它非常直观和用户友好。
准备工作
以下是我正在用来写这本书的 Linux 机器上运行的 xfce 的截图:
如果你有一台运行 xfce 桌面的机器,你可以执行这些操作。我建议从 Fedora 网页下载一个实时媒体镜像。
虽然与 GNOME 2 有些相似,但布局有些不同。从顶部的面板(面板 1)开始是应用程序菜单,然后是注销对话框。接下来是当前打开的窗口。点击其中一个将根据其当前状态将其带上或最小化。下一个项目是工作区,我有四个,然后是互联网状态。最后是音量和混音应用程序以及日期和时间。屏幕内容大部分都是不言自明的;我有三个终端窗口打开和文件管理器文件夹。
屏幕底部的较小面板称为面板 2。
如何做...
让我们稍微调整一下面板:
-
为了改变面板 2,我们必须先解锁它。右键单击顶部面板,然后转到面板 | 面板首选项。
-
使用箭头来切换到面板 2。查看下面的截图:
-
你可以看到它被锁定了。点击锁定面板来解锁它,然后关闭这个对话框。
-
现在转到面板 2(在底部),右键单击其中一个侧边。点击添加新项目...。
-
添加你想要的应用程序。
还有更多...
这绝不是 xfce 可以做的详尽列表。这些功能是模块化的,可以根据需要添加。有关更多信息,请参阅www.xfce.org。
LXDE
LXDE(轻量级 X11 桌面环境)旨在在资源条件较低的情况下良好运行,是一个相对较新的环境。与大多数其他桌面环境不同,LXDE 的组件没有太多依赖性,可以独立运行。
准备就绪
如果您有一台使用此桌面的计算机,可以按照本节进行操作。
这是 Fedora 18 Live Media 镜像上运行的 LXDE 的屏幕截图:
正如你所看到的,有两个终端打开和文件管理器。在面板的左侧是一个熟悉的 Fedora 图标,刚刚被点击了。它弹出了下拉菜单。接下来的图标是文件管理器,然后是一个 LXTerminal。
下一个图标上写着“左键点击图标化所有窗口。中键点击使其变暗”。我选择保持这个图标不变。
接下来是两个桌面图标,然后是事件列表。更远的右边是一个 Wi-Fi 图标(Wi-Fi 未激活),有线以太网状态,系统监视器,音量控制和网络管理器小程序。之后是剪贴板管理器,时间,锁屏图标和注销框。
如何做...
让我们稍微使用一下这个桌面:
-
右键单击面板的空白处,将显示一个下拉菜单。
-
点击面板设置。将弹出以下屏幕:
-
让我们改变字体大小。点击外观,然后点击字体下的大小。
-
使用滚动键更改值为其他内容。更改将立即显示。当看起来不错时,选择关闭。
-
让我们添加一个应用程序。再次打开面板设置,然后点击添加/删除面板项目。
-
点击添加,向下滚动并点击桌面编号/工作区名称。当前工作区的名称将显示在面板的最右侧。我个人非常喜欢这个功能。
还有更多...
我发现 LXDE 非常直观和快速。我相信它会在笔记本电脑和移动设备上表现良好,特别是在功耗有限的情况下。
Unity
Unity是一个用于 Ubuntu 系统的 GNOME 环境的外壳界面。它旨在在小屏幕上表现良好,例如,它使用垂直应用切换器。与其他桌面/管理器不同,它本身不是一组可执行文件,而是使用现有的应用程序。
准备就绪
如果您有一台运行 Unity 桌面的计算机,可以按照本节进行操作。
以下是 Ubuntu 12.04 上运行的 Unity 的屏幕截图:
在桌面上是一个 GNOME 终端会话和主文件夹。从左侧的垂直面板开始,是 Dash Home 图标。它允许用户快速找到东西。在下面是主文件夹(已经打开),然后是 Firefox 网络浏览器。接下来是 Libre Office Writer,计算器和 Impress。接下来是 Ubuntu 软件中心,用于搜索和购买应用程序。接下来的图标是 Ubuntu One,终端,系统设置,工作区切换器和垃圾箱。
为了完成对顶部面板的讨论,最右边是 Evolution 的图标。接下来是电池状态图标,网络状态(有线和无线),以及音量控制。剩下的图标是时间,切换用户帐户图标和注销按钮。
有趣的是,默认情况下,此客户端桌面上并没有终端。
如何做...
让我们向这个桌面添加一个终端:
-
打开主文件夹,然后点击文件系统。
-
双击usr文件夹,然后双击bin文件夹。
-
点击搜索打开对话框。
-
输入
gnome-terminal并按Enter。 -
双击gnome-terminal图标。
-
它将在屏幕上打开,您还会在左侧面板上看到它作为一个图标。
-
右键单击此图标,然后选择锁定到启动器。现在您有一个终端图标。
Unity 上的顶部面板与其他桌面的工作方式略有不同。尝试给定的步骤:
-
打开主文件夹。
-
如果您还没有这样做,请打开终端。
-
现在,在主文件夹的某个地方单击。主文件夹的文本将显示在面板上。
-
现在单击终端。现在出现了终端文本。面板上列出的菜单项始终对应于具有焦点的窗口或应用程序。
还有更多...
我发现 Unity 与其他桌面非常不同。起初有点困难,但像其他一切一样,随着时间的推移会变得更好。我相信这个桌面将受到那些没有太多 Linux/UNIX 系统经验的用户的欢迎。
Mate
Mate桌面是为了给用户一个类似于 GNOME 2 的更具生产力的环境。我目前在我的笔记本电脑上使用 Mate 运行 Fedora 19,一切都很顺利。请注意,我下载了 F19 安装 DVD,并在安装过程中选择了 Mate。
入门指南
您可以使用 Fedora 网站上的 Live Image 或完整安装 DVD 来按照这些步骤进行操作,无论您喜欢哪种方式。
以下是 Fedora 19 上 Mate 的屏幕截图:
您可以看到我已经打开了两个终端。左上角是应用程序下拉菜单,允许您浏览和运行已安装的应用程序。接下来是位置,允许您访问文档、文件夹和网络位置。接下来是系统,您可以在这里更改桌面外观和行为,获取帮助或注销。图标是 Caja,一个文件管理器,然后是一个终端。是的,Mate 的人们足够聪明,已经默认包含了一个。接下来的图标是 Firefox,一个邮件应用程序和一个即时通讯应用程序。我添加了锁定屏幕图标,它在中间。右边是音量,然后是 Wi-Fi 信号,电池状态和日期(我稍微自定义了一下)。
左下角是一个图标,允许您隐藏所有窗口并显示桌面。最后,在最右边是四个工作区。
操作步骤...
让我们在这个桌面上做一些改变:
-
首先让我们添加锁定屏幕应用程序。在顶部面板的中间右键单击。
-
单击添加到面板...。
-
单击锁定屏幕并按照说明操作。关闭对话框。
-
现在让我们来处理时间和日期。单击它,您会注意到显示了一个日历。
-
再次单击时间和日期以关闭日历,然后右键单击它。单击首选项选项卡。
-
应该显示时钟首选项窗口。在这里,您可以更改时间和日期的显示方式。我单击了显示秒,因为我喜欢看到完整的时间。
-
关闭对话框。
还有更多...
正如您所看到的,Mate的工作方式非常类似于GNOME 2。它非常直观和易于使用。设计师们在创建这个桌面时做得很好。
第三章:文件和目录
在本章中,我们将涵盖:
-
复制、删除和更新文件和目录
-
使用 find 和 locate 查找文件
-
创建文本文件 - vim、Emacs 等
-
使用文件命令
-
使用 grep 查找模式
-
使用 ZIP 和 TAR 压缩文件
-
其他有用的命令,如 stat、sum、touch 等
介绍
您可以将 Linux 文件系统中的所有内容视为字节流。这简单地称为文件。目录也是一个包含其他文件的文件。大多数文件位于计算机的硬盘上。但是,有些文件位于内存中,例如/proc和/sys实际上是虚拟文件系统。文件也可以存储在可移动介质上,例如 USB 设备、CD/DVD 和其他机器上(即 NFS 挂载)。
理解 inode 和超级块
文件系统中的每个文件都有一个称为inode的特殊编号。inode 是操作系统存储文件属性的地方,并包含以下信息:
-
文件类型,如常规、目录、特殊、链接、套接字、管道或块设备
-
所有者和组信息
-
文件的权限(更多信息请参见第五章,权限、访问和安全性)
-
文件创建的日期和时间以及最后更改或读取的时间
-
文件大小
-
inode 还包含一些其他信息
在 inode 中不可用的内容是文件本身的完整路径和名称。这些信息存储在/proc文件系统下的进程 ID(PID)拥有文件的进程下。
超级块是将文件系统上的所有 inode 联系在一起的东西。它包含管理文件所需的所有信息。对于系统非常重要,大多数 Linux 文件系统都定期备份超级块的副本,同时也保留在内存中。
dumpe2fs命令可用于显示超级块的内容。以下是在 Fedora 17 上使用dumpe2fs的屏幕截图:
这显示了这个硬盘上第一个分区的超级块信息。
复制、删除和更新文件和目录
在本节中,我们将简要探讨如何复制、删除和更新文件。
准备好
有几本关于文件系统管理的书已经出版,因此这将作为一个简要概述。如果您有一台 Linux 机器可用,可以尝试这些命令。我们将在/tmp文件系统中进行所有操作,因此您不必担心在系统上搞砸任何东西。
如何做...
以下是创建一些文件和目录的方法:
- 转到
/tmp目录:
cd /tmp
- 创建一个测试目录:
mkdir lbooktest3
- 转到目录:
cd lbooktest3
- 让我们创建一些文件:
ls > f1; ls > f2; ls > f3
- 还要创建一些目录:
mkdir dir1 dir2 dir3
-
复制的语法是
cp 源文件目标文件,现在运行cp f1 f5。这将创建文件f5,它是文件f1的副本。 -
您可以复制到一个目录:
cp f1 dir1
- 上面是相对路径,因为它从当前目录开始。要使用绝对路径,请执行以下操作:
cp f1 /tmp/lbooktest3/dir1
- 现在让我们从当前目录中删除文件
f3:
rm f3
- 让我们将文件
f2移动到dir2:
mv f2 dir2
mv命令也用于重命名文件。将f1重命名为f6:
mv f1 f6
- 要查看此目录的文本模式图形表示,请运行以下命令:
tree
- 清理我们刚刚做的一切是可选的,
cd /tmp然后运行:
rm -r lbooktest3
以下是上述命令的屏幕截图:
还有更多...
可以将文件从计算机上的另一个位置复制到当前目录。这是使用点运算符执行的:
cp /tmp/somefile
您不必首先cd到目录。您可以执行以下命令:
cp /bin/bash /tmp
这非常方便,特别是在配置机器时。
那么如果你将一个文件复制到已经存在的文件会发生什么呢?假设你有适当的权限,被复制的文件会覆盖另一个文件。此外,在 Linux 系统上使用rm时要小心,因为很难恢复已删除的文件。
使用 find 和 locate 查找文件
find命令通常用于从当前目录开始搜索文件。locate命令使用updatedb数据库在整个系统(有一些例外)中查找文件或目录。
如何做...
让我们使用find和locate来查找一些常见的 Linux 文件:
- 首先将目录更改为
/usr:
cd /usr
- 运行以下命令:
find -name bash
- 现在尝试使用通配符:
find -name bash*
- 它也会找到目录:
find -name bin
现在假设我们想要查找一个文件,但实际上不知道它可能在系统的哪个位置。find命令有时也很慢,因为它必须从当前点搜索文件系统。这就是locate非常方便的地方。
- 在这个例子中,你可以在任何目录中。运行以下命令:
locate gnome-terminal
- 现在尝试命令:
locate vim
- 看看这有多快?现在尝试:
locate ifconfig
- 要忽略大小写,请执行:
locate -i sudo
还有更多...
find命令有 100 多个参数;请参考 man 页面获取更多信息。
locate命令使用数据库来存储文件的位置。这个数据库通常会在每天晚上由一个 cron 作业自动重新创建。如果你想立即刷新数据库,请运行updatedb命令。请注意,在大型文件系统和/或慢速计算机上可能需要一段时间。
创建文本文件 - vim,Emacs 和其他编辑器
大多数用户可能熟悉基于 GUI 的文字处理程序。例如,我正在使用 LibreOffice Writer 来撰写这本书。但是,你也可以使用命令行来编辑文件。我们中的一些人甚至更喜欢这样做。
准备好
假设读者可以访问带有各种文本编辑器的 Linux 机器。我们将从vim开始,这是每个 Linux/Unix 系统上都有的文本编辑器。如果你的系统上没有Emacs,请尝试使用yum install emacs或apt-get install emacs进行安装。
如何做...
以下是使用vi命令创建和编辑文本文件的方法:
- 让我们去
tmp目录。运行以下命令:
cd /tmp
- 现在运行:
vim lbookfile1.txt
-
你的终端应该已经清空,vim 正在其中运行。Vim 是无模式的,所以总是必须告诉它要处于什么模式。按A键。
-
现在 Vim 应该处于插入模式。你可能会在屏幕底部看到类似
-- INSERT --的东西。现在输入一些字符。 -
正常的光标控制键应该是有效的。编辑完成后,按Esc键退出插入模式。
-
要进入命令模式,请按冒号键,然后输入任何字母。例如,要保存文件,请输入
:w。 -
要保存文件然后退出 vim,请按Esc,然后输入
:wq。
以下是 vim 编辑 Java 文件的屏幕截图:
现在让我们来看看 Emacs 编辑器:
- 切换到
/tmp目录:
cd /tmp
- 要以文本模式启动 Emacs,请按:
emacs -nw lbooktest3.txt
-
它将以编辑模式启动。输入几行
-
要保存文件,请按Ctrl + C,然后按Ctrl + S。
-
标准光标键应该可以让你在屏幕上移动;试试看。
-
按Ctrl+H+*?*打开帮助窗口。
-
要返回到原始屏幕,按Ctrl+X+1。
-
要关闭 Emacs 会话,请按Ctrl + X,然后按Ctrl + C。
以下是 Emacs 编辑 Java 文件的屏幕截图:
还有更多...
Vim 和 Emacs 是非常强大的编辑器。它们通常被程序员用来编写代码,系统管理员用来维护 shell 脚本。要获取更多信息,请参考 man 和/或 info 页面,或者它们的网站。
作为奖励,这是我个人编写的文本编辑器的图片:
这是 20 年前在 DOS 下用 C 语言编写的。我现在已经在 20 多个不同的平台上编译和运行了它。
使用 file 命令
我们上面讨论了文本文件。一般来说,人类可以很容易地阅读和编辑文本文件。二进制文件是不同的,它是(宽泛地说)计算机“读取”的内容。例如,当您运行vim filename1.txt这样的命令时,vim 是一个二进制文件,filename1.txt是一个文本文件。
如何做...
以下是运行 Linux file命令的示例:
- 将目录更改为
/tmp,与往常一样:
cd /tmp
- 让我们创建一个文本文件:
ls > temp1.txt
- 它是什么类型的文件?运行以下命令:
file temp1.txt
-
正如您所看到的,
file命令可以告诉我们某个文件是什么类型。 -
现在运行以下命令:
file /bin/bash
-
所有这些信息都意味着它是一个二进制文件。它还显示了 bash 是为哪个平台编写的,以及其他一些信息。
-
尝试在系统上运行文件以了解那里有什么。
提示
您必须具有适当的权限才能运行file命令,因为它必须对文件执行打开操作。
还有更多...
我们提到了编辑文本文件。如果您真的知道自己在做什么,二进制文件也可以编辑。有时在低级工作中,例如在设备驱动程序上工作时,这是必要的。二进制编辑器可能看起来像以下的截图:
提示
哦不,我已经编辑了一个文件,但现在无法保存它!
偶尔,您可能会陷入一个看似无望的文本编辑情况。您已经花了一些时间更改一个文件,但现在无法保存它。错误通常是“权限被拒绝”。通常有两件事可能会导致这种情况;您无法写入文件所在的目录,或者文件已经存在但没有适当的可写权限。如果程序允许,保存您的工作的最佳方法是将文件简单地写入其他地方,例如/tmp。
这是一个相当简单的例子,但它传达了这个想法。我希望第一次发生这种情况时我已经知道这个程序。
如何做...
以下是在出现权限错误时保存文件的方法:
- 作为普通用户(而不是 root)转到
/usr目录:
cd /usr
- 现在运行以下命令:
vim lbookfake1.txt
-
它应该像平常一样打开一个空文件。按A,然后输入一些文本。
-
现在按Esc,然后输入
:w。 -
它应该显示一个写入错误,所以将文件保存到
/tmp:
:w /tmp/lbookfake1.txt
- 那应该成功。然后您可以采取措施来纠正真正的问题(也就是说,不要在不应该编辑文件的地方编辑文件!)。
使用 grep 查找模式
处理文件时,能够在文本中搜索模式是很方便的。这在代码开发中经常使用。这里我们展示如何使用grep。
准备工作
我们将使用dmesg程序来显示有关运行内核的信息。如果它不可用,或者如果您的计算机已经运行了很长时间,那么以下内容可能不会完全匹配您的系统。
如何做...
以下是使用grep的示例:
- 运行以下命令:
cd /tmp
- 使用
dmesg创建一个文件,这样我们就可以搜索一些关于您的系统的信息:
dmesg > dmesg1.txt
- 让我们看看能否确定正在使用哪个网络设备。运行:
grep network dmesg1.txt
- 输出可能不是很有信息性。但如果大小写有问题怎么办?尝试以下命令:
grep -i network dmesg1.txt
-i告诉grep忽略大小写。现在您应该看到您的系统正在使用哪个网络驱动程序。现在尝试以下命令:
grep -i cdrom dmesg1.txt
grep返回一个基于搜索结果的代码。再次运行上面的命令(记住上箭头快捷键吗?):
grep -i cdrom dmesg1.txt
- 现在运行以下命令:
echo $?
- 假设找到了文本,返回代码将为
0。现在搜索一个不应该存在的字符串:
grep -i jimlewis dmesg1.txt
- 运行以下命令:
echo $?
- 返回代码不应为
0。
提示
这可能看起来有点反常,0 表示成功,非零表示失败。这对许多 Linux 命令都是常见的,因为在许多情况下返回的数字是错误代码。
还有更多...
grep程序可以以令人难以置信的多种方式进行搜索。您还可以指定非常复杂的模式。有关更多信息,请参阅 man 页面。此外,我们将在第八章中再次讨论grep的返回代码,使用脚本。
使用 ZIP 和 TAR 压缩文件
毫无疑问,Linux 系统有大量的文件。一个典型的代码开发项目可能有 1000 多个文件,分布在几个目录中。我们如何备份所有这些东西?
答案是文件打包和压缩。这里我们将展示两个最喜欢的,ZIP和TAR。
准备工作
大多数 Linux 系统都有 ZIP 和 TAR,因此可以假定它们已经在您的系统上可用。
如何做...
在这里,我们将尝试zip和unzip命令:
- 运行以下命令:
cd /tmp
- 让我们创建一个临时目录:
mkdir lbooktemp
- 运行以下命令:
cd lbooktemp
- 现在让我们创建一些文件:
ls > f1.txt; route > f2.txt; dmesg > f3.txt
- 然后,创建一些更多的文件:
ifconfig > ifconfig.dat; dmesg > dmesg.dat
- 让我们将前面的文件打包和压缩成一个文件:
zip lbook1.zip f1.txt f2.txt f3.txt
- 正如您所看到的,ZIP 的语法是“zip zipped-file files-to-zip”。我们也可以在上面使用通配符:
zip lbook1.zip *.txt
- 现在让我们包括其他文件:
zip lbook1.zip *.txt *.dat
- unzip 程序用于从压缩文件(也称为存档)中提取文件。使用以下命令创建另一个目录:
mkdir test
- 运行以下命令:
cp lbook1.zip test
- 运行以下命令:
cd test
- 现在解压文件:
unzip lbook1.zip
-
执行
ls -la命令。您应该像以前一样看到文件。 -
您还可以查看 ZIP 文件的内容,而无需提取任何内容,只需运行以下命令:
unzip -l zipped-file
当只有少量文件时,或者当我将它们发送给运行非 Linux 操作系统的人时,我使用 ZIP。虽然 ZIP 可以用于跨目录,但通常无法很好地处理一些 Linux 文件。Tar 是一个更好的选择:
-
我们可以使用与之前相同的文件:cd /tmp/lbooktemp
-
运行
tar cvzf lbook1.tar.gz *.txt。这将创建一个 gzip 压缩的存档文件。 -
现在运行
file lbook1.tar.gz。它应该显示类似以下的输出:
lbook1.tar.gz: POSIX tar archive (GNU)
- 要提取,首先将其复制到测试目录:
cp lbook1.tar.gz test
- 运行以下命令:
cd test
- 运行以下命令:
tar xvzf lbook1.tar.gz
-
执行
ls -la命令。您应该再次看到文件。 -
要查看 tar 存档,请使用
t(用于告诉)选项:
tar tvzf lbook1.tar.gz
- 现在让我们将整个目录打包成 TAR:
cd /tmp
- 运行以下命令:
tar cvzf lbooktemp1.tar.gz lbooktemp
- 这将获取整个目录,甚至包括任何隐藏文件。
以下是zip命令的屏幕截图:
还有更多...
ZIP 和 TAR 在系统管理中经常用于备份所有内容。需要注意的是,“打包”系统,将该文件复制到另一台机器,并“解包”文件是克隆一个盒子的好方法(我经常使用这个)。
稍后,当我们在第九章中讨论 crontab 时,使用 Cron 自动化任务,我将展示如何使用 TAR 每晚备份我的系统。
其他有用的命令,如 stat、sum、touch 等
Linux 中有许多处理文件的命令。在本节中,我展示了如何使用其中一些。
如何做...
以下是我经常使用的一些命令:
- 运行以下命令:
cd /tmp
- 创建一个文件:
dmesg > file1.txt
-
现在运行
ls -la并记住信息。我们稍后会用到这个。 -
使用
stat命令可以查看关于文件的几乎所有你想知道的信息:
stat file1.txt
- 现在假设您已将该文件发送给正在运行 Linux 系统的人,并希望确保它在传输过程中没有损坏。运行以下命令:
sum file1.txt
- 第一个数字是校验和,第二个是该文件的块数。如果其他人在他的文件副本上运行
sum并看到相同的信息,那么这些文件是相同的。
提示
文件名不必匹配。
- 我们通过使用重定向运算符创建了许多文件。您还可以使用 touch 命令:
touch file2.txt
- 由于
file2.txt之前不存在,touch 将创建一个空文件。事实上,让我们证明一下:
file file2.txt
- 那么,如果我们在现有文件上运行 touch 会发生什么?它会清空它吗?不会,它会更新文件的时间和日期。运行以下命令:
ls -la file1.txt
- 现在运行以下命令:
touch file1.txt
-
再次运行
ls -la。你应该注意到它现在显示了该文件的当前日期和时间。 -
假设你只想查看一个文本文件。运行以下命令:
less file1.txt
-
使用
less命令时按空格键向下滚动。按Q退出。 -
假设我们只想看到该文件的前几行:
head file1.txt
head命令默认显示前 10 行。那么最后 10 行呢?运行以下命令:
tail file1.txt
还有更多...
正如我之前所说,有许多其他处理文件的命令。而且,我提到的命令只是它们所能做的冰山一角。如常,查阅 man 手册以获取更多信息。
第四章:网络和互联网
在本章中,我们将涵盖:
-
故障排除不良连接
-
将文件复制到另一台机器-FTP 和 SCP
-
登录到另一台机器- Telnet 和安全外壳
-
获取网页而不使用浏览器-wget
-
浏览网页-Firefox
-
电子邮件-使用网络邮件程序
-
运行您自己的 Web 服务器-httpd
-
谁在使用那个端口?/etc/services 文件
-
IPv4 与 IPv6
介绍
在今天的世界中,“上网”至关重要。在这里,我们将解释连接性以及在它不起作用时该怎么办。但首先,我们将解释有线连接与无线连接的优缺点。
典型的有线以太网连接速度快且可靠。通常不会遭受中断或丢包。像 Cat 5E 或 Cat 6 这样的优质电线可以在数英尺范围内运行而不会丢失信号。
无线连接使您可以自由地使用,嗯,首先不需要有线。当正确配置时,它可以轻松使用并且非常可靠。
有线连接具有以下优点:
-
有线连接通常比无线连接快
-
总的来说,它更可靠
-
它不会遭受周期性的中断或丢包
-
更容易配置和故障排除
有线连接具有以下缺点:
-
我们需要使用电线;在计算机实验室环境中重新排列或更改可能非常困难
-
我们需要有人设计和物理连接网络
-
在使用具有多个以太网端口的大型服务器时可能会令人困惑
无线连接具有以下优点:
-
它很方便;我们不必处理电线
-
在某些情况下,它可以离基础路由器相当远
-
它很容易设置为访客访问
无线连接具有以下缺点:
-
它并不总是可靠的。丢包比有线连接频繁得多。
-
它可能很难设置,特别是第一次。
-
我们必须处理密码和加密以防止未经授权的访问。
故障排除不良连接
这似乎偶尔会发生,并且发生在最糟糕的时候。这是我通常采取的诊断和解决有线连接问题的步骤。假设连接在过去的某个时候正常工作。
准备就绪
对于这个例子,没有特殊的设置,除非您碰巧在某个地方有一台坏掉的机器。您可以在不担心损坏良好系统的情况下运行大多数这些命令。
如何做...
在诊断网络问题时,请尝试以下步骤:
- 首先,让我们通过 ping 一个已知的外部地址来确保连接确实中断了。我使用 Road Runner 作为我的 ISP,所以对我来说,命令将是:
ping rr.com
-
应该出现类似于这样的东西:
-
按Ctrl + C停止输出。如果命令行显示超时,或者显示关于没有主机或错误路由的内容,则连接确实中断了。让我们尝试修复它。
-
找到您的网关地址。运行
route命令;您的网关应该显示在输出的顶部。请注意,route命令花费很长时间才能完成也是连接中断的迹象。 -
Ping 上面
route提供的网关。如果 ping 成功,则问题很可能出在路由器或 ISP 本身。 -
如果不能得到良好的 ping,请尝试这个。如果您已经知道接口名称,请跳到下一步。如果不知道,请使用
ifconfig命令找到。查找一个类似eth0或p3p2的段落。 -
在接口上运行
ethtool命令。在我的情况下是ethtool eth0。看看最后一行;它应该说:
Link detected: yes
-
如果不行,问题可能是电线。如果您的端口有 LED,请查看它们是否亮着。其中一个应该不时地闪烁。尝试摇动电线。当然,如果您有一根已知良好的电线,请尝试更换它。请注意,“已知良好的电线”不一定意味着刚从包装中拿出来的电线。有一次就被这样的电线坑过。
-
如果电线看起来没问题,让我们深入一点。确保在上面的步骤中,你使用了正确的接口。在这一点上,你可能只想阅读这些步骤,而不是运行命令,因为它们会让你的网络断开。
-
尝试运行
ifdown<interface>命令。你可能看不到任何输出。 -
现在运行
ifup<interface>命令。可能需要几秒钟,然后你应该会看到一些输出。如果你正在使用 DHCP,你应该会看到连接正在建立。当你收到提示时,再试一次 ping。 -
我会假设如果你还在阅读,
ping失败了,连接仍然断开。你的路由器和/或调制解调器可能已经卡住了。尝试关闭它们,等大约一分钟,然后再打开它们。 -
等待网络稳定后再次尝试
ping。如果仍然无法连接,继续下一步。 -
尽管我讨厌这个解决方案,但在这一点上,我建议进行冷关机。关闭除一个终端之外的所有内容,然后运行以下命令:
shutdown -h now
-
我喜欢在重新启动之前等几分钟,只是为了确保内存实际上已经清空。好的,现在重新打开它,等待它完全启动。
-
再试一次
ping命令。如果现在可以工作,我会怀疑是某种瞬态错误或问题。如果它继续工作,那太好了。但是,如果再次失败,我会怀疑硬件可能出了问题。 -
如果重新启动后
ping命令仍然失败,我会尝试启动一个 Live Media 镜像。如果这样可以并且能上网,那么你的基本系统文件可能出了问题。如果不行,我会再次怀疑硬件。 -
最后一件事;确保没有人对你的 DHCP 服务器进行了任何更改。配置错误的服务器可能会导致各种糟糕的事情发生,比如无法连接。
还有更多...
希望这一部分对你有用。这些步骤在过去无数次对我有用。我还想建议你查看你的/var/log/messages文件(和/或dmesg)。它可能会解释为什么连接失败。
注意
使用 IP 地址、子网、域名等进行工作
这将作为对 IP 地址、子网和域的简要概述。理解这些信息将有助于你阅读本书的后续部分。
IP 地址一般是在网络上区分一台计算机与另一台计算机的东西。它是一组数字,比如66.69.172.30。在家庭网络中,由于NAT(网络地址转换)最有可能被使用,你可能更熟悉本地地址,比如192.168.1.115。
以下是术语的快速列表:
-
IP 地址:这台机器的互联网协议地址,例如
192.168.1.115。 -
子网:第三个八位组(或数字组)是子网。例如,
192.168.1.115和192.168.1.120在同一个子网上。但是,192.168.2.115不在。 -
域:域通常由主机名表示,比如rr.com。它也有一个数字 IP。使用
ping命令来确定主机名使用的 IP。
将文件复制到另一台机器 - FTP 和 SCP
除了电子邮件,将文件复制到另一台机器的两种最常见的方法是FTP(文件传输协议)和SCP(安全复制)。在这里我们将讨论两者。
FTP 已经存在很多年了,今天仍然被广泛使用。然而,标准 FTP 确实有一个严重的缺点。数据是以所谓的“明文”发送的。这意味着在适当的条件下,一个有知识的人可以获取数据。我们稍后会谈论这个问题。
准备工作
我们假设 FTP 服务器已经设置好,并且可以用于这个练习。通常情况下,你会从一台机器(客户端)使用ftp命令到另一台机器(服务器)。然而,在这个例子中,我只使用了一台机器。开始 FTP 会话的命令是ftp 服务器名称,其中服务器名称可以是你网络上已知的主机名,或者是一个数字 IP 地址。在这个例子中,我在/tmp中创建了一个名为f1.txt的文件,以及在/home/jklewis中创建了一个名为f5.txt的文件。
大多数 Linux 发行版已经设置好允许使用scp命令,这非常方便。我们假设你的发行版允许这样做。请注意,有些发行版不允许 root 访问,所以我们将使用一个访客账户。
SCP 的语法包括给定的命令。
复制到一台机器:
scp local-filename username@hostname:/directory
从一台机器复制:
scp username@hostname:/directory/filename
(不要忘记上面的冒号。)
以下是 Fedora 18 上 FTP 帮助屏幕的截图:
如何做…
以下是如何使用ftp命令:
- 在客户端的终端会话中,运行以下命令:
ftp 192.168.1.115
-
它应该会出现一个提示。输入用户名并按Enter。
-
输入密码并按Enter。
-
它应该显示类似登录成功的内容。如果没有,那么你没有登录,尽管仍会有一个 FTP 提示。假设它已登录,运行以下命令:
ls -la
-
你应该会看到一个文件列表。运行
help来显示命令列表。它们可能并不都在你的系统上可用(我认为这是一个错误)。 -
在使用
ftp时要记住的一件事是随时知道自己在哪里。很容易混淆。经常使用pwd。现在运行它:
pwd
- 你输入的命令是在服务器上。要在本地运行命令,请在前面加上感叹号。尝试这些命令:
!pwd, !ls
- 所以,让我们真正做点什么。通过运行以下命令将你的本地目录更改为
/tmp:
lcd /tmp
- 运行
!ls命令。现在让我们将文件f1.txt复制到服务器上:
put f1.txt
- 现在让我们从服务器检索文件
f5.txt:
get f5.txt
-
这一开始可能会有点混乱。那是因为它确实如此。然而,如果你经常使用它,它会变得更容易。记住,你把它放到服务器上,然后从服务器上取回来。
-
当你完成 FTP 会话时,运行以下命令:
quit
- 现在让我们运行一些
scp命令,开始吧:
cd /tmp
- 通过运行以下命令创建一个测试文件:
ls > f1.txt
- 运行以下命令:
scp f1.txt guest1@192.168.1.115:/temp
-
输入用户
guest的密码。 -
假设文件
f5.txt在远程/temp上,要获取它运行:
scp guest1@192.168.1.115:/temp/f5.txt
- 不要忘记上面的冒号。运行
ls -la看看情况如何。
还有更多…
我提到 FTP 以明文发送其数据。安全外壳命令(在下一节中详细介绍)使用加密,因此安全性不是问题。此外,可以设置一台机器,使得不需要密码。有关更多信息,请参阅ssh-keygen命令。这个主题也在附录 A 中有所涉及,Linux 最佳实践。例如,要配置sshd以更改 root 登录的工作方式,请参阅sshd_config文件。
登录到另一台机器——Telnet 和安全外壳
Telnet 是一个较老的协议,但今天仍然被广泛使用。它和 FTP 一样存在安全问题,因为它以非加密格式发送文本。然而,在受到良好防火墙保护的实验室环境中仍然很有用。
准备就绪
我将再次使用同一台机器作为客户端和服务器。在这个例子中,我们将假设 Telnet 客户端和服务器已经安装并运行。
开始 Telnet 会话的命令是telnet 主机名。主机名可以是你网络上可达的名称,也可以是一个数字 IP。
安全外壳(SSH)是一个更受欢迎的协议,因为它提供了密码和文本的强加密。在我看来,它也更容易使用。
要开始一个安全外壳,命令如下:
ssh username@hostname
如何做…
在这里我们将运行一些 Telnet 和 SSH 命令:
- 运行以下命令:
telnet 192.168.1.115
-
应该会出现一个横幅和提示。输入用户名。
-
输入密码。
-
可能会显示每日消息(
/etc/motd)文件。这是放置消息和其他信息供任何登录用户查看的好地方。在此终端中,您可以运行几乎任何文本模式命令。尝试pwd。 -
您可以切换到另一个目录,编辑文件,以及几乎您在实际系统上通常会做的任何事情。
-
会话结束后,运行:
exit
这是在 Fedora 18 上运行 Telnet 的屏幕截图:
- 现在让我们尝试运行一个安全外壳会话:
ssh jklewis@192.168.1.115
- 输入您的密码。
/etc/motd文件应该像以前一样显示。让我们尝试一些命令。运行以下命令:
pwd
- 运行以下命令:
uptime
- 与 Telnet 一样,每个基于文本的命令都应该像您在实际机器上一样工作。会话结束后,运行:
exit
还有更多...
安全复制和安全外壳是复制文件和访问远程机器的最佳方式。要充分了解它们。我上面提到ssh-keygen程序允许无需密码即可复制文件。这对 SSH 也适用。我在家里的所有机器上都使用这个功能,还有我的网站,它是由一个服务提供商托管的。要获取有关这个非常酷的功能的更多信息,请运行man ssh-keygen。
还有一件事,我提到 Telnet 和 SSH 会话应该像您在实际机器上一样工作。但是当客户端在非 Linux 机器上运行时,情况并非总是如此。例如,一些按键可能映射不同。查看您使用的客户端程序的文档,可能有办法调整按键映射。
无需浏览器即可获取网页 - wget
可能每个人都收到过来自可疑来源的电子邮件。您知道不应该点击其中任何链接,但如果有一种安全的方法来确定该网站上有什么,那不是挺好的吗?实际上是有的。
wget程序允许您从 URL 下载文件。尽管它可以做很多事情,但最简单的命令形式是:wget <some URL>。假设没有错误,它将把该文件放在当前目录中。如果您没有指定文件名,默认情况下它将尝试获取index.html文件。
如何做...
以下是运行wget的方法:
- 运行以下命令:
cd /tmp
- 运行以下命令:
wget www.jklewis.com
-
生成的文件将被命名为
index.html。使用more index.html查看它。是的,这是我的个人网页。 -
您还可以引用特定文件。尝试:
wget www.jklewis.com/shipfire.gif
-
尝试一些其他网站。您可以在可疑的网站上进行此操作,以查看其是否安全。
-
如果您心中有一个可疑的网站,请对文件进行
wget。查看它并寻找到其他网站的链接。如果您看到类似http:/DoWeCheatThemAndHow.com的东西。我可能不会点击它。
还有更多...
wget命令可以做更多。通过正确的参数,它可以用来克隆整个网站和许多其他有趣的事情。查阅手册以获取更多信息。
浏览网页 - Firefox
对于 Linux 系统,有几种不同的浏览器可供选择。在这里,我们将重点放在 Mozilla 的 Firefox 上。
准备工作
通过单击桌面上的浏览器图标,通常可以打开 Firefox。您也可以从命令行启动它。在此示例中,我们将首次以用户jklewis启动 Firefox。
以下屏幕截图显示了用户jklewis第一次打开 Firefox 的样子:
如何做...
以下是从终端运行 Firefox 的方法:
-
为访客用户打开一个终端会话。例如,我运行了
su - jklewis并输入了我的密码 -
运行
firefox &(&表示在后台运行命令,这样您仍然可以访问该终端。错误消息也将显示在这里)。 -
Firefox 应该以默认设置启动。让我们更改其中一些设置。转到编辑 | 首选项。
Click on Edit->Preferences
-
Firefox 首选项屏幕应该出现在常规部分。看到主页的位置,将其更改为更有用的内容。我将我的更改为
jklewis.com。 -
常规部分也是您可以控制下载窗口行为的地方。我选择为这个用户保持勾选状态。
-
现在点击标签部分。我个人非常讨厌浏览器标签,所以我已经将它们关闭了。要做到这一点,请取消在新标签中打开新窗口和始终显示标签栏的复选标记。请注意,您不必在本练习中这样做。
-
内容部分允许您控制显示的内容。好好看看这个页面,不过我通常保持这些设置不变。
-
应用程序部分显示了可用的浏览器插件。我在这里不做任何更改。
-
现在点击隐私部分。这里可以清除历史记录和处理 cookie。
-
现在点击安全。我建议保持原样。
-
同步部分可以让您与移动设备同步。
-
高级部分有几页内容。常规页面可以让您控制浏览器的操作方式。现在点击网络页面。这是您配置缓存的地方。
-
更新页面处理自动更新的内容,加密页面是设置协议和查看/修改证书的地方。我建议保持原样。
-
现在关闭首选项对话框。
-
现在让我们查看一个网站并将其加为书签。转到 URL 字段并双击它。按下删除键。现在输入
jklewis.com。
提示
通常情况下不需要输入"www"。
-
您应该看到我的网页。现在点击书签。
-
点击将此页加为书签。会出现一个名为已加为书签的页面的对话框(实际上这是完全错误的,因为页面还没有被加为书签)。在这里,您可以更改书签的标题或放置的文件夹。现在只需点击完成即可。
-
页面现在应该已经被加为书签。
还有更多...
如您所见,还有很多选项。根据需要进行探索。以下是浏览时的一些建议。
在给页面加书签时,好好看看给出的标题。由于某种原因,它们并不总是给出一个好的描述性名称。"账户登录"并没有告诉我太多信息。但是,如果我将其更改为"Hi-Fee 银行和信托 - 登录",那就告诉我这是哪个账户了。
我强烈建议您从访客账户而不是 root 账户运行浏览器。请注意,如果您正在访客用户下运行桌面(也强烈建议),从图标启动 Firefox 就可以了。
在 URL 字段的右侧是一个星号。点击它会弹出历史。旁边是一个带箭头的半圆。这是刷新按钮。如果页面加载速度过慢,或者出现问题,尝试点击这个图标刷新页面。
电子邮件 - 使用网络邮件程序
有许多可用的网络邮件客户端,如Evolution和Thunderbird。我两者都用过,发现它们在某些方面有所不足。因此,出于这个原因和其他原因,我选择使用浏览器网络邮件应用。
准备工作
如果您已经使用过网络邮件程序,这可能对您来说已经很熟悉了。但是,如果您以前没有使用过,这应该非常有帮助。请注意,对于本节,我建议您不要尝试运行这些命令,只是阅读它们。
如何做...
以下是使用 Firefox 访问网络邮件客户端的方法:
-
在服务提供商的网站上登录您的账户。网站上应该有一个链接可以访问您的电子邮件。您的服务提供商甚至可能会让您选择使用哪个网络邮件应用。我选择了Squirrel Mail。
-
无论您选择哪一个,它都应该打开并要求您输入电子邮件账户密码。请记住,这可能与您用于登录服务提供商主账户的密码不同。
-
一旦您进入邮件应用程序,应该会显示收件箱的内容。在这里,您可以回复邮件,转发邮件,提供附件等等。
-
还应该有一个地址簿。找到它,打开它,并了解如何使用它。如果服务提供商有一种将地址簿文件导出到您的计算机的方法,请经常使用该功能,以便在出现损坏时可以恢复它。
-
请记住,如果要撰写电子邮件并附加文件,请先附加文件,然后再填写其他字段并撰写文本。相信我,您的朋友、家人、潜在雇主等等都会感谢您没有忘记附件。
-
大多数网络邮件程序不会自动刷新屏幕。因此,如果您将其保持打开(我一直这样做),并离开计算机,当您回来时,请务必刷新电子邮件会话。通常通过单击收件箱标题来完成此操作。您也可以单击浏览器的刷新按钮。
-
关于网络邮件的最后一件事;邮件可能最终会填满您分配的空间,您甚至可能会收到来自服务提供商的一些关于此问题的电子邮件。我通常会等到收件箱使用了大约 80%的空间,然后直接转到最后一页(通常是第 30 页左右)并将这些邮件移到垃圾箱。我会一页一页地删除这些邮件,直到我回到第 20 页。
-
有些人在使用邮件时会删除邮件。如果您擅长这样做,那很好。我不擅长。如果我以这种方式做,最终会删除我希望能够找回的东西。
-
说到找回文件,通常可以通过在垃圾箱文件夹中查找来恢复已删除的文件。但是,一旦您清空了文件夹,这些电子邮件将永远消失。清理通常每周自动进行(某些邮件程序可配置)。
还有更多...
网络邮件的一个很好的功能是您应该能够从任何机器上的任何浏览器访问您的电子邮件。所有信息都存储在服务提供商的网站上。
以下是Squirrel Mail | Options的屏幕截图:
运行您自己的网络服务器 - httpd
也许有一天您会想要运行自己的网络服务器。在我作为软件工程师的职业生涯中,我经常被要求运行部门实验室。让我的用户了解正在发生的事情的最简单方法是将笔记和文件放在我自己控制的本地网站上。这可能听起来很难,但实际上并不是。
准备就绪
这假设您有一个 Linux 系统可用于尝试此操作。如果没有,您仍然可以从本节中获得很多信息。这还假设httpd尚未安装。这些步骤是在运行 Fedora 18 的笔记本电脑上执行的。
如何做...
以下是在 Fedora 上安装自己的 Apache httpd 服务器的步骤:
- 首先安装 httpd:
yum install httpd
- 现在切换到配置目录:
cd /etc/httpd/conf
-
备份文件:
cp httpd.conf /tmp/httpd.conf.orig。您可能需要选择一个更合适的备份目录。 -
使用文本编辑器编辑文件:
vi httpd.conf
-
该文件包含了设置 httpd 服务器所需的几乎所有信息。请仔细阅读第一页,其中介绍了 ServerRoot。
-
简而言之,如果文件名以斜杠开头,服务器将使用所指示的路径。但是,如果使用相对路径,则将添加 ServerRoot 的值。例如,滚动到这一行:
Include conf.modules.d/*.conf
-
由于这是相对路径,并且 ServerRoot 设置为
/etc/httpd,因此将包含的目录实际上是/etc/httpd/conf.modules.d。 -
在另一个终端中,现在切换到该目录:
cd /etc/httpd
-
一定要记住 ServerRoot 是如何工作的!这将为您节省大量时间。现在让我们更详细地了解一下
httpd.conf文件。Listen指令告诉 httpd 要使用哪个端口。现在将其保留在80。 -
滚动到 ServerName。这是您可以输入您特定服务器名称的地方。现在先留空。
-
我们将讨论的最后一个是 DocumentRoot。这是您的网页将被提供的目录。它应该设置为
/var/www/html。 -
实际上让我们启动 httpd 服务。运行
systemctl start httpd.service。这应该悄悄地返回到命令行。 -
我们还必须使用命令
systemctl enable httpd.service来启用它。这应该显示一个成功的链接消息。 -
现在让我们试试:
cd /var/www/html
- 运行
ls -la。它可能是空的。通过运行以下命令创建一个文件:
dmesg > dmesg1.txt
-
现在要么转到要么打开浏览器会话。我们将首先在本地检查一下,所以在 URL 字段中输入
file:///var/www/html/dmesg1.txt。 -
文件内容应该显示。现在让我们创建另一个文件:
echo "This is a new file" > newfile.txt
- 用您的 IP 替换我的 IP,在 URL 字段中尝试这个:
192.168.1.115:/newfile.txt。应该显示newfile.txt的内容。
还有更多...
如果您决定进行大量的“Web 服务”,请务必阅读并了解httpd.conf文件。网络上也有大量的信息可用。
您可能会发现您实际上无法从网络上的另一台计算机访问您的文件。这很可能是由于防火墙(iptables)问题,但是您的路由器可能也需要一些配置。这将在第五章中进行介绍,权限、访问和安全。
谁在使用那个端口?/etc/services 文件
有时您可能需要知道特定端口上运行的服务是什么。/etc/services 文件包含了这些信息以及更多信息。
如何做...
在这里,我们将看一下 Linux 系统上一些常见的服务:
-
查看您的/etc/services 文件:
more /etc/services。 -
按一次空格键向下滚动页面。看到它显示“ftp”吗?下一列中的
21表示 FTP 正在使用的端口。/tcp和/udp表示该端口可用于两种协议。 -
您还应该看到
telnet(如果没有,请按Enter几次)。它应该显示端口23。 -
现在让我们搜索一个服务。按几次 Backspace 键返回到顶部,并输入
/nameserver。 -
我们可以看到
nameserver正在使用端口42,并且可用于 TCP 和 UDP。 -
该文件非常长(在我的系统上超过 11,000 行),因为有许多标准端口。
还有更多...
按照惯例,端口编号为0到1023被认为是“众所周知的端口”。端口编号为1024到49151是“注册端口”。私有和动态端口从49152到65535。如果您正在开发应用程序或以其他方式处理端口,请务必遵循此端口使用约定。
以下是 Fedora 18 上/etc/services的前几行的屏幕截图:
IPv4 与 IPv6
截至撰写本书时,Internet Protocol Version 4(IPv4)用于路由 Internet 上的大部分网络流量。它使用 32 位(4 字节)地址,允许有 232 个地址的空间。在 IPv4 下,剩余的地址不足以容纳现在使用的所有互联网设备,这就是为什么创建了IPv6。在本节中,我们将首先运行一些命令,然后讨论 IPv4 和 IPv6。
如何做...
让我们尝试使用两种协议的一些命令:
- 让我们从 IPv4 开始。运行以下命令:
ping 192.168.1.115
- 然后,运行以下命令:
ssh 192.168.1.115
-
现在让我们尝试 IPv6。首先让我们看看您的计算机是否有 IPv6 地址。在您的接口上运行
ifconfig;在我的笔记本电脑上是ifconfig wlan0。 -
您应该看到类似以下输出:
inet 192.168.1.115 netmask 255.255.255.0 broadcast 192.168.1.255
-
您还应该看到类似以下输出:
inet6 2002:244:b303:0:221:5eff:feff:f15d。尝试 ping 它。在我的电脑上,它是ping 2002:244:b303:0:221:5eff:feff:f15d。 -
你得到了
ping: unknown host错误吗?那是因为我们必须使用 ping 的 IPv6 版本。再试一次,但像以下命令一样:
ping6 2002:244:b303:0:221:5eff:feff:f15d
- 现在尝试
ssh,它似乎已经知道 IPv6:
ssh 2002:244:b303:0:221:5eff:feff:f15d
还有更多...
一般来说,在 IPv4 下,数字 IP 地址写作xxx.yyy.zzz.www,这被称为点分十进制格式。由点分隔的 3 个数字中的每一个被称为一个八位组。高阶八位组,在这个例子中是xxx,指示了这是哪个类的 IP。以下是 IPv4 中可用的类的部分列表:
| 类 | 端口 |
|---|---|
| 私有网络 | 10.0.0.0 |
| 本地环回 | 127.0.0.1 |
| 链路本地 | 169.254.0.0 |
| 私有网络 | 192.168.0.0 |
| IP 组播 | 224.0.0.0 |
| 广播 | 255.255.255.255 |
您已经看到了我在家庭网络上使用的一些私有地址的示例。格式通常类似于以下一组命令:
ping 192.168.1.115
scp file1.txt guest1@192.168.1.115:/temp
telnet 192.168.1.115
ssh 192.168.1.115
IPv4 地址空间在 2011 年正式耗尽。因此,以及其他原因,IPv6 被创建。
IPv6 是互联网协议的最新版本。与使用 32 位地址的 IPv4 相反,IPv6 使用 128 位地址。这是 2128 个地址,足够地球上的每个人都拥有超过一百万个地址供自己使用。我们可能不会很快用完这些地址。
IPv6 地址有 8 组 4 位十六进制数字,用冒号分隔:2002:4244:b323:0:4687:fcff:fe69:4d0f。
是的,这看起来很可怕,但改变有几个原因:
-
更长的地址可以实现更有效的路由
-
它允许特殊的寻址技术
-
子网的大小现在是 264 个地址
-
在 IPv4 下重新编号现有网络可能非常复杂;当正确配置时,IPv6 不会出现这个问题
-
多播更有效率
-
IPv6 具有无状态地址自动配置(SLAAC)
IPv6 地址可以缩写如下:前导零可以省略。
连续的零组可以省略并用两个冒号替换。
看下面的例子:IP 地址是2002:0244:0000:0000:0000:fcff:fe69:4d0f。
省略前导零,我们得到2002:244:0:0:0:fcff:fe69:4d0f。
现在省略零组,我们得到2002:244::fcff:fe69:4d0f。
有关更多信息,请参阅 man 页面和互联网。IPv6 的大规模使用仍然遥遥无期,但最终会到来。