Linux基础知识大合集

文章目录

  • 1 Linux基础入门
  • 1.1 基础知识
  • 1.2 Linux基础入门
    • 1.2.1 Linux文本编辑工具vi/vim
  • 1.3 Linux系统管理
    • 1.3.1 linux系统基础管理与维护
    • 1.3.2 Linux文件系统介绍及管理文件系统
      • 1.3.2.1 Linux文件目录常用管理命令
      • 1.3.2.2 Linux文件系统之inode,block,superblock
      • 1.3.2.3 Linux文件处理工具
      • 1.3.2.4 Linux文件搜索工具正则表达式:
      • 1.3.2.5 linux文件搜索命令
    • 1.3.3 Linux 用户、组管理
      • 1.3.3.1用户组管理
      • 1.3.3.2 sudo命令详解
    • 1.3.4 Linux文件系统权限管理
    • 1.3.5文本编辑器进阶、压缩与解压缩及包管理
      • 1.3.5.1 vi/vim编辑器
      • 1.3.5.2 压缩工具
      • 1.3.5.3 Linux程序包安装及管理方式
    • 1.3.6 Linux磁盘管理及维护
    • 1.3.7 定时(计划)任务crontab
  • 1.4 Linux 进程管理
  • 1.5 Linux网络服务
    • 1.5.1计算机网络体系结构
    • 1.5.2 子网划分
    • 1.5.3 网络管理相关命令
    • 1.5.4 网络配置文件
  • 1.6 linux安全-iptables
    • 1.6.1 iptables基本用法
    • 1.6.2 iptables之forward转发
  • 1.7 Firewalld防火墙
    • 1.7.1 Firewalld
    • 1.7.2 Firewall实例
  • 1.8 文本三剑客
    • 1.8.1 linux文本处理三剑客之grep
    • 1.8.2linux文本处理三剑客之sed
    • 1.8.3linux文本处理三剑客之awk
  • 1.9 linux shell编程
    • 1.9.1基础知识
    • 1.9.2 变量的算术运算
    • 1.9.3 shell脚本的条件测试
    • 1.9.4 if条件语句
    • 1.9.5 case条件判断语句
    • 1.9.6 for循环语句
    • 1.9.7 while循环语句
    • 1.9.8 break continue exit 循环控制语句
    • 1.9.9 shell函数
    • 1.9.10 Shell 脚本练习100题
  • 1.10 linux常用服务工具
    • 1.10.1 rsync数据同步服务
    • 1.10.2 NTP时间同步服务
    • 1.10.3 SSH服务
    • 1.10.4 FTP服务介绍
    • 1.10.5 NFS网络文件共享储存服务
    • 1.10.6 rsyslog日志服务

1 Linux基础入门

1.1 基础知识

Linux的核心版本号如下:
3.10.0-123.e17.x86_64
主版本.次版本.释出版本.修改版本
Linux发行版(也被叫做GNU/Linux发行版0是基于Linux内核的操作系统
比较著名的版本有:RedHat Linux,CentOS,Debian Linux,Ubuntu.

VMware介绍及环境搭载

CentOS 7安装教程(图文详解)

1.2 Linux基础入门

1.Linux远程连接:我们安装的linux服务器都是在VMware中运行的,每次需要ctrl+Alt 切换到真机,因此我们通过一定的工具来帮助我们连接服务器,承建的ssh工具有SecureCRT,Xshell,MobaXterm.

2.shell能完成对linux操作系统的绝大部分管理
文件管理
用户管理
权限管理
磁盘管理
软件管理
网络管理
linux控制台
命令提示符:
#:root用户,超级管理员
$:普通用户
服务启动或者状态查看
Centos7:
systemctl {start|stop|status|restart} network(服务名)

3.Linux命令语法结构
commond [-options] paramater…
命令 选项 参数

    ls -lih  --all  /root

	1.最左侧的部分,称为命令,或者是一个可以执行的文件
	2.[-option] 选项是可有可无的,一般选项需要加-  或者-- ,
		-:短选项    一般短选项均可以合并执行
		--:长选项
	3.参数:

4.linux哲学思想
一切皆文件

/:是一切文件的起始节点
倒置的树状结构

/etc/sysconfig/network-scripts/     ifcfg-eth0   ens33
	最左侧的斜线/:表示的是一个目录,根目录
	其他斜线/:路径分割符

对于一个文件路径的表示方法:
	绝对路径:以根为起始节点表示出来的路径
	相对路径:从当前位置开始表示的路径

对于文件的文件名命名规则

家目录:
工作目录:
	dirname:
	basename:

5.配置本地yum源:

1、检查镜像文件
2、执行    mount  /dev/sr0  /media   (虚拟机关机之后再次开机需要执行)
	mount -t iso9660 /dev/sr0 /media/
3、cd /etc/yum.repos.d/
   mkdir  bak
   mv C* bak
   vi  yum.repo
   	[base]
	name=Centos6.8
	baseurl=file:///media
	gpgcheck=0
	enabled=1
	保存退出
	

	yum  clean all
	yum  makecache
                            mount  /dev/sr0  /media 

	yum  install  tree -y

内部命令与外部命令 type
在Linux系统中有存储位置的命令为外部命令;
没有存储位置的为内部命令,可以理解为内部命令嵌入在linux的shell中,所以看不到。
Linux基础知识大合集_第1张图片
获取帮助的途径help,man命令
1.help命令:大多数命令可以使用–help来获取帮助
Linux基础知识大合集_第2张图片
2.man命令:以全屏显示在线帮助。
获取ps命令的使用手册在这里插入图片描述

1.2.1 Linux文本编辑工具vi/vim

vi是系统自带的命令,vim是vi的升级版,需要yum安装,默认不提供(yum install vim -y)

vi/vim三种模式:
命令模式 输入模式 末行模式
命令模式–>输入模式:输入a,i,o从命令模式切换到输入模式,a代表光标后插入,i代表在光标前插入,o代表在下一行插入。
输入模式–>命令模式:使用ESC退出
命令模式–>末行模式::进入末行模式,正向搜索使用/+关键字,按n(next)往下翻,使用shift+n(N)上翻,反向搜索使用?+关键字,上翻下翻同/搜索的用法一致。
末行模式–>命令模式:使用ESC退出
输入模式–>末行模式:无非就是先退出输入模式,然后再进入末行模式。

vim的快捷用法:

:% s/old/new/g 在全文中搜索old关键字然后全局替换
/old/new/ 在当前行中查找到old关键字然后替换第一个
/old/new/g 在当前行中查找到old关键字并替换这行中出现的所有old关键字
:num1,num2 s/old/new/g 在num1行到num2行中找到所有old关键字然后替换
切到首行:gg
切到尾行:shift+g
复制:yy 如果要多行可以使用num yy(num指代的是当前光标位置起计算的数) 然后使用p命令进行粘贴
删除:dd 删除当前光标所在行 如果要删除多行,可以使用num dd(num指代的是当前光标位置起计算的数)
设置行号,取消行号:set nu ;set nonu
取消高亮显示搜索:nohlsearch 然后保存退出
向下翻屏:ctrl+f
向上翻屏:ctrl+b

1.3 Linux系统管理

1.3.1 linux系统基础管理与维护

1.补全tab
命令和路径补全命令,给定的打头字符串或者起始路径下,使用tab键补全
2.快捷键
Linux基础知识大合集_第3张图片
3.命令历史 history
history命令:命令用来输出以前执行过的命令
默认是1000行,在.bash_history文件中保存,可通过修改这个文件实现历史命令条数的修改。
-c clear 清除历史命令
-d delete 指定命令的id进行删除
-r read 把文件中的命令读取到历史命令列表中
-w write 把历史命令列表的命令追加到历史文件中
!id 调用历史命令列表中的id对应的命令
!! 调用当前未执行前的命令(即最后一次命令)
!STRING 调用以这个字符串开头的最后一次命令

4.命令别名
alias别命名命令:
通常是用来对我们的命令进行别命名操作,方便以别名使用调用
alias 新命名名称=‘命令’
unalias 新命名名称 取消我们的别命名命令Linux基础知识大合集_第4张图片
5.切换目录
cd ChangeDirectory切换目录
cd path
cd ~ 切换到root家目录
cd - 切换到上一次的目录,相当于返回
cd . .代表切换到当前目录
cd … 切换到父目录(上一级目录)
6.输入输出重定向
输入输出重定向:
输出重定向:> 代表覆盖重定向,如果有内容就覆盖,没有则新加;>> 代表追加重定向,每次重定向的时候把新的内容追加到历史内容的后面
输入重定向: < 使用场景相对输出重定向来说比较少,常用于shell脚本中读取文件内容,做循环遍历处理才使用 << 追加输入

三种I/O设备描述符:
标准输入:0
标准输出:1
标准错误:2
1 > file = > file:默认就是标准输出,代表把标准输出重定向到文件中
2 > file :代表把我们的标准错误输出到文件中

&> file:代表把正确输出和错误输出混合输出到文件中
2>&1 :代表把错误输出和标准输出同时输出到一个文件,也可以理解成把错误输出重定向到标准输出中

/dev/null 空设备:
cat /etc/passwd |grep root > /dev/null
将命令的输出重定向到空设备中,经常用于shell脚本中做判读命令是否执行成功,而不需要命令的返回结果$?

/dev/zero 零设备:
用来构造我们的大文件,提供无限个0给我们,通常使用dd命令完成
dd if=/dev/zero of=file bs=1M count=100

7.命令通配符
常见命令行通配符:

  • 匹配任意长度的任意字符
    ? 匹配任意单个字符
    [] 匹配指定范围内的任意单个字符
    [^] 匹配指定范围外的任意单个字符

[0-9] 数字 = [[:digit:]]
[a-z] 小写字母 = [[:lower:]]
[A-Z] 大写字母 = [[:upper:]]
[a-z0-9] 所有的字母和数字 = [[:alnum:]] alpha+num(字母+数字)
[a-zA-Z] 所有字母 = [[:alpha:]]
[[:space:]] 所有空白字符
[[:punct:]] 所有标点符号
[1] 代表除过所有大写字母外的任意字符
[^0-9] 代表除过所有数字外的任意字符
[2] 代表除过所有字母和数字外的任意字符
在这里插入图片描述
8.常见系统管理类命令
1.显示指定工作目录下内容的命令 ls
ls (list)
ls -l 列出详细的属性信息 = ll
ls -a 列出所有文件,包含隐藏文件
ls -h 以人类可读的方式显示文件的大小信息(K,M,G),通常和参数-l结合使用
ls -t 是以时间的新旧排序,默认是最新的排在前面
ls -r 是倒序排序,通常跟-lt结合使用
ls -d 列出目录本身,不包含目录下的内容
2.显示当前工作目录的命令pwd
print working directory 打印当前工作目录,通常用来辨别自己当前所目录名称,方便做后续处理
3.显示或修改系统时间与日期的命令 date
-s set用来设置时间
+"%Y-%m-%d %H:%M:%S" 格式化输出时间,按照自己设置的格式输出
hwclock = hardware clock
hwclock -w :代表把系统时间写入到硬件时间中,使硬件时间跟系统时间保持一致
hwclock -s :代表把硬件时间写入到系统时间,是系统时间跟硬件时间保持一致
4.passwd命令修改用户密码
-k keeptokens保留token,即让用户即将过期后还可以使用这个密码
-l lock 锁住这个用户让其无法修改密码,只能通过root用户去修改密码
-u unlock 取消这个锁
-f force 强制操作
5.切换用户su命令= switch user
su - 跟不加- 的区别:加-使得切换用户后,具有用户的环境变量,不加则没有
su -c command user 切换用户后执行某个命令,注意如果需要执行user用户的相关变量,则用户前还要加-。
6.清除屏幕信息的命令 clear
7.显示目前登录到系统的用户的命令 who,w, last(历史登录信息)
8.显示操作系统相关的系统命令:uname
-a, --all print all information, in the following order,
except omit -p and -i if unknown:
-s, --kernel-name print the kernel name 内核名称
-n, --nodename print the network node hostname 网络节点主机名称
-r, --kernel-release print the kernel release 内核发布版本
-v, --kernel-version print the kernel version 内核版本
-m, --machine print the machine hardware name 机器硬件平台名称
-p, --processor print the processor type or “unknown” 处理器平台
-i, --hardware-platform print the hardware platform or “unknown” 硬件平台
-o, --operating-system print the operating system 操作系统
9.输出系统运行信息的命令uptime
在这里插入图片描述
10显示开机信息的命令dmesg
11.free命令用来显示内存的占用及剩余,通常常用参数为-m,还有-h,-k,-gg
12.显示系统进程瞬间的运行动态的命令ps
ps -A 跟 -e(every) 效果一样,都是所有进程
-a 仅显示终端机的进程
-u user 结合用户去使用
-aux 列出当前系统所有用户进程的详细信息
-ef 列出每个进程的详细输出
13.实时监控系统处理器状态的命令top
按照CPU的使用高低排名,shift+p
按照mem的使用高低排名,shift+m

1.3.2 Linux文件系统介绍及管理文件系统

目录及作用:
/etc/ 存放系统配置脚本或者初始化脚本
/bin/ 存放二进制脚本命令
/boot/ 存放操作系统映像文件,主要用户操作系统启动,加载内核
/home/ 用户家目录,所有新创建的用户的家目录都会分配在这个目录下
/lib/ 主要存放二进制执行脚本依赖的库文件
/media/ 一些热插拔介质的挂载点,比如CD-ROMS
/mnt/ 临时挂载点
/opt/ 可选择的目录,一般存放用户的安装包比较多
/proc/ 将进程和内核的信息以文件的形式呈现的虚拟文件系统,常见文件如cpuinfo,meminfo
/root/ root用户的个人家目录
/run/ 运行时的变量数据,通常存放用户的登录信息和进程信息
/sbin/ 存放系统二进制可执行命令,跟/bin/目录作用一样,如fsck,route
/srv/ 存放服务的数据或脚本等
/sys/ 存放硬件设备相关的信息
/tmp/ 临时文件目录,不建议存放重要的数据
/usr/ 用户的目录,存放用户的相关数据,比如用户的二进制执行命令,依赖的库文件等
/var/ 变量文件存放目录,比如日志(/var/log),邮件(/var/mail/)等

/etc目录常见的文件:
/etc/passwd 主要是存放用户名密码相关的信息,这里的密码是用x代替的,真实的密码加密保存在/etc/shadow文件中
/etc/shadow 主要存放用户密码
/etc/inittab 初始化脚本,比如网络,键盘,字体
/etc/profile 系统环境变量文件
/etc/shells 主要记录当前系统支持的几种shell类型
/etc/crontab 记录我们的定时任务的配置文件
/etc/hosts 主机名和IP的映射关系
/etc/issue 登录符提示信息
/etc/sysconfig/network-scripts/ifcfg-ens33|eth0 网卡配置文件
/etc/yum.repos.d/ 主要存放我们的yum源配置文件

/proc 伪文件系统目录,记录操作系统相关的信息
/proc/cpuinfo CPU的详细信息输出
/proc/meminfo 内存的详细信息输出

/var目录 记录变量文件
/var/log 主要记录系统的一些相关日志
/var/spool/mail 记录用户的邮件信息

1.3.2.1 Linux文件目录常用管理命令

1.文件目录相关的操作命令:mkdir
-p 代表创建目录的时候连同父目录一起创建
2.rm 删除命令
rm -f force 强制性删除
rm -r recursive 递归的删除
3.cp 复制命令
cp -f 强制性的覆盖
cp -r recursive 递归的复制
cp -p 带父属性的复制
4.touch 创建文件
touch avc{1…10}dd 批量创建
5.diff 命令用来比对文件的不同
6.grep命令 通常用来过滤搜索关键字在文件中或者接受命令的输出作为grep命令的输入
grep -v 反向过滤
grep -n 打印行号
grep -o 仅打印匹配的字符
grep -r 递归搜索
grep -l 列出匹配到的文件
grep -rl keyword path 用来根据关键字在指定目录中搜索我们的文件
grep -E 开启正则表达匹配 *^

grep -A after后几行
grep -A 2 root /etc/passwd
grep -B before前几行
用法同上个列子
grep -C contents前后各几行
grep -C 2 root /etc/passwd
7.ln link链接文件,分为硬链接和软链接
硬链接:A文件和B文件使用同一个inode号,删除文件时,必须要删除所有文件,才能删除整个文件。
软链接:类似于windows的快捷方式,删除源文件链接文件也不可用,删除链接文件,源文件也可以使用。

ln 源文件 链接文件(默认是硬链接)
ln -s 创建软链接文件
ll命令查看到详细信息的第一个参数是l开头的时候,就是一个链接文件
8.file用来查看文件类型
9.在指定目录下查找我们指定类型文件find
find path -name “” -type file|directory -size +|-100M
find / -type f -size +100M -exec rm -fr {} ;
-ok与-exec用法差不多,在执行命令之前给用户一个提示,然后再执行命令
-name 指定名称去搜索,可以结合正则使用*.sh, .
-perm 根据指定的权限去搜索对应的文件
-size 根据指定的大小去过滤搜索文件 大于多少用+ 小于多少用- 等于多少直接写值
-mtime 根据修改时间去过滤 跟size用法差不多
-ctime 根据文件修改权限的时间去过滤 同上
-atime 访问时间过滤 同上
-user
-group
-type file link directory block socket
-nouser
10.split 切割命令,用来切割大文件

1.3.2.2 Linux文件系统之inode,block,superblock

磁盘上有很多的这个扇区,每个扇区存储512字节数据,8个连续扇区组成一个block(块),操作系统读取时候不是一个一个扇区去读取,
而是直接读取一个块。
inode存放文件元数据的信息
superblock超级块,记录真个文件系统信息,包含inode与block的使用总量等信息

1.3.2.3 Linux文件处理工具

1.cut命令:文件内容或字符串的切割
cut -d “分隔符” -f"域或列"Linux基础知识大合集_第5张图片
2.sort命令: 排序
-r reverse反向排序
-n 以纯数字进行排序
-k 指定以哪个区间(域)进行排序
-u uniq 去重
-t 指定输出的分割符
-o 将结果输出到文件

3.uniq命令: 去重
常用参数-c count计数
uniq命令通常结合sort命令使用,通常是先排完序后进行去重,否则直接去重可能会失败或者不准确。
不进行排序就直接去重,统计的值就不准确。因为uniq去重只能去除连续的相同字符串。不是连续的字符串,则会统计多次。
4.wc命令:wordcount 字符计数命令
通常加-l参数用来计数行数,当然也可以计数字节数(-c character),字符数(-m ),字数(-w word)。

1.3.2.4 Linux文件搜索工具正则表达式:

. 代表任意单个字符
[] 代表指定范围内的任意单个字符
[^] 代表指定范围外的任意单个字符

  • 匹配前面的字符任意次
    .* 匹配任意长度的任意字符
    ? 匹配前面的字符至多1次,即0次或1次
    + 匹配前面的字符至少1次,即1次或多次
    {m} 匹配前面的字符m次
    {m,} 匹配前面的字符至少m次
    {m,n} 匹配前面的字符至少m次,至多n次
    {0,n} 匹配前面的字符至少0次,至多n次
    Linux基础知识大合集_第6张图片
    位置锚定符:
    ^: 行首锚定符,用于模式最左侧
    : 行 尾 锚 定 符 , 用 于 模 式 最 右 侧 p a t t e r n : 行尾锚定符,用于模式最右侧 ^pattern :pattern: 匹配整行
    ^ : 匹 配 空 白 行 [ [ : s p a c e : ] ] ∗ : 匹配空白行 ^[[:space:]]* :[[:space:]] :匹配空行或空白字符的行

grep -Ev “$|#” file 过滤空行和注释行后的内容

词首词尾锚定符:
<或\b : 词首锚定符,用于单词左侧匹配
>或\b : 词尾锚定符,用于单词右侧匹配
完整单词的匹配

1.3.2.5 linux文件搜索命令

1.which查找可执行的文件
2.whereis查看文件的位置

1.3.3 Linux 用户、组管理

1.3.3.1用户组管理

添加用户: useradd
-u: 指定uid
-g: 指定gid
-G: 指定附加组
-c: 指明注释信息
-d: 指定用户家目录
-s:指定用户默认shell
-r: system 创建系统用户

删除用户:userdel
-r:移除家目录
-f: 强制性删除用户,避免一些其他原因导致删除失败

修改用户:usermod
-u: 指定uid
-g: 指定gid
-G: 指定附加组
-c: 指明注释信息
-d: 指定用户家目录
-s:指定用户默认shell
-r: system 创建系统用户
-a:追加新的附加组,与-G结合使用
-m: 移动家目录到新的目录,与-d一起使用
-l: 修改用户名
-L: 给用户密码加锁,/etc/passwd中的密码列前将多一个!
-U: 解锁用户密码

添加用户组:groupadd
-g: 指定用户组的gid
-r: 创建系统组

删除用户组:groupdel

修改用户组:groupmod
-g: 指定gid
-n: newname修改新的组名
查看用户及用户组id:id + username
系统用户id分配:centos7 1-999 centos6 1-499
普通用户id分配:centos7 1000-60000 centos6 500-60000

passwd命令用法:
-l:锁定用户密码
-u:unlock解锁用户密码
-d:delete清除用户密码串
-e: expire过期日期限定
-i: inactive非活动期限
-n: 最短使用天数
-x: 最长使用天数
-w: warning警告期限

root用户通过此命令可直接给用户nebula指定密码111111。
echo “111111” | passwd --stdin nebula

gpasswd组密码命令:
gpasswd -a username group向组中添加用户
gpasswd -d username group向组中删除用户

newgrp 临时切换指定的组为基本组

chage 更改用户密码过期信息
-d: lastday密码最后修改日期
-E: 密码过期时间
-I: 设置密码过期后多长时间处于不活跃状态
-m: min密码可以修改的最小天数
-M max密码可以修改的最大天数
-W: 密码过期前,收到警告的天数

id查看用户的id,gid
id -u 查看用户的uid
id -g 查看用户组的gid
id -G 查看所属所有组的id
id -n 显示名字而非id,通常跟u/g/G结合使用

/etc/passwd文件存放用户的相关信息,其中密码放在单独文件中存放/etc/shadow中

1.3.3.2 sudo命令详解

允许普通用户使用超级权限的工具,允许系统管理员让普通用户执行一些或者全部的root命令,如reboot,su。sudo
配置文件是/etc/sudoers
给用户添加权限
root ALL=(ALL) ALL
第一个ALL:所有主机
第二个ALL:所有用户
第三个ALL:所有命令
vim /etc/sudoers
Linux基础知识大合集_第7张图片

1.3.4 Linux文件系统权限管理

UGO
user group others


rwx rwx rwx(读写执行)
421 421 421
每一位权限码总和不会超过7

查看文件权限:ls -l 或者ll

chmod修改文件权限
数值方式修改:
chmod 777 filename
授权方式(字母方式)修改:
chmod u+/-/=rwx filename
chmod a±=rwx filename

chown修改文件属主
chown [owner][:[group]] filename
chown root:root filename
chown root filename
-R 代表递归修改 连同目录下的文件属性也一同修改

chgrp修改文件属组
chgrp groupname filename

权限掩码umask=022
文件默认权限666-022=644
目录默认权限777-022=755

umask修改
umask 023

特殊权限:
setUID
通常是附加给二进制可执行程序,让我们的程序在执行时从执行者变为所有者,即具有当前执行用户的用户权限。
比如passwd命令可以让普通用户设置密码,设置密码时passwd程序的所有者从root变更为执行用户。
chmod u+s binaryfile s的特殊权限会出现在属主的x权限位上,比如rwsr–r--
注意:给目录或者其他文件加这个特殊权限,没有任何意义

setGID
除了给二进制程序添加,也可以给目录添加,同时目录下的文件继承此目录的权限,比如在这个目录下新建的文件的属主属组跟目录的权限保持一致。
通过chmod g+s dir/binary 实现赋权,s出现在用户组权限的x权限位上,比如rwxrwsr–

stickyBit
通常是给others添加这个特殊权限,用来防止误删或者误操作
chmod o+t directory
注意:仅作用于目录,只有root,文件所有者,或者目录所有者才能删除

acl访问控制列表
用来补充UGO模型实现不了的权限
设置acl权限:
setfacl -m u:username:rwx filename/dirname
查看acl权限:
getfacl filename/dirname
删除acl权限:
setfacl -x u:username
删除所有acl权限:
setfacl -b

练习
Linux基础知识大合集_第8张图片
现要求为各部门、员工建立相应的工作文件夹,要求如下:
1.所有目录、文件保存在统一的一个文件夹下
2.每个部门拥有一个独立的文件夹
3.不同部门之间不可访问各自文件夹
4.每个员工在所在部门文件夹下拥有一个所属文件夹
5.同部门不同员工之间可以查看文件夹内容,但不可修改,用户仅可以修改自己的内容
6.Boss组用户对所有组的文件均有访问权限,但无修改权限
Linux基础知识大合集_第9张图片
Linux基础知识大合集_第10张图片
Linux基础知识大合集_第11张图片
Linux基础知识大合集_第12张图片Linux基础知识大合集_第13张图片

1.3.5文本编辑器进阶、压缩与解压缩及包管理

1.3.5.1 vi/vim编辑器

安装vim yum install vim

e94a3b86037783e5e23047.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl81MjEwOTg4NA==,size_16,color_FFFFFF,t_70)
Linux基础知识大合集_第14张图片
Linux基础知识大合集_第15张图片
Linux基础知识大合集_第16张图片

1.3.5.2 压缩工具

1.zip命令:文件经它压缩后会另外产生具有:.zip 扩展名的压缩文件

Linux基础知识大合集_第17张图片
Linux基础知识大合集_第18张图片
zip 包名 文件名称
-r 递归处理目录及目录下的文件
-m 压缩后删除源文件
-d 删除压缩包中指定的文件 比如 zip -d 包名.zip 文件名(要删除的)
-x: 压缩时指定排除某个文件 用法:zip files.zip * -x 5.txt

unzip解压zip包
unzip 包名
-n 解压缩不覆盖源文件
-d 指定文件解压后存储的目录
-v 查看详细过程或者查看压缩文件目录,并比解压
-o 不询问用户,直接覆盖解压
tar 命令用来打包、解包
tar -czvf 压缩的包名 打包的文件或目录
-c create
-z gz进行压缩
-v verbose显示详细过程
-f 通常和-c结合使用,且-f必须放置参数最后

2.gzip/gunzip
后缀名是.gz格式
gzip * 代表把当前目录下的所有文件压缩成跟文件名一致的.gz包
gzip -dv * 代表把之前压缩过的文件解压并显示详细信息
gzip -l * 代表把压缩文件中的文件列出
gzip -rv dir 实现递归压缩,包括目录下的子目录及文件也会压缩,压缩成同文件名的压缩包

gunzip 包名
gunzip -l 查看压缩包中的压缩列表
gunzip解压缩后 原压缩包不存在
-r 递归解压
-v 详细信息
-f 强制性覆盖输出文件

3.bzip2/bunzip2
默认的压缩格式是.bz2
bzip2 filename
-z 强制性压缩
-d 解压缩,跟-z相反的过程
-v 详细过程
-t 测试解压是否正常,并不会真正进行解压
-k keep保留源文件后进行压缩
-c 将文件内容输出到标准输出(屏幕),源文件(包)仍然保留,通常跟-d结合使用

bunzip2
命令参数跟bzip2参数大致一样,具体查看bunzip2 --help

4.xz/unzx
-z compress强制性压缩
-d uncompress强制性解压缩
-t 测试压缩包的完整性
-l 列出.xz文件的信息
-k 压缩时保留源文件
-f 强制覆盖原来的输出文件
-c 将文件内容输出到标准输出(屏幕),源文件(包)仍然保留,通常跟-d结合使用

5.tar -xvf 包名
tar 命令用来打包、解包
tar -czvf 压缩的包名 打包的文件或目录
-c create
-z gz进行压缩
-v verbose显示详细过程
-f 通常和-c结合使用,且-f必须放置参数最后
-t查看压缩包的文件列表–list
tar -tf 包名

tar -zcvf z代表可以是gzip格式,或者.gz格式
tar -jcvf j代表bz2格式
tar -Jcvf 代表xz格式
不解压包去查看包的文件内容*
zcat zcat支持.gz格式及.zip格式

6.dd命令
dd命令
转化或拷贝文件,适用于大文件的备份或者磁盘、光驱等的备份恢复等
if=inputfile输入文件,默认标准输入
of=outputfile输出文件,默认标准输出
bs=BlockSize块大小,同时指定输入/输出的bytes大小
ibs=InputBlockSize指定输入块的大小
obs=OutputBlockSize指定输出块的大小
count=blocks,仅拷贝block个块,块大小等于ibs指定的字节数

1.3.5.3 Linux程序包安装及管理方式

1、yum

  1. 配置yum仓库(本地或网络均可,如果本地包没有你要安装的包需要改成网络源)
    [base]指定yum仓库名称
    name=Centos6.8 指定名称
    baseurl=file:///media yum源包的路径(这里是本地yum挂载的路径) 网络源是以http://开头的
    gpgcheck=0 是否开启gpgkey的验证,0是不开启,1是开启
    enabled=1 enabled是否可用,1代表可用,0代表不可用

本地yum注意需要把本地的光盘挂载到挂载点,使用mount /dev/sr0 /mnt ,然后使用df -h/mount/blkid查看挂载结果
2) yum clean all清除历史缓存
3) yum makecache创建本地缓存
4) yum install packpagename
Linux基础知识大合集_第19张图片
软件包列表管理
yum list = yum list all 列出当前所有软件包
yum list |grep packagename 过滤需要安装的软件包
yum list installed 代表当前系统已安装的所有软件包
yum list installed | grep packagename 查询软件包是否在当前系统中已经安装的包列表中
yum list available 列出当前系统仓库可用的包
yum list updates 显示已经更新的包
yum list recent 显示最近新增的包

安装软件包
yum install 包名 -y 不询问安装
yum update 包名 升级包

卸载软件包
yum remove 包名

搜索包名
yum search

显示软件包的信息
yum info 包名

列出软件包提供哪些文件
yum provides 包名

3、源码安装
1) ./configure --prefix=/usr/… 指定安装路径 --enable-ssl --disable-filter 启动或者禁用某些功能 --with-pcre 和其他软件进行关联
同时检查安装环境是否满足编译安装,比如是否有编译器gcc,是否满足软件依赖性

2) make 编译
3) make install
make && make install
可以使用make clean 清除以前编译结果文件
make distclean类似make clean,但同时也将configure生成的文件全部删除掉,包括Makefile

2.rpm包安装方式
rpm -ivh *.rpm (常用)(代表安装所有以.rpm结尾的包,如果你安装指定的包,直接接包名就可以了)
-i install 安装
-v verbose详细过程
-h hash marks输出进度条
–nodeps = no depends无依赖,不检测依赖安装
–replacepkgs 重新安装

rpm -Uvh
-U upgrade升级

rpm -e 卸载包(常用) --nodeps不检测依赖性卸载

rpm -qa |grep 包名 查询当前系统已安装的包(常用)
-q query 查询
-a all所有包

rpm -qi 包名 查询软件包的相关信息(用的频率较少)

rpm -ql 包名 列出软件包安装信息(常用)

rpm -qf 包名 查询系统文件属于哪个软件包

rpm -qR 包名 查询软件包的依赖性(较少)

rpm -V 包名 校验软件包

1.3.6 Linux磁盘管理及维护

Linux基础知识大合集_第20张图片
Linux基础知识大合集_第21张图片扩展分区可以被继续划分为多个逻辑分区,逻辑分区是可以进行格式化的。
总结一下,就是不论磁盘有几个主分区,第一个逻辑分区一定是从sda5开始。
1.fdisk命令
fdisk /dev/sda
m查看帮助菜单
p查看当前磁盘的分区信息
n创建新的分区
会让你选择
p primary主分区
e extended扩展分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p):
Using default response p
Partition number (1-4, default 1):
size让你输入你的分区大小或者磁柱号:+100M/+1G
再输入w保存

需要让内核加载你的分区表
partprobe - inform the OS of partition table changes
partprobe
partx - tell the Linux kernel about the presence and numbering of on-disk partitions
partx -a /dev/sda

对指定分区进行格式化
mkfs.ext4 /dev/sda1 = mkfs -t ext4 /dev/sda1
mkfs.xfs /dev/sdb1

分区完对我们的分区进行挂载
mount 分区 挂载点(空目录)
mount /dev/sda1 /mnt
查看系统的的分区详细信息
Linux基础知识大合集_第22张图片
VM虚拟机添加磁盘不重启系统,识别磁盘将其添加到分区
Linux基础知识大合集_第23张图片
#grep mpt /sys/class/scsi_host/host?/proc_name
#echo “- - -” > /sys/class/scsi_host/host0/scan执行之后方可看到新添加磁盘或者重启
(1) 在进行分区时,首先我们需要查看当前磁盘的一个分区状况,使用命令:fdisk -l
(2)然后使用命令:fdisk /dev/sda(b)  让硬盘进入分区模式
Linux基础知识大合集_第24张图片
在这里插入图片描述
3)开始创建分区,因此我们输入n,然后回车如下图。
在这里插入图片描述
我们看到黄颜色线条上显示的是3个主要分区,0个扩展分区,还有1个闲置分区。绿色光标前的default e表示的是默认为扩展分区。我们除了直接回车进入下一步,也可以输入e进入下一步。
①此时光标所在的位置表示选择输入起始位置,也就是起始扇区。当然,我们不用输入,直接回车就好进入下一步。它就是为了能够将后面的所有可用扇区充分的利用上,而默认选择可用扇区的起始最小扇区。在这里插入图片描述
②此时光标所在的位置表示选择输入终了位置,也就是结束扇区。当然,我们不用输入,直接回车就可以把上面剩余的全部空间充分的利用上。在这里插入图片描述
③到这里我们创建的扩展分区已经创建好了,我们在命令行界面输入p查看一下分区情况:Linux基础知识大合集_第25张图片
④有了扩展分区,那么我们才可以创建逻辑分区。
我们在命令行输入n添加一个新分区,此时添加的分区就是逻辑分区。在这里插入图片描述
这时它询问设置逻辑分区的起始扇区,为了充分利用,我们选择默认值,然后回车在这里插入图片描述
到这里它在询问扇区结束位置,说白了就是我们在设置逻辑分区大小。输入格式为:+扇区 或者 +数值大小{单位}
然后我们输入:+1G  表示设置大小为的1G的逻辑空间。回车之后就完成了新的分区的设置。紧接着我们输入p打印分区表查看分区信息。Linux基础知识大合集_第26张图片
⑤此时不要着急,我们一定要记住要保存,在命令行输入w保存分区信息。我们通过w保存并退出后,使用fdisk -l  可以查看到磁盘的分区信息。
⑥但是当你在格式化的时候,有可能找不到这个分区。这是因为Linux没有把分区信息读到内核来,我们需要输入partprobe这个命令,来使我们内核重读一下我们的分区信息。
Linux基础知识大合集_第27张图片
到这里我们已经成功地创建了一个1G大小的分区,但是我们能用吗?不能,因为我们要对磁盘进行格式化后才可以进行数据的存储。
** 磁盘的格式化**
格式化:指将分区格式化成不同的文件系统。
Linux系统下的文件类型:
Linux下的文件类型有ext2、ext3、ext4、xfs等等,我们可以使用命令:mkfs. 然后用按TAB来查看有哪些文件类型
在这里插入图片描述
我们现在要对刚才创建的逻辑分区5进行格式化
1)在命令行输入mkfs.ext3  /dev/sda5  意思就是格式化根下的sda5分区,格式化类型为.ext3
Linux基础知识大合集_第28张图片
2)格式化完毕后我们使用命令:ll来查看我们格式化完毕后的分区的文件类型信息。在这里插入图片描述
磁盘的挂载
1)挂载点目录:我们将磁盘切到根目录, media 和 mnt 这两个目录被叫做挂载点目录。除此之外,我们也可以自己创建一个目录作为一个挂载点目录,Linux基础知识大合集_第29张图片
2)怎样查看到当前系统上所有磁盘的挂载信息?
使用命令df -h这更易于我们对磁盘的信息的了解。包括文件的大小,已经使用的分区大小,总共可用分区的大小,使用率,以及挂载的位置。(推荐)Linux基础知识大合集_第30张图片
(3)命令:blkid:查看对应分区的UUID(编号)。UUID唯一标识每一个分区,防止错误的挂载。除此之外,还会显示分区的类型。(建议先复制一下sda5的UUID,一会儿会用到)
在这里插入图片描述
(5)永久挂载:使用永久挂载,就意味着它开机会自动挂载。
①使用vim编辑 /etc/fstab  在命令行直接输入vim /etc/fstab 就可以编辑,实现开机自动挂载。Linux基础知识大合集_第31张图片
②在将光标移到UUID行,在命令模式下按o键进入插入模式,同时换行。将(3)步骤中复制好的sda5的UUID编号,粘贴进来。/test挂载点目录,ext3文件系统类型,第一个0表示不备份,第二个0表示不检查。注意格式一定要正确,可以不用对齐,最好的判断依据是依照颜色。写完之后保存退出。Linux基础知识大合集_第32张图片
du和df命令
Linux基础知识大合集_第33张图片

RAID磁盘阵列技术
独立磁盘具有冗余能力的阵列

RAID0
至少需要两块磁盘
特点:
数据分布存储在两个或多个磁盘中,读写速度翻倍提升,但是没有数据冗余能力,一旦其中某个磁盘发生故障,无法恢复其中的数据。
磁盘利用率是100%,即所有磁盘都用来读写数据。

RAID1
至少需要两块磁盘
特点:
数据1比1存放在两个或多个磁盘中,当其中某个磁盘发生故障的时候,可以根据其他的盘的数据快速恢复新盘的数据,也就是具有数据冗余能力,保证了
数据的安全性。写入数据的速度没有什么提高,读取速度相对来说提升了,磁盘利用率只有50%,相当于一块磁盘浪费了。

RAID5
至少需要三块磁盘
特点:
是RAID0和RAID1的折中方案,具有奇偶校验信息码,通常数据被拆分存放在三个或多个磁盘中,同时数据组成的奇偶校验码交叉存放在不同的磁盘中,
当某一个磁盘发生故障,数据丢失,我们可以根据其他盘存放的奇偶校验码反推数据来恢复新盘的数据。同时只能允许丢失一块磁盘的数据,如果丢失
两个或多个磁盘数据,则因为丢失的数据过多,奇偶校验码也随之丢失过多,无法再恢复老的数据。

RAID01
至少需要4块磁盘
特点:
先做RAID0组合,然后再做RAID1。同时具有读写速度提升的特性和数据冗余能力。
磁盘利用率是50%。

RAID10
至少需要4块磁盘
特点:
先做RAID1镜像复制组合,然后再做RAID0条带组合。同时具有读写速度提升的特性和数据冗余能力。
磁盘利用率也是50%。

企业更关注数据安全性,所以一般都要考虑数据安全性,至少都要使用RAID1,具体使用哪种技术不是绝对的,根据业务需求自行定制。RAID ( Redundant Array of Independent Disks )即独立磁盘冗余阵列,简称为「磁盘阵列」,其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。Linux基础知识大合集_第34张图片
LVM逻辑卷
Linux基础知识大合集_第35张图片
Linux基础知识大合集_第36张图片
LVM的创建
0、准备工作:先准备好分区
1、创建物理卷(PV)
刚创建的分区是用来储存物理卷的。LVM可以使用不同大小的物理卷。在这里插入图片描述
vcreate /dev/sdb1 创建/dev/sdb1的物理卷
pvs 查看pv信息
pvdisplay 查看详细的pv信息
pvremove 删除物理卷(注意:假如已经在pv上创建了相应资源,则不能直接使用此命令删除,而应该先删除对应的资源后再删除物理卷)
2、创建卷组(VG)
创建卷组:vgcreate volume-group1 /dev/sdb1 /dev/sdb2 /dev/sdb3
vgcreate + 卷组名称 物理卷(1个或多个,多个使用空格隔开)
vgremove+ 卷组名称
注意:删除时注意,如果已经有上层资源,必须先把上层资源清除后再删除卷组,否则会提示报错。
vgextend向卷组中添加物理卷(添加某个成员)
vgreduce向卷组中减少物理卷(删除某个成员)
vgrename修改卷组名称 vgrename oldvgname newvgname
vgchange改变卷组的工作状态 vgchange -a y|n vgname y代表状态可用,n代表状态不可用

3、创建逻辑卷(LV)
lvcreate命令参数:
-n name指定创建的lv的名称
-L large指定空间的容量,即+100M
-l 使用PE的个数进行指定,比如10000
-s snapshot指定创建的逻辑卷为快照
-p r设置只读属性
lvcreate -L 100M -n lvname vgname (创建逻辑卷)
lvextend -L +100M /dev/vgname/lvname(扩容)
lvreduce -L 10M /dev/vgname/lvname(缩容)
lvresize 用法同上两个命令,支持扩容和缩容
lvrename 对我们的lv进行重命名
lvconvert --merge /dev/vgname/lvname 恢复快照,快照在恢复后删除
lvremove 删除逻辑卷
创建一个名为’1v1’、大小为100MB的逻辑卷。我们使用小分区减少执行时间。这个逻辑卷使用之前创建的卷组的空间。
lvcreate -L 100M -n lv1 volume-group1
4、格式化和挂载逻辑卷
1.mkfs.ext4 /dev/volume-group1/lv1
2.mkdir /lvm-mount
3.mount /dev/volume-group1/lv1 /lvm-mount/
扩展一个LVM卷
扩展先前创建的逻辑卷‘lv1’扩大到200MB
lvextend -L 200M /dev/volume-group1/lv1
运行以下命令扩展文件系统以后,ext4信息就更新了。
resize2fs /dev/volume-group1/lv1
检查LV的状态来验证lvdisplay
扩展一个卷组
假设我们的卷组’volume-group1’已经满了,需要扩大。手上的硬盘(sdb)已经没有其他空闲分区,我们添加了另外一个硬盘(sdc)。我们将看到如何把sdc的分区添加到卷组以扩展。
检测现在卷组状态vgdisplay volume-group1
首先,我们创建一个2GB分区sdc1,
类型(t命令)为LVM(8e)fdisk /dev/sdc
1.创建一个物理卷 /dev/sdc1 pvcreate /dev/sdc1
2.增加到已存在的卷组’volume-group1’ vgextend volume-group1 /dev/sdc1
3.使用vgdisplay来验证(可以看到卷组大小已经增大)

1.3.7 定时(计划)任务crontab

*未来的某时间点执行一次某任务或者周期性的运行某个任务,执行结果会通过邮件的形式发送给用户
Linux基础知识大合集_第37张图片
(1)
* * * * * 分时日月周
Linux基础知识大合集_第38张图片

(2)user-name:运行任务的用户身份
command to be executed :任务

安装crontab : yum install crontabs
crontab命令
在这里插入图片描述

#实例
#实例1:每小时的第3和第15分钟执行reboot
3,5 * * * * /usr/bin/reboot(绝对路径)
#实例2:每天上午10点到12点,执行find命令查找大于10M的文件,然后输出到一个文件中

*10-12 * * * find -type f -size +100M > 123.txt

1.4 Linux 进程管理

1.4.1 程序与进程
程序是一组指令及参数的集合,按照既定的逻辑控制计算机运行用来完成特定任务
进程是运行着的程序,是操作系统执行的基本单位,是程序运行的过程,动态,有生命周期及运行状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/9470e3f53d0d48ac9fa7410f164fcc59.png

在这里插入图片描述
1.4.2 进程管理工具
Linux进程管理工具pstree,ps,pgrep,pkill,uptime,top,htop,vmstat,lsof
1.pstree首先要yum安装yum install psmisc.x86_64
Linux基础知识大合集_第39张图片
2.ps命令
ps -aux 输出完整信息
Linux基础知识大合集_第40张图片
3.pgrep:经常要查看进程的信息,包括进程是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。pgrep 通过匹配其程序名,找到匹配的进程Linux基础知识大合集_第41张图片Linux基础知识大合集_第42张图片
4.killall,kill,pkill
Linux基础知识大合集_第43张图片
Linux基础知识大合集_第44张图片
Linux基础知识大合集_第45张图片

Linux基础知识大合集_第46张图片
Linux基础知识大合集_第47张图片
vmstat命令
vmstat 命令是最常见的Linux监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的cpu使用率,内存使用,虚拟内存交换情况,io读写情况。
Linux基础知识大合集_第48张图片
Linux基础知识大合集_第49张图片
lsof命令
:是一个列出当前系统打开文件的工具。
Linux基础知识大合集_第50张图片
Linux基础知识大合集_第51张图片
语法格式
Linux基础知识大合集_第52张图片
进程三种状态:
1、就绪态ready 程序已经分配好资源了,等待其他进程释放资源后待系统调用
2、运行态running 进程被系统调用,分配到了CPU和内存资源
3、等待状态waitting 进程因等待某个事件发生而暂时不能运行的状态

ready – > running (系统调用fork)
running --> ready (时间片用完,等待下一次调用)
running --> waitting (等待某个事件发生)
waitting --> ready (事件发生后)

/proc和/sys目录
/proc目录主要输出进程信息,内存资源,磁盘分区等信息
/sys目录主要是硬件设备的驱动信息

1.5 Linux网络服务

1.5.1计算机网络体系结构

1.网络层次划分

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了"开放系统互联参考模型",即著名的OSI/RM模型(Open System Interconnection/Reference Model)。它将计算机网络体系结构的通信协议划分为七层,其中第四层完成数据传送服务,上面三层面向用户。除了标准的OSI七层模型以外,常见的网络层次划分还有TCP/IP四层协议以及TCP/IP五层协议,它们之间的对应关系如下图所示:
Linux基础知识大合集_第53张图片
2.OSI七层网络模型
TCP/IP协议毫无疑问是互联网的基础协议,没有它就根本不可能上网,任何和互联网有关的操作都离不开TCP/IP协议。

Linux基础知识大合集_第54张图片
Linux基础知识大合集_第55张图片

  1. 物理层
    该层为上层协议提供了一个传输数据的可靠的物理媒体。简单的说,物理层确保原始的数据可在各种物理媒体上传输。物理层记住两个重要的设备名称,中继器(Repeater,也叫放大器)和集线器:差不多就是个多端口的中继器,把每个输入端口的信号放大再发到别的端口去,集线器可以实现多台计算机之间的互联,因为它有很多的端口,每个口都能连计算机。
    数据以比特的形式传播
    两个重要设备名称:中继器 集线器
    2)数据链路层
    数据链路层在物理层提供的服务的基础上向网络层提供服务,其最基本的服务是将源自网络层来的数据可靠地传输到相邻节点的目标机网络层。
    数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。(封装成帧,差错检测,可靠传输)。数据链路层为网络层提供可靠的数据传输;
    基本数据单位为帧;
    主要的协议:以太网协议;
    两个重要设备名称:网桥和交换机。
    3)网络层
    网络层的目的是实现两个端系统之间的数据透明传送,具体功能包括寻址和路由选择、连接的建立、保持和终止等。
    “路径选择、路由及逻辑寻址”。 网络层负责对子网间的数据包进行路由选择。此外,网络层还可以实现拥塞控制、网际互连等功能;
    基本数据单位为IP数据报;
    包含的主要协议:
    IP协议(Internet Protocol,因特网互联协议);ICMP协议(Internet Control Message Protocol,因特网控制报文协议);
    ARP协议(Address Resolution Protocol,地址解析协议);RARP协议(Reverse Address Resolution Protocol,逆地址解析协议)。
    重要的设备:路由器。
    4)传输层
    传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输。此外,传输层还要处理端到端的差错控制和流量控制问题。传输层负责将上层数据分段并提供端到端的、可靠的或不可靠的传输以及端到端的差错控制和流量控制问题;
    包含的主要协议:TCP协议(Transmission Control Protocol,传输控制协议)、UDP协议(User Datagram Protocol,用户数据报协议);
    重要设备:网关。
    5)应用层
    1.会话层管理主机之间的会话进程,即负责建立、管理、终止进程之间的会话。会话层还利用在数据中插入校验点来实现数据的同步。
    2.表示层对上层数据或信息进行变换以保证一个主机应用层信息可以被另一个主机的应用程序理解。表示层的数据转换包括数据的加密、压缩、格式转换等。
    3.为操作系统或网络应用程序提供访问网络服务的接口。
    数据传输基本单位为报文;
    包含的主要协议:FTP(文件传送协议)、Telnet(远程登录协议)、DNS(域名解析协议)、SMTP(邮件传送协议),POP3协议(邮局协议),HTTP协议(Hyper Text Transfer Protocol)。

1.5.2 子网划分

Linux基础知识大合集_第56张图片
Linux基础知识大合集_第57张图片
Linux基础知识大合集_第58张图片
Linux基础知识大合集_第59张图片
Linux基础知识大合集_第60张图片
Linux基础知识大合集_第61张图片
Linux基础知识大合集_第62张图片

1.5.3 网络管理相关命令

netstat命令
netstat命令:用于显示各种网络相关信息,如网络连接,接口状态,无效链接,组播成员等等。Linux基础知识大合集_第63张图片
前几个参数一般连着使用
Linux基础知识大合集_第64张图片

ss命令:配置网络或显示当前网络接口状态的命令
Linux基础知识大合集_第65张图片
ss命令与netstat命令用法相似

traceroute、mtr命令:获取当前主机到目标主机所经过的路由(网关)
在这里插入图片描述

talnet命令:与远程的主机通信或获取远程主机对应端口的信息命令,还可以确定远程服务器的某个端口是否能访问

wget命令:从网上自动下载文件的自由工具

scp命令:基于SSH的不同linux系统之间相互拷贝文件或者目录的工具
scp 目录本地文件 目标用户@ip地址:路径 (本地>远程)

iproute家族:网络管理工具包合集
Linux基础知识大合集_第66张图片
ip address add 添加一个新的协议地址,也就是给网卡配ip
delete删除一个协议地址
ip route add --添加新路由
ip route change --修改路由
ip route replace --替换已有的路由
在这里插入图片描述

1.5.4 网络配置文件

修改IP地址 vim /etc/sysconfig/network-scripts/ifcfg-ens33
在这里插入图片描述
Linux基础知识大合集_第67张图片
修改主机名 hostnamectl set-hostname +新主机名

namp工具检测开放端口
Linux基础知识大合集_第68张图片
tcpdump
Linux基础知识大合集_第69张图片
Linux基础知识大合集_第70张图片
Linux基础知识大合集_第71张图片
Linux基础知识大合集_第72张图片

1.6 linux安全-iptables

防火墙”是指一种将内部网和公众访问网(如Internet)分开的方法,它实际上是一种建立在现代通信网络技术和信息安全技术基础上的应用性安全技术,隔离技术。
iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilter
netfilter才是防火墙真正的安全框架(framework),netfilter位于内核空间。
iptables其实是一个命令行工具,位于用户空间,我们用这个工具操作真正的框架。

四表五链
Linux基础知识大合集_第73张图片
Linux基础知识大合集_第74张图片

1.6.1 iptables基本用法

iptables -X(清除所有自定义规则链)
iptables -F(清除所有规则)
iptables -L(列出所有[加n 以数字形式显示IP])
iptables -I (插入规则) 规则链名 优先级
iptables -A (增加规则,默认是) 规则链名
iptables -D (删除规则) 规则链名 序号
iptables -R (修改、替换)(replace)指定链中的某一条规则,可以按规则序号和内容替换
iptables -N (自定义规则链名)
iptables -P (默认) 规则链名 DROP(拒绝)或者ACCEPT(允许)
iptables -p (协议)
–sport(源端口)
–dport(目的端口)
Linux基础知识大合集_第75张图片
Ping命令的允许
iptables -A INPUT -i ens33 -p icmp -j ACCEPT ens33网卡入站时的icmp包允许通过
iptables -A OUTPUT -o ens33 -p icmp -j ACCEPT ens33网卡出站时的icmp包允许通过
禁止其他主机ping防火墙主机,但是允许从防火墙上ping其他主机
iptables -I INPUT -p icmp --icmp-type Echo-Request -j DROP
iptables -I INPUT -p icmp --icmp-type Echo-Reply -j ACCEPT
iptables -I INPUT -p icmp --icmp-type destination-Unreachable -j ACCEPT
Linux基础知识大合集_第76张图片

1.6.2 iptables之forward转发

1.echo 1 > /proc/sys/net/ipv4/ip_forward /启动路由功能,允许转发
2. 1.允许80端口httpd服务转发:
iptables -A FORWARD -p tcp --dport 80 -j ACCEPT //允许tcp目的端口80转发
2.允许ping转发:
iptables -A FORWARD -p icmp -j ACCEPT //允许icmp包转发
3.目的地址映射:
iptables –t nat –A PREROUTING -d 192.168.42.209 -j DNAT --to 192.168.42.207
//路由前,目的IP:192.168.42.207 转换成IP:192.168.42.209)
3.首先关闭防火墙sysemctl stop firewalld
关闭selinux getenforce 0 临时关闭
vim /etc/sysconfig/selinux
Linux基础知识大合集_第77张图片
ip端口转发
1、把本机的80端口的数据包转发到另一台服务器的8080端口iptables -t nat -A PREROUTRING -p tcp --dport 80 -j DNAT --to 192.168.42.207:8080
2、把本机发到另一台服务器的8080的数据包源地址改为本机地址
iptables -t nat -A POSTROUTRING -p tcp -d 192.168.42.207 --dport 8080 -j SNAT --to 192.168.42.205
或iptables -t nat -A POSTROUTRING -p tcp -d 192.168.42.207 --dport 8080 -j MASQUERADE
注意:需要关闭firewalld和selinux,并且开启内核转发功能

Linux基础知识大合集_第78张图片

1.7 Firewalld防火墙

与直接控制 iptables 相比,使用 FirewallD 有两个主要区别:
Firewalld 使用区域和服务而不是链式规则。
它动态管理规则集,允许更新规则而不破坏现有会话和连接。
Firewalld底层使用的就是iptables
1.检查防火墙状态。输出应该是 running或者 not running
在这里插入图片描述
2.重新加载 FirewallD 配置

我们可以通过三种方式配置防火墙
①vim /etc/firewalld/firewalld.conf 配置文件方式 #不推荐直接修改配置文件
②firewall-config图形化界面 方式 #很多服务器图形化界面不支持
③firewalld-cmd命令行方式 #推荐,且常用

1.7.1 Firewalld

Linux基础知识大合集_第79张图片

Linux基础知识大合集_第80张图片
firewall-cmd --list-all # 查看默认区域设置
Linux基础知识大合集_第81张图片
Linux基础知识大合集_第82张图片
查看系统默认活动区域名称、来源地址和关联的网卡
firewall-cmd --get-active-zones
在这里插入图片描述

1.7.2 Firewall实例

Linux基础知识大合集_第83张图片
Linux基础知识大合集_第84张图片
Linux基础知识大合集_第85张图片
端口转发

Linux基础知识大合集_第86张图片
Linux基础知识大合集_第87张图片

1.8 文本三剑客

通配符
Linux基础知识大合集_第88张图片
正则表达
Linux基础知识大合集_第89张图片
Linux基础知识大合集_第90张图片

1.8.1 linux文本处理三剑客之grep

grep 是一种强大的文本搜索工具,,它能使用正则表达式搜索文本,并把匹配的行打印出来

Linux基础知识大合集_第91张图片
Linux基础知识大合集_第92张图片

1.8.2linux文本处理三剑客之sed

sed 是一种流编辑器,它一次处理一行内容,处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”

-n:不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行
-e:多点编辑,对每行处理时,可以有多个Script
-f:把Script写到文件当中,在执行sed时-f 指定文件路径,如果是多个Script,换行写
-r:支持扩展的正则表达式
-i:直接将处理的结果写入文件
地址界定
#指定行
~:步进
sed -n ‘1~2p’ 只打印奇数行 (1~2 从第1行,一次加2行)
sed -n ‘2~2p’ 只打印偶数行
编辑命令
d:删除模式空间匹配的行,并立即启用下一轮循环
p:打印当前模式空间内容,追加到默认输出之后
a:在指定行后面追加文本,支持使用\n实现多行追加
i:在行前面插入文本,支持使用\n实现多行追加
c:替换行为单行或多行文本,支持使用\n实现多行追加
w:保存模式匹配的行至指定文件
r:读取指定文件的文本至模式空间中匹配到的行后
=:为模式空间中的行打印行号
!:模式空间中匹配行取反处理
s///:查找替换,支持使用其它分隔符,如:s@@@,s###;
加g表示行内全局替换;
例子:

 将命令和执行结果输出到题目下,把/etc/passwd复制到/root/test.txt,cp /etc/passwd /root/test.txt
 1、用sed打印所有行  
 sed -n ''p test.txt      sed -n '1,$'p test.txt
 2、打印test.txt的3到10行
 sed -n '3,10'p test.txt
 3、打印test.txt 中包含 ‘root’ 的行
 sed -n '/root/'p test.txt
 4、删除test.txt 的15行以及以后所有行
 sed '15,$'d test.txt
 5、替换test.txt 中 ‘root’ 为 ‘toor’                        
 sed 's/root/toor/g' test.txt
  6、把test.txt 中第一个数字移动到行末尾   
  sed 's#\([^0-9]*\)\([0-9]*\)\([^0-9].*$\)#\1\3\2#' test.txt

1.8.3linux文本处理三剑客之awk

awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。
语法格式
-F fs:fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:。(默认以空格做分隔符)
Linux基础知识大合集_第93张图片
(1)格式
FS :输入字段分隔符,默认为空白字符
OFS :输出字段分隔符,默认为空白字符
RS :输入记录分隔符,指定输入时的换行符,原换行符仍有效
ORS :输出记录分隔符,输出时用指定符号代替换行符
NF :字段数量,共有多少字段, N F 引 用 最 后 一 列 , NF引用最后一列, NF(NF-1)引用倒数第2列
NR :行号,后可跟多个文件,第二个文件行号继续从第一个文件最后行号开始
FNR :各文件分别计数, 行号,后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始
FILENAME :当前文件名
ARGC :命令行参数的个数
ARGV :数组,保存的是命令行所给定的各参数,查看参数

(2)演示
1、$0: awk变量$0保存当前记录的内容

 awk -F: '{print $0}' test.txt

Linux基础知识大合集_第94张图片
2,显示倒数第二列

      awk -F: '{print $(NF-1)}'

1.9 linux shell编程

1.9.1基础知识

shell:Shell是一个命令解释器,它的作用是解释执行用户输入的命令及程序等。 用户每输入一条命令,Shell就执行一条。这种从键盘输入命令,就可以立即得到回应的对话方式,称为交互的方式。
shell脚本
查看系统默认的shell: echo $SHELL
查看系统支持的shell: cat /etc/shells
Linux基础知识大合集_第95张图片
创建第一个shell脚本
1.首行
#!/bin/bash
2.注释

3.内容
在这里插入图片描述
在这里插入图片描述
一般情况下,默认创建的脚本是没有执行权限的,需要赋予执行权限
在这里插入图片描述
shell脚本的执行
1.入脚本的绝对路径或相对路径
/root/myfirst.sh
./myfirst.sh
2.bash或 sh+脚本(脚本没有x权限时,可以通过此方式正常执行)
bash myfirst.sh
sh myfirst.sh
3.source script-name 或 . script-name 这种方法通常是使用source或 “.”(点号)读入或加载指定的Shell脚本文件,然后依次执行指定的Shell脚本中的语句。
shell变量
1.用户的环境变量配置
变量名称可以由字母,数字和下划线组成,但是不能以数字开头,环境变量名建议大写,便于区分。
在用户家目录下.bashrc文件优先设置有效。
2.全局的环境变量配置
/etc/profile
/etc/bashrc
/etc/profile.d
在这里插入图片描述
Linux基础知识大合集_第96张图片
第一种方法直接输入字符串即可,第二种方法需要加上echo
Linux基础知识大合集_第97张图片
shell变量作用域
有的变量只能在函数内部使用,这叫做局部变量(local variable);
有的变量可以在当前 Shell 进程中使用,这叫做全局变量(global variable);(在 Shell 中定义的变量,默认就是全局变量
而有的变量还可以在子进程中使用,这叫做环境变量(environment variable)
read命令
-a 后跟一个变量,该变量会被认为是个数组,然后给其赋值,默认是以空格为分割符。
-d 后面跟一个标志符,其实只有其后的第一个字符有用,作为结束的标志。
-p 后面跟提示信息,即在输入前打印提示信息。
-e 在输入的时候可以使用命令补全功能。
-n 后跟一个数字,定义输入文本的长度,很实用。
-r 屏蔽\,如果没有该选项,则\作为一个转义字符,有的话 \就是个正常的字符了。
-s 安静模式,在输入字符时不再屏幕上显示,例如login时输入密码。
-t 后面跟秒数,定义输入字符的等待时间。
-u 后面跟fd,从文件描述符中读入,该文件描述符可以是exec新开启的。

简单测试
Linux基础知识大合集_第98张图片

在这里插入图片描述
取消变量/删除变量
unset NAME
Linux基础知识大合集_第99张图片
变量数组
数组是能够保存多个值的变量,数组中的值既可以分别引用,也可以作为整体引用
**·**定义数组:array_num=(1 2 3 4)(小括号做边界、使用空格分离)
在这里插入图片描述
在这里插入图片描述
索引的值从0开始,显示整个变量的值,可以用或@通配取得元素个数:echo ${#array_name[]}在这里插入图片描述
位置变量
Linux基础知识大合集_第100张图片
Linux基础知识大合集_第101张图片

$ n: n为数字,$0代表命令本身,$1- 9 代 表 第 一 到 第 9 个 参 数 , 十 以 上 的 参 数 需 要 用 大 括 号 包 含 , 如 9代表第一到第9个参数,十以上的参数需要用大括号包含,如 99,{10}。
$ *: 代表命令行中所有的参数,把所有的参数看成一个整体。以"$1 $2 … $n"的形式输出所有参数
$@: 代表命令行中的所有参数,把每个参数区分对待。以"$1" “ 2 " … " 2" … " 2""n” 的形式输出所有参数
$ #: 代表命令行中所有参数的个数。添加到shell的参数个数
shift指令:参数左移,每执行一次,参数序列顺次左移一个位置,$# 的值减1
$? :打印出命令执行后返回的状态,0表示没有错误,其他表示有错误
$ $ :打印出当前进程的进程号
$0 : 打印出当前进程的

1.9.2 变量的算术运算

Linux基础知识大合集_第102张图片
Linux基础知识大合集_第103张图片1.双小括号"(())"数值运算
双小括号"(())的作用是进行数值运算与数值比较
Linux基础知识大合集_第104张图片
Linux基础知识大合集_第105张图片
Linux基础知识大合集_第106张图片
2.let运算命令算法
let运算符可以用来计算整数,和小双括号类似
在这里插入图片描述
3.expr 命令用法
expr是一个强大的计算命令,运算符之间要有空格
在这里插入图片描述
4.bc命令的用法
bc是linux系统中的计算器
在这里插入图片描述
5.$[]运算

在这里插入图片描述

1.9.3 shell脚本的条件测试

Linux基础知识大合集_第107张图片
Linux基础知识大合集_第108张图片
在这里插入图片描述
在这里插入图片描述
逻辑操作符
Linux基础知识大合集_第109张图片
在这里插入图片描述
注意:变量要用空格,不然判断会出现不是预期的效果

整数二元比较操作符
Linux基础知识大合集_第110张图片
在这里插入图片描述
Linux基础知识大合集_第111张图片

1.9.4 if条件语句

Linux基础知识大合集_第112张图片
Linux基础知识大合集_第113张图片
Linux基础知识大合集_第114张图片

1.9.5 case条件判断语句

case条件语句相当于多分支的if/elif/ellse条件语句
Linux基础知识大合集_第115张图片
Linux基础知识大合集_第116张图片

1.9.6 for循环语句

用法
Linux基础知识大合集_第117张图片
Linux基础知识大合集_第118张图片
例:量创建用户并删除

Linux基础知识大合集_第119张图片

Linux基础知识大合集_第120张图片

1.9.7 while循环语句

用法:Linux基础知识大合集_第121张图片

Linux基础知识大合集_第122张图片

1.9.8 break continue exit 循环控制语句

break 、continue在条件语句及循环语句(for、while、if等)中用于控制程序走向;而exit则用于终止所有语句并退出当前脚本。Linux基础知识大合集_第123张图片

1.9.9 shell函数

Linux基础知识大合集_第124张图片
对各个部分的说明:

function是 Shell 中的关键字,专门用来定义函数;
name是函数名;
statements是函数要执行的代码,也就是一组语句;
return value表示函数的返回值,其中 return 是 Shell 关键字,
专门用在函数中返回一个值;这一部分可以写也可以不写。
由{ }包围的部分称为函数体,调用一个函数,实际上就是执行函数体中的代码。

例:1.使用 $@ 来遍历函数参数。定义一个函数,计算所有参数的和:getsum 10 20 30
Linux基础知识大合集_第125张图片

1.9.10 Shell 脚本练习100题

shell脚本练习10题

1.10 linux常用服务工具

1.10.1 rsync数据同步服务

Rsync英文全称Remote synchronization,从软件的名称就可以看出来,Rsync具有可使本地和远程两台主机之间的数据快速复制同步镜像,远程备份的功能。
Rsync是一款开源的,快速的,多功能的,可实现全量及增量的本地或远程数据同步备份的优秀工具。

rsync 软件功能介绍
类似于 cp 命令 – 实现本地备份传输数据
类似于scp 命令 – 远程备份传输数据
类似于 rm 命令 – 实现无差异同步备份
类似于 ls 命令 – 本地文件信息查看
Rsync安装:
yum install -y rsync
rsync命令常用参数选项说明
-v,–verbose 详细模式输出,传输时的进度等信息
-z,–compress 传输时进行压缩以提高传输效率,–compress-level=NUM可按级别压缩。
-a,–archive 归档模式,表示以递归方式传输文件,并保持所有文件属性,等于-rtopgDl(字母l)
Linux基础知识大合集_第126张图片

1.rsync==cp
Linux基础知识大合集_第127张图片
2、rsync == scp
#从本地/etc/hosts拷贝到远端服务器/opt上
在这里插入图片描述

#检查远端服务器的结果在这里插入图片描述
#使用rsync实现

rsync /etc/hosts 192.168.74.150:/opt/

在这里插入图片描述
3、rsync == rm
创建出来一次命令 进行操作
Linux基础知识大合集_第128张图片
#rm命令操作
在这里插入图片描述

创建一个空目录,使用空目录进行无差异同步,将/null的所有文件同步到/znix内,并删除/znix内多余的文件

在这里插入图片描述
4、 rsync == ls -l
Linux基础知识大合集_第129张图片
5、以守护进程方式同步数据
配置rsync服务端(将服务端配置到 backup 服务器上)
搭建步骤:
第一步: 软件是否存在
在这里插入图片描述
第二步: 进行软件服务配置
Linux基础知识大合集_第130张图片
第三步:创建rsync用户
在这里插入图片描述
第四步: 创建数据备份储存目录,目录修改属主
在这里插入图片描述
第五步: 创建认证用户密码文件
在这里插入图片描述
第六步: 启动rsync服务
rsync --daemon

配置rsync客户端(其他服务器为客户端)
第一步: 软件是否存在
在这里插入图片描述
第二步: 创建认证文件
客户端的认证文件只需要有密码即可
在这里插入图片描述
第三步: 实现数据传输(将client端的指定目录内容推送到server端)
Linux基础知识大合集_第131张图片

在这里插入图片描述

1.10.2 NTP时间同步服务

搭建ntp服务器
服务端和客户端都分别按照ntp服务:
yum install –y ntp
查看是否安装成功:
rpm -qa |grep ntp
配置文件为:/etc/ntp.conf
Linux基础知识大合集_第132张图片
配置好后,需要重启服务
在这里插入图片描述使用如下命令检查是否同步成功,如出现running表示运行,否则失败
Linux基础知识大合集_第133张图片

客户端配置
vim /etc/ntp.conf

Linux基础知识大合集_第134张图片
这里的server指向服务器的IP,改完后重启服务
在这里插入图片描述
在服务器端执行ntpstat命令,状态由unsynchronised变为synchronised代表同步上游服务器成功
在这里插入图片描述
然后执行ntpq –pn命令查看服务器同步详细情况
Linux基础知识大合集_第135张图片
以星号 (*)开头这就意味着您的计算机已经从网络上获取了时间,当前的refid是local代表我们配置的本地ntp服务器

客户端测试
使用ntpdate 服务器ip进行同步,发现报ntp socket被占用,需要停掉ntp服务然后同步
在这里插入图片描述
我们可在服务端和客户端同时执行date命令查看时间是否同步

时区不一致导致时间不同步解决办法
使用如下命令查看当前时区是否是CST中国标准时区,并且是Asia/Shanghai
Linux基础知识大合集_第136张图片
timedatectl list-timezones |grep Shanghai #查找中国时区的完整名称
在这里插入图片描述
如果不是使用如下命令设置时区为上海可重新查看时间是否正确
timedatectl set-timezone Asia/Shanghai #其他时区以此类推

1.10.3 SSH服务

Linux基础知识大合集_第137张图片
ssh服务认证类型
1.基于口令认证
基于口令的安全验证的方式就是大家现在一直在用的,只要知道服务器的SSH连接帐号和口令(当然也要知道对应服务器的 IP及开放的 SSH端口,默认为22 ),就可以通过 ssh客户端登录到这台远程主机。此时,联机过程中所有传输的数据都是加密的。
Linux基础知识大合集_第138张图片
2.基于密钥认证
首先在客户端生成一对密钥
Linux基础知识大合集_第139张图片
查看密钥文件和内容
Linux基础知识大合集_第140张图片

在这里插入图片描述
将客户端的公钥传到服务器端
Linux基础知识大合集_第141张图片
查看服务端公钥
在这里插入图片描述
客户端测试
在这里插入图片描述

SSH服务的配置文件为/etc/ssh/sshd_config
修改默认端口
Linux基础知识大合集_第142张图片
Linux基础知识大合集_第143张图片
禁止root登录
Linux基础知识大合集_第144张图片
Linux基础知识大合集_第145张图片

1.10.4 FTP服务介绍

FTP是File Transfer Protocol(文件传输协议)的英文缩写,用于Internet上的控制文件的双向传输。同
时,它也是一个应用程序。基于不同的操作系统有不同的引用程序,而所有的这些引用程序都遵循同一
种协议以传输文件。
CentOS 7安装配置vsftp并搭建FTP
1.查看自己的服务器是否安装了vsftp
Linux基础知识大合集_第146张图片
如果没有安装vsftp现在安装

  yum -y install vsftpd

2.关闭CentOS7的防火墙

systemctl stop firewalld.service
停止firewall

3.启动vsftp服务

systemctl restart vsftpd.service # 重启服务
systemctl start vsftpd.service # 启动服务
systemctl status vsftpd.service # 服务状态查看

Linux基础知识大合集_第147张图片
4.vsftp的配置文件路径:/etc/vsftpd/vsftpd.conf
vsftp配置文件一般选项(如何没有这个选项则到文件末尾添加)
Linux基础知识大合集_第148张图片

5.设置文件权限
vsftp默认文件上传路径 /var/ftp/pub
其中 pub文件要更改权限
chmod 777 pubLinux基础知识大合集_第149张图片
到这里vsftp已经安装好了并进行了基本配置(在这里使用的是匿名登录)

systemctl enable vsftpd  添加到开机启动

1.10.5 NFS网络文件共享储存服务

NFS是Network File System的缩写,中文意思是网络文件系统。它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录。

NFS的RPC服务最主要的功能就是记录每个NFS功能所对应的端口号,并且在NFS客户端请求时将该端口和功能对应的信息传递给请求数据的NFS客户端,从而确保客户端可以连接到正确的NFS端口上去,达到实现数据传输交互数据目的
NFS实例搭建
我们需要两台CentOS7机器,我们用虚拟机做测试,分别做NFS服务器和客户端,配置如下
NFS-Server ip:192.168.74.××1
NFS-Client ip:192.168.74.×××
实现的目标是:在NFS服务器上共享一个目录,在客户端上可以直接操作NFS服务器上的这个共享目录下的文件。
NFS服务器配置
1.安装NFS服务和rpcbind
yum -y install rpcbind nfs-utils
2.创建共享目录
在服务器上创建共享目录,并设置权限。
mkdir –p /data/share/
chmod 755 -R /data/share/
3.配置NFS
nfs的配置文件是 /etc/exports ,在配置文件中加入一行:

/data/share/ 192.168.74.×××(rw,no_root_squash,no_all_squash,sync)

这行的意思是把共享目录/data/share/共享给192.168.42.102这个客户端ip,后面括号里的内容是权限参数,其中:rw 表示设置目录可读写。 sync表示数据会同步写入到内存和硬盘中,相反 rsync 表示数据会先暂存于内存中,而非直接写入到硬盘中。
no_root_squash NFS客户端连接服务端时如果使用的是root的话,那么对服务端分享的目录来说,也拥有root权限。
no_all_squash 不论NFS客户端连接服务端时使用什么用户,对服务端分享的目录来说都不会拥有匿名用户权限。
如果有多个共享目录配置,则使用多行,一行一个配置。
4.启动服务
按顺序启动rpcbind和nfs服务:
systemctl start rpcbind
systemctl start nfs
在这里插入图片描述

nfs服务启动后,可以使用命令 rpcinfo -p 查看端口是否生效。Linux基础知识大合集_第150张图片
111端口为rpcbind服务对外提供服务的主端
我们可以使用 showmount 命令来查看服务端(本机)是否可连接:在这里插入图片描述
出现上面结果表明NFS服务端配置正常
客户端配置
1.安装rpcbind服务

yum -y install nfs-utils rpcbind

客户端只需要启动rpcbind服务即可:

systemctl start rpcbind

2.挂载远程nfs文件系统
查看服务端已共享的目录:
在这里插入图片描述
建立挂载目录,执行挂载命令
mkdir /mnt/share
mount -t nfs 192.168.42.101:/data/share /mnt/share/ -o nolock,nfsvers=3,vers=3
如果不加 -onolock,nfsvers=3 则在挂载目录下的文件属主和组都是nobody,如果指定nfsvers=3则显示root。
如果要解除挂载,可执行命令

umount /mnt/share

3.开机自动挂载
在这里插入图片描述
保存并重启机器看看。
Linux基础知识大合集_第151张图片
看到最后一行了没,说明已经挂载成功了。
测试结果
在客户端的/mnt/share目录中创建一个a.txt文件,可以在服务端查/data/share看到此文件
Linux基础知识大合集_第152张图片
在这里插入图片描述

1.10.6 rsyslog日志服务

rsyslog是一个开源工具,被广泛用于Linux系统以通过TCP/UDP协议转发或接收日志消息。rsyslog守护进程可以被配置成两种环境,一种是配置成日志收集服务器,rsyslog进程可以从网络中收集其它主机上的日志数据,这些主机会将日志配置为发送到另外的远程服务器。rsyslog的另外一个用法,就是可以配置为客户端,用来过滤和发送内部日志消息到本地文件夹(如/var/log)或一台可以路由到的远程rsyslog服务器上
常见的系统日志
Linux基础知识大合集_第153张图片
rsyslog配置
1、程序包:rsyslog
配置文件:/etc/rsyslog.conf
主程序:/usr/sbin/rsyslogd
模块路径:/usr/lib64/rsyslog/
Unit File:/usr/lib/systemd/system/rsyslog.service
2、rsyslog中的术语:
facility:设施、信道;
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, syslog, local0-local7
priority:记录日志的等级,如果等级是info,代表包含了info以及以上的所有等级事件日志都记录
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
Linux基础知识大合集_第154张图片
实例:
服务端配置

# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514

# provides TCP syslog reception
#$ModLoad imtcp
#$InputTCPServerRun 514

KaTeX parse error: Expected 'EOF', got '#' at position 30: …mat,"%msg%\n" #̲template myformat,"%$NOW% %TIMESTAMP:8:15% %hostname% %syslogtag%%msg%\n
$ActionFileDefaultTemplate myformat
$template IpTemplate,"/var/log/%FROMHOST-IP%.log"
. ?IpTemplateLinux基础知识大合集_第155张图片

说明:1. $template IpTemplate(“IpTemplate” 可自定义)指令使 rsyslog 后台进程将日志消息写到 /var/log 下的单独的本地日志文件中,其中日志文件的名称是基于远程日志发送机器的主机名以及生成该日志的应用程序名进行定义的。
2. *.* ?IpTemplate 将 IpTemplate 模板应用到所有接收到的日志上。
修改配置后需要重启服务:systemctl restart rsyslog

客户端配置
发送日志的配置很简单,只需要配置要发送的地址就 ok,如果出于某种原因,你需要更为可靠的协议,
如TCP,而rsyslog服务器也被配置为监听TCP连接,你必须在远程主机的IP地址前添加一个额外的@字符

*.* @@192.168.42.209:514              # tcp 协议
local7.info @192.168.42.209:514       # udp 协议,只发送用户的 info 级别日志

Linux基础知识大合集_第156张图片
修改配置后需要重启服务:systemctl restart rsyslog

测试
logger的使用
logger 是一个shell 命令接口,可以通过该接口使用Syslog的系统日志模块,还可以从命令行直接向系统日志文件写入一行信息。-i 在每行都记录进程ID
-t 日志中的每一行都加一个error标签
-p 指定自定义的日志设备,和配置文件的
local5.*对应,配置文件里没有.info。
服务端触发
在这里插入图片描述
服务端查看
在这里插入图片描述
在这里插入图片描述
日志轮转
Linux基础知识大合集_第157张图片
Linux基础知识大合集_第158张图片
create    执行轮转后创建新文件
include /etc/logrotate.d  包含此目录下的自定义配置
/var/log/wtmp  包含用户日志文件wtmp 的轮转策略
minsize  1M  日志达到1MB才开始轮转
create 0664 root utmp 轮转后建新文件并设权限
missingok   若此文件不存在,则跳过轮转处理


  1. :upper: ↩︎

  2. :alnum: ↩︎

你可能感兴趣的:(linux,linux,运维,centos)