目录
一、简介
1.1 介绍
Linux,全称GNU/Linux,是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。
1.2 特点
1)操作几乎靠各种命令来完成的;
2)系统非常稳定;
3)系统开源【所有用户都可以使用】;
4)免费;
1.3 linux的版本
Ubuntu:ubuntu 10.04、ubuntu 12.04、ubuntu 14.04...
Centos:centos5、centos6、centos7【主流】、centos8
kali linux:这个系统中集成了黑客常用的工具
redhat:redhat 5、redhat 6、redhat 7、redhat 8
1.4 linux的界面
GUI(图形界面):类似于windows,可以用鼠标点击操作。
CLI(字符界面):类似于Dos系统,所有的操作只能依靠命令实现。
二、基础
2.1 linux 提示符
[用户名@主机名 当前所在位置]身份标识
身份标识: 管理员:#
普通用户:$
2.2 linux 目录结构
bin、sbin:这两个目录是存储的是在linux中执行的命令【命令就是可执行程序】
lib、lib64:这两个目录用于存放库文件
media、mnt:这两个目录用于将外部设备关联到linux
root:root用户的家目录
etc:这个目录存储系统中各个程序的配置文件
dev:存储系统的设备文件
tmp:系统临时文件目录
home:新建用户的主目录
linux目录结构的特点:1)linux单根系统;
2)只有一个存储位置 / ;
3)倒树状结构;
三、linux基础命令
3.1 命令基础知识
linux中所有的命令是严格区分大小写的。
一般格式: 命令 选项 参数
选项:选项是用于控制命令的执行过程
参数:参数是指命令的作用对象
3.2 基础命令
pwd 显示当前所在目录
clear 清空屏幕
cd 目标位置 切换目录
touch 文件名 新建文本文件
新建目录
格式1:mkdir 目录名
格式2:mkdir [选项] 路径/目录名
选项:-p:父目录不存在时,自动创建父目录
复制文件\目录
cp [选项] 源文件 目的路径
选项:-a:保持文件属性不变;
-r:递归复制;
移动文件\目录
mv 源文件 目的路径
mv 也可以用来实现修改文件\目录名
删除文件\目录
rm -rf 要删除的文件或者目录
选项:
-r:这个选项是专用于删除目录
-f:这个选项是强制删除【删除过程不会进行询问】
查看指定位置有什么文件
格式1:ls # 查看当前位置下文件
格式2:ls ./ # 查看当前位置下文件
格式3:ls 路径 # 查看指定的路径下有什么文件
选项:-a:查看隐藏文件【隐藏文件开头为.】
-l:查看文件属性
-d:专用查看目录
-h:查看文件大小
文本编辑器
vi 文件名 | vim 文件名
三种模式:
1)查看模式:功能:
1. 查看文件的内容
2. 在文件中,搜索指定的内容
3. 复制行或者是删除行
查看模式下的操作
dd:删除光标所在的行【剪切】
yy:复制光标所在的行
p - 小:将剪切/复制的内容,粘贴到当前所在的行的下一行
P - 大:将剪切/复制的内容,粘贴到当前所在的行的上一行
/要搜索的内容:在/后面输入要搜索的内容,就可以直接开始搜索了,
n:继续向下搜索
N:继续向上搜索
2)输入模式:功能:可以输入内容
3)末行模式:功能: 1. 主要是用于执行各种的命令
2. 显示行号
3. 保存、退出
4. 行跳转
模式转换图
使用vi打开文件异常
警告信息:
产生警告的原因1. 用vi打开文件后,写入了内容,但是这个文件被意外关闭了【例如 直接关闭终端】2. 文件被意外关闭,会产生一个 崩溃缓存文件 ,这个文件是一个隐藏文件,而且这个文件的后缀是.swp3. 就是由于这个崩溃缓存文件的存在,才导致每次打开文件的是有一个警告信息解决方法删除所有的崩溃缓存文件,就不再产生警告了
cat 文件名
more 文件名 【适合查看大文件】
less 文件名 【适合查看大文件】
head -n 文件名【默认查看前十行】
tail -n 文件名【默认查看后十行】
查看命令对应文件路径
which 命令
whereis 命令
用于统计一个文件中,有多少行、多少个单词、多少个字符
wc 选项 文件名
选项: -l:统计行数
-w:统计单词数
-c:统计字符数
四、用户管理
4.1 用户分类
管理员用户:
1. 只有一个2. 名字:root3. 管理员是:0 【linux中,uid是0的用户,就是管理员】4. 家目录:/root5. 权限:最高6. 可以执行的操作:可以执行任意的操作
普通用户:1. 可以有多个【你自己创建的用户,默认就是普通用户】2. 普通用户的名字是自定义的3. 普通用户的uid是都是大于04. 家目录:home下和用户名同名的那个目录,就是用户的家目录【在创建用户的时候,会自动的创建用户家目录】5. 权限:非常低6. 可以执行的操作:普通用户,只能在自己的家目录中执行操作
4.2 配置文件
/etc/passwd
这个文件中,存储的是当前系统中,所有的用户这个文件中,每行是一个用户【文件有多少行,就有多少个用户】这个文件的每一行,都是由 : 分割成的一段一段的第一段:用户名第二段:密码占位符【为了安全,将密码放到了另一个位置】第三段:用户的uid 【管理员的uid 是0 】第四段:用户的gid【用户所在的组的编号】第五段:这个是用户的描述信息,可以随便写,也可以空着第六段:用户家目录位置第七段:这个表示用户的shell类型新建一个用户,就会在这个文件中添加一行删除一个用户,就会将这个文件中的一行自动删除
这个文件中,存储的是用户的密码
4.3 相关命令
查看用户是否存在
id 用户名
useradd 用户名 //添加用户
userdel 用户名 //删除用户
passwd 用户名 //更改密码
groupadd 组名 //新建用户组
groupdel 组名 //删除用户组
4.4 用户切换
切换用户有两种方法 su 和 sudo
su - 用户
注意1:
从root切换到其他用户,切换时候不需要输入密码
如果从是普通用户切换到root用户,或者是从普通用户切换到其他的普通用户,就必须输入密码
注意2:
切换到其他用户以后,如果想返回到之前的用户,可以执行命令exit
su 切换用户的特点:1)简单
2)如果想切换到root,就必须得知道root用户的密码,容易导致root密码泄露
sudo 是指定用户可以用root身份执行哪几个命令
打开sudo的配置文件visudo 可以指定用户执行哪条命令
例:jack ALL=(root) /usr/bin/touch, /usr/bin/mkdir
jack可以执行touch和mkdir 命令
五、文件权限
5.1 文件属性
- rw-r--r--. 1 alex gp001 60 3月 17 10:59 abc
文件的类型 9个权限位 属主用户名 属组的名字 文件大小 文件的创建/编辑时间 文件名
文件类型: - 表示文本文件
d 表示目录
9个权限位: 前三位:是属主用户具有的权限
中间三位:是属组用户具有的权限
最后三位:是其他用户具有的权限
5.2 权限类别
读权限(r)、写权限(w)、执行权限(x)、无权限(-)
权限二进制表示
r==>4 w==>2 x==>1 -==>0
权限对象
u:属主 g:属组 o:其他用户 a:全部用户
案例
u-x 给属主用户去除掉执行权限
a+r 给所有用户添加上读权限
o=rw 将其他用户的权限设置为读和写
g+rx 给属组用户设置上读和执行权限
u-wx 给属主用户去除掉写和执行权限
g=rwx 将属组用户的权限设置为可读可写可执行
a= 将所有用户的权限都去去掉
5.3 相关命令
chmod [选项] 权限 文件名 //修改文件权限
选项:-R:作用是用于设置目录及其目录下的子文件的权限
chown //修改文件的属主\属组
chown [选项] 属主 文件名 仅仅修改文件的属主
chown [选项] 属主:属组 文件名 修改文件的属主和属组
chown [选项] :属组 文件名 仅仅修改文件的属组
选项:-R:作用是用于设置目录及其目录下的子文件的权限
六、linux 远程复制文件
将本地主机上的文件发送到远程主机
scp 本地文件 root@目标主机IP:/原创主机上的路径
从远程主机上去下载文件
scp root@目标主机IP:/原创主机上的路径/文件 本地路径
七、linux 通配符
7.1 简介
其实就是一些有特殊含义的符号,这些符号,统称为通配符
常见通配符:> >> |
7.2 命令输出重定向
将命令的执行结果输出/显示到终端上,这种输出,称之为:标准输出将本来要显示在终端上的输出结果,保存到一个文件中,这种操作称之为:输出重定向
标准正确输出:
> 将文件中原有内容全部删除,然后进行写入
>> 在文件中原有内容后,追加新的内容
标准错误输出:
2> 将文件中原有内容全部删除,然后进行写入
2>> 在文件中原有内容后,追加新的内容
特殊文件: /dev/null 该文件可以删除文本文件中的内容
7.3 管道符
管道符也就是键盘上的那个 |作用: 是用于链接两个或者多个命令,将前面命令的执行结果,传递给后面的命令,让后面的命令再 处理一次
八、linux 三剑客
8.1 awk 命令
awk -F "分隔符" '{print $数字}' 文件名 //对文件内容进行截取
8.2 sed 命令
sed -i "s/原始内容/替换内容/g" 文件名 //对文件的内容进行替换
8.3 grep 命令
grep "过滤的目标" 文件名 //从文件中过滤去符合条件的行
九、软件管理
9.1 rpm安装软件
9.1.1 rpm软件包在哪?
系统镜像文件中Packages目录中特点:1:本地系统镜像文件中的软件包,即使没有网络,也可以正常使用2:软件包版本相对较老
centos的官网: https://centos.org 网站 在国外,访问速度很慢,不建议特点:1:操作系统必须通过网络才能下载和使用网络软件包2:软件版本相对比较新有很多的国内的镜像网站阿里云: https://developer.aliyun.com/mirror/华为: https://mirrors.huaweicloud.com/home清华: https://mirrors.tuna.tsinghua.edu.cn/
9.1.2 如何光盘镜像中rpm包
1. iso系统镜像文件,也就是我们平时说的那个光盘2. 光盘对于linux来说,就是属于外部设备3. linux使用外部设备,需要将外部设备挂在到linux的某个空目录中,一般用的mnt或者是media
linux用mount命令实现挂在外部设备
mount 外部设备文件 挂载点
什么是外部设备文件?
就是外部设备,对应的linux中的一个特殊文件每个外部设备对应的特殊文件,都不相同iso对应的设备文件 /dev/cdrom挂载点:就是将外部设备,关联到linux的哪个目录,一般是mnt或者是media,但是可以自己创建一个空目录
9.1.3 rpm相关命令
rpm -ivh 软件包名 //安装软件的格式
rpm -q 软件名 //查看软件是否已经安装的格式
rpm -e 软件名 //卸载软件的命令格式
rpm -ql 软件名 //查看软件安装完成后生成的文件都有哪些
rpm -qf 文件名 //查看一个文件是由哪个软件包安装过程中产生的
rpm -ivh 软件包名 --replacepkgs //某个软件已经安装了,但是向再安装一次【覆盖掉前面的安装】
9.2 yum安装软件
9.2.1 背景
用rpm安装软件的时候,很多软件存在依赖关系例如:安装A软件,需要提前安装好B软件,安装B软件前,需要提前安装好C软件,那么此时的安装顺序就是C -> B -> A
9.2.2 作用
yum是也用于安装rpm包,所以如果是安装本地光盘中的rpm包,那么也必须要先挂载光盘yum的特点是,可以自动的来找到软件包的依赖关系,并排好顺序依次安装用yum安装的软件,是可以用rpm -q 查看,是可以用rpm -e 卸载
9.2.3 原理
yum源yum源,其实就是一个文件夹,在文件夹中,保存了,我们可能会用到的所有的rpm包yum的配置文件yum的配置文件,就是指向了yum源所在的文件夹的路径路径: /etc/yum.repos.d
9.2.4 相关命令
yum install 软件名 //安装软件
yum remove 软件名 //卸载软件
yum clean all //清空缓存
yum repolist //检查yum源是否正常
9.2.5 yum源相关配置参考
[local]
name=my repo
enabled=1
gpgcheck=0
baseurl=file:///mnt
[guanfang]
name=guan fang
enabled=1
gpgcheck=0
baseurl=https://repo.huaweicloud.com/centos/7.9.2009/os/x86_64/
[epel]
name=epel
enabled=1
gpgcheck=0
baseurl=https://repo.huaweicloud.com/epel/7Server/x86_64/
9.3 编译安装
9.3.1 简介
用rpm或者用yum安装软件的时候,会有个问题,就是软件的安装位置无法控制但是,通过编译安装的方式,可以来控制软件的安装具体细节,包括安装位置
9.3.2 基本步骤
第一步:解压源码包第二步:进入到解压以后得到的目录第三步:执行命令,检查系统环境是否可以进行安装,而且指定软件的安装位置./configure --prefix=安装位置
第四步:将源码编译成机器码【 执行命令make 】第五步:将编译好的程序进行安装【执行命令 make install 】
十、计划任务
10.1 简介
计划任务就是实现让linux自动、定时的完成某些操作。
计划任务分为两种:一次性计划任务这个任务仅仅会执行 一次周期性计划任务这个任务会被重复的执行
10.2 一次性计划任务
at 时间
> 输入要执行的命令
查看计划任务:
at -l 可以显示所有的一次性计划任务列表【这里所列举的是那些尚未执行的计划任务,一旦计
划任务被执行了那么就看不到了】
at -c 编号 可以显示指定编号的计划任务中,要执行的操作有什么
删除计划任务:
方法1:at -d 编号
方法2:atrm 编号
10.3 周期性计划任务
使用周期性计划任务时需要开启crond服务
检查是否开启 systemctl status crontab 开启 systemctl start crontab
crontab的使用格式
创建\删除计划任务的命令
crontab -e
查看计划任务的命令
crontab -l
分 时 日 月 周 命令
案例:每分钟去删除一次tmp下的文件a.txt
* * * * * rm -rf /tmp/a.txt
十一、正则表达式
符号
. 表示任意一个字符
* 表示前面字符出现任意次数【0…n】
[0-9]、[0123456789]、[[:digit:]] 表示任意一个数字
[abcd…..z]、[a-z]、[[:lower:]] 表示任意一个小写字母
[ABC..Z]、[A-Z]、[[:upper:]] 表示任意一个大写字母
[[:punct:]] 表示任意一个符号
[[:space:]] 表示一个空格
[a-zA-Z] 表示任意一个字母
[0-9a-zA-Z] 表示任意一个数字或字母
^ 表示行首 $ 表示行尾
\< \> 锚定单词首尾
{m,n} 前面字符最少m次,最多n次
() 定义分组 \1 \2 \3 调用分组
扩展正则
grep -E “正则” 文件名
egrep “正则” 文件名
十二、磁盘管理
12.1 磁盘的原理
track:磁道,其实就是磁盘上的同心圆,从外向里,依次是1号磁道、2号....sector:扇区,将磁盘分成的一个一个扇形区域,每个扇区大小 都是512字节,从外向里,依次是1号扇区、2号....cylinder:柱面,不同盘面上的同位置上的扇区构成了柱面,从外向里,依次是1号柱面、2号....分区时候,都是从1号开始分区的,所以,越靠前的分区,读写性能越好
12.2 MBR
Main Boor Record 主引导记录,系统启动,必须依靠MBR才能启动MBR是磁盘的第一个扇区,大小是512字节,这512字节分为三个部分最前面的64字节:分区表中间的446字节:bootloader,这个是一个程序,用于引导系统开启启动最后2字节:magic number,这个是用于指定bootloader是否有效
12.3 分区表
大小是64字节在分区表中,记录了分区从哪个柱面开始,到哪个柱面结束但是,在进行记录的时候,用8字节记录开始,用8字节记录,也就是说,16字节可以记录一个 分区,因此64字节最多可以分4个,这里的分区称之为主分区为了分更多的分区,就需要在磁盘上额外找个空间,存储更多的分表,这个存储更多 的分区表 的空间,称之为扩展分区通过扩展分区所分的更多的分区,称之为 逻辑分区
图解
注:
主分区的数量:0-41. 主分区可以没有,也就是将所有的分区都做成扩展分区来使用扩展分区数量:0-1主分区+扩展分区的数量:1-4逻辑分区数量:0~+1. 必须得先有扩展分区,才能有逻辑分区编号问题:主分区编号是 1-4扩展分区编号 1-4逻辑分区编号 5+
12.4 磁盘的命名
linux中,一切皆为文件/dev/sd字母/dev/sda 表示第一个磁盘/dev/sdb 表示第二个磁盘....
12.5 磁盘的操作
fdisk 磁盘名称 //对磁盘进行分区
选项:d 删除分区
n 创建新分区
p 打印分区信息
q 不保存直接退出
w 保存分区并退出
fdisk -l 磁盘名称 //查看磁盘信息
磁盘分区后需要对磁盘进行格式化:
mke2fs 磁盘名称
十三、进程和内存管理
13.1 查看内存
方法1:/proc/meminfo方法2:freefree -m 以mb为单位查看内存
/proc/meminfo
这个文件是一个伪文件这个文件中,记录了内存的相关信息注意: 这个文件是伪文件,所以不能用vi打开,而应该用cat打开
13.2 查看cpu
方法1:/proc/cpuinfo方法2:top相关概念平均负载:单位时间内,系统中处于可运行状态和不可中断状态的平均进程数。方法3:htop【默认没有安装,需要手动安装】
13.3 进程的管理
ps aux 显示所有进程
kill -9 pid 立刻杀死进程
kill -15 pid 等待没有用户在访问这个进程的时候,才会杀死进程
十四、文件的归档压缩
14.1 简介
压缩:linux中的压缩,默认只能压缩一个文件,不能压缩目录归档:linux中将多个文件或者目录,打成一个包为了能够将多个文件压缩成一个文件,可以先对多个文件进行归档,然后进行压缩,就可以了
14.2 相关命令
压缩命令:
xz gzip bzip2 zip
归档命令:
tar
tar 选项 归档文件名 要归档的文件列表
选项:-cvf 创建归档
-xvf 解开归档
十五、网络管理
15.1 查看IP地址
ifconfig 【这个命令在centos7中,默认可能会没有安装,需要手动安装】
ifconfig -a 查看当前主机上所有的网卡的ip地址,包括未激活的网卡
ip addr
ip link show
15.2 修改IP地址
ifconfig修改IP地址
ifconfig 网卡名 ip地址 netmask 子网掩码 up
配置文件修改IP地址【centos7为例】
配置文件的路径
/etc/sysconfig/network-scripts
配置文件的名字ifcfg-网卡名 例如:ens33的网卡配置文件名:ifcfg-ens33
配置文件的内容TYPE=Ethernet 表示网卡的类型,Ethernet表示类型是以太网 BOOTPROTO=dhcp 表示网卡的ip地址类型 dhcp表示是动态ip static表示是静态ip,如果是静态的,就必须手动写入ip地址 IPADDR=192.168.1.200 指定网卡的ip地址,但是如果是指定成了动态ip。这此行无效 NETMASK=255.255.255.0 指定网卡的子网掩码 GATEWAY=192.168.1.1 指定网卡的网关地址 DNS1=8.8.8.8 指定网卡的主DNS DNS2=114.114.114.114 指定网卡的辅助DNS UUID=4da71d23-76b4-464f-a918-c9cc6483f975 每个网卡有自己唯一的网卡编号,为了防止冲突,可以删除这行 NAME=ens33 指定网卡名 DEVICE=ens33 指定网卡名 ONBOOT=yes 指定网卡是否自动激活,yes表示开机自动激活,no表示开机自动禁用
让配置文件生效的命令systemctl restart network
15.3 相关命令
ping 选项 目标ip 测试网络是否通畅、对域名进行解析
选项:
-c 数字:指定ping几次
-w 数字:指定ping的等待超时事件
netstat 选项 查看当前本地主机和其他主机的链接情况,也可以查看当前主机开启的接口
选项
-a:显示所有的链接和端口信息
-n:以数字的方式显示【如果不用数字方式显的话,那么显示速度会非常慢】
-p:显示这个端口或者是链接所使用的进程编号【杀死端口占用的进程id,那么这个端口就可以
被关闭】
lsof -i :端口号 专门查看端口占用的进程的id
ss 这个命令的作用和用法于netstat命令完全一样
常用的选项组合
-tunl
-tunlp