这本书还是去年程序员节的时候女朋友买的,后来我就拿来看了。看完本书,对Linux的文件系统、逻辑卷管理等有了基本的了解,会使用几十个基本的指令,如df、ifconfig、grep等,能编写简单的Shell脚本。大部分常用的指令主要集中在前五章,后面的内容光靠看一遍再练一遍不太可能就记住,还得在实际环境中多操作才会熟练。不过参照后面章节,也能实现像磁盘划分、逻辑卷管理、防火墙设置、流量 监控、远程连接服务器、文件传输和共享等需求。本书定位为Linux入门书籍,值得肯定,但在学习过程中往往会出现一些书中未提及的问题,也会锻炼读者的排错能力。
全书分为20章:
主要是虚拟机的安装,一般用到VM virtual box或者VM Ware这两个虚拟机软件,前者免费,目前6.0版本兼容性最佳,在安装时会出现鼠标“消失”的问题,需要把默认设置:设置–显示–显卡控制器 更改为“VBoxVGA”选项,再重新启动后鼠标就显示了。Linux中相关系统、软件配置文件一般存放在/etc/目录 下,对于刚安装的Linux系统,首先需要进行网络设置(也可以默认dhcp,由虚拟机自动分配IP),修改/etc/sysconfig/network-scripts/下的文件,我装的是CentOS7,所以这个文件是ifcfg-enp0s3。在这里贴一下我现在的配置,以后查找起来也方便,其中需要修改的主要是IPADDR、BOOTPROTO、NETMASK、GETWAY、ONBOOT,配置完需重启网络,可执行systemctl restart network
。
其次就是配置yum仓库(软件库),并将其加入开机自启。我的虚拟机没设置联网,所以这里记录的是配置本地的ISO镜像仓库。
mkdir -p /media/cdrom
创建一个用来挂载的目录mount /dev/cdrom /media/cdrom
echo "/dev/sr0 /media/cdrom iso9660 defaults 0 0" >> /etc/fstab
简略介绍了什么是shell:充当人与内核的翻译官。
常用指令 :
man 查看帮助内容信息
echo 在终端输出字符串或者变量提取后的值
date 显示或设置系统的时间or日期
reboot 重启
poweroff 关机
wget 在终端下载网络文件
ps 查看系统中进程状态
top 动态监视进程活动 & 系统负载等信息
pidof 查询指定服务的进程PID值
kill、killall 终止指定服务进程(all为全部进程,kill后接pid值,killall接进程名)
ifconfig 查看网卡信息 & 网络状态
uname 查看系统内核 & 版本信息
uptime 查看系统当前时间 & 已运行时间 & 启用终端数 & 平均负载
free 查看内存使用情况
who 查看当前登录人信息
last 查看本机的登录记录
history 查看历史执行命令(1000条)(修改/etc/profile的HISTSIZE可以更改最多显示条数)
sosreport 收集系统架构 & 配置信息 & 输出诊断文档
pwd 当前路径
cd 切换路径
ls 显示目录中文件信息
cat 查看纯文本文件(内容较少)
more 查看纯文本文件(内容较多)
head 查看纯文本文件前N行
tail 查看纯文本文件后N行
tr 替换纯文本文件中字符(只读,保存需另加指令)
wc 统计文本的行数、字数、字节数
stat 查看存储信息 & 时间信息等
cut 按列提取文本字符
diff 比较多个文本的差异
touch 对已存在的文件设置时间,不存在的则创建空白文件
mkdir 创建空白目录
cp 复制
mv 剪切 or 重名名
rm 删除
dd 指定大小 & 个数的数据块来复制或转换文件 :dd if=/dev/zero of=560_file count=1 bs=560M
file 查看文件类型
tar 打包 or 解压: 打包 tar -czvf etc.tar.gz /etc
解压 tar -xzvf etc.tar.gz -C /root/etc
grep 用关键词搜索匹配的行
find 按指定条件查找文件
以上是这一章讲的常用的一些指令
输入输出重定向:
标准输入重定向:STDIN
命令<文件 文件作为输入
命令<<分界符 遇到分界符停止
命令<文件1>文件2 将文件1作为输入,并将标准输出到文件2
标准输出重定向:STDOUT、错误输出重定向:STDERR
命令>文件 将输出写入文件中(清空原文件)
命令2>文件 将错误输出写入文件中(清空原文件)
命令>>文件 将输出写入文件中(追加到文件末尾)
命令2>>文件 将错误输出写入文件中(追加到文件末尾)
命令>>文件 2>&1 将输出和错误写入文件中(追加到文件末尾)
管道命令符:
“命令A|命令B” 将左边的输出当作右边的输入
命令行的通配符:
" * " 匹配0或多个字符 " ? “匹配一个字符
常用的转义字符:
反斜杠(\) 使 后面的一个变量原样输出
单引号(’’) 单引号内的字符原样输出
双引号(”") 保留变量,不进行转义
反引号(``) 执行反引号中的命令,并返回结果(和$()
一样的效果)
这张主要介绍了vim编辑器和Shell脚本中常用的运算符、流程等语法。
命令 | 作用 |
---|---|
dd | 删除(剪切)光标所在行 |
5dd | 删除(剪切)从光标开始的5行 |
yy | 复制光标所在行 |
5yy | 复制光标开始5行 |
n | 显示搜索到的下一个字符串 |
N | 显示搜索到的上一个字符串 |
u | 撤销上一步操作 |
p | 粘贴到光标处 |
末行模式中常用指令
命令 | 作用 |
---|---|
:wq! | 强制保存退出 |
set nu | 显示行号 |
:set nonu | 不显示行号 |
:整数 | 跳转到该行 |
?/one/two/g | 将该行所有的one替换成two |
?字符串 | 从下到上搜索该字符串 |
/字符串 | 从上到下搜索该字符串 |
vim example.sh
.sh
后缀,首行#!告诉系统使用何种Shell解释器来执行该脚本。bash example.sh
./example.sh
运算符 | 作用 |
---|---|
-eq | 是否等于 |
-ne | 是否不等于 |
-gt | 是否大于 |
-lt | 是否小于 |
-le | 是否小于等于 |
-ge | 是否大于等于 |
= | 字符串内容是否相同 |
!= | 字符串内容是否不同 |
-z | 字符串内容是否为空 |
流程控制语句:
单分支if:
多分支if:
for循环:
while循环:
case条件测试:
计划任务:
一次性计划创建:
echo "systemctl restart network" | at 18:00
删除用atrm指令
长期性计划任务
创建、编辑用crontab -e(加-u可编辑他人计划)
查看用crobtab -l
删除用crobtab -r
这一章主要讲的是对用户、文件权限的管理
指令 | 作用 |
---|---|
useradd | 创建用户 |
groupadd | 创建用户组 |
usermod | 修改用户属性 |
passwd | 修改用户密码、过期时间、认证信息 |
userdel | 删除用户 |
echo “newpasswd”|passwd --stdin username
常用更改文件权限指令:
指令 | 作用 |
---|---|
chmod | 修改文件、目录的属性 |
chown | 修改文件、目录的所有者、所属组 |
chattr | 设置文件的隐藏权限(lsattr查看) |
setfacl | 设置文件的ACL规则(getfacl查看) |
访问控制列表(ACL):主要用于对指定用户/用户组进行单独的权限控制。
第六章:存储结构和磁盘划分
本章主要介绍了
介绍利用RAID5、RAID10技术部署磁盘阵列,在读写速度、成本、安全性方面均衡。LVM(逻辑卷管理器)用于对硬盘分区进行管理,解决硬盘在创建分区后不易修改大小的缺陷。LVM技术在硬盘分区和文件系统中添加一个逻辑层,提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。部署了逻辑卷,可以对卷进行扩容、缩小、快照备份以及删除操作。
RAID5技术原理:把硬盘设备的数据奇偶校验信息保存到除自身的每一块硬盘设备上,当其中某一块设备损坏后不至于出现致命缺陷。
RAID10技术原理:是RAID0和RAID1的组合体,至少需要4块硬盘。先两两制作成RAID1阵列,以保证数据的安全性;在对两个RAID1阵列实施RAID0技术,来提高硬盘的读写速度。理论上,只要坏的不是同一组中的所有硬盘,那损坏率最高可以达到50%。
本章主要介绍了用iptables或者firewalld工具管理Linux防火墙,二者掌握其中一种即可。而firewalld可以终端管理,也有图形话管理界面,这里记录一下几个利用firewalld操作的例子:
firewall-cmd --get-default-zone
查看firewalld服务当前所在的区域
firewall-cmd --permanent --zone=external --change-interface=enp0s3
将enp0s3网卡的默认区域改为external,并在系统重启后生效 。
本章主要介绍了如何使用nmtui配置网络参数、配置两块网卡,配置ssh,在主机、客户端直接进行远程登录并传输文件。
Apach为老牌的Web服务程序,也是RHEL 5、6、7的默认Web服务程序,其服务的软件包对应httpd,主配置文件为/etc/httpd/conf/httpd.conf。而SELinux安全子系统用来对服务功能、文件资源的访问进行限制,SELinux域限制、上下文使其仅获取到本应获取的资源。
SELinux有三种配置模式,在/etc/selinux/config中设置:
模式 | 说明 |
---|---|
enforcing | 强制启用安全策略模式,拦截不合法请求 |
permissive | 遇到越权访问,只警告而不拦截 |
disabled | 对越权访问不警告也不拦截 |
相关指令:
指令 | 作用 |
---|---|
setenfore | 设置临时SELinux运行模式 |
semanage | 管理SELinux的策略 |
例:semanage fcontext -a -t httpd_sys_content_t /home/wwwroot
本章介绍了什么是文件传输协议(FTP),以及如何部署vsftpd服务程序,并介绍了三种认证模式(匿名开放模式、本地用户模式、虚拟用户模式)的配置方法。其主配置文件为/etc/vsftpd/vsftpd.conf。
Samba服务对应SMB服务协议,11章中的FTP协议主要是用于文件传输,而文件共享需要用到SMB协议。主配置文件为/etc/samba/smb.conf。
本章还介绍了autofs自动挂载服务,在使用的时候自动挂载。
本章详细介绍了DNS域名解析服务,和配置,主配置文件为/etc/named.conf,并介绍了正向解析(根据域名查IP)、反向解析(根据IP查域名)、从服务器和缓存服务器的部署。也介绍了分离解析技术,在不同区域内设置分服务器,让不同地方的 主机访问到相同内容。
DNS域名解析服务采用分布式的数据结构,在执行用户发起的域名查询请求是,具有递归和迭代查询两种方式。
主机到指定DNS服务器之间是递归查询,服务器之间的查询为迭代查询。
动态主机配置协议(DHCP)用于自动管理局域网内主机IP地址、子网掩码、网关地址和DNS等参数。本章讲解了Linux系统中配置部署dhcpd服务程序的方法,如何自动管理IP地址,分配固定IP地址,主要配置文件为/etc/dhcp/dhcpd.conf。其中分配固定IP地址,首先分配一个随机地址,再通过DHCP服务的本地日志文件/var/log/messages查看本次IP地址分配记录,获得其MAC地址,将此MAC地址绑定固定的IP即可。
本章主要讲解电子邮件的传输过程,及如何在Linux系统中收发邮件,其中Postfix程序用来发送邮件,主配置文件为/etc/postfix/main.cf;Dovecot用来收邮件,主配置文件为/etc/dovecot/dovecot.conf。
Squid是一款高性能代理服务软件,用作Web网站的前置缓存服务,能够代替用户向网站服务器请求页面数据并进行缓存(类似于租房子时的中介或者外包,你把需求给我,我这边统一安排,给你结果就行 ,具体实行人是我。),当用户有相同请求时,可以直接将服务器本地的数据交付给用户。主配置文件为/etc/squid/squid.conf,利用Squid,可以控制指定客户端可访问代理服务,也可禁止所有客户访问指定网址,也可模糊匹配,禁止下载指定文件。
透明正向代理(标准正向代理需要设置):在用户没有感知的情况下使用代理服务,由DHCP服务器将网络配置信息分配给客户端主机。(像很多公司管理应该会使用这种方式,监管你的网络活动。)
关于反向代理:一般用于将网站一些静态资源从网站页面中抽离,在其他地方部署缓存节点。原理是把一部分原本向网站源服务器发起的用户请求交给Squid服务器缓存节点来处理。
互联网小型计算机系统接口(iSCSI)是一种将SCSI接口与以太网技术相结合的新型存储技术,可以用来在网络中传输SCSI接口的命令和数据。不仅克服了传统SCSI接口设备的物理局限性,实现了跨区域的存储资源共享,还可以在不停机的状态下扩展存储容量。
iSCSI服务端程序为targetd,iSCSI客户端程序 为initiator。
优点:摆脱了硬盘设备直接通过主板上的总线进行数据传输的物理环境限制,可以把存储资源分给多个服务器使用;
缺点:传输需要网络,所以会受到网速的制约。
MariaDB在性能、操作上和MySQL基本一致,是MySQL逐渐闭源后的免费新起之秀,被广泛使用。
在执行yum install -y mariadb mariadb-server
后需要进行初始化操作:
–设置root管理员在数据库中的密码;
–删除匿名账户;
–删除默认的测试数据库等操作;
–刷新授权列表使修改立即生效。