1. 《linux命令行与shell脚本编程大全第3版》epub下载在线阅读,求百度网盘云资源
《Linux命令行与shell脚本编程大全(第3版)》([美]布鲁姆,布雷斯纳汉)电子书网盘下载免费在线阅读
链接:https://pan..com/s/13qnk3TEZNyMh3vhcZwF0aA
书名:Linux命令行与shell脚本编程大全(第3版)
作者:[美]布鲁姆,布雷斯纳汉
译者:门佳
豆瓣评分:9.0
出版社:人民邮电出版社
出版年份:2016-8
页数:605
内容简介:
这是一本关于Linux命令行与shell脚本编程的全方位教程,主要包括四大部分:Linux命令行,shell脚本编程基础,高级shell脚本编程,如何创建实用的shell脚本。本书针对Linux系统的最新特性进行了全面更新,不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。通过本书的学习,你将轻松写出自己的shell脚本。
作者简介:
Ricahard Blum
已在IT行业打拼20余年,担任过UNIX、Linux、Novell和Windows Server的系统及网络管理员,在Linux和开源软件领域着作颇丰。他还是一名网络课程讲师,美国多所大学和学院都采用他的Linux基础课程。
Christine Bresnahan
系统管理员,已经在IT行业工作了30余年,通过CompTIA Linux+、LPIC-1、Linux Essentials认证。目前在印第安纳波利斯市常春藤技术社区学院担任兼职教授,讲授Linux系统管理、Linux安全和Windows安全、Python编程等课程。
2. Kali Linux常用服务配置教程获取IP地址
下面以Kali Linux为例,演示获取IP地址的方法
(1)设置网络接口为自动获取IP地址。在Kali Linux的收藏夹中单击图标,将显示所有的程序,如图1.8所示。
(2)单击“设置”图标,将打开“设置”窗口,如图1.9所示。
(3)选择“网络”选项,单击有线连接中的齿轮按钮,将显示“有线”对话框,如图1.10所示。
(4)勾选“自动连接”复选框。然后,单击IPv4标签,将显示IPv4选项卡,如图1.11所示。
(5)在该界面选择“自动(DHCP)”选项。然后,单击“应用”按钮。接下来,就可以请求获取IP地址了。执行命令如下所示:
root@daxueba:~# dhclient eth0 –d
Internet Systems Consortium DHCP Client 4.3.5
Copyright 2004-2016 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/eth0/00:0c:29:25:89:95
Sending on LPF/eth0/00:0c:29:25:89:95
Sending on Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 4
DHCPREQUEST of 192.168.0.12 on eth0 to 255.255.255.255 port 67
DHCPOFFER of 192.168.0.12 from 192.168.0.10
DHCPACK of 192.168.0.12 from 192.168.0.100
bound to 192.168.0.12 -- renewal in 277 seconds.
从输出的信息中,可以看到成功获取到IP地址192.168.0.12。由此可以说明,搭建的DHCP服务测试成功。此时,用户查看地址租约文件dhcpd.leases,也可以看到分配的IP地址。如下所示:
root@daxueba:~# cat /var/lib/dhcp/dhcpd.leases
# The format of this file is documented in the dhcpd.leases(5) manual page.
# This lease file was written by isc-dhcp-4.3.5
# authoring-byte-order entry is generated, DO NOT DELETE
authoring-byte-order little-endian;
lease 192.168.0.10 {
starts 1 2018/07/02 10:15:00;
ends 1 2018/07/02 10:25:00;
cltt 1 2018/07/02 10:15:00;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:5c:ae:aa;
client-hostname "daxueba";
}
lease 192.168.0.11 {
starts 1 2018/07/02 10:18:17;
ends 1 2018/07/02 10:28:17;
cltt 1 2018/07/02 10:18:17;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:99:92:4f;
uid "\001\000\014)\231\222O";
set vendor-class-identifier = "MSFT 5.0";
client-hostname "Test";
}
lease 192.168.0.12 {
starts 1 2018/07/02 10:34:56;
ends 1 2018/07/02 10:44:56;
cltt 1 2018/07/02 10:34:56;
binding state active;
next binding state free;
rewind binding state free;
hardware ethernet 00:0c:29:25:89:95;
client-hostname "daxueba";
}
从输出的信息中,可以看到DHCP服务分配出去的IP地址及对应租约信息。
3. linux常用的20个命令
Linux中最常用的20个命令如下:
1. ls - 列出目录内容
2. cd - 改变目录
3. pwd - 显示当前目录
4. mkdir - 创建目录
5. rm - 删除文件或目录
6. rmdir - 删除空目录
7. touch - 创建空文件
8. cat - 显示或连接文件
9. cp - 复制文件或目录
10. mv - 移动或重命名文件或目录
11. less - 分页显示文件内容
12. head/tail - 显示文件头部/尾部内容
13. echo - 显示字符串
14. ps - 显示进程状态
15. top - 实时显示进程状态
16. kill - 终止进程
17. df - 显示磁盘空间使用情况
18. - 显示目录和文件大小
19. ping - 测试网誉培络连接
20. ifconfig/ip - 配置或显示网络接口信息
这20个命令可以完成大多数Linux文件操作、进程管理和网络配置任务。熟练掌握它们是成为Linux高手的基础。
如果要进一步了解每个命令的功能和参数,可以通过以下方式学习:
1. 在终端直接输入命令名并按派虚裤回车,会显示命令语法和简要说明。
2. 在终端输入man 命令名,会显示对应命令的手册页,里面包含详细说明、参数和示例。
3. 搜索网络教程和手册,如菜鸟教程、Linux命令大全等,这些网站上有每个命令的详尽教程。
4. 实践并多使用这些命令,熟练掌握语法尘简和常用功能的参数。实践出真知。
如果您对Linux命令或其它知识有任何疑问,欢迎与我联系。我会提供详细的解答、参考资料和练习方案,帮助您系统和深入地学习。觉得这份Linux常用命令liste对您有用的话,也请不吝赐教,我会持续完善和优化。
4. 《Linux命令行与shell脚本编程大全》epub下载在线阅读,求百度网盘云资源
《Linux命令行与shell脚本编程大全》(Richard Blum)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/10S-mKk0ME0WotTnrFhMKOg
书名:Linux命令行与shell脚本编程大全
作者:Richard Blum
译者:武海峰
豆瓣评分:8.4
出版社:人民邮电出版社
出版年份:2012-9
页数:619
内容简介:本书是一本关于Linux 命令行与shell 脚本编程的全面教程。全书分为四部分:第一部分介绍Linuxshell 命令行;第二部分介绍shell 脚本编程基础;第三部分深入探讨shell 脚本编程的高级内容;第四部分介绍如何在现实环境中使用shell 脚本。本书不仅涵盖了详尽的动手教程和现实世界中的实用信息,还提供了与所学内容相关的参考信息和背景资料。
本书内容全面,语言简练,示例丰富,适合于Linux 系统管理员及Linux 爱好者阅读参考。
作者简介:Richard Blum 系统和网络管理员,已经在IT行业工作了22年多。他管理过UNIX、Linux、Novell和微软服务器,用Linux shell脚本进行过自动化网络监测,并在大多数常见的Linux shell环境中写过脚本。他还是一名网络课程讲师,美国各地的多所大学和学院都采用他的Linux基础课程。除本书外,Richard还着有Professional Linux Programming等书。
Christine Bresnahan 系统管理员,已经在IT行业工作了近30年。目前在印第安纳波利斯市的常春藤技术社区学院担任兼职教授,讲授Linux系统管理、Linux安全和Windows安全等课程。
武海峰 Linux系统工程师,兴趣集中在GNU/Linux和移动互联应用,热衷于开源软件。曾在商业Linux厂商任职,从事移动设备操作系统集成和商业Linux发行版集成工作。
5. 如何在Linux命令行中通过SMTP服务器发送电子邮件
假定你想配置一个 Linux 应用,用于从你的服务器或桌面客户端发送邮件信息。邮件信息可能是邮件简报、状态更新(如 Cachet)、监控警报(如 Monit)、磁盘时间(如 RAID mdadm)等等。当你要建立自己的 邮件发送服务器 传递信息时 ,你可以替代使用一个免费的公共 SMTP 服务器,从而避免遭受维护之苦。
谷歌的 Gmail 服务就是最可靠的 免费 SMTP 服务器 之一。想要从应用中发送邮件通知,你仅需在应用中添加 Gmail 的 SMTP 服务器地址和你的身份凭证即可。
使用 Gmail 的 SMTP
服务器会遇到一些限制,这些限制主要用于阻止那些经常滥用服务器来发送垃圾邮件和使用邮件营销的家伙。举个例子,你一次只能给至多 100
个地址发送信息,并且一天不能超过 500
个收件人。同样,如果你不想被标为垃圾邮件发送者,你就不能发送过多的不可投递的邮件。当你达到任何一个限制,你的 Gmail
账户将被暂时的锁定一天。简而言之,Gmail 的 SMTP 服务器对于你个人的使用是非常棒的,但不适合商业的批量邮件。
说了这么多,是时候向你们展示 如何在 Linux 环境下使用 Gmail 的 SMTP 服务器 了。
Google Gmail SMTP 服务器设置
如果你想要通过你的应用使用 Gmail 的 SMTP 服务器发送邮件,请牢记接下来的详细说明。
邮件发送服务器 (SMTP 服务器): smtp.gmail.com
使用认证: 是
使用安全连接: 是
用户名: 你的 Gmail 账户 ID (比如 "alice" ,如果你的邮箱为 [email protected])
密码: 你的 Gmail 密码
端口: 587
确切的配置根据应用会有所不同。在本教程的剩余部分,我将向你展示一些在 Linux 上使用 Gmail SMTP 服务器的应用示例。
从命令行发送邮件
作为第一个例子,让我们尝试最基本的邮件功能:使用 Gmail SMTP 服务器从命令行发送一封邮件。为此,我将使用一个称为 mutt 的命令行邮件客户端。
先安装 mutt:
对于 Debian-based 系统:
$ sudo apt-get install mutt
对于 Red Hat based 系统:
$ sudo yum install mutt
创建一个 mutt 配置文件(~/.muttrc),并和下面一样,在文件中指定 Gmail SMTP 服务器信息。将 替换成自己的 Gmail ID。注意该配置只是为了发送邮件而已(而非接收邮件)。
$ vi ~/.muttrc
set from = "@gmail.com"set realname = "Dan Nanni"set smtp_url = "smtp://@smtp.gmail.com:587/"set smtp_pass = ""
一切就绪,使用 mutt 发送一封邮件:
$ echo "This is an email body." | mutt -s "This is an email subject" [email protected]
想在一封邮件中添加附件,使用 "-a" 选项
$ echo "This is an email body." | mutt -s "This is an email subject" [email protected] -a ~/test_attachment.jpg
使用 Gmail SMTP 服务器意味着邮件将显示是从你 Gmail 账户发出的。换句话说,收件人将视你的 Gmail 地址为发件人地址。如果你想要使用自己的域名作为邮件发送方,你需要使用 Gmail SMTP 转发服务。
当服务器重启时发送邮件通知
如果你在 虚拟专用服务器(VPS)
上跑了些重要的网站,建议监控 VPS 的重启行为。作为一个更为实用的例子,让我们研究如何在你的 VPS
上为每一次重启事件建立邮件通知。这里假设你的 VPS 上使用的是 systemd,并向你展示如何为自动邮件通知创建一个自定义的 systemd
启动服务。
首先创建下面的脚本 reboot_notify.sh,用于负责邮件通知。
$ sudo vi /usr/local/bin/reboot_notify.sh
#!/bin/sh
echo "`hostname` was rebooted on `date`" | mutt -F /etc/muttrc -s "Notification on `hostname`" [email protected]
$ sudo chmod +x /usr/local/bin/reboot_notify.sh
在这个脚本中,我使用 "-F" 选项,用于指定系统级的 mutt 配置文件位置。因此不要忘了创建 /etc/muttrc 文件,并如前面描述的那样填入 Gmail SMTP 信息。
现在让我们创建如下一个自定义的 systemd 服务。
$ sudo mkdir -p /usr/local/lib/systemd/system$ sudo vi /usr/local/lib/systemd/system/reboot-task.service
[Unit]
Description=Send a notification email when the server gets rebooted
DefaultDependencies=no
Before=reboot.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/reboot_notify.sh
[Install]
WantedBy=reboot.target
在创建服务后,添加并启动该服务。
$ sudo systemctl enable reboot-task$ sudo systemctl start reboot-task
从现在起,在每次 VPS 重启时,你将会收到一封通知邮件。
通过服务器使用监控发送邮件通知
作为最后一个例子,让我展示一个现实生活中的应用程序,Monit,这是一款极其有用的服务器监控应用程序。它带有全面的 VPS 监控能力(比如 CPU、内存、进程、文件系统)和邮件通知功能。
如果你想要接收 VPS 上由 Monit 产生的任何事件的邮件通知,你可以在 Monit 配置文件中添加以下 SMTP 信息。
set mailserver smtp.gmail.com port 587
username "" password ""
using tlsv12
set mail-format {
from: @gmail.com
subject: $SERVICE $EVENT at $DATE on $HOST
message: Monit $ACTION $SERVICE $EVENT at $DATE on $HOST : $DESCRIPTION.
Yours sincerely,
Monit
}
# the person who will receive notification emails
set alert [email protected]
这是一个因为 CPU 负载超载而由 Monit 发送的邮件通知的例子。
6. Linux 中的逻辑卷 LVM 管理完整初学者指南
这是 Linux 中 LVM(逻辑卷管理)的完整初学者指南。
在本教程中,您将了解 LVM 的概念、它的组件以及为什么要使用它。
我不会仅限于理论上的解释,我还将展示在 Linux 中创建和管理 LVM 的动手示例。
简而言之,我将为您提供在现实世界中开始使用 LVM 所需的所有必要信息。
LVM 代表逻辑卷管理。这是管理存储系统的另一种方法,而不是传统的基于分区的方法。在 LVM 中,您无需创建分区,而是创建逻辑卷,然后您可以像挂载磁盘分区一样轻松地将这些卷挂载到文件系统中。
LVM 包含三个主要组件:
尽管该列表由三个部分组成,但其中只有两个是分区系统的直接对应部分,下表记录了这一点。
物理卷没有任何直接对应物,但我很快就会谈到这一点。
LVM 的主要优点是调整卷或卷组的大小非常容易。它抽象出了所有丑陋的部分(分区、原始磁盘),并为我们留下了一个中央存储池可供使用。
如果您曾经经历过分区大小调整的恐惧,那么您会想要使用 LVM。
这篇文章不仅仅是理论。在此过程中,我将展示实际的命令示例,学习某些东西的最佳方法是亲身实践。为此,我建议您使用虚拟机。
为了帮助你,我已经准备了一个简单的 Vagrantfile,你可以用它来用 VirtualBox 启动一个非常轻量级的虚拟机。此虚拟机具有三个额外的磁盘,您和我可以将它们用于下面的命令示例。
在文件系统的某处创建一个目录,并将以下内容保存在该文件中,名为Vagrantfile.
或者,如果您愿意,可以使用wget或curl从我的 gist 下载文件。
确保你安装了Vagrant和VirtualBox。
一旦 Vagrantfile 就位,将环境变量设置VAGRANT_EXPERIMENTAL为disks.
最后,使用以下命令启动虚拟机(确保您与 Vagrantfile 位于同一目录中):
机器运行后,您可以使用vagrant sshSSH 连接到它并运行本文中的示例命令。
完成后橡坦咐请记住vagrant destroy从与 Vagrantfile 相同的目录运行。
在您可以使用任何命令之前,您需要安装该lvm2软件包。这应该预装在大多数现代发行版中,尤其是基于 Ubuntu 的发行版中。但是,在继续之前,我不得不提到这一点。要安装lvm2,请查阅您的发行版的文档。
对于这个动手演练,我构建了一个具有 40G 根存储(不重要)和三个大小为 5G 的外部磁盘的虚拟机。这些磁盘的大小是任意的。
如您所见,我将使用的设备sdc是sdd和sde。
还记得我告诉过你 LVM 包含三个主要组件吗?
是时候一一见他们了。
关于 LVM,您首先需要了解信大的是物理卷。物理卷是用于实现抽象即逻辑卷的原材料或构建块。简单来说,物理卷是 LVM 系统的逻辑单元。
物理卷可以是任何东西,原始磁盘或磁盘分区。创建和初始化物理卷是一回事。两者都意味着您只是在为进一步的操作准备构建块(即分区、磁盘)。这将在瞬间变得更加清晰。
实用程序:pv所有管理物理卷的实用程序都以P hysical Volume的字母开头。例如pvcreate, pvchange,pvs等pvdisplay。
您可以使用原始未分区磁盘或分区本身来创建物理卷。
正如我之前提到的,我的虚拟机连接了三个外部驱动器,让我们从/dev/sdc.
我们使用pvcreate命令来创建物理卷。只需将设备名称传递给它即可。梁纯
你应该看到这样的东西:-
接下来我将/dev/sdd分成相等的部分。使用任何工具cfdisk,,,等parted,fdisk有很多工具可以完成这项工作。
您现在可以在一个步骤中从这两个分区中快速创建另外两个物理卷,同时将这两个设备传递给pvcreate。
看一看:-
您可以使用三个命令来获取可用物理卷的列表pvscan,pvs和pvdisplay。您通常不需要向这些命令传递任何内容。
pvscan:-
pvs:-
pvdisplay:-
正如您所看到的,除了列出物理卷之外,这些命令还为您提供了大量有关这些卷的其他信息。
pvremove您可以使用该命令删除物理卷。就像pvcreate,只需将设备(初始化为物理卷)传递给pvremove命令。
为了演示,我将从/dev/sdd2列表中删除。
输出应与此相同:-
现在列出物理卷sudo pvs
/dev/sdd2不再在这里。
卷组是物理卷的集合。它是 LVM 中的下一个抽象级别。卷组是结合了多个原始存储设备的存储容量的存储池。
实用程序:所有卷组实用程序名称都以 开头vg,代表卷组,例如、等。vgcreatevgsvgrename
卷组是使用该vgcreate命令创建的。的第一个参数vgcreate是您要为该卷组指定的名称,其余的是要支持存储池的物理卷的列表。
例子:-
列出卷组类似于列出物理卷,您可以使用具有不同详细级别的不同命令vgdisplay、vgscan和vgs。
我个人更喜欢vgs命令,sudo vgs
您可以使用以下命令列出连接到特定卷组的所有物理卷:-
例子:-
您还可以获得物理卷的计数。
例子:-
扩展卷组意味着向卷组添加额外的物理卷。为此,vgextend使用该命令。语法很简单:-
让我们将lvm_tutorial音量扩大/dev/sdd2.
专注于输出:-
在物理卷部分,我们最终将其/dev/sdd2作为物理卷删除,但必须将分区或原始磁盘初始化为物理卷,否则 LVM 将无法将其作为卷组的一部分进行管理。所以在将它添加到卷组之前vgextend做好准备。/dev/sdd2
现在列出附加到此卷组的物理卷,以确保安全。
输出:-
/dev/sdd2现在按预期在列表中。
就像扩展一个卷组意味着添加另一个物理卷一样,减少它意味着删除一个或多个物理卷。
我们使用vgrece命令来执行此操作。一般语法如下:-
让我们删除物理卷/dev/sdc和/dev/sdd1.
例子:-
再次列出物理卷。
输出:-
那两个物理卷不见了。
现在,为了本文的其余部分,将这两个物理卷添加回来。
vgremove您可以使用该命令删除逻辑卷。
现在不要运行此命令,否则您必须重新创建卷组。如果您想对其进行测试,请在本文的最后运行它。
这是您将主要使用的内容。逻辑卷就像一个分区,但它不是位于原始磁盘之上,而是位于卷组之上。你可以,
在本节中,您将学习,
实用程序 :所有卷组实用程序名称都以 开头lv,代表逻辑卷。例如, ,等等, ,等等
lvcreate使用该命令创建逻辑卷。常用的语法如下所示,
在虚拟机上运行以下命令:
示例输出:
正如我之前所说,您可以将文件系统放在逻辑卷上,也可以将其挂载到文件系统的任何位置。
/dev/ / 创建后,您可以在路径中找到逻辑卷。例如,在我们的例子中,音量将在 /dev/lvm_tutorial/lv1 .
现在您可以像使用任何分区一样使用它。用ext4格式化,
将它安装在当前目录结构中的某个位置,例如/mnt,
您可以使用命令扩展逻辑卷lvextend并使用命令减小其大小lvrece。或者,您可以使用单个命令lvresize来完成这两项任务。
首先让我们看看卷组中是否还有剩余空间。
输出:-
根据输出,我还有一些空间,所以让我们将卷大小增加 2GB。
请记住,逻辑卷仍安装在/mnt.
使用以下命令调整卷大小:
一般语法是这样的:
后面的符号 + 或 --L取决于您是尝试增加音量还是分别减小音量。
卷大小增加后,文件系统也必须调整大小。对于 ext4,要使用的命令是resize2fs.
输出:
减少逻辑卷是一项稍微复杂的任务,我不会在本文中讨论这个问题。我将把这个卷的大小减少 1GB。
lvremove您可以使用该命令删除逻辑卷。命令语法如下:-
在虚拟机上运行此命令:-
输出:-
在逻辑卷、物理卷和卷组上还有许多其他操作可行,但不可能将所有这些都写到一篇文章中。
我/dev/sde在虚拟机中为您多留了一个磁盘,使用它,练习本文中的一些命令,创建一个新的卷组,扩展一个现有的卷组,只是练习。
我希望这篇文章对你有所帮助,如果你想在以后看到更多关于这方面的内容,请在下面的评论部分告诉我。