目录
一、基础篇
(一)基本常识
1.linux的三种网络连接方式
1.桥接模式
在桥接模式下,虚拟机里面的网络地址必须和外部的网络地址保持在同一网段(也就是前三组数字必须是一样的)。这样linux操作系统才可以和外部的机器进行通信。但是如果用户人数太多,容易造成IP冲突。
2.NAT模式(网络地址转换)
在NAT模式下,虚拟机里面的网络可以不再和主机里面的网络保持在同一网段。但是主机里面会存在虚拟网卡(192.168.100.99),这个虚拟网卡的ip地址必须和linux里面的IP地址(192.168.100.88)在同一网段。这样linux就可以通过虚拟网卡和主机之间进行通信了。同时也可以通过主机的真实地址(192.168.0.50)和外部网络进行通信。这样的好处是可以避免造成IP冲突。
3.仅主机模式
这个很简单,就是linux系统的ip地址和主机的ip地址必须保持一致。
2.虚拟机的克隆
链接克隆-引用
这种克隆的方式占用的磁盘空间较小,克隆时间更快。本质上还是使用原来的linux操作系统,只是克隆了原linux操作系统的引用。
完整克隆-副本
创建完整克隆。这种克隆的方式占用是磁盘空间较大,克隆时间比较慢,相当于把原来的linux操作系统复制了一份。一般我们选择完整克隆。
3.虚拟机的快照
如果你在使用linux操作系统的时候,你想回到原来的某一个状态(也就是可能出现在误操作上造成的系统异常),需要回到原先某个正常运行的状态,vmware提供了这样的功能,就叫快照管理。
4.虚拟机的迁移和删除
虚拟系统本质就是文件(放在文件夹的),因此虚拟系统的迁移很方便,可以吧安装好虚拟系统的这个文件夹整体拷贝或者剪切到另外位置使用。删除也很简单,用VMware进行移除,选择从磁盘删除即可,或者直接手动删除文件夹
(二)目录结构
Linux只有一个盘,在Linux里面,一切事物都可以用文件来描述
- /bin
是Binary的缩写, 这个目录存放着最经常使用的命令。比如我们常用的cd命令 cp命令都是存放在bin目录里面。
- /sbin
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
- /home
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
- /root
该目录为系统管理员(root),也称作超级权限者的用户主目录。如果我们使用root账户登录,默认所处的目录位置就是在/root下面。
- /lib
系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。如果这个目录里面的文件被删除了,linux操作系统也就不能正常运行了。
- /etc
所有的系统管理所需要的配置文件和子目录。linux系统本身所需要用到的配置文件也是存放在etc目录。如果我们自己安装一些系统服务,比如mysql数据库服务,那么和数据库相关的配置文件(my.cnf)也是存放在/etc目录里面。
- /usr
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
- /boot
存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。如果这个目录里面的文件被删除了,linux操作系统也就不能正常运行了。
- /dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储。
- /proc
这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统的信息。这个目录我们不要动,否则可能造成系统的崩溃。
- /srv
service的缩写,该目录存放的一些服务服务启动之后需要提取的数据。这个目录我们不要动,否则可能造成系统的崩溃。
- /sys
这个目录存放了linux内核相关的文件信息。这个目录我们不要动,否则可能造成系统的崩溃。
- /tmp
这个目录是用来存放一下临时文件的。
- /media
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。比如我们插入的U盘 光驱都会被映射成对应的文件存放在media目录。
- /mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。比如我们上节内容设置的共享目录myshare。
- /opt
这是主机给安装软件所存放的目录,如果安装JDK可放到改目录下默认为空。上节内容我们安装VMwareTools-10.0.0-2977863.tar.gz。这个压缩文件就存放在opt目录的。
- /usr/local
简单的说就是应用程序安装之后,安装程序所存放的目录。一般是通过编译源码方式安装的程序。
- /var
这个目录中存放着在不断变化,扩充着的东西,最常用的就是包括各种日志文件。
(三)基本实操
1.远程连接Linux操作系统
使用Xshell,新建文件,输入Linux的ip地址,用户名和密码
上传文件:在windows操作系统(左边)选择指定文件,右键-->上传 即可。
下载文件:在linux操作系统(右边)选择指定文件,右键-->下载 即可。
2.vi、vim编辑器
3.Linux关机重启
- shutdown
shutdown -h now 表示立即关机
shutdown -h 1:表示一分钟后关机
shutdown -r now :立即重启
- halt
就是直接使用,效果等同于关机
- sync
把内存的数据同步到磁盘
- reboot
就是重启系统
注意细节:
- 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写入到磁盘中。
- 目前的shutdown、reboot、halt命令在关机前都进行了sync。
4.用户登录和注销
(四)用户管理
1. 创建用户
创建用户的权限只有root有,并且这些用户都会生成对应的目录,这些目录位于/home/用户名的目录下面。如果我们使用自己创建的用户登录,默认的情况下,用户所在的目录就是/home/用户目录所在的位置。
- 当用户创建成功后,会自动的创建和用户同名的目录。这个目录位于/home下面。
- 也可以通过 useradd -d来指定目录新的用户名,给新的用户名指定目录
2. 添加密码
创建密码的命令: passwd 用户名
3. 删除用户
- 删除用户,保存用户对应的目录 userdel 用户名
- 删除用户,对应的用户目录也删除掉 userdel -r 用户名
4. 查询用户信息
- 查询用户的详细信息
id 用户名
uid: 用户id gid:用户组id groups:组名
- 查看当前的用户的信息
who am i / whoami
- 切换用户
su 用户名
5. 用户组
可以将多个用户(具有相同权限)进行统一管理
groupadd gaibang #创建一个组
groupdel gaibang #删除一个组
之前我们创建用户的时候,没有指定组,其实系统会自动给用户分配一个组,这个组的名称和用户名称是一样的。
useradd -g 用户组 用户名#增加用户的时候,直接指定组名称
usermod -g 用户组 用户名#修改用户所在组
6. 用户和组相关的文件
(1)/etc/passwd文件
用户的配置文件,记录用户的各种信息。
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
(2)/etc/shadow文件
口令的配置文件,用户登录的时候需要口令(密码)。口令的验证都是通过这个shadow文件去验证的。
每行的含义:登录名:加密口令:最后一次修改的时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
(3)/etc/group文件
组的配置信息,记录linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
(五)运行级别
1.七种级别
0:关机
1:单用户(找回用户丢失的密码,可以使用单用户模式)
2:多用户状态但没有网络服务(一般很少用)
3:多用户状态但有网络服务(没有图形化界面,但是有网络,这种用的最多)
4:系统未使用,保留给用户(很少用)
5:图形界面
6:系统重启
常用的运行级别是3和5,我们也可以指定系统默认的运行级别。
切换运行级别的口令: init[0 1 2 3 4 5 6]
2.修改linux操作系统默认的运行级别
在centos7中,有一个文件/etc/inittab文件中,描述了运行级别的相关信息
[root@xq100 ~]# systemctl get-default #获取linux操作系统默认的运行级别
graphical.target # 图形化的运行级别
[root@xq100 ~]# systemctl set-default multi-user.target # 设置linux操作系统默认的运行级别为纯命令行级别
(六)如何找回root密码
1. 进入开机页面,按e
2. 找到以linux16开头的行数。在行的最后面输入:init=/bin/sh。
3. 接着输入完成之后,直接按快捷键Ctrl + X 进入单用户模式
4. 接着在光标闪烁的位置输入: mount -o remount,rw / 然后按回车键。
5. 在新的一行最后面输入:passwd,然后按回车键。输入密码,然后再次输入确认密码(密码长度最好是8位以上,但不是必须的)。密码修改成功之后,会显示passwd .....的字样,说明密码修改成功。
6. 接着在光标闪烁的位置输入: touch /.autorelabel(注意touch 与后面的/之间有空格)。完成后按回车。
7. 接着在光标闪烁的位置继续输入:exec /sbin/init(注意exec 与后面的/之间有空格)。然后按回车键,等待系统自动修改密码(这个时间可能会有点长,请耐心等待)。完成后系统会自动重启,新的密码生效了。
(七)帮助指令
man 命令名称(功能描述:获得指定命令的帮助信息)。
help 获得shell内置命令的帮助信息
(八)常用命令
1.文件(目录)相关的指令
pwd指令 显示当前目录的绝对路径
ls指令 显示当前目录下面的所有文件(目录)
常用选项:
-a: 显示当前目录下面的所有文件和目录 包括隐藏的。
-l: 以列表的方式显示文件(目录)信息。
cd命令 切换到指定目录
cd / 切换到系统根目录
cd ~ 切换到用户所属的用户目录
cd .. 回到当前目录的上一级目录
cd /home/xq 切换到指定目录吗
cd - 切换到上一条命令所在目录
mkdir :用于创建目录
mkdir -p animal/cat # 创建多级目录
rmdir:指令删除空目录
rm -rf 命令实现删除非空目录或者文件(r 递归删除 f不询问删除)。
touch: 创建空文件
cp:拷贝文件到指定目录
cp -r 文件夹 目标地址 #-r递归拷贝
rm:移除文件或者目录
-r:递归删除整个文件夹
-f:强制删除不提示
mv:移动文件(剪切)或重命名
在同一个目录下面操作: mv oldName newName (重命名)
在不同目录下面操作:mv Demo1.txt /home/guojing/Demo1.java # 剪切并重命名文件
cat 查看文件内容 cat [选项] 要查看的文件
cat -n /etc/profile #浏览文件 并显示行号
cat -n /etc/profile | more #浏览文件 并显示行号 分屏幕显示 使用空格键可以翻页显示
more more指令是一个基于vi编辑器的文本过滤器,他以全屏的方式显示文本文件的内容,more指令内置了若干快捷键。
more /etc/profile
操作 | 功能说明 |
空格键 | 向下翻页 |
Enter | 向下翻一行 |
q | 代表立刻more,不再显示文件内容 |
Ctrl + F | 向下滚动一屏幕 |
Ctrl + B | 返回上一屏 |
= | 输出当前行号 |
:f | 输出文件名和当前行号 |
less 指令用于来分屏查看文件内容,他的功能与more类似,但是比more更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载后才显示的,而是根据要加载的内容,对显示大型文件具有高效率。
less /etc/profile
操作 | 功能说明 |
空格键 | 向下翻动一页 |
上箭头键 | 向上翻动一页 |
下箭头键 | 向下翻动一页 |
/字符串内容 | 搜索字符串 n:向下搜索 N:向上搜索 |
q | 立刻less,不再显示文件内容 |
echo:将输入内容到控制台
echo $PATH # 输出环境变量
echo "hello,world"
head: head用于显示文件开头部分内容,默认情况下head希纳是文件前10行的内容
head /etc/profile # 默认显示前10条内容
head -n 5 /etc/profile # 默认显示前5行内容
tail指令 用于输出文件中尾部的内容,默认情况下tail指令显示文件的前10行内容
tail /etc/profile # 显示最后10行的数据
tail -n 5 /etc/profile #显示最后5行的数据
tail -f 文件 (实时监控文件发生的变化)
>指令和>>指令: >输出重定向 ,>>追加
ln -s [源文件或目录] [软连接名称]
ln -s /root /home/kobe/linkToRoot #创建一个软连接
history指令 查看用户已经执行过的历史指令
2.时间指令
date(功能描述:显示当前时间)
date +%Y(功能描述:显示当前年份)
date +%m(功能描述:显示当前月份)
date +%d(功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)
date -s 字符串时间 #设置时间
cal # 显示当前月份的日历
cal 2022 #显示整年的日历
3.搜索查找
find 将从指定目录下递归地遍历各个目录,将所有满足条件的目录显示在控制台。
find [搜索范围] [选项]
按照文件的名称查找文件 -name
查找指定用户所属的文件 -user
按照指定的大小查找文件 -size
find /opt -user 'root' #在/opt目录下,查询root用户创建的文件
find / -size +200M #查询大于200M的文件
locate指令可以快速定位文件路径。locate指令利用事先建立好的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度较快。
[root@xq100 ~]# updatedb # 一定要先执行这个指令创建locate数据库。
[root@xq100 ~]# locate Hello.java # 快速定位Hello.java文件所在的目录并输出
/home/kobe/Hello.java
/root/Hello.java
which指令 可以查看某个指令在哪个目录下
which ls # 查看ls指令所在的目录
grep过滤查找,管道符,”|“,表示前一个指令的处理结果输出传递给后面的指令处理。一般我们将 | 和 grep一起结合起来使用。
grep [选项] 查找内容 源文件
显示行号 -n
忽略自动大小写 -i
cat Hello.java |grep -ni 'Hello' #查找hello所在行,并显示行号。
4.压缩和解压缩
gzip/gunzip指令 gzip用于压缩文件 gunzip用于解压缩文件
gzip Demo1.java # 将Demo1.java 压缩成Demo1.java.gz文件
gunzip Demo1.java.gz # 解压之后 当前压缩文件会不存在
zip/unzip指令
zip [选项] XXX.zip 将要压缩的内容 (压缩文件和目录的命令)
-r: 递归压缩,即压缩目录
-d: 指定解压后文件存放方目录
zip -r myFile.zip kobe/ #将kobe目录及其下面的所有文件进行压缩,压缩成myFile.zip
unzip -d /home/tmp myFile.zip # 将zip文件解压到tmp目录下面
tar指令
tar指令是打包指令,最后打包后的文件是.tar.gz的文件。
tar [选项] XXX.tar.gz 打包的内容 (打包目录,压缩后的文件格式.tar,gz)
tar -zcvf MyFile.tar.gz /kobe/ #将home目录下面的kobe目录压缩成myFile.tar.gz
tar -zxvf MyFile.tar.gz #将myFile.tar.gz文件解压到当前目录
tar -zxvf myFile.tar.gz -C /home/tmp #将myFile.tar.gz文件解压到/home/tmp目录下面
选项 | 功能 |
-c | 产生tar打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解压tar包文件 |
(九)组管理和权限管理
1.组管理
在linux中每个用户都必须属于一个组,不能独立于组外,在linux中每个文件有所有者,所在组,其他组的概念。下面我们用一幅图来解释用户、组、其他组的概念。
默认情况下,谁创建了改文件,谁就是文件的所有者。
- 修改文件所属的用户
chown kobe apple.txt # 将当前文件的所属用户变成kobe
- 修改文件所在的组
chgrp taohuadao fox.txt #将组monster变更到taohuadao这个组。
- 修改用户所在的组
usermod -g taohuadao fox #将fox所属的组(monster)修改到taohuadao。
2.权限管理
总共10位,我们使用0-9来描述。
第0-9位说明
- 第0位确定文件类型(d,-,l,c,b)
-
- l是软连接,相当于windows的快捷方式
- d是目录,相当于windows的文件夹
- c是字符设别,鼠标,键盘(/dev 目录里面查看)
- b是块设备,比如说硬盘(/dev 目录里面查看)
- 第1-3位确定所有者(该文件的所有者)拥有该文件的权限 --User
- 第4-6位确定所属组,(同用户组的)又有该文件的权限 --Group
- 第7-9位确定其他用户拥有改文件的权限 --Other
-rw-r--r--. 1 root root 0 Aug 28 15:59 Demo1.java
- 第一个字符表示文件类型 - 指的是文件。
- rw- 文件所有者对当前文件是可读可写不可执行的权限。
- r-- 与文件拥有者同一组的用户的权限是可读不可写不可执行。
- r-- 当前文件的其他用户的权限是可读不可写不可执行。
- 1:文件:硬连接数或 目录:子目录数
- root:当前文件所属的用户
- root:当前用户所属的组
- 0: 文件大小单位是字节
- Aug 28 15:59:文件最后修改时间
- Demo1.java:文件的名称
权限的修改
u:所有者,g:所属组,o,其他人,a:所有人(u,g,o的总和)
#给/home/Hello.java所有者读写执行的权限,给所在组执行读执行的权限,给其他组读执行的权限
chmod u=rwx,g=rx,o=rx Hello.java
#给/home/Hello.java文件的所有者去除执行的权限,增加组写的权限
chmod u-x,g+w Hello.java
#给/home/Hello.java文件的所有用户添加读的权限
chmod a+r Hello.java
通过数字变更权限
r=4,w=2,x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名 等价于 chmod 751 文件目录名
3.一个案例
[root@xq100 ~]# groupadd police # 创建组police
[root@xq100 ~]# groupadd bandit # 创建组bandit
[root@xq100 ~]# useradd -g police jack # 创建用户jack,并将其设置在police组里面
[root@xq100 ~]# useradd -g police jerry # 创建用户jerry,并将其设置在police组里面
[root@xq100 ~]# useradd -g bandit xh # 创建用户xh,并将其设置在bandit组里面
[root@xq100 ~]# useradd -g bandit xm # 创建用户xm,并将其设置在bandit组里面
[root@xq100 ~]# passwd jack
[root@xq100 ~]# passwd jerry
[root@xq100 ~]# passwd xh
[root@xq100 ~]# passwd xm
[jack@xq100 ~]$ vim jack.txt # 创建jack.txt文件 并在里面编辑内容Hello
[jack@xq100 ~]$ chmod 640 jack.txt # 修改权限
[jack@xq100 ~]$ chmod 664 jack.txt
[root@xq100 jack]# usermod -g police xh
[xh@xq100 ~]$ cd /home/jack/ # 因为jack.txt在jack目录下面
-bash: cd: /home/jack/: Permission denied
结论:如果我们要对目录内的文件进行操作,就必须具备对该目录相应的权限。
[jack@xq100 home]$ chmod 770 jack # 在jack目录下面 修改文件权限770
(十)定时任务调度
1.crontab
任务调度:指在某个时间执行特定的命令或者程序。
任务调度的分类:
- 系统任务:有些重要的工作必须周而复始的执行 比如病毒扫描 。
- 个别用户工作: 个别用户希望执行某些程序,比如对mysql数据库的备份。
crontab [选项]
-e: 编辑定时任务
-l:查询定时任务
-r:删除当前用户的所有定时任务
创建一个定时任务,将etc目录下面的文件列表查询出来,追加到/tmp/etc.txt文件中,并每分钟执行1次。
# crontab -e
*/1 * * * * ls -l /etc/ > /tmp/etc.txt
时间规则:
项目 | 含义 | 范围 |
第一个 “*” | 一个小时当中的第几分钟 | 0-59 |
第二个 “*” | 一天当中的第几个小时 | 0-23 |
第三个 “*” | 一个月当中的第几天 | 1-31 |
第四个 “*” | 一年当中的第几个月 | 1-12 |
第五个 “*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
特殊符号 | 含义 |
* | 代表任何时间,比如第一个“*”就代表1小时中每分钟都执行1次的意思。 |
, | 代表不连续的时间,比如“0,8,12,16 * * *”就代表1天中的8点过0分,12点过0分,16点过0分都会执行1次。 |
- | 代表连续的世间范围,比如“0,5 * * 1-6”就代表星期1到星期6的凌晨5点过0分都会执行。 |
*/n | 代表每隔多久执行1次。比如“*/10 * * * *” 就代表每隔10分钟就执行1次命令。 |
时间 | 含义 |
45 22 * * * | 每天在22时45分执行任务 |
0 17 * * 1 | 每周一的17点过0分执行任务 |
0 5 1,15 * * | 每月的1号和15号的凌晨5点钟执行任务 |
40 4 * * 1-5 | 每周1-到周5的凌晨4:40分执行任务 |
*/10 4 * * * | 每天的凌晨4点。每隔10分钟就执行1次任务 |
2.at任务调度
- at命令是一次性定时执行任务计划,at的守护线程atd以后台的模式运行,检查作业队列来运行。
- 默认情况下,atd守护线程每60秒检查作业队列,有作业时会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定制的计划任务,执行完一个任务后就不再执行此任务了。
- 在使用at命令的时候,一定要保证atd进程的启动,可以用相关指令来查看
格式 | 含义 | 举例 |
HH:MM | 当天 HH:MM 执行,若当天时间已过,则在明天 HH:MM 执行 | 当天 4:00 (若超时则为明天 4:00):4:00 |
英文粗略时间单次 | midnight(午夜,00:00)、noon(中午,12:00)、teatime(下午茶时间,16:00) tomorrow(明天) | midnight、noon、teatime |
英文月名A 日期B [年份C] | C年A月B日执行 | 在 2018 年 1 月 15 日执行:January 15 2018 |
日期时间戳形式 | 绝对计时法时间+日期时间:HH:MM日期:MMDDYY或MM/DD/YY或MM.DD.YY | 在 2018 年 1 月 15 日执行:011518或01/15/18或01.15.18 |
now + 数量 单位 | 相对计时法以 minutes、hours、days 或 weeks 为单位 | 5 天后的此时此刻执行:now + 5 days |
at [选项] [时间]
at > 命令(输入两次 Ctrl + D)
#明天17点钟,输出时间都指定文件内,比如/home/date100.log
[root@xq100 home]# at 5pm tomorrow
at> date > /home/date100.log<EOT>
job 4 at Tue Aug 30 17:00:00 2022
# atrm 1 # 删除1号任务
(十一)磁盘分区
1.磁盘挂载
1. Linux 系统中的文件系统的总体结构是一定的:只有一个根目录,根目录下的目录结构独立且唯一(如 /boot、/dev、/bin、/etc 目录等都是唯一的),Linux 中的磁盘分区都是文件系统中的一部分。
2. 计算机的硬盘可以有多个、磁盘上的分区也可以有多个。
但每个磁盘要想连接到 Linux 系统中,需要将分区“映射”到文件系统的某一个目录下,这样访问目录即可访问对应硬盘分区,这种映射称为“挂载”。
3. 任何目录或其父目录都要挂载到硬盘的某个分区下。如需要将某一分区挂载到根目录下,Linux 系统才能正常工作。
4. 某个分区所挂载的目录,称为此分区的挂载点。
5. 磁盘的不同分区可以挂载到 Linux 文件系统的不同分区下,但不能同时挂载到一个相同的目录。
Linux 硬盘有两种:IDE 硬盘 和 SCSI 硬盘
- 对于 IDE 硬盘:驱动器标识为:hdx~
-
- hd 表示分区所在设备的类型,这里hd= IDE 硬盘
- x 为盘号,区分不同硬盘间的功能
标识 | 功能 |
a | 基本盘 |
b | 基本从属盘 |
c | 辅助主盘 |
d | 辅助从属盘 |
`~` 为分区号,区分同一硬盘上不同分区的功能
标识 | 功能 |
1-4 | 主分区 或 扩展分区 |
5 | 逻辑分区 |
对于 SCSI 硬盘:驱动器标识为:`sdx~`
- `sd` 表示分区所在设备的类型,这里`sd`= SCSI 硬盘
- `x` 为盘号,区分不同硬盘间的功能(盘号功能标识同 IDE 硬盘 a代表第一块硬盘 b代表第二块硬盘c代表第三块硬盘 d代表第四块硬盘)
- `~` 为分区号,区分同一硬盘上不同分区的功能(分区号功能标识同 IDE 硬盘)
[root@xq100 ~]# lsblk -f
NAME FSTYPE LABEL UUID MOUNTPOINT
sda
├─sda1 xfs 72921afb-f2fa-4b12-9338-28b31d19d15a /boot
├─sda2 swap 6b47cbdc-9db2-4e27-9309-3898c51b3d5f [SWAP]
└─sda3 xfs 569b448b-1d35-47d6-929d-ad256d81d19d /
sr0 iso9660 CentOS 7 x86_64 2019-09-11-18-50-31-00
NAME:驱动器标识
FSTYPE:文件系统类型
LABLE:文件系统 LABLE
UUID:分区唯一标识符,格式化磁盘后,会给分区分配一个32位的唯一的字符串
MOUNTPOINT:挂载点
1. 分区
# fdisk /dev/sdb 分区命令
2. 格式化磁盘分区,生成UUID
[root@xq100 ~]# mkfs -t ext4 /dev/sdb1 #格式化分区
[root@xq100 ~]# lsblk -f # 查看分区详细信息
3. 挂载分区
[root@xq100 ~]# cd /
[root@xq100 /]# mkdir newdisk
[root@xq100 /]# mount /dev/sdb1 /newdisk/ # 将sdb1磁盘分区挂载到newdisk目录
[root@xq100 /]# lsblk -f
umount /dev/sdb1或者 umount newdisk #卸载
注意:用命令行挂载的方式重启后会失效!!!,也就是说这种挂载关系是临时的。
[root@xq100 /]# vim /etc/fstab
2.查看磁盘
df -h #查询整个磁盘占用情况
du -h [目录] #查询指定目录的磁盘占用情况
-s | 指定目录大小汇总 |
-h | 带计量单位 |
-a | 含文件 |
--max-depth=1 | 子目录深度 |
-c | 列出明细的同时,增加汇总值 |
[root@xq100 opt]# du -h --max-depth=1 /opt
0 /opt/rh
208M /opt/vmware-tools-distrib
277M /opt # 汇总opt目录下面的磁盘占用情况
--------------------------------------------------------------------------------------------
#汇总和含文件查询
-[root@xq100 opt]# du -hac --max-depth=1 /opt
0 /opt/rh
69M /opt/VMwareTools-10.0.0-2977863.tar.gz
208M /opt/vmware-tools-distrib
277M /opt
277M total
3.实用指令
ll #统计/opt文件夹下文件的个数
ls -l /opt | grep "^d" | wc -l # "^d" 以文件目录开头 wc -l 统计个数
ls -lR /opt | grep "^-" | wc -l # R 代表递归。统计/opt文件下的文件的个数,包括子文件夹下的
ls -lR /opt | grep "^d" | wc -l #统计/opt文件夹下的目录的个数,包括子文件夹下的
tree /home #以树状结构显示目录结构(如果没有tree,则使用 yum install tree 安装)
(十二)NAT网络配置
1.原理
Vmnet8和本机可以ping通,linux可以和Vmnet8 ping通,通过Vmnet8虚拟网卡即实现linux和本机通信,进而实现和外网通信
linux网段要与Vmnet8一致,通过虚拟网络设备 VMnet8 转发虚拟机的网络流量可以使虚拟机能够连接到外部网络。
关于网关和网卡ip地址的一点解释:
192.168.159.2被用作VMnet8的网关地址,用于转发虚拟机的网络流量。虚拟机的IP地址和网关地址必须在同一子网中,以便它们可以相互通信。由于VMnet8的IP地址是192.168.159.1,所以可以将192.168.159.2作为网关地址。在此设置下,虚拟机将通过VMnet8网络设备发送到192.168.159.2的所有流量都将被转发到主机上的其他网络设备,从而实现与外部网络的通信。虽然192.168.159.2并没有被分配给任何物理设备,但它仍然扮演着VMnet8的网关地址的重要角色。
如果虚拟机的网关地址设置为192.168.159.2,那么发送到192.168.159.2的所有网络流量都会被虚拟机网络适配器所在的VMnet8虚拟网络设备的IP地址192.168.159.1所捕获,然后进行外部转发。这是因为虚拟机网络适配器和VMnet8虚拟网络设备都是通过虚拟交换机连接的,所以所有发送到虚拟机网关地址的流量都会通过虚拟交换机流经VMnet8虚拟网络设备的IP地址192.168.159.1。
设置虚拟机的网关为虚拟交换机所在的VMnet8地址的确可以直接访问外部网络,不需要再经过VMnet8的网关地址192.168.159.2。这样做可以避免捕获和转发的过程,提高效率。但是需要注意的是,VMnet8的IP地址192.168.159.1是由VMware Workstation自动分配的,如果在虚拟机中设置VMnet8的IP地址为网关地址,可能会导致IP地址冲突或者其他问题。因此,建议还是按照官方文档所述,设置虚拟机的网关为VMnet8的网关地址192.168.159.2。
2.配置指令
- ipaddr 在linux查看ip地址
- ifconfig 在linux查看ip地址
- ping 是否ping通指定的ip地址
- ipconfig 在windows操作系统里面查看网络的ip地址
3.设置固定ip
1. 编辑我们linux的网卡文件
这个网卡文件在/etc/sysconfig/network-scripts/ifcfg-ens33打开这个文件,进行编辑
2. 重启网络服务(systemctl restart network)或者重启系统(reboot)
4.设置主机名和host映射
修改/etc/hostname指定主机名名称
- C:\Windows\System32\drivers\etc下面的hosts文件,进行相关的编辑:192.168.10.130 xq100 # ip地址是linux的ip地址
- 编辑/etc/hosts文件:192.168.10.1 DESKTOP-EKI0P48 # ip是vmnet8的ip地址 后面的是windows的主机名称
(十三)进程管理
1.进程简介
[root@xq100 ~]# ps #查看系统中哪些正在运行,以及他们的运行的状况,可以不加任何参数。
PID TTY TIME CMD
2137 pts/0 00:00:00 bash
4166 pts/0 00:00:00 ps
ps -a:显示终端所用的进程信息
ps-u:以用户的格式显示进程的信息
ps-x:显示后台程序运行的参数
USER: 进程所属的用户名称。
PID:进程号。
%CPU:进程占用CPU的百分比。
%MEM:进程占用物理内存的百分比。
VSZ:进程占用虚拟内存的大小(KB)。
RSS:进程占用物理内存的大小(KB)。
STAT:进程状态,S-代表睡眠 R-正在运行 D-短期等待 Z-僵死进程 T-被停止的线程。
START:进程启动的时间。
TIME:进程使用CPU的时间。
COMMAND:进程启动所需要的命令和参数。
PID;进程号
TTY:终端机号
TIME:当前进行消耗的cpu时间
CMD:当前进程的名称或者执行对应进程的命令
2.应用
- ps -ef 以全格式查看所有进程信息。
- -e 显示所有进程 -f 全格式显示。
- 查看指定进程信息 ps -ef | grep sshd
kill [选项] 进程号 :通过进程号杀死/终止进程。
killall:会杀死当前进程和其子进程。
-9 表示强迫进程立即停止
我们首先在xshell终端使用kobe登陆。然后在另外一个终端使用root用户登录,并在root用户下面执行指令:ps -aux | grep sshd。
[root@xq100 ~]# kill 6940
终止远程登录服务sshd。不允许远程登录。然后重启sshd服务,允许远程登录。
[root@xq100 ~]# kill 1328
[root@xq100 ~]# /bin/systemctl start sshd.service
终止多个gedit(记事本打开文件的进程)
[root@xq100 ~]# killall gedit
强制杀掉一个终端
[root@xq100 ~]# ps -aux | grep bash
[root@xq100 ~]# kill -9 7946 #可以强制杀掉另一个命令终端
pstree [选项],可以更加直观的来查看进程信息。
-p:显示进程的PID。
-u:显示进程的所属用户。
(十四)服务管理
service(本质)就是进程,但是是运行在后台的,通常都会监听某个端口,等待其他程序的请求,比如说(mysql3306,sshd222,redis6379),因为我们又称为守护进程,在Linux中是重要的知识点。
1.service管理指令
- service 指令管理的服务在/etc/init.d查看
service 服务名 [start|stop,reload,status]
[root@xq100 init.d]# service network status
Configured devices:
lo ens33
Currently active devices:
lo ens33 virbr0
[root@xq100 ~]# service network stop # 此时Xshell连接linux会连接不上
[root@xq100 ~]# service network start #重启网络服务 此时Xshell会连接上linux
[root@xq100 init.d]# setup
- [*] 代表这些系统服务会随着开机自启动而启动
- 如果我们想去掉星号或者加上星号,上下按键切换到对应的服务按空格键即可。
- 使用Tab键选择OK或Cancel.
2.chkconfig指令
通过chkconfig可以给服务的各个运行级别设置自启动/关闭。
chkconfig指令管理的服务在 /etc/init.d查看。
注意:在Centos 7.0以后,很多服务使用systemctl管理。
[root@xq100 ~]# chkconfig --list
[root@xq100 ~]# chkconfig --list | grep network #查看指定服务在运行级别是否开启关闭
#对于network服务,进行各种操作,把network在3运行级别,关闭自启动。
[root@xq100 ~]# chkconfig --level 3 network off 关闭
[root@xq100 ~]# chkconfig --level 5 network on 打开
注意: 上面的数字代表linux的运行级别。chkconfig重新设置服务自启动或者关闭,需要重启机器reboot生效。
3.systemctl指令
systemctl 指令管理的服务在/usr/lib/systemd/system中查看。
systemctl [start | stop | restart | status] 服务名
[root@xq100 system]# systemctl list-unit-files | grep firewall
firewalld.service enabled
[root@xq100 system]# systemctl status firewalld.service # 查看防火墙状态
[root@xq100 system]# systemctl stop firewalld.service # 停止防火墙状态
[root@xq100 system]# systemctl restart firewalld.service # 重启防火墙
[root@xq100 system]# systemctl is-enabled firewalld.service # 知道完整服务名
[root@xq100 system]# systemctl enable firewalld.service #设置服务自启动 (服务运行级别 3、5)
[root@xq100 system]# systemctl disable firewalld.service #设置服务禁用自启动 (服务运行级别 3、5)
- masked 此服务禁止自启动
- static 该服务无法自启动,只能作为其他文件的依赖
- enabled 已配置为自启动
- disabled 未配置为自启动
4.防火墙指令
防火墙的核心功能:打开或关闭对应端口。关闭端口,则外部的数据请求不能通过对应的端口,与服务器上的程序进行通信在真正的生产环境,为保证安全,需要启动防火墙并配置打开和关闭的端口。
[root@xq100 system]# firewall-cmd --query-port=3306/tcp # 查询防火墙是否开启3306端口
no
[root@xq100 system]# firewall-cmd --list-ports # 查看防火墙开放的端口有哪些
[root@xq100 system]# firewall-cmd --permanent --add-port=3306/tcp # 开放防火墙对3306端口的访问权限
success
[root@xq100 system]# firewall-cmd --reload # 重载防火墙
success
[root@xq100 system]# firewall-cmd --list-ports
3306/tcp
(十五)动态监控
1.top指令
top与ps命令一样,它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
选项 | 功能 |
-d秒数 | 指定top命令每隔几秒刷新,默认3秒 |
-i | 使用top不显示任何闲置或者僵死的进程 |
-p | 通过指定监控ID来仅仅监控某个进程的状态 |
操作 | 功能 |
P | 以CPU使用率来排序,默认就是此项 |
M | 以内存使用来排序 |
N | 以PID排序 |
q | 退出top |
1.监控特定用户,比如我们监控jack用户(前提是jack登录了)
先输入top指令,然后按小写的u,最后输入jack然后回车,查看执行的进程。
2.终止指定的进程,比如我们要结束jack登录
top:输入此命令,然后回车,查看执行的进程
k:然后输入要结束的进程ID号 回车之后输入9 强制删除。
3.指定系统状态更新的时间(没隔10秒自动更新),默认是3秒
[root@xq100 ~]# top -d 10 # 每10秒刷新1次
2.监控网络状态
基本语法: netstat [选项]
选项说明 -an 按照一定的属性排列输出 -p 显示哪个进程在调用
[root@xq100 ~]# netstat -anp | more
#查看服务名称为sshd的服务信息。
[root@xq100 ~]# netstat -anp | grep sshd
Local Address:本机linux的ip地址
Foreign Address:外部的网络地址
tcp:网络协议
127.0.0.1 / 0.0.0.0: 当前linux机器的本地地址
631/25/6060....:应用程序监听的端口号
State: LISTEN 监听状态 ESTABLISHED:建立连接的状态
PID:应用程序的进程号 Program name: 应用程序的名称
(十六)rpm与yum
1.rpm
rpm是互联网下载包和打包和安装工具,他包含在某些linux分版中,他具有生产.rpm扩展名的文件,RPM是redhat package manage(软件包管理工具的缩写),类似于setup.exe。
#查询所有安装的rpm列表
[root@xq100 ~]# rpm -qa | more # 分页展示所有的rpm列表
#查询当前系统中是否安装了指定的软件
[root@xq100 ~]# rpm -qa | grep firefox # 查询linux系统中是否已经安装了火狐浏览器
firefox-60.8.0-1.el7.centos.x86_64
#查看软件包是否安装
[root@xq100 opt]# rpm -q firefox # 查看火狐浏览器是否存在rpm包(安装)
#查询软件安装的详细信息
[root@xq100 opt]# rpm -qi firefox # 查询火狐浏览器的详细安装信息
#查看rpm包安装之后的文件
[root@xq100 opt]# rpm -ql mariadb-libs-5.5.64-1.el7.x86_64
#查看指定的文件所属的rpm包
[root@xq100 opt]# rpm -qf /etc/my.cnf # 查询/etc目录下面的my.cnf文件所属的rpm包
#如果某一个rpm包我们不想要了,我们也可以卸载。
[root@xq100 opt]# rpm -e firefox #删除firefox
[root@xq100 opt]# rpm -e --nodeps firefox #强制删除firefox
#安装rpm包
[root@xq100 ~]# rpm -ivh /opt/firefox-60.8.0-1.el7.centos.x86_64.rpm
firefox:rpm包名
60.8.0-1.el7:rpm包的版本号
centos:rpm包适用于的操作系统
x86_64:适用于64位的操作系统。(如果是i686或者i386说明适用于32位操作系统,noarch表示通用。)
2.yum
Yum是一个Shell前端软件包管理器,基于RPM包管理,能够从指定的服务器自动下载RPM包并安装,并且可以自动处理依赖性关系,并且一次安装所有的依赖软件包。下面我们用一副图来理解yum命令:
#查询yum服务器上是否有需要安装的软件:
yum install | grep xxx软件列表
#下载并安装指定的yum包:
yum install xxx 的rpm包名