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 切换到用户 jinzhijinzhi 是用户名

同时按住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

```

 

缓冲区(buffer)与缓存(cache)

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