cpu的向下兼容性
32位和64位指32位和64位的二进制数
针对32位的cpu写的程序可以在64位的cpu上运行,反之不行
ROM read only memory 只读存储
SRAM 静态随机存储(高速缓存Cache)
DRAM 动态随机存储(内存)
8个2进制位组成一个字节,即8bit=1Bytes
1024Bytes=1kB
扇区是512个Bytes,硬盘上最小的读写单位
block块 Linux中 8个扇区=1block =4kB
一毛一毛的去花钱很费劲,就出现了1块和100块
虚拟内存:内存地址和硬盘地址的映射关系
CPU的指令集分为需要特权的指令集和一般的指令集,所有的I/O指令属于需要特权的指令,一般用户不能执行这类指令,只有操作系统内核才能执行这类指令。
CPU有个特殊的状态寄存器,其中显示当前的CPU处于内核态还是用户态
用户程序通过执行一个特殊的in指令t(intel x86的CPU)来获取操作系统的服务,重点是CPU在执行这条指令时,自动将状态置为内核态。
操作系统由操作系统的内核和系统调用两部分组成
以太网协议(数据链路层)的规定
一组电信号为一个数据包,叫做帧
每一个帧包含head报头和data数据
head报头(固定18个字节)包含
发送者/源地址 6字节
接收者/目的地址 6字节、
数据类型 6字节
接入internet的设备必须具有网卡,发送者和接受者的地址就是网卡的地址,即mac地址
每一块网卡上都有一个唯一的mac地址,通常由12位16进制数表示,前6位是厂商编号,后6位是流水号
IP地址的格式:网络地址+主机地址
网络地址用来表示这个IP地址属于哪一个子网
子网之间通过网关(相当于子网的代理人)来通信,跨子网通信要IP地址,子网内通信要mac地址
IP地址和子网掩码确定网络地址
hwclock #查看硬件时间,即RTC
hwclock -s #set the system time from the RTC
init 0 表示关机
init 6 表示重启
shutdown -h now 立即关机
su - jinzhi 切换到用户 jinzhi,jinzhi 是用户名
同时按住CTRL+ALT+F1~F6键来切换不同用户的终端
改密码的两种方法
passwd 用户名 #修改指定用户的密码,新密码要输入两次
echo 新密码 | passwd -- stdin 用户名 这种方法只有root用户才能使用
passwd [选项] 用户名
pwd 查看当前路径
wget 用来从指定的URL下载文件
scp
scp命令可以在linux服务器之间复制文件和目录。
cal 查看当前月份的日历,也可以指定月份和年份
cp 只是在本机进行拷贝不能跨服务器
切换目录
cd .. 切换到上一级目录
cd - 切换到上一次所在的目录
ls命令查看目录
ls /home/rose 注意要有空格,ls命令默认查看目录的内容,即子文件和子文件夹
ls -d /home/rose 查看home/rose目录本身
ls -ld /home/rose 查看/home/rose 目录本身的详细信息(见下图)
ls -l /home/rose 查看/home/rose 目录中子文件和子文件夹的详细信息
ls -l 等价于 ll
(74字节表示大小,创建时间)
/home/rose 目录的属主和属组,因为是root用户创建的该目录
rwx表示属主的权限,r-x表示属组的权限,r-x表示除了属主和属组以外其他用户的权限
下图中 r=4表示读权限,w=2表示写权限,x=1表示执行权限
chown=change owner
chown rose.rose /home/rose #将目录/home/rose的属主和属组分别改为rose和rose
chown -R rose.rose /home/rose #将目录/home/rose以及目录下所有文件和文件夹的属主和属组分别改为rose和rose #R表示递归地改
chown rose.mail /var/spool/mail/rose #将邮箱/var/spool/mail/rose 的属主和属组分别改为rose和mail
下图中
d开头的表示目录,-开头的表示普通文件,b开头的表示磁盘文件
[root@db01 ~]# ll /dev/sda
brw-rw---- 1 root disk 8, 0 Dec 20 11:54 /dev/sda
ls --help | less 以分页方式查看ls的帮助,退出按q键
a) bin目录:用来存放常用的可执行文件
b) sbin目录:用来存放系统的可执行文件
e) etc目录:配置文件目录
dev 设备文件
ls -a /home/egon #查看egon家目录下所有的文件(包含隐藏文件,文件名以点开头)
ls /home/egon #查看egon家目录下所有的非隐藏文件
目录管理
新建目录
mkdir /a
mkdir /a/d 要先新建a,然后才可以在a里面新建d文件夹
直接新建多层目录的方法
mkdir -p /a/d/e/f
#-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
修改目录
mv /a/d /a/d1 将d修改为d1
mv /a/e /b/ 将e移动到b目录下
mv /a/e /b/e1 将e移动到b目录下,并且重命名为e1
删除目录
rm /a/d d为一个目录,无法直接删除
rm -rf /a/d 递归地删除d目录,即将d和d目录下的子文件及子文件夹一起删除
文件管理
新建文件
touch a.txt 在当前目录下新建一个a.txt文件,没有指定路径,可以在文件前面指定路径
修改文件
mv a.txt b.txt 将当前目录下的一个a.txt文件改为b.txt
rm b.txt 将当前目录下的一个b.txt 文件删除
rm -f b.txt 直接删除,不询问,直接删除
cat命令查看文件内容
cat /etc/passwd 查看用户信息
less /etc/passwd 分页查看
head /etc/passwd 默认查看前10行
head -n 1 /etc/passwd 指定查看前1行
tail /etc/passwd 默认查看后10行
tail -n 1 /etc/passwd 指定查看最后1行
tail -f /etc/passwd 查看新增的内容
cp /etc/passwd /temp/passwd_new #复制文件
echo aaaaaaa > /tem/aaa.txt #以覆盖的方式写
echo aaaaaaa >> /tem/aaa.txt #以追加的方式写
history 查看历史命令
!命令序号 可以重新执行对应的命令
用户管理
useradd -u 1002 -g jinzhi -d /test_user -c 'xxx' -s /bin/bash test_user #新增用户
-u指定用户id,-g指定用户所在的主要的组名(如果是-G指定用户所在的非主要的组), -d指定用户的家目录,-c指定描述信息,-s 登陆的shell
在/etc/group中,成员所在的主要的组不会列出该成员的名称,成员所在的非主要的组会列出该成员的名称
id 用户名 #查看用户的id
userdel egon #家目录和邮箱没有删除
userdel -r egon #都删除了
bin/bash 表示可登录的用户
x 表示密码占位符,该用户登录需要输入密码
sbin/nologin 表示不可登录的用户
VIM编辑器
vim /etc/passwd 打开passwd 文件(刚打开的时候命令行模式),按a以后进入编辑模式,编辑完了按Esc 退出编辑模式进入命令行模式,然后 输入冒号进入扩展模式和w保存,在按q推出,a=append,i=insert ,o表示光标定位到当前行的下一行,O表示光标定位到当前行的上一行
在命令行模式下删除与复制的操作
dd 删除光标所在行
DD 删除光标所在空行
任一数字键 +dd 删除光标所在行及其后面的所有行
yy 复制光标所在行内容
任一数字键 +yy 复制光标所在行及其后面的所有行
p 粘贴在光标所在行的下一行
u 取消操作
ctrl +r 恢复操作
G 光标移动到文件的最后一行
gg 光标移动到文件的第一行
H 光标移动到屏幕的第一行
L 光标移动到屏幕的最后一行
M 光标移动到屏幕的中间一行
在命令行模式下查找命令:/内容
在扩展模式下
替换命令:%s /shutdown/sb/g #g表示全部替换,不加g只替换每行中找到的第一个
添加行号:set nu
vim /etc/shadow #shadow 存放密码经过加密转换后的消息
vim /etc/group 组信息
组名 组密码占位符 组id 组成员
下图中的组都没有组成员,可以为组添加组成员
组管理
groupadd group1 #新建一个组
groupdel group1 #删除组
groupmod -g 1083 group1 #将group1 的组ID改为1083
groupmod -n group2 group1 #将group1 的组名改为group2
查看普通用户邮箱
ls /var/spool/mail/
ll /var/spool/mail/
touch /var/spool/mail/rose #给rose 用户建邮箱
和用户有关的6个文件
/etc/passwd
/etc/shadow
/etc/group
/etc/gshadow
/var/spool/mail/
/home/rose #用户名rose的家目录
属主属组其他人对文件的rwx权限
u=user g=group o=others
root用户建了一个a.txt,
chmod o=- a.txt #等号=是赋予权限,也可以使用+或者-在已有的权限基础上增加或者减少权限
chmod o+r a.txt #在已有的权限基础上增加r读权限
chmod o=rx a.txt #x是执行权限,前提是要有r读权限
chmod o-x a.txt #在已有的权限基础上减少执行权限
o=-表示其他用户没有任何权限
r=4表示读权限,w=2表示写权限,x=1表示执行权限
chmod 744 a.txt #7=4+4+1表示user,group和others的权限
对文件的执行权限是指把文件当作一个命令去执行。
可以通过cd命令切换到文件所在目录 ,然后 ./filename 来执行
usermod -G egon tom #将tom加入egon组,egon组为tom的非主要的组
某个用户对某个文件没有权限,但是某个组对该文件有权限,把那个用户添加到那个组,那个用户拥有那个组的权限。不过用户需要重新登陆
属主属组其他人对目录的rwx权限
u=user g=group o=others
对目录的读权限是指可以看到目录下有哪些子文件和子文件夹
对目录的写权限指可以在该目录下新建文件夹,删除文件夹,,修改文件夹名称,删除文件,新建文件等
对目录的执行权限是指可以通过cd命令切换到该目录
对目录的写权限要和执行权限要同时出现,因为要先进到目录中,才可以进行写操作,拥有执行权限才可以进到目录中
chmod o=r /test #对others 赋予对目录/test的读权限
chmod o=wx #对others 赋予对目录/test的写和执行权限,
tar归档(不是压缩)命令
c表示create,f表示文件,v表示详细信息,x表示拆档,-C指定目标位置
.tar后缀没有任何意义,这样命名归档文件是为了以后查看方便
文件压缩和解压缩
gzip 文件压缩以后会带.gz后缀,对应cvzf
gunzip 文件解压缩以后不带.gz后缀
可以先归档再压缩
也可以归档的同时就压缩
tar cvzf test1.tar.gz a.txt b.txt c.txt #cvzf 中的z表示压缩,cvjf 也可以压缩
.gz是自己加的,方便查看,一看就知道是压缩过的,不加.gz的话,用gunzip解压缩会解不了
bzip2 test.tar1 压缩 ,对应cvjf
bunzip2 test.tar1.bz2 解压缩
用一个解压缩方法解压两种压缩文件
tar xf test.tar.gz -C /test1 #-C指定解压的目标位置
tar xf test.tar1.bz2 -C /test2
目录压缩和解压缩
tar cvzf test.tar.gz /etc/ 压缩目录
tar xf test.tar.gz -C /test2 解压目录,test2中会有一个etc文件夹
tar cvzf etc1.tar.gz /etc/* 压缩目录下的所有子文件和子文件夹
先切换到etc目录下,然后用下面相对路径的方式压缩,解压的时候不会出现etc文件夹
tar cvzf etc1.tar.gz *
tar xf etc1.tar.gz -C /test3 解压目录,test3不会有一个etc文件夹,直接出来etc目录下的文件和文件夹
磁盘分区
ls /dev/sda #s=SCSI接口Small Computer System Interface,d=disk,a表示机器上接的第一块硬盘
ls /dev/sd 输入这条命令后按tab键会出来sd下的 sda sda1 sda2 sda3 sdb等
df #df命令打开以下内容
fdisk -l /dev/sdb #查看第二个盘的分区信息
fdisk -l /dev/sda #查看第一个硬盘的分区信息
第一个硬盘sda在装系统的时候已经分了三个区:sda1 sda2 sda3,看第二个硬盘sdb 还没有分区
dos分区方式只能应对硬盘容量<=2T的分区,fdisk 命令用的就是dos分区方式
fdisk /dev/sdb 准备开始对sdb 盘进行分区
最多只能分4个主分区,主分区可以用来装系统和引导信息,扩展分区中可以再划分逻辑分区,逻辑分区不可以装系统,通常分完主分区后剩余的空间给扩展分区,扩展分区不是主分区但会占用主分区的一个编号,如果分了4个主分区后磁盘空间还有剩余,也不能分扩展分区了。
fdisk命令列表中常用的命令:
d:删除一个(已经存在的)分区,其中d是delete的第1个字母。
m:列出fdisk中使用的所有命令,其中m是menu的第1个字母。
n:添加一个新的分区,其中n是new的第1个字母。
p:列出分区表的内容,其中p是print的第1个字母。q:退出fdisk,但是不存储所做的变化,其中q是quit的第1个字母
w:退出fdisk并存储所做的变化,其中w是write的第1个字母。
磁盘格式化(制作文件系统)
mkfs=make file system
mkfs.xfs /dev/sdb1 #将sdb1这个分区格式化为xfs的格式
mkfs.ext4 /dev/sdb3 #将sdb3这个分区格式化为ext4的格式
xfs和ext4两个都是日志文件系统
mount挂载(将目录和磁盘分区对应)
mkdir /sdb1 #目录的名字随意,只要将对应的磁盘分区挂载到对应的目录就可以,一个磁盘分区可以挂载到多个目录,相当于开多个口子
mkdir /sdb3 #目录的名字随意,只要将对应的磁盘分区挂载到对应的目录就可以
mount /dev/sdb1 /sdb1
mount /dev/sdb3 /sdb3
mount 命令查看挂载
df -h #查看文件系统信息,似乎比df看得清楚一点
df -hT 或者df -Th ,加T会增加显示文件系统类型一列
卸载
umount /dev/sdb3
umount -l /dev/sdb3 #强制卸载(cd sdb3 中的时候,通过umount /dev/sdb3 无法卸载)
ext4文件系统
文件系统是管理分区文件的,文件系统的工作机制,有4种块superblolck ,innode ,directory 存放文件名和关联的innode 号,存放文件内容的块
删除文件的时候,innode 块变成free状态,directory 中文件名和innode 号关联关系解除
有superblolck 块,用来管理其他的块(其他的块用来做存储),记录其他块的状态
innode 块 #存放文件信息,如innode 编号,文件类型,权限,属主,指针等,建一个文件就有一个innode 块
#存放目录信息,目录类型
df -i /sdb3 #查看目录/sdb3 下 的innode 信息,有多少innode号,已经用了多少等
innode 编号用完了以后,即使还有磁盘空间,也不能新建文件了,
df -i查看所有目录下的innode 信息
ls -di /sdb3/ #查看目录/sdb3 本身的innode号
ls -i /sdb3/filename #查看目录下某个文件的innode 号
du -sh /sdb3 #查看目录下文件的大小
软链接
软链接是指向文件名的(下图),可以跨分区,即软链接和源文件可以不在同一个分区
ln -s /test/a.txt /test0/a.txt #创建/test/a.txt的软链接/test0/a.txt
ll /test0/a.txt #详细信息中第一字母l表示文件类型是链接
rm /test/a.txt #删除源文件后再通过 cat test0/a.txt 软链接查看就找不到了
删除源文件/test/a.txt后再通过 echo xxxxx >> test0/a.txt 软链接向源文件写入内容,相当于又新建了一个a.txt文件,
硬链接
硬链接是指向innode号,不可以跨分区,即硬链接和源文件必须在同一个分区,删除源文件后可以通过硬链接找到innode号,进而找到文件内容所在的block块
虚拟内存(交换分区)
查看swap分区信息 swapon -s
mkswap /dev/sdb4 #用/dev/sdb4分区创建虚拟内存
swapon -a /dev/sdb4 #激活这个虚拟内存,类似挂载
swapoff /dev/sdb4 类似卸载
free 命令查看内存信息,就是读取/proc/meminfo中的部分内容
free -m 以M兆为单位显示
cat /proc/meminfo #查看内存信息
cat /proc/cpuinfo #查看cpu信息
将内存划分各个空间,每个程序独占一块,相互之间不影响,两个程序之间要交换数据的话,就再单独划分一个共享的内存空间
uname -a 查看系统信息
cat /etc/redhat-release 也可以查看系统信息
内存的作用就是分配buffer和cache 给程序使用
buffer和cache
- A buffer is something that has yet to be "written" to disk.
- A cache is something that has been "read" from the disk and stored for later use.
也就是说buffer是用于存放要输出到disk(块设备)的数据的,而cache是存放从disk上读出的数据。这二者是为了提高IO性能的,并由OS管理。攒一大波
清理cache
proc表示process ,sys表示与系统有关的 ,vm表示vware 虚拟机程序
echo $[] #中括号里面可以进行数学运算
上图以字节为单位
used表示已经分配出去且已经使用的,buff/cache表示已经分配出去还未经使用的,free剩余可供分配的
available表示?
total=used+buff/cache+free
进程管理
top #查看系统信息
僵尸进程:cpu不调用了但还在内存中的进程,例如父进程挂了应该把子进程清理掉,但是没这么做,
ps aux #查看系统中的进程,ps=process status
ps aux | less #分页查看
VSZ 占虚拟内存,RSS占物理内存,TTY,终端,STAT 状态,
ps aux | grep lib #筛选出包含lib内容的进程,最后一条是这个命令本身
grep=Global Regular Expression Print 全局正则表达式
直接运行程序:输入firefox 回车,这样运行会占用这个终端
结束firefox这个进程的两种方法:
kill -9 3483 #-9表示强制结束,3483是进程ID
pkill -9 firefox
让进程在后台运行:firefox &
后台运行不会占用这个终端
可以用:jobs 查看后台运行的进程的工作号,下图中为1
结束后台运行的进程的方法:kill-9 %1 #1是工作号 #也可以用前面两种方法
pstree root #查看root用户的进程树
pgrep int #直接显示包含int内容的进程 的PID进程号
rpm 软件包管理
dd命令测试硬盘写的速度,dd命令很业余
if =input file of=output file bs=block size count=2写入2个这样大小的
从if后面的位置提取内容,写入of后面的位置
软件包在linux中分成两种:1 二进制包 2源码包 source 用高级语言写的代码
rpm -ivh packagename #安装某个包,i=install,v表示显示详细信息,h表示进度
rpm -qa #查看所有安装的rpm 包 ,q=qurey ,a=all
rpm -qa | grep xxxx #使用grep在所有已经安装的包里面进行筛选
rpm -ql packagename #查看某个包的安装路径 l=locaton,也就是一些文件
rpm -q packagename #查看是否安装了某个包
rpm -e packagename #卸载某个包,e=erase
rpm 这种安装方式有缺点,即如果要安装的包依赖其他的包,需要手动安装被依赖的包
yum 安装方式可以解决依赖问题,yum需要对应一个目录,该目录下存放许多软件包,并且存放了软件包之间的依赖关系,yum直接读取这些关系
软件包安装好了就是一些文件,要查看文件所属的软件包
rpm -qf +文件路径
echo $PATH #取变量PATH的值
ls命令完整的执行过程
字符ls——命令解释器shell——环境变量PATH——在各个路径里面查找相关文件——找到后看有没有alias别名
——最后执行文件
which ls #查看ls命令对应的文件所在的路径,alias ls='ls --color=auto' 别名ls 代表了引号里面的功能,
which指令会在环境变量$PATH设置的目录里查找符合条件的文件
可以人为起别名,在某个终端起的别名是临时的,关闭这个终端就失效了,要想永久有效要写入文件中
/etc/bashrc 或者 /etc/profile 文件中
3294是firefox的进程号
yum软件包管理
同一时刻只能有一个yum程序在运行
yum的与源有关的配置文件存放路径/etc/yum.repos.d/
yum安装需要对应一个存放软件包的仓库(即一个目录),包含了各个有依赖关系的软件包和他们之间的依赖关系
yum install httpd #安装httpd 包
yum -y install httpd #安装httpd 包的时候,跳过问题,-y表示不要提示,直接确认
yum -y erase httpd ##卸载httpd 包,连依赖包一起卸载了
创建本地yum源,yum源中指定软件包仓库的位置
即在yum源的配置文件存放路径/etc/yum.repos.d/中创建一个文件,并写入以下内容
第一行[]中括号的内容任意
第二行名字任意
第三行指定依赖关系和要安装的软件包及仓库所在的位置,/opt(自定义的路径)表示依赖关系和要安装的软件包的路径,file://表示基于本地文件,file:// /opt
第四行 enabled=1表示开启这个本地源,yum命令就会从指定路径读取相关信息并执行相关操作
第五行 表示不检测gpg
#我找不到依赖关系和要安装的软件包的路径
yum clean all #清理yum缓存
yum -y install epel-* # -*是通配符,#安装扩展源
安装扩展源以后就可以安装扩展包
yum makecache -y 先创建缓存,再安装就不用检索源了,直接去下载,速度会快一些
yum update -y #更新所有的包,改变软件设置和系统设置,系统版本和内核都升级
yum upgrade -y #更新所有的包,不改变软件设置和系统设置,系统版本升级,内核不改变
yum reinstall 包名 #重新安装某个包
/etc/yum.conf #yum从网上下载安装包,安装以后,默认删除这些包,keepcache=0表示不保留缓存,可以修改配置文件,可以改为keepcache=1即保留
cachedir 是缓存的路径,也可以指定自己想要的路径
安装httpd依赖的包放在/cangku_httpd/路径下
createrepo /cangku_httpd/ #自动创建包之间的依赖关系
自定义本地yum源 进行安装的过程
自定义网络yum源 不需要前三步
yum install和yum localinstall的区别
yum install会去yum仓库查找相应的软件并安装,仓库中的软件都是解决了依赖关系的,而yum localinstall是用来安装本地rpm包的命令,首先rpm包要先下载到本地,然后在本地目录执行yum localinstall *.rpm,yum会自动搜寻依赖关系并安装而rmp -i *.rpm不会自行解决依赖关系,缺少依赖就会报错
源码安装(编译安装)
需要另外安装一些包gcc-gdb-plugin来把源代码编译成二进制代码
yum grouplist
源码安装步骤
yum groupinstall 'Development Tools' -y #Development Tools 这个组里面包含了这些编译包
tar xvf Python-3.9.0.tgz #解压缩
cd Python-3.9.0 #切换到目录
./configure --prefix=/usr/local/python3.9 #运行configure 文件,目的是为了生成makefile文件
make && make install #make=编译 make install=编译安装
以下步骤添加环境变量
方法一添加的环境变量只能在某个终端使用
PATH=/usr/local/python3.9.7/bin:$PATH #表示把/usr/local/python3.9.7/bin这个路径添加到PATH中,$PATH表示取PATH原来的值
echo $PATH #查看PATH 中有哪些路径,显示以下结果
/usr/local/python3.9.7/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
方法二添加的环境变量可以在任何终端使用
vim /etc/profile #在这个文件里面加以下代码
PATH=/usr/local/python3.9/bin:$PATH
export PATH # 把PATH做成环境变量,然后在任何终端都可以用了
vmstat 查看状态
iostat 查看
netstat - tunalp #查看网络和端口信息,t=tcp,u=udp,
ifconfig #查看ip地址
nginx服务
nginx -t # 检查nginx配置文件语法是否有错误
url(统一资源定位符):http://192.168.164.129:80 # 找到某个软件
uri:http://192.168.164.129:80/a/b/c.txt # 用户要这个软件到某个目录下找到某个文件通过http协议传给他
/usr/share/nginx/html/a/b/c.txt
systemctl restart nginx #重启,让配置文件生效,重启的过程是先停掉,再开始,所以服务器通常不能重启,应该用systemctl reload nginx #重新加载,重新读一下配置文件
vim /etc/nginx/nginx.conf #配置文件中的root路径: /usr/share/nginx/html
location中如果配置了根路径root的位置,就用自己的配置,自己没有配置的话,就用外层server里面root配置,
Index #指定在客户端没有指定读取哪个文件的情况下,默认读取的文件,本例为index.html,可以指定多个文件,如果前面的没找到,就往后找,找到第一个就停止,index.html通常是网站的首页
systemctl start nginx #开启nginx
systemctl status nginx #查看状态
mkdir -p /usr/share/nginx/html/a/b #在服务器上新建一个目录,要包含root路径,用来存放文件
echo 'welcome Page!' > /usr/share/nginx/html/a/b/c.txt #写入内容
systemctl stop firewalld #关掉防火墙,linux,linux中的防火墙是软件防火墙,还有硬件防火墙,关防火墙应该在一开始就做,防火墙是环境
systemctl disable firewalld #开机不启动防火墙
systemctl enable firewalld #开机启动防火墙
systemctl enable nginx
在客户端访问
tail -f /var/log/nginx/access.log
nginx反向代理
网络文件系统
Network File System(nfs)
rpc =remote process call 远程过程调用
文件存储:服务端给给客户端提供的是一个目录,已经分区和格式化,客户端不可以分区和格式化
块存储:服务端给给客户端提供的是一块裸盘,客户端可以分区和格式化
对象存储:一个uri地址对应一个文件:百度网盘,要修改网盘的文件时,需要先把文件下载下来,修改完成,再上传,产生一个新的uri地址覆盖原来的uri地址
rpcbind 和 nfs-utils 是两个包
yum install rpcbind nfs-utils -y
网络配置
ifconfig #查看网卡信息 if=interface
ip add show #查看网卡信息
which ifconfig #查看ifconfig 命令所在的文件
ens160 物理网卡的网卡名,IP:192.168.164.129 mtu最大传输单元1500字节 ether(mac地址):00:0c:29:48:dd:40
RX 收了多少包 TX 传了多少包
netmask 子网掩码
lo 回环网卡 127.0.0.1 #自己和自己通信
配置IP地址
ifconfig 网卡名(ens160 )新IP # 这样是在命令行里面临时修改
ifconfig ens160 192.168.1.109/24
配置DNS
DNS的配置文件
vim /etc/resolv.conf
配置网关和子网掩码
route add default gw 192.168.1.1 netmask 255.255.255.0
route del default gw 192.168.1.1 netmask 255.255.255.0
查看 route -n
systemctl restart network (centos7上的重启命令) #以上修改都是临时配置,重启network会失效,修改配置文件永久有效
nmcli c reload (centos8上的重启命令)
cd /etc/sysconfig/network-scripts/ #这个路径下有配置文件ifcfg-ens160
vim ifcfg-ens160
原始配置
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens160"
UUID="61201ec6-f7fb-49f4-9925-85480e44c335"
DEVICE="ens160"
ONBOOT="yes"
IPV6_PRIVACY="no"
改了
BOOTPROTO="static"
IPADDR=192.168.1.66
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.1
vim /etc/hosts #本地解析文件:给一个ip地址起一个名字,以后直接用这个名字的时候,就可以解析成对应的ip地址
hostname # 查看主机名
hostnamectl set-hostname db01 #设置主机名
source
当修改了/etc/profile文件,想让它立刻生效,而不用重新登录;这时就想到用source命令,如:source /etc/profile
source filename 或 . filename
在Linux下可以使用blkid命令对查询设备上所采用文件系统类型进行查询。
mysqladmin --version #查看mysql的版本
cat /var/log/mysqld.log | grep password #查看安装mysql时生成的初始密码
ALTER USER user() IDENTIFIED BY 'Page@1730'; #修改当前用户的密码
set global general_log_file="/tmp/general.log"; #设置日志文件的位置
set global general_log=on;
mysql的配置文件
vim /etc/my.cnf
netstat -lnp | grep 3306 #查看端口被哪个程序占用
netstat -tulnp | grep 3306 #查看端口被哪个程序占用
vim /etc/sysconfig/network-scripts/ifcfg-ens160
从远程主机复制文件到本机
远程主机地址+文件所在路径 #复制到本机当前路径,并且名为nginx.conf
scp root@192.168.164.131:/etc/nginx/nginx.conf nginx.conf
scp root@192.168.1.66:/usr/bin/dnf-3 dnf-3
```
https://www.cnblogs.com/mlgjb/p/7991903.html
怎么调整网卡名称?
选中install centos7 引导项,然后按Tab,然后输入方框中的内容: net.ifnames=0 biosdevname=0
https://www.cnblogs.com/linhaifeng/%E6%89%B9/6295875.html
https://www.cnblogs.com/linhaifeng/p/6045600.html