一阶段Linux整理

                                                                     **第一天课程**

#  新机器配备标准

【自动关闭防火墙和selinux;更换yum源为国内源;(netstat -tanlpu)httpd是apache

bind-utils【解析dns 的命令dig】ntp[校时]

yum -y install       vim   yum-utils wget unzip bash-completion net-tools rpcbind  nfs-utils  crontabs  lrzsz  vsftpd lftp  httpd lsof bind-utils ntp  zlib-devel pcre pcre-devel  ncurses ncurses-devel openssl-devel bison gcc gcc-c++ make cmake  crontabs     yum-axelget  

通过rz命令导入shell脚本,   bash  sh (tab) 命令执行更换yum源

手动添加nginx 源

安装MySQLip

# 缓存源安装MySQL

```
1    从文件夹中缓存源 rz 6个rpm到root下, 【上传rpm缓存包到root目录下】
2.  yum -y install *.rpm               【安装rpm包】
3. systemctl start mysqld              【启动mysqld服务】
4.  cat /var/log/mysqld.log |grep pass 【查看原始密码】
   mysql  -p'7yeN6eBIHK>6'
5. vim /etc/my.cnf                     【在最后添加如下内容,跳过密码验证和支持中文   
   validate_password=off
   character-set-server=utf8
   auto-rehash   
   systemctl restart mysqld            【修改配置文件需要重启】
6 cat /var/log/mysqld.log |grep pass
   set password=password("1");
   mysql -p1                           【修改密码后登陆验证】
   
   ------------------------------------------------------s---
自动补全库名,表名,
vi /etc/my.cnf

auto-rehash   
```


# 固定端口

cd  /etc/sysconfig/network-scripts/

cp ifcfg-ens33 ifcfg-ens33.bak 

vim ifcfg-ens33 [编写配置文件,记得更改ip] 
TYPE="Ethernet"
BOOTPROTO="none"
DEVICE="ens33"
ONBOOT="yes"
IPADDR="192.168.59.10"
GATEWAY="192.168.59.2"
PRIFIX="24"
DNS1="114.114.114.114"
 systemctl restart network                【服务器重启】

# 安装nginx源

```
vim /etc/yum.repos.d/nginx.repo 

[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

yum repolist
----------------
yum -y install nginx
【nginx主配置文件/etc/nginx/nginx.conf  下载源之后再下载服务包】
nginx虚拟主机配置文件
[[email protected] ~]# vim /etc/nginx/conf.d/default.conf


server {
    listen       80;   
    server_name  localhost;  
    charset utf-8; 
       location / {                        
        root   /usr/share/nginx/html;   
        index  index.html index.htm;    
    }
    }
    
    --------------------
    vim /usr/share/nginx/html/index.html

charset utf-8; 子配置文件加入词条命令后可以显示中文


systemctl restart nginx
```

下载linux系统,

# 破解密码

```
1.选定虚拟机后,重启操作系统,短时间按e
2.找到linux16那一行,把光标移动到最后,UTF-8后面隔个空格添加 init= 、/bin/sh
3.ctrl+x #保存退出
4.进入系统后,以rw方式重新挂载/分区
#mount -o remount,rw   /
5.永久关闭selinux [防止开机启动]
#vim /etc/sysconfig/selinux 
添加SELINUX=disabled    :wq!
然后输入passwd
6.修改密码
7.  # touch /.autorelabcl  #重新识别新的root密码
7. # exec /sbin/init  #重启机器,
```

# 学习操作系统和系统命令,

如[root@localhost ~]#

root当前登录的用户名

@ 分割符号

localhost  主机名

~当前用户的家目录

#当前身份信息为超级管理员

/是根

DNS ---------》   将于明解析为IP

DHCP    动态分配ip

ip的作用:定位互联网中一台服务器的位置

端口的作用: 定位一台服务器中具体服务的位置

还原拍照了第一步安装yum  -y  install wget   

home放家目录,etc放配置文件,dev放    var/log存放经常变化的文件

PATH变量记录着命令的存放目录

​                                                                   命令

ip a 查看本机的IP

cd     切换目录

pwd  查看当前的目录的绝对路径

useradd 创建用户

​               -u    uid

​               -g    指定主组

​               -G    指定附属组

​              -s     指定用户的shell信息

​                                   可登录shell---》 /bin/bash

​                                不可登陆shell---》 /sbin/nologin

passwd  设置密码

su - 用户名登录

exit 退出用户

userdel -r  删除用户

usermod      修改用户信息

​       -l   修改用户名

​       -u  修改uid

​      -g   修改主组

​      -G  修改附属组

​      -s   修改shell信息

ls  查看当前工作目录下的属性信息

一个(.)点代表的当前工作目录

两个(..)点代表当前工作目录的上一级目录

ls后面加:-l 详细显示 使用ll /时和使用ls / -l一样,ll /是ls / -l的别名

-d  查看目录本身的信息

-h 根据文件内存大小转换单位(人性化显示),跟-l一起使用

-a 显示所有文件(包含隐藏文件)

-t  显示多个文件属性信息时以时间排序

短选项可以合并

--help  查看帮助文档

cd     目录路径    切换工作目录

cd  .. 回到上一级目录

cd或者cd ~直接回家目录

cd -回到上一次所在目录

*号作为通配符可以匹配任意

touch         新文件路径        创建普通文件

​     touch  /root/A{1..10}     针对连续性的文件名,批量创建

​    touch  / root/{张帅,张豪}   针对不具备连续性的文件名连续创建

​    touch   $(date+%F).txt

​                  date时间  %F年月日

​                  1date  +%F` .txt     创建时间文件

mkdir 创建目录文件

mkdir   -p 连级创建   -p连级创建

mkdir  -p -v连级创建,分级显示

rm -rf+文件名是删除记得加点

poweroff       init0 关机

reboot           init6 重启

type        显示命令的别名

alias  别名='命令'     设置别名

​          {alias PFF='poweroff'在单引号内部写命令    设置别名}

unalias    别名          取消别名

​                 -a              取消所欲别名

​                {unalias  PFF 单独取消一个别名,unalias  -a 取消全部别名}

ctrl+a 移动光标到行首

Ctrl+e 移动光标到行尾

Ctrl+u 删除光标左侧

Ctrl+k 删除光标右侧

Ctrl+w 删除到左侧单词空格位置

ctrl+ 方向键移动但不删除

ctrl+c终止命令

esc.   调取上一条命令最后一部分

history 历史命令(默认记录1000个)

分号和&&       命令分割,符号两边命令分割

which  了解某一个命令的存放位置是绝对命令

echo  如果使用一个>是覆盖,使用两个>>是追加

   echo   “内容”    >  文件路径         覆盖到指定文件内,如果文件不存在,将自动创建文件

   echo   “内容”   >>  文件路径        将内容追加到指定文件内,如果文件不存在,将自动创建文件

cat  查看一个文件的全部内容

​       -n      显示行号

​       -A     显示控制字符,换行符

​       后面必须跟普通文件

head   默认查看前10行的内容

​        head  -2  /etc/passwd     默认查看前两行

tail      默认查看后十行的内容

​        tail  -1 /etc/passwd        查看文件的最后一行

​       tail  -f /var lon/messages  动态查看文件的尾部

grep “关键字”  /root/huahua      显示有关键字的文件

​         “^a”/root/huahua             行首定位

​         “b$”/root/huahua             行位定位

​          “^$”                                   查看空行    

less                                             分页显示

​     less  /绝对路径         空格是翻页,回车是翻行,上下箭头可以来回翻

​              /关键字           搜索

​     q           是退出

more    文件名                             分页显示文件内容

​        空格是翻页,回车是翻行

cp  +

​      -r    把目录及内容全部复制

mv     移动

​          mv  root/A-1/   root/D-1/opt

mv    目录1/alan    目录2/tom     改名

mv   目录1/alan     目录1/tom      源文件改名

rm  -f /目录/文件            强制删除目录下的文件,不用询问

​       -r /目录/文件           删除

# VIM

编辑模式

   i             进入编辑模式

   o           

命令模式

​     esc       进入命令模式

​       g        光标移动到开头

​       G       光标移动到结尾

​       3G    定位到第3行

​       

尾行模式

  shift 冒号进去

q      不保存退出

q!  强制退出

w     保存不退出

wq   保存并退出

yy    复制

dd   删除

p            往下粘贴

大写p    往上粘贴

ygg     复制光标上的内容

yG       复制光标下的内容

5yy     光标位置下5行复制

dgg    删除光标上的内容

dG     删除光标下的内容

u   撤销

ctry r   撤销你的撤销

r +y    替换光标所在处的字符将光标所在位置替换成y

x        删除光标所在位置的单个字符

D=d$       删除光标说在未知右侧的所有内容

d^=d0     删除左侧所有内容

# 批量添加注释

```
crtl+v 进入可视块模式, 移动方向键选中位置
按大写I ,输入#字符
按两次esc就进入保存。
```

# 查找和替换 /词   %(1,8)/旧/新/g

```
语法----> :范围 s/old[匹配域]/new【替换域】/选项 
:s/world/nice/         #替换当前光标所在行
:3s/sbin/nice/         #替换指定行
:1,5 s/nologin/soso/   #从1-5行的nologin 替换为soso
:,5 s/nologin/soso/   #从当前-5行的nologin 替换为soso
:%s/bin/soso/          #替换所有行【仅第一次出现替换】
:%s/sbin/nice/gi       #替换行内所有关键字【每行全局替换】
i不区分大小写,g全局替换
注释:%表示替换所有行  g表示行内所有关键字

将文件另存(另存为)
语法----> :w 存储到当前文件
:w /tmp/aaa.txt    #另存为/tmp/aaa.txt 【假设当前tmp下没有文件会自动创建aaa.txt文件】
:1,3 w /tmp/2.txt  #从1-3行的内容另存为/tmp/2.txt【假设当前tmp下有2.txt文件,选中的内容会把2.txt中原来的文件覆盖掉。】
```

# 用户管理

/etc/group       组信息文件

/etc/passwd     用户信息文件

bin:x:1:1:bin:/bin:/sbin/nologin
分隔符::
第一列:用户名
第二列:密码
第三列:用户标识号--->(uid)是一个整数,系统内部用它来标识用户。通常用户标识号的取值范围是0~65535。0是超级用户root的标识号
第四列:gid
第五列:描述信息。
第六列:家目录
第七列:是用户登陆到界面的第一个命令,开启一个shell。登陆shell

超级管理用户      0         

系统用户             1-999             bin/fasle

普通用户             1000-65535  bin/bash     /sbin/nologin 

groupadd         创建组

​               -g         指定gid

groupdel          删除组

groupmod      修改组信息

​                  -n    制定新组名

​                   -g   修改gid

​            基本权限U                 G                      O

id加用户名        查询

​                        拥有者    文件的所属组     其他人

​    r 读的权限 =4;w  写的权限 =2;X  执行权限 =1; 

chown   修改属组;属主

​    chown     用户.属组 /home/filel.txt   修改属组跟属主

​     chown    用户   /home/filel.txt       只修改拥有者

​     chown    .属组    /home/filel.txt        只修改属组

​     chown   .属组    /home/filel.txt   -R    递归(filel.txt 下的属组都归写的属组)

chmod  修改ugo               r=4      w=2    x=1  

​               u=rwx   g=rw   x=r                 修改权限

​               u+r   g+w  o+x                        增加权限

​              u+wx   g+r  0-x /home/filel.txt   追加或者减权限

​                      646   /home /filel.txt       用数字修改权限

# 读写权限与提权u/g +s   o+t  隐藏权限a/i

##### rwx 针对普通文件的影响

1、r:读取权限,对应命令是cat、head、

2、w:写权限,对应命令是echo “内容”  >>文件所在路径

3、x:执行权限,书写文件路径的情况下,可以将文件内的每一行,当做系统命令来执行

​        【注意】,当只有x权限时,x权限不生效,x权限需要跟r权限配合才能生效。

##### rwx针对于目录文件的影响

1、r:读取权限,该权限需要x权限的配合,否则会出现报错,到时不影响查看文件属性

2、w:写权限,该权限需要x权限的配合,否则会出现报错,并且无法体现w权限的效果

3、x:执行权限,该权限可以单独给予,主要影响用户是否可以进入该目录

umask         权限掩码

suid             命令提权,可以让任何用户使用touch命令时,像使用root在用touch一样。只能对二进制命令提前;例如:切换到root  chmod   u+s /绝对路径

cd不是二进制命令

chmod  u-s  /rm      取消提权

​         通过提权后的创建型命令,创建出来的拥有者都是root

sgid          组继承,针对目录下的高级权限

​    chmod g+s /home/QF              

SBIT  (T)权限      只有稳健的属主才可以删除文件

​       chmod  o+t  /home/QF      除了属主别的用户不能删除

sudo 

​        visudo        去到100行,修改想要的权限,在修改命令前加个NOPASSWD:/ALL的话就不需要密码,拥有所有权限。su    -    到用户后想增加的话,命令先打sudo

```
[root@linux-server ~]# visudo
     91 ## Allow root to run any commands anywhere
     92 root    ALL=(ALL)       ALL
     93 jack    ALL=(ALL)       NOPASSWD:ALL
     94 alice   ALL=(ALL)       NOPASSWD:/usr/bin/mkdir, /usr/bin/rm, /usr/bin/touch
     从91行处添加。
```

chattr +a                                  只能追加普通文件,能查看,不能覆盖,不能删除(包含root)

​     chattr  +i  /root/file-1            不能删除,不能追加,只能查看(包含root)

​    chattr  +A   /root/file-1         设定文件的访问时间

```
chattr +A file3  #告诉系统不要修改对这个文件的最后访问时间
```

删除使用减号

lsattr   查看      

# yum源

```
制作本地yum源
通过镜像制作本地yum源
cd /etc/yum.repos.d/   #yum源配置文件存放目录
vim CentOS.Base.repo  #在编写yum配置文件是必须是.repo
文件里写入:
[centos7u4]  #yum源区别名称,用来区分其他的yum源
name=centos7u4  #yum源描述   yum源名字
baseurl=file:///mnt/centos7u4  #指定本地yum源的路径
enabled=1  #是否使用此yum源(1为打开,0为关闭)
gpgcheck=0 #检查软件
mkdir /mnt/centos7u4    在/mnt下创建本地yum源存放目录
将本地镜像上传到虚拟机中的/root目录中 
挂载镜像
# 语法: mount            挂载设备                  挂载点 
#       mount    CentOS-7-x86_64-DVD-1708.iso /mnt/centos7u4/------------
------------------------------------------
通过开启yum下载缓存功能制作自己的yum源
打开Yum缓存功能:安装完软件之后,软件不会被删除(默认安装完之后,不会保留安装包)   vim /etc/yum.conf  修改下面参数的值为1,软件会被保存到cachedir指定的目录下
修改keepcache=1
mkdir   /yum_cache   创建存放yum的目录
find        搜索范围           选项     参数
find      /var/cache/yum/   -name "*.rpm" | xargs -i mv {}  /yum_cache/
vim /etc/yum.repos.d/myyum.repo
[myyum]
name=缓存yum源
baseurl=file:///yum_cache/
enabled=1   #默认是开启的  
gpgcheck=0
yum install -y createrepo   #创建repo文件工具
createrepo /yum_cache/     //此目录就可以作为yum源了
yum clean all &&  yum makecache  
------------------------------
源码包安装nginx
yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel  #编译环境的准备
wget http://nginx.org/download/nginx-1.16.1.tar.gz  安装压缩包
tar   xzf   nginx-1.16.1.tar.gz   解压安装包
cd nginx-1.16.1   进入到目录
./configure   --user=www   --group=www   -- prefix=/usr/local/nginx
make   #编译文件
make install  #安装文件
useradd www   #创建nginx用户
systemctl stop firewalld  #关闭防火墙
/usr/local/nginx/sbin/nginx  #启动nginx
/usr/local/nginx/sbin/nginx   -s    stop  停止nginx


```

1,标准输出
2,标准错误,
3+,进程在执行过程中打开的其他文件
&:表示正确错误混合输出

echo   $?         判断上一条命令是正确的还是错误的(除了零都是错误的)

/dev/null       黑洞文件

cat  <

​       内容

​       EOF             

​     cat >> /root/t2<

​          内容

​          EOF                   指定填写的内容到指定的地方

   |                管道符号

   ls /ect     |grep 'sys'                       将ls/etc/的结果总结到后面的结尾 ;查看etc下有没有包含sys的文件

​       xargs                默认结果交给结尾

​                   -i          mv       {}    /root      加-i就管道到大括号里面     大括号依赖于xargs

#    软件管理

.rpm                    安装包后缀

wget     加域名加安装包路径       

rpm  -ivh  加软件包                    安装

​         -qa    |  wc-1                      显示本机所有rpm安装包

​        -qa    | grep   “软件名”       查看安装的软件

​        -ql       软件名                      可以显示软件包可以产生哪些文件。并显示文件的绝对路径

​         -qf     文件路径                显示安装安装好的文件是由那个软件产生的

​          -e    软件名称                  卸载

wget      加下载地址        -大写o  指定存放路径         下载方式

curl   加下载地址     -小写o   另存为的路径

下载方式

​           yum操作  

yum分为本地yum和远程yum

yum  clean all                   清理缓存的全部安装包数据

yum   makecache            缓存软件包信息

yum repolist                    查询yum源信息

yum provides  rz            查看命令属于那个软件

yum list                            查看源文件里有的软件,无论安装没安装

yum  -y  install 软件名称      安装软件

yum  -y  reinstall  软件名称   重装软件

yum -y remove 软件名         不用确认,卸载软件

更换yum源

cd /etc/yum.repos.d              移动到etc下的yum.repos.d的目录

mkdir back                              创建叫back的目录文件

mv  *.repo back                     移动到back

curl  -(小写)o /文件路径 /国内yum源网站地址 /repo/Centos-7.repo            下载国内yum源

cd  /ec/yum.repos.d/            移动到yum.repos.d 下

ls                                              查看

​            制作本地yum源仓库

mkdir  /opt/QF2305                       创建QF2305的目录

mount  镜像    /optQF2305/         

源码包管理 

yum -y install gcc make zlib-devel pcre pcre-devel openssl-devel             编译环境安装

​         下载缓存制作自己的yum源

先去vim  /etc/yum.conf     把下面的keepcache修改成1            改成1的话安装好不会删除安装包 ,0是安装好了删除安装包

​                                  conf修改指定参数

yum  install  -y  httpd  安装一个叫httpd的软件

mkdir / home/aa       在home下创建一个叫aa的目录

find  搜索  /var/cache/yum/   “这个地址”  -name  "*.rpm"   一个名字后缀是rpm的安装包并且管道到xargs交给结尾-i并写到大括号里mv移动到{}/home/aa

ls /home/aa   查看home下的aa

yum  install -y  createrepo   创建一个叫repo的文件工具

createrepo  /home/aa      给aa这个目录文件证明是yum源

vim /etc/yum.repos.d/myyum.repo 进入myyum.repo编辑

​      name=起的名字

​      baseurl=file://本地地址

​                    =http://网络地址

​      enabled=1      默认是1

​      gpgcheck=0     关闭防火墙检查

​          进程就是程序在内存中的表现形式

ps    aux                        静态查看进程

​                   |head        只查看前十行查看PID

​        -ef       | head      不只查看前十行PID还能查看PPID,查看详细参数

ps aux |grep sshd     指定查看pi为sshd的进程

netstat -tanlp    |grep  "进程名,端口  ,pid"  查看

查看带端口的进程:先安装一个lsof的软件包,yum  install lsof     s使用lsof查看端口,lsof  -i:22

# 动态查看进程

load average            CPU平均负载

第一个数字是1分钟,第二个数字是5分钟,第三个数字是15分钟。显示的数字乘以%再除以核数,就算出来了CPU的负载

top ,  htop 是查看动态进程   q退出;

uptime  显示的是top的第一行

w           计算终端,跟top一样,但是窗口窄w命令出不来

按pid杀死进程

ps aux |grep sshd    过滤查出sshd的pid

kill -1  加上查出来的pid     重新加载进程(不改变pid)

​      -9  加上查出来的pid     强杀死

​      -15 加上查出来的pid   正常杀死(这个默认不写也行)

​     -18 加上查出来的pid   激活进程

​     -19 加上查出来的pid   暂停进程

pkill  -信号   进程名字      跟上面的结果一样

-1,-9,-15,-18,-19 都是信号

#### 端口被占用时

pkill -9 nginx;  如果服务启动一半崩溃,关联服务死进程,比kill效果好

kill -9  3670;  根据查到的进程号杀死进程。

lsof  -i:80;   netstat -lantpu |grep 80  查看挡墙网络进程的端口号

查看系统的版本及内核

cat  /etc/redhat - release               查看版本

uname -a                      查看正在运行的内核版本

uname  -r                      查看内核版本

修改主机名

hostnamectl  set- hostname  想要修改的名字     修改完之后断开与终端的连接,重新连接

hostname        查看主机名

# 作业控制

调入后台

命令  加&调入后台,但是有回显

nohup       命令     &   调入后台并创建一个nohup.out 的文件,回显在这个文件中

Ctrl +z   调入后台,但是调入的是进程中的命令,并停止进程

jobs        查看后台的工作号,只会显示我调入后台的,不会显示系统调入后台的

bg  %2  将后台暂停的第二个继续在后台运行

fg            调取最近加入后台的程序到前台,加上%序号调取的是指定的程序到前台

```
作业控制指的是控制正在运行的进程的行为。比如,用户可以挂起一个进程或者放到后台去运行,等一会儿再继续执行该进程。
sleep 7000 &   #&:让命令或者程序后台运行
#ctrl+z 把程序放到后台(这方法会让【程序在后台暂停】)
[root@linux-server ~]# jobs  #查看后台的工作号
[1]-  Running                 sleep 7000 &
[2]+  Stopped                 sleep 8000
[root@linux-server ~]# bg %2  #让暂停的程序在后台运行,%是用来修饰job number,2就是job number。(程序的工作号)
[root@linux-server ~]# fg %1  #将后台的程序调到前台

```

free  -m   查看使用了多少MB内存

​         -g    查看使用了多少GB,但是少于1024MB显示的是0

echo   3  >  /proc/sys/vm/drop_caches       临时清理内存

USER     运行进程的用户

PID        进程ID

PPID      父进程一般都是主进程,也是守护进程

SHR       共享进程

%CPU  CPU占有率

%MEM  内存占有率

VSZ        虚拟内存

RSS        实际内存       后面没有单位默认是B,B代表字节

TTY        是否占用终端,?问号代表没占用

STAT      进程状态

​       R  运行

​       s   可中断睡眠

​       D  不可中断睡眠

​       T  停止进程

​       Z  僵尸进程

​       X  死掉的进程

START   启动进程时间

TIME     占用CPU的时间

COMMAND 进程名字

systemctl     管理程序开启,关闭

# 计划任务

计划任务可以针对不同的用户在相同的时间执行不同的任务

一次性需求计划任务

at   now   +3min下面写任务  ctrl  D  写完东西用的

at   具体时间点    <  文件路径

atq   查询有没有一次性任务

atrm   序号       删除某个任务

循环性计划任务

yum     -y   install   crontabs               如果软件不存在安装

systemctl    status    crond.service    查看服务状态

cd    /var/spool/cron/                           存储位置

crontab      -l     查看

​                   -e    编辑

​                   -r   删除

​                   -u   指定用户

※           ※          ※            ※             ※        要执行的命令

分钟      小时      日           月            周          建议绝对路径

0-59      0-23      1-31     1-12         0-7 

​          ※              代表着每时每刻

​          ※/5          每隔5分钟

​            ,   :          不同的时间段 

​               -           表示范围

#  日志系统

命令:直接使用,并且不需要守护进程(不使用命令是,改名令不产生进程)

服务:不能直接使用,需要启动服务进程才能使用

```
终端位置,/pts/0 (伪终端)意味着从诸如ssh或者telnet的远程链接的用户,tty(teletypewriter)意味着直接连接到计算机或者本地链接的用户;

```

tail -f /var/log/messages                  动态查看日志文件的尾部,系统日志文件

tail  -f  /var/log/secure                      记录认证,安全日志

tail /var/log/maillog                            跟邮件相关

tail /var/log/cron                                crond 、at进程产生的日志

tail /var/log/dmesg                              和系统启动相关

tail /var/log/yum.log                            yum的日志

tail -f /var/log/mysqld.log                   MySQL日志

tail /var/log/xferlog                             访问FTP服务器相关

/var/log/boot.log                                 系统启动过程日志记录存放

w        当前登录的用户

last     最近登录的用户

lastlog   所有用户登录的情况

0 debug            有调试信息的,日志信息最多

1 info                 一般信息的日志,最常用

2 notice            最具有重要性的普通条件的信息

3 warning         警告级别

4 err                  错误级别,阻止某个功能或者模块不能正常工作的信息

5 crit                  严重级别,阻止整个系统或者整个软件不能工作的信息

6 alert                需要立刻修改的信息

7 emerg             内核崩溃等严重信息

下面的能含盖上面的

none                  什么都不记录

日志轮转(日志切割)

weekly               轮转的周期,一周轮转,单位有年,月,日 
rotate 4             保留4份 
create                轮转后创建新文件 
dateext              使用日期作为后缀 
compress        日志轮替时,旧的日志进行压缩 
include /etc/logrotate.d               包含该目录下的配置文件,会引用该目录下面配置的文件

启动服务

systemctl  start  crond         启动crond

systemctl  status  crond      查看crond的服务状态

ssh远程连接服务

yum install -y openssh*       安装openssh默认是安装过得

ssh   [email protected]     -p    22    远程连接(root和@默认不用写)-p跟的是端口号

ssh- keygen                  生成秘钥

ssh-copy-id                  传输秘钥

修改端口号

vim /etc/ssh/sshd_config             打开这个,修改端口号

远程拷贝

scp -P(大写)   端口号  / a.txt    ip : / 路径       目录的话加上-r        谁是远程用谁的ip        远程拷贝

常用命令

ping       +IP地址         查看ip地址的机器联网没有

ping  -c    地址            限制次数,查看两次

​             -w 2                等待的时间,等待两秒

# 服务器对时

先安装ntp         yum  -y  install ntp

授时源

ntpdate  加上授时源        矫正时间

[ntp1.aliyun.com              阿里授时源] 不好使

cn.pool.ntp.org               中国授时源

ntpdate     cn.pool.ntp.org 

date  -s        想要修/改的时间       修改时间【慎用】

# find [xrags/-exex/tee]  sort

sort   /1.txt  -t : -k3  -n   |unqi -c  指定列按数字排序 [【只有紧挨的才能去除,所以需要先排序】

```
-exec和xargs的区别


-exec:参数是一个一个传递的,传递一个参数执行一次命令。
xargs:将前一个命令的标准输出传递给下一个命令,作为它的参数转换成下一个命令的参数列表。
1、exec 每处理一个文件或者目录,它都需要启动一次命令,效率不好; 
2、exec 格式麻烦,必须用 {} 做文件的【代位符】,必须用 \来转义; 作为命令的结束符,书写不便。 


```

文件查找      -name  指定名称     -type 文件类型

按文件名查找

find   /  -name  “名字“                根据名字查找文件

find  /etc  -iname  “名字”           忽略名字大小写查找

find  /etc -iname   "*.txt "          查找后面带txt的

按大小查找

find /etc -size  +1M                     查看大于1M的

find /etc -size 5M                         查看等于5M

find /etc -size -5M                        查看小于5M

find / -size +3M -a -size -5M        查找/下面大于3M而且小于5M的文件                    -a 和的意思

find / -size -1M -o -size +80M      查找/下面小于1M或者大于80M的文件              -o 且的意思

按时间查找

find /opt -mtime +5                     查看修改时间5天之前mtime 修改时间    +代表之前

find . -mtime -2                             查看修改时间2天之内  -代表之内

find /opt -atime +1                       查看访问时间1天之前  atime访问时间    +代表之前

find . -amin +1                                查看访问时间在1分钟之前                  -amin代表几分钟访问    +代表之前

find /opt -amin -4                          查看访问时间在4分钟之内         

   -amin代表几分钟访问      -代表之内

find /opt -mmin -2                          查看修改时间在2分钟之内

   -mmin 代表几分钟修改    -代表之内

按照文件类型查找

find /dev -type f        f普通文件        查看普通文件

find / -type f -size -1M -o -name "*.txt"   查看名字面是.txt.且文件大小1M的普通文件

find /dev -type d    d目录                 查看目录文件

find /etc/ -type d -name "*.conf.d"  查看名字是.conf.d 的目录文件

find /etc -type l    l链接                      查找链接文件

find /dev -type b    b块设备              查找b块设备文件

find /dev/ -type b -name "sd*"         查找名字是sb开头的b块设备文件

按照文件权限查找

 find . -perm 644            .是当前目录    精确查找当前目录下权限是644的

  find /usr/bin  -perm -4000    包含set uid         查看/usr/bin权限为4000的uid

 find /usr/bin  -perm -2000  包含set gid             查看/usr/bin 权限为2000的gid

 find /usr/bin  -perm -1000  包含sticky               查看/usr/bin 权限为1000的所有文件

找到后的处理动作

find /etc -name "ifcfg*" -exec cp -rf {} /tmp \;        查找带ifcfg开头的文件复制到tmp下

+;  多个结果     \; 单次执行结果

-exec 和| xargs 的区别是-exec是一个一个复制转移的

|xargs是打包转移的,但是|xargs不能管道带空格的文件

```
对:ls cp rm  mv 管道不能执行。所以通过xargs。
语法:
 cat a.txt | xargs  -i cp {} /目录  
 {}:前面传过来的内容
 -i :为了让大括号生效
 目录时  -r
 解释:前面传过来的东西交给大括号
 cat file.txt |xargs ls -l          
 前面是目录或者目录的路径。  ls - l  后面可以不加大括号,直接执行

```

# 打包压缩上传下载 tar c/x v z/j  f

压缩文件

打包

tar cvf xxxx.tar filename   被打包的文件 ...
c :create  创建
v :verbose 详细信息
f :file  文件

解压缩

语法:
gunzip    压缩文件
bunzip2   压缩文件
gzip     -d 压缩文件  
bzip2  -d 压缩文件
-d:dicompress 解压缩

打包一起压缩

tar cvzf file.tar.gz  源文件
tar cvjf file.tar.bz2 源文件
z:表示gz压缩
j:表示bz2压缩

tar czf dir1.tar.gz dir1              打包并压缩

tar xzf dir1.tar.gz -C /usr/local/    解压到指定位置

tar czf  /tmp/`date +%F-%T`-etc.tar.gz /etc/  将打包的文件放到/tmp目录下,并以当前时间开头命名

# 创建软连接和硬链接

硬链接

 ll -i /绝对路径       显示路径下的inode编号

ln /源文件的绝对路径/硬连接的绝对路径         创建硬链接

删除源文件硬链接也能用

软连接

ln -s /源文件的路径/ 软链接的路径                   将软连接连接到源文件

删除源文件软连接就不能用了

mkdir `date +%F`-upload            按时间创建目录文件

touch file-`date +%F`.txt              按时间创建普通文件

存储管理

初识硬盘 硬盘分为机械硬盘HDD 和固态硬盘SSD

硬盘设备命名

物理硬盘:    /dev/sd[a-z]
KVM虚拟化:
/dev/vd[a-z](半虚拟化驱动)
/dev/sd[a-z](全虚拟化驱动)

从磁盘分区方式区分

MBR (MSDOS根据分区表来分区的,又叫做主引导扇区) <2TB 
分区工具:fdisk  
一共可以分14个分区(4个主分区,扩展分区,逻辑分区) 例如: 3主 + 1扩展(n逻辑)扩展分区没有办法格式化,只能在扩展分区里面创建逻辑分区吃能格式化
MBR 小于2TB的可以。
一块硬盘最多分4个主分区。

GPT >2TB和<2TB
分区工具:gdisk(parted---rhel6)
一共可以分128个主分区
GPT大于小于2TB都可以。
注意:从MBR转到GPT,或从GPT转换到MBR会导致数据全部丢失!

ll /dev/sd*             查看固态磁盘下详细信息

lsblk                        查看磁盘设备

fdisk

设置4个主分区,扩展分区,逻辑分区

fdisk  /dev/sdb    查看磁盘分区信息

进去了按n ,p是主分区,e是扩展分区,l是逻辑分区,任选 ,分区号是默认,其实扇区默认,下一个想设置多大g设置多大g,w是保存退出,q不保存,退出

删除使用d

 gdisk只能设置主分区

 yum -y install gdisk        先安装分区工具

gdisk -l /dev/sdb              查看

gdisk /dev/sdb                  设置GPT主分区

创建文件系统(格式化)centos7默认使用xfs

mkfs.ext4 /dev/sdb1        格式化成ext4格式的文件系统

mkfs.xfs /dev/sdc2           格式化成xfs格式的文件系统

挂载mount使用

mkdir /mnt/disk1             创建挂载目录

mount   /dev/sdb1 /mnt/disk1/      指定挂载地址挂载

-o 指定读写权限
-a 需要定义(/etc/fstab)执行-a才会自动挂载

df -Th                       查看磁盘挂载和磁盘使用空间

-T  打印文件系统类型
-h 人性化显示,磁盘空间大小

取消挂载

umount /mnt/disks/或者umount  /dev/sdb 也能取下挂载

umount -l /mnt/disk1/       强行卸载,即使目录有资源被进程占用,也可以卸载

fstab开机自动挂载

blkid /dev/sdb1        查看uuid和文件系统类型

vim /etc/fstab

第1列:挂载设备
(1)/dev/sda5  
(2)UUID=设备的uuid   rhel6/7的默认写法   同一台机器内唯一的一个设备标识
第2列:挂载点
第3列:文件系统类型
第4列:文件系统属性    
第5列:是否对文件系统进行磁带备份:0 不备份
第6列:是否检查文件系统:0 不检查

mount -a     自动挂载

inode的内容

文件的字节数
文件拥有者的User ID
文件的Group ID
文件的读、写、执行权限
文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
链接数,即有多少文件名指向这个inode
文件数据block的位置

stat /etc/hosts                查看inode信息

ls -i /etc/hosts                 -i:查看inode号

EXT 

EXT 家族支持度最广:
但创建文件系统(格式化)慢!
修复慢!
文件系统存储容量有限!

XFS

XFS 同样是一种日志式文件系統:

高容量,支持大存储
高性能,创建/修复文件系统快
格式化快
inode 与 block 都是系統需要用到時,才动态配置产生

逻辑卷

LVM管理

lvm概念:LVM是Linux环境中对磁盘分区进行管理的一种机制,是建立在硬盘和分区之上、文件系统之下的一个逻辑层,可提高磁盘分区管理的灵活性。

lvm的特点

传统分区当一个分区空间满了无法对其进行扩充只能建立一个新的文件系统,把分区中的数据移到另一个分区

采用lvm时

1.将硬盘的多个分区由LVM统一为卷组管理,可以方便的加入或移走分区以扩大或减小卷组的可用容量,充分利用硬盘空间;
2.文件系统建立在LVM上,可以跨分区,方便使用;
3.当系统空间不足而加入新的硬盘时,不必把用户的数据从原硬盘迁移到新硬盘,而只须把新的分区加入卷组并扩充逻辑卷即可。

使用LVM主要是方便管理、增加了系统的扩展性。可以跨分区,多个硬盘组合。

lvm的制作

![image-20230712091112881](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230712091112881.png)

创建lvm

yum install -y lvm2       先安装pv命令

ll /dev/sd*                      查看dev下的sd开头的磁盘有没有分区

创建pv

pvcreate /dev/sdb        把sdb加入创建pv

pvs             pvscan         查看pv

创建vg

vgcreate  (名字任意)   /dev/sdb    创建vg

vgs           vgscan          vgdisplay  查看vg

创建lv

-L 指定lv的大小
-n 给创建的lv起一个名字
-l 20 指定PE 

lvcreate -L 150M -n lv1 vg1           创建lv

lvcreate -l 20 -n lv2 vg1                  采用PE方式在创建一个lv

lvs                                                      查看lv

制作文件系统并挂载

mkfs.xfs /dev/vg1/lv1                    格式化xfs文件系统 

mkfs.ext4 /dev/vg1/lv2                 格式化ext4文件系统

mkdir /mnt/lv{1..2}                        在根号下mnt下创建两个目录

mount /dev/vg1/lv1 /mnt/lv1      将根号dev下的vg1下的lv1挂载到指定地址

mount /dev/vg1/lv2 /mnt/lv2      将根号下的dev下的vg1下的lv2挂载到指定的地址

df -Th                 查看

LVM逻辑卷的扩充

注意:如果lv所在的vg有空间直接扩容就ok了!

扩大VG 

pvcreate /dev/sdc              将sdc创建成pv

vgextend vg1 /dev/sdc      vg1卷组名字,将/dev/sdc扩展到vg1中

vgs                                        查看vg

lvextend -L 850M /dev/vg1/lv1     扩展到850M

lvextend -L +850M /dev/vg1/lv1   在原有基础上加850M

lvextend -l +15 /dev/vg1/lv1          在原有基础上加15个PE

df -Th                  查看一下挂载的文件系统

xfs_growfs /dev/vg1/lv1                  xfs扩容

resize2fs /dev/vg1/lv2                     ext4扩容

df -Th                  查看一下挂在成功没,没成功重启一下

交换分区

建华分区管理swap也叫虚拟内存

查看当前的交换分区

free   -m      以m为单位来显示内存

swapon -s       查看减缓分区信息

增加交换分区 可以是基本分区,LVM,File

fdisk /dev/sdd               分一个主分区出来

partprobe /dev/sdd     刷新分区表

ll /dev/sdd*                    查看sdd下的东西

mkswap /dev/sdd1       初始化sdd1

  blkid /dev/sdd1            查看UUID

vim /etc/fstab  制作开机挂载
/dev/sdd1       swap    swap    defaults        0 0

 swapon -a                      激活swap分区(读取/etc/fstab)

swapon -s                   【    简短显示swap的信息】

 swapoff /dev/sdd1       关闭swap分区

swapon /dev/sdd1        开启swap分区

file 制作

dd if=/dev/zero of=/swap2.img bs=1M count=512         dd 读入  从空设备里面拿空块 到交换分区块多大  一共多少兆

mkswap /swap2.img      初始化

vim /etc/fstab
/swap2.img      swap    swap    defaults        0 0

chmod 600 /swap2.img      交换分区权限需要设置为600,默认644权限不安全。

swapon -a          激活

swapon -s          显示信息

mount详解

-o         指定文件系统属性
rw           读写 
ro           只读 
noexec       不允许执行二进制文件
exec       允许执行二进制文件 
auto       mount -a 开机自动挂载 
remount       在线重新挂载 

mount    查看已经挂载上的系统的属性

mount /dev/vg1/lv1 /mnt/lv1/        挂载默认是有执行权限的

mount -o noexec /dev/vg1/lv2 /mnt/lv2    不允许执行二进制文

cat /mnt/lv1/hello.sh           查看这个文件

chmod +x /mnt/lv1/hello.sh         加x权限到这个文件

 /mnt/lv1/hello.sh                    看看里面的信息

df -Th            查看

umount  /mnt/lv2/         取消挂载

构建NFS远程共享存储

服务端操作

systemctl stop firewalld      关闭防火墙

systemctl disable firewalld      开机自动关闭防火墙

setenforce 0    关闭防火墙,和第一个一起使用

yum -y install rpcbind       安装rpc协议的包

yum -y install nfs-utils      安装nfs服务,提供文件系统

systemctl start nfs            启动nfs

systemctl start rpcbind    启动rpcbind

mkdir /nfs-dir       创建存储目录

echo "nfs-test" >> /nfs-dir/index.html      制作test文件,做实验时方便查看

vim /etc/exports   编辑共享文件
/nfs-dir        服务端的ip号(rw,no_root_squash,sync)

systemctl restart nfs-server    重启服务。

systemctl enable nfs-server    制作开机启动

客户端操作

yum -y install rpcbind    安装rpcbind

yum -y install nfs-utils    安装nfs-utils

mkdir /挂载点名字 (任意)          创建挂载点

mount -t nfs 服务端ip:/nfs-dir /挂载点名字      挂载

df -Th                        查看挂载上没

ls /挂载点名字          查看里面的信息

umount   /挂载点名字   取消挂载

制作开机挂载

vim /etc/fstab
服务端ip:/nfs-dir    /挂载点名字          nfs     defaults        0 0

mount -a           挂载

FTP的制作

服务端

先关闭防火墙

安装vsftpd

启动vsftpd      systemctl   start  vsftpd

touch /var/ftp/pub/test.txt     创建文件到共享目录

systemctl enable vsftpd          开机时禁用vsftpd

cd /var/ftp/                                查看下面有啥

ls                                                  查看

chown ftp.ftp pub/ -R               修改根目录的属主与属组

ll                                                  详细查看,属主属组,权限

- 重点:改变根目录的属主,如果不改变的话,只能访问,其他权限不能生效。因为我们是以ftp用户的身份访问的,而pub默认的属主属组是root。

编辑配置文件

vim /etc/vsftpd/vsftpd.conf ----找到29行将下面的注释取消,将#号删除,将33行的yyp一下,修改成anon_other_write_enable=yes,下一行写入anon_umask=000

systemctl restart vsftpd        重启vsftpd

客户端

yum -y install lftp        安装客户端

lftp 服务端的ip             登录fpt服务

cd pub/                         cd到pub/下

get test.txt                    下载test.txt的文件

exit或者Ctrl d                退出

ls                                     查看下载到当前目录没

ftp配置本地用户登录

useradd  用户名            创建用户

useradd  用户名            创建用户

echo  '123456'     |  passwd  --stdin  用户名         自动给当前用户设置密码

配置本地用户ftp配置文件

echo '123456' | passwd --stdin  用户名                 设置密码

vim /etc/vsftpd/vsftpd.conf  ---添加注释并修改 
anonymous_enable=NO           #将允许匿名登录关闭
#anon_umask=022                #匿名用户所上传文件的权限掩码 
#anon_upload_enable=YES        #允许匿名用户上传文件
#anon_mkdir_write_enable=YES   #允许匿名用户创建目录
#anon_other_write_enable=YES    #是否允许匿名用户有其他写入权(改名,删除,覆盖)

在里面新添加
local_root=/home/zhangsan       # 设置本地用户的FTP根目录,一般为用户的家目录
local_max_rate=0                # 限制最大传输速率(字节/秒)0为无限制

重启vsftpd     

systemctl   restart vsftpd        重启vsftpd

客户端操作

lftp   服务端ip  -u  创建的用户,然后填写密码

ls      查看

mkdir aaa   创建aaa这个目录

ls   查看创建aaa目录成功没

put  /root/test.txt     上传root下的test.txt文件

ls   查看上传成功没

服务端查看

cd /home/创建的用户名

ls  查看

ll  详细查看

系统优化常用检测命令

uptime   查看平均负载

echo 3 > /proc/sys/vm/drop_caches    释放buffer和cache

带宽使用情况

yum install -y iftop.x86_64    安装这个东西

![image-20230712143800313](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230712143800313.png)

第一行:界面上面显示的是类似刻度尺的刻度范围,为显示流量图形的长条作标尺用的。
中间部分:中间的<= =>这两个左右箭头,表示的是流量的方向。=>代表发送,<=代表接收。
TX:发送流量
RX:接收流量
TOTAL:总流量
Cum:运行iftop到目前时间的总流量
peak:流量峰值
rates:分别表示过去 2s 10s 40s 的平均流量

网络接口统计报告

yum install -y nethogs.x86_64

nethogs

![image-20230712143909248](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230712143909248.png)

监视ens33网络带宽 

nethogs   ens33

同时监视ens33和ens34接口 

nethogs ens33 ens34

阿帕奇(Apache)服务的搭建与配置

Apache=http

apache安装

systemctl stou firewalld    关闭防火墙

systemctl disable firewalld  开机自动关闭防火墙

setenforce 0      关闭防火墙

yum install -y httpd    安装apache

systemctl start httpd   启动apache

netstat -lntp | grep 80 查看apache端口

认识主配置文件:

vim /etc/httpd/conf/httpd.conf 

ServerRoot "/etc/httpd"             #工作目录
Listen 80                           #监听端口
Listen 192.168.2.8:80 指定监听的本地网卡 可以修改
User apache                            # 子进程的用户,有可能被人改称www账户
Group apache                           # 子进程的组
ServerAdmin root@localhost          # 设置管理员邮件地址
DocumentRoot "/var/www/html"        # 发布网站的默认目录,想改改这里。
IncludeOptional conf.d/*.conf       # 包含conf.d目录下的*.conf文件

设置DocumentRoot指定目录的属性

          # 网站容器开始标识
Options Indexes FollowSymLinks       # 找不到主页时,以目录的方式呈现,并允许链接到网站根目录以外
AllowOverride None                   # 对目录设置特殊属性:none不使用.htaccess控制,all允许
Require all granted                 # granted表示运行所有访问,denied表示拒绝所有访问
                       # 容器结束
DirectoryIndex index.html              # 定义主页文件,当访问到网站目录时如果有定义的主页文件,网站会自动访问

访问控制

1,准备测试页面

echo test1 > /var/www/html/index.html   编写测试文件

2,访问控制测试

可以直接编辑apache主配置文件

(1)默认所有主机访问

vim /etc/httpd/conf/httpd.conf

![image-20230715192412952](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715192412952.png)

systemctl restart httpd      启动apache

浏览器启动,用自己输入的ip

(2只拒绝一部分客户端访问

vim /etc/httpd/conf/httpd.conf    打开配置文件

![image-20230715192814744](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715192814744.png)

systemctl restart httpd        重启apache

curl -I http://另一台没有拒绝服务的机器的ip       用另外一台机器测试访问成功

(3)拒绝所有人

vim /etc/httpd/conf/httpd.conf       打开配置文件

![image-20230715193047560](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715193047560.png)

systemctl restart httpd   重启apache

就会拒绝所有ip

curl -I http://一台机器的ip         访问失败,因为拒绝了所有ip

修改默认网站发布目录

vim /etc/httpd/conf/httpd.conf      打开更改配置文件

119  DocumentRoot "/www"                                        # 修改网站根目录为/www
131                                             # 把这个也对应的修改为/www

 mkdir /www    创建定义的网站发布目录
echo "这是新修改的网站家目录/www" >    /www/index.html 创建测试页面

systemctl restart httpd       重启apache服务

虚拟主机:多个网站在一台服务器上。web服务器都可以实现。三种:基于域名 基于端口 基于Ip

1,基于域名

cd /etc/httpd/conf.d/     移动到这个地方的家目录

vim test.conf      创建配置文件

  #指定虚拟主机端口,*代表监听本机所有ip,也可以指定ip
DocumentRoot /soso     #指定发布网站目录,自己定义
ServerName www.soso666.com  #指定域名,可以自己定义

  AllowOverride None    #设置目录的特性,如地址重写
  Require all granted   #允许所有人访问


DocumentRoot /soho
ServerName test.soso666.com

  AllowOverride None
  Require all granted

mkdir /soso   创建发布目录

mkdir /soho   创建发布目录

echo qianfen > /soso/index.html    创建测试页面

cho qfedu > /soho/index.html        创建测试页面

systemctl restart httpd       重启Apache服务

在wind电脑上面打开C:\Windows\System32\drivers\etc\hosts文件。可以用管理员身份打开

![image-20230715194112876](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715194112876.png)

测试访问

![image-20230715194133993](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715194133993.png)

![image-20230715194152415](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715194152415.png)

基于端口

vim /etc/httpd/conf/httpd.conf  ---添加

![image-20230715194326413](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715194326413.png)

2,基于端口

vim /etc/httpd/conf.d/test.conf     打开更改配置文件

/etc/httpd/conf.d/test.conf

  DocumentRoot /soso
  ServerName www.soso666.com

  AllowOverride None
  Require all granted

  #修改端口
  DocumentRoot /soho
  ServerName test.soso666.com

  AllowOverride None
  Require all granted

systemctl restart httpd      重启apache

访问:www.soso666.com

![image-20230715194709608](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715194709608.png)

访问: test.soso666.com:81

![image-20230715194733012](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715194733012.png)

3.基于IP

ifconfig ens33:想要添加的ip     添加一个临时ip

vim /etc/httpd/conf.d/test.conf    打开更改配置文件

  #指定ip
  DocumentRoot /soso
  ServerName www.soso666.com

  AllowOverride None
  Require all granted

  #指定ip
  DocumentRoot /soho
  ServerName test.soso666.com

  AllowOverride None
  Require all granted

systemctl restart httpd    重启apache服务
ifconfig ens33:0 192.168.153.123 down    取消添加的ip地址         ,      在浏览器访问这两个ip

Nginx 服务的搭建与配置

安装 Nginx

Nginx基本使用

获取Nginx
Nginx的官方主页: http://nginx.org

systemctl stop firewalld     关闭防火墙

systemctl disable firewalld     开机关闭防火墙

setenforce 0      临时关闭selinux

getenforce     查看selinux状态

Nginx安装:
Yum方式:

cd /etc/yum.repos.d/     移动到yum.repos.d/下

vi nginx.repo    编写nginx的yum源

[nginx]
name=nginx
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=0
enabled=1

yum clean all    安装clean all

yum makecache    安装makecache

yum install -y nginx     安装nginx

systemctl start nginx    启动ngnix

systemctl enable nginx    开机启动nginx

systemctl stop nginx    关闭nginx

1.查看nginx状态

ps aux | grep nginx   管道过滤查看

2.查看nginx端口

netstat -lntp | grep 80      管道过滤查看端口

nginx的默认端口是80

3.测试主页是否可以访问:

curl -I http://nginx安装机器的ip

![image-20230715200034456](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230715200034456.png)

nginx主配置文件

vi /etc/nginx/conf.d/default.conf

server {
    listen       80;   #监听的端口
    server_name  localhost;  #设置域名或主机名

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main; #日志存放路径
    charset   utf8
    location / {                        #请求级别:匹配请求路径
        root   /usr/share/nginx/html;   #默认网站发布目录
        index  index.html index.htm;    #默认打开的网站主页
      }
    }
    

常见的组合方式

LNMP (Linux + Nginx + MySQL/Mariadb + PHP) #php-fpm进程,这个组合是公司用的最多的组合
LAMP (Linux + Apache + MySQL/Mariadb + PHP) 
Nginx + Tomcat   #java项目常用的组合。取代apache

走进网络

客户端与服务器端的概念

客户端: 即表示可以介入互联网的个人终端设备, 比如个人PC机、个人Mac电脑, 操作系统为Windows.
服务端: 即代表在互联网中提供给用户服务的设备, 比如淘宝网、京东网、阿里云等网站或平台.

名词介绍
设备:
二层--数据链路层: 交换机(也有三层交换机)
三层--网络层: 路由器

交换机:
简单的说,交换机就是用来组建一个局域网使用的。交换机的作用是放到路由器后端,来扩展路由器接口不够用而使
用的。比如说,有20台电脑需要用网络,而路由器最多的只有8个口,只能接7台电脑,怎么办呢,这就需要交换机
来扩展网络接口实现了。

####  交换机基本都是24口起步,企业的都是48口起步

路由器:
路由器的工作原理是怎么样的呢?路由器有个路由表,会自己学习、生成、维护路由表。
1,主机A准备发数据给主机B。
2,A将B的IP地址连同数据一起,以数据包形式发送给路由器R1。
3,路由器R1收到数据包后,先从数据中读取到B的IP地址,然后根据路径表计算发往B的最优路径。
4,比如路径为:R1->R2->R5->B;并将数据包发往路由器R2。
5,路由器2重复路由器1的工作,并将数据包转发给路由器5。
6,路由器5同样取出目的地址,发现目的地址就在自己的网段上,于是将该数据包直接交给主机B。
7,主机B收到主机A的信息,一次完整的通信宣告结束。

网关:网络的出口(路由器的ip地址

DNS:域名服务器
端口号:1-65535 http---80 https--443 telnet--23 ftp--21、20 ssh--22 mysql--3306 php--9000 tomcat---8080

#### OSI七层模型  OSI七层: 物理层、数据链路层、网络层、传输层、会话层、表示层、应用层

简化四层:链路层 网络层(路由网关),传输层(tcp),应用层(https,ftp)

特点: 下层只和上层有来往关系, 不可跨层传输

![image-20230719191908198](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230719191908198.png)

应用层:针对应用约定的标准 HTTP(超文本传输协议) Telnet(远程协议)
表示层:约束数据格式,负责格式转化,加密。解密。
会话层:建立、维护、管理(解除)会话。数据的传输通道。
传输层:约定数据采用何种方式进行传递
TCP协议:传输控制协议,实现数据的可靠传输
UDP协议:用户数据报协议,实现数据的快递传输,不可靠
网络层:提供逻辑地址(IP地址,用于在网络中标识每一台设备,作用于网络间的通信,提供路由和选路)
数据链路层:提供MAC(物理)地址,每个MAC地址写在网卡上
物理层:约定接口类型,传输速度

数据包的传输过程

![image-20230719191944452](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230719191944452.png)

上面是服务端,下面是客户端

ARP协议: 如何获取mac地址:先发送一个ARP请求,发送给每一个主机,这成为广播,给予ARP层回应以单播的形式返回
案例:
小明:我是小明,谁是小红,我的mac地址是sdfsdfs213
arp发送广播:每个人开始拆包,其他人:是找小红的,不是找我的,不管它
小红:拆开一看,是找我的,回复:小明,我是小红,我的mac地址是dfgert213
进行数据传输

TCP/IP:传输控制协议

TCP\IP模型
应用层:将OSI上三层融合,用于产生需要传递的数据
传输层
网络层
链路层(网络接口层):将OSI下两层融合

当通过http发起一个请求时,应用层、传输层、网络层和链路层的相关协议依次对该请求进行包装并携带对应的首部,最终在链路层生成以太网数据包,以太网数据包通过物理介质传输给对方主机,对方接收到数据包以后,然后再一层一层采用对应的协议进行拆包,最后把应用层数据交给应用程序处理。

网络通信就好比送快递,商品外面的一层层包裹就是各种协议,协议包含了商品信息、收货地址、收件人、联系方式等,然后还需要配送车、配送站、快递员,商品才能最终到达用户手中。

一般情况下,快递是不能直达的,需要先转发到对应的配送站,然后由配送站再进行派件。

配送车就是物理介质,配送站就是网关, 快递员就是路由器,收货地址就是IP地址,联系方式就是MAC地址。 

快递员负责把包裹转发到各个配送站,配送站根据收获地址里的省市区,确认是否需要继续转发到其他配送站,当包裹到达了目标配送站以后,配送站再根据联系方式找到收件人进行送件。

HTTP协议简介

超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通 信的规则,通过因特网传送万维网文档的数据传送协议,于1990年提出. 
• 是一个基于TCP/IP通信协议来传递数据,(HTML文件,图片等) 
HTTP是一个属于应用层的协议

**HTTP协议的主要特点: **

1.支持客户/服务器模式 (浏览器/服务器模式) 及c/s模式
2.简单快速:
客户向服务器请求服务时,只需传送请求和路径。通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。(文件,视频,会议)
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

常见状态代码

200 OK #客户端请求成功
403 Forbidden #服务器【收到请求,但是拒绝提供服务,没有权限】
404 Not Found #请求资源不存在,输入了错误的URL,没有找到,路径不对
比如:HTTP/1.1 200 OK

UDP协议介绍

UDP协议简介
UDP是一个无连接的简单的面向数据报的传输层协议。

UDP的特性:
1.面向无连接:不用先与对方建立连接,不握手。因此传输速度很快。
2.不可靠的:没有确认机制,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。
3.UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内
因为它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。

udp一般用于

1. 即时通信:qq聊天 对数据准确性和丢包要求比较低,但速度必须快
2. 在线视频:速度一定要快,保证视频连续,但是偶尔花了一个图像帧,人们还是能接受的
3. 网络语音电话:语音数据包一般比较小,需要高速发送,偶尔断音或串音也没问题

**物理地址:mac地址,全球唯一,mac由6段16进制数组成,每段有2个16进制数**

**ARP** 

**arp协议作用** (地址解析协议)         

> ARP地址解析协议用于将网络地址(IP地址32位)转化为物理地址(MAC地址48位)。ARP协议是属于"数据链路层 or 网络层"的协议,在以太网中的数据帧从一个主机到达网内的另一台主机是根据48位的  太网地址(硬件地址)来确定接口的,而不是根据32位的IP地址。内核(如驱动)必须知道目的端的硬件地址才能发送数据

**ICMP**

> ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。

网络解析

TCP三次握手和四次挥手

TCP的传输过程:

Seq   序列号   保障传输过程可靠。
ACK   (确认消息)
SYN   (在建立TCP连接的时候使用)
FIN   (在关闭TCP连接的时候使用)

# TCP建立连接的过程

三次握手

1.)发送端首先发送一个带有SYN(synchronize)标志地数据包给接收方。
2)接收方接收后,回传一个带有SYN/ACK标志的数据包传递确认信息,表示我收到了。

3)最后,发送方再回传一个带有ACK标志的数据包,代表我知道了,表示’握手‘结束。

通俗的说法
1)Client:嘿,李四,是我,听到了吗?
2)Server:我听到了,你能听到我的吗?
3)Client:好的,我们互相都能听到对方的话,我们的通信可以开始了。

**四次挥手**

原理:
 1)第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送。
 2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1
 3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送.
 4)第四次挥手:Client收到FIN后,接着发送一个ACK给Server,确认序号为收到序号+1.

通俗的说法
1)Client:我所有东西都说完了
2)Server:我已经全部听到了,但是等等我,我还没说完
3)Server:好了,我已经说完了
4)Client:好的,那我们的通信结束

IP组成

认识IP地址
IP地址是指互联网协议地址,IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。每个ip地址由两部分组成网络地址(NetID)和主机地址(HostID).网络地址表示其属于互联网中的哪一个网络,而主机地址则表示其属于该网络中的哪一台主机.

IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”,在将2进制转换为十进制。IP地址通常用“点分十进制”表示的形式,其中都是十进制整数。

例如:
      192   .    168   .   223   .   3               /24
  11000000 . 10101000 . 11011111 . 00000011

进制转换

一:十进制转换为二进制
        十进制整数转换为二进制整数采用"除2取余,逆序排列"法。具体做法是:用2整除十进制整数,可以得到一个商和余数;再用2去除商,又会得到一个商和余数,如此进行,直到商为小于1时为止,然后把先得到的余数作为二进制数的低位有效位,后得到的余数作为二进制数的高位有效位,依次排列起来。        
(IP地址里面一共是32位,通常被分割为4个“8位二进制数”--将这8位列出来,2^0次方开始算,能用到的数落1不能用到的为0)


128  64  32  16  8  4  2  1 =255

  192     .    168   .   223   .    0     /24
11000000       10101000  11011111  00000000

128 64 32 16 8 4 2 1

   172    .    0   .    186    .     0     /24
10101100    00000000   10111010    00000000

二、二进制转十进制

128 64 32 16 8 4 2 1

 10.50.4.3
00001010.00110010.00000100.00000011

10101100.00000000.10111010.00000000
  172.0.186.0

**IP分类**

公网ip地址--->合法的IP地址,可以在互联网上访问

A类:0.0.0.0 - 127.255.255.255/8   0是保留的并且表示所有IP地址,而127也是保留的地址,并且是用于测试回环用的。127.0.0.1,通常被称为本地回环地址。
B类:128.0.0.0 - 191.255.255.255/16
C类:192.0.0.0 - 223.255.255.255/24   目前我们用的ip地址
D类:范围从224-239,D类IP地址目前这一类地址用来一次寻址一组计算机。224.0.0.0-239.255.255.255 组播地址
E类:范围从240-254,为将来使用保留。 

全零(“0.0.0.0”)地址对应于当前主机。IP地址(“255.255.255.255”)是当前子网的广播地址。

私有地址

所谓的私有地址就是在互联网上不使用,而被用在局域网络中的地址

在A类地址中,10.0.0.0到10.255.255.255是私有地址

在B类地址中,172.16.0.0到172.31.255.255是私有地址。

在C类地址中,192.168.0.0到192.168.255.255是私有地址。

**IP地址的组成**

子网掩码:用于区分IP地址中的网络部分和主机部分.计算子网掩码:网络位全1,主机位全0
网络部分(网络位):直接决定了可以分配的网络数
主机部分(主机位):则决定了网络中最大的主机数 计算方法:2^主机号位数-2
网络地址:用来表示一个网络。主机位取值全部为0,例如:192.168.1.0/24  
广播地址:用于在一个网络内一对所有的通信。主机部分全部换成1。

# **VLSM(可变长子网掩码)** 

Variable Length Subnet Mask

子网掩码:用于区分IP地址中的网络部分和主机部分。点分十进制(网络位全部为1)

128   64   32    16    8    4   2   1

10.1.12.133/24-255.255.255.0
00001010.00000001.00001100.10000101  →0000000-->网络地址是将主机位变为0=10.1.12.0/24
广播地址将主机位10000101→1111111 --->广播地址=10.1.12.255
掩码将网络位全部为1---->255.255.255.0

10.1.12.1/24  ---计算掩码
00001010.00000001.00001100.00000001
11111111.11111111.11111111.00000000=255.255.255.0

子网划分:
a.这个被选用的子网可以产生多少的子网?   2的x次方=?   x表示借的主机位
b.这个子网中又会有多少个合法的主机号?   2的y次方-2=? y表示主机位
c.每个子网的广播地址是什么?           这个子网中最后一个IP地址

如何算这些

假如有120台电脑分配地址--主机位?

192.168.1.0/24        11000000.10101000.00000001.00000000

128 64 32 16 8 4 2 1 

例如:计算主机位?2的多少次方-2大于等于120?--2^7次方-2=126
192.162.1.0/25        11000000.10101000.00000001.0    0000000 #1/0两个子网---(0,1)

当为0时:192.168.1.0/25 ---网络地址
192.168.1.127---广播
可用主机范围2^7-2=有126个
192.168.1.1-192.168.1.126

当为1时:192.168.1.128/25 ---网络地址
192.168.1.255---广播
可用主机范围有126个
192.168.1.129-192.168.1.254

**广播范围是掩码之后的用1填充**

**可用主机范围是掩码之后的用0填充**

**例如**

**2的7次方-2约等于要的主机位**

**32-7=25,25就是子网掩码**

**把ip换算成二进制**

**认识网卡**

ip a   

ifconfig   这两个都是查看网卡

临时设置ip

ip  a a 设置的ip/端口   dev ens33 设置临时ip

删除设置的临时ip

ip  a  d 设置的ip/端口   dev ens33 删除设置的临时ip

启动关闭网卡

ifconfig  网卡名  up   

ifup   网卡名                    这两个都是启动网卡

ifconfig  网卡名   down   

ifdown  网卡名                这来两个是关闭网卡

网关

网关:网络的关卡:是为了访问其他网络。

##### 静态路由和动态路由

路由器在转发数据时,需要先在路由表中查找相应的路由,有三种途径

> (1)直连路由:路由器自动添加和自己直连的路由
>
> (2)静态路由:管理员手动添加的路由
>
> (3)动态路由:由路由协议动态建立的路由

静态路由

> 缺点
>     不能动态的反映网络拓扑,当网络发生变化的时候,管理员必须手动的改变路由
>
> 优点
>     不会占用路由器太多的cpu和RAM资源,也不会占用太多带宽。

默认路由

>  (1) 实际上默认路由是一种特殊的静态路由,指的是当 路由表中与包的目的地址之间没有匹配的表项时,路由器能够做出选择。如果没有默认路由,那么目的地址在路由表中没有匹配表项的包将被丢弃。
>
>  (2)默认路由(Default route),如果IP数据包中的目的地址找不到存在的其它路由时,路由器会默认的选择的路由。
>
>  默认路由为0.0.0.0

动态路由

> 动态路由是与静态路由相对的一个概念,指路由器能够根据路由器之间的交换的特定路由信息自动地建立自己的路由表,并且能够根据链路和节点的变化适时地进行自动调整。当网络中节点或节点间的链路发生故障,或存在其它可用路由时,动态路由可以自行选择最佳的可用路由并继续转发报文。

linux路由操作

ip  r   查看路由和网关

添加静态路由删除静态路由

ip r add 本机ip  via  想要添加的ip     添加路由

ip r del本机ip                                     删除路由

```
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.59.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
-----------------------------------
Destination   目标网段或者主机
Gateway        网关地址,”*”或者“0.0.0.0” 表示目标是本主机所属的网络,不需要路由
Genmask       网络掩码
Flags             标记。一些可能的标记如下:
                      U — 路由是活动的, H — 目标是一个主机, G — 路由指向网关,

                      R — 恢复动态路由产生的表项, D — 由路由的后台程序动态地安装,

                      M — 由路由的后台程序修改, ! — 拒绝路由
Metric           路由距离,到达指定网络所需的中转数(数字越小优先级越高)
Ref               路由项引用次数(linux 内核中没有使用)
Use               此路由项被路由软件查找的次数
Iface             该路由表项对应的输出接口
增加ip:
route add -host 192.168.59.130 metric 301 dev ens33
【前面是目标地址后面是下一跳的路由】
[root@localhost ~]# route add -host 192.168.59.130 metric 301 dev ens33
[root@localhost ~]# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    100    0        0 ens33
192.168.59.0    0.0.0.0         255.255.255.0   U     100    0        0 ens33
192.168.59.130  0.0.0.0         255.255.255.255 UH    301    0        0 ens33


增加完成后,我们可以看到多了一条指定发往192.168.59.130的数据要通过ens接口发送,

目标地址在直通的网络上,并且metric为301的路由表项。

如果目标主机不是在直通的网络上,需要gw(下一跳IP)转发,则如下加上gw选项则可,注意这个

gw[网关]必须是当前可以ping通的一个地址。

route add -host 192.168.59.130 gw 192.168.59.120 metric 301 dev ens33

Linux上删除主机路由:
 route del -host 192.168.59.130 metric 301 dev ens333

```

# 设置固定ip

cd  /etc/sysconfig/network-scripts/    网卡配置文件存放路径

cp  ifcfg-ens33     ifcfg-en33.bak          将源文件备份

vim ifcfg-ens33                                       编辑网卡配置文件

TYPE="Ethernet"         #网络类型:以太网类型
PROXY_METHOD="none"   
BROWSER_ONLY="no"
BOOTPROTO="static"    #默认值none或static 这两种属于静态获取ip地址,dhcp自动获取ip
IPADDR=192.168.246.134 #设置静态ip地址
GATEWAY=192.168.246.2 #设置网关,nat模式网关是2,桥接为1.
NETMASK=255.255.255.0  #设置掩码或者
#PREFIX=24
DEFROUTE="yes"  #是否设置默认路由,yes表示该配置
NAME="ens33"    #网卡名称,可以不存在
DEVICE="ens33"   #设备名称
ONBOOT="yes"    #开机启动
DNS1=114.114.114.114 #dns全国通用地址,dns最多可以设置三个
DNS2=8.8.8.8 #谷歌的dns
DNS3=202.106.0.20 #北京的DNS。

重启网络,修改完配置文件后一定要重启网络

systemctl restart network     重启配置文件

# 编辑DNS配置文件设置DNS

vim /etc/resolv.conf    在里面添加以下内容 [网关]

nameserver  144.144.144.144   指定dns地址

# udp.tpc协议

```
TCP/IP:传输控制协议
TCP\IP模型
应用层:将OSI上三层融合,用于产生需要传递的数据
传输层 
网络层
链路层(网络接口层):将OSI下两层融合
HTTP协议
超文本传输协议 (HTTP-Hypertext transfer protocol) 是一种详细规定了浏览器和万维网服务器之间互相通 信的规则,通过因特网传送万维网文档的数据传送协议,于1990年提出. 
• 是一个基于TCP/IP通信协议来传递数据,(HTML文件,图片等) 
HTTP是一个属于应用层的协议

HTTP协议的主要特点:
1.支持客户/服务器模式 (浏览器/服务器模式) 及c/s模式
2.简单快速:
客户向服务器请求服务时,只需传送请求和路径。通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。(文件,视频,会议)
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
————————————————

tcp udp 区别


TCP【面向连接】,通过三次握手建立连接,四次挥手接除连接;UDP是【无连】接的,即发送数据之前不需要建立连接,这种方式为UDP带来了高效的传输效率,但也导致无法确保数据的发送成功。
TCP是【可靠】的通信方式。通过TCP连接传送的数据,TCP通过超时重传、 数据校验等方式来确保数据无差错,不丢失,不重复,且按序到达;而UDP由于无需连接的原因,将会以最大速度进行传输,但不保证可靠交付,也就是会出现丢失、重复等等问题。
TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流,由于连接的问题,当网络出现波动时,连接可能出现响应问题;UDP是面向报文的,UDP没有【拥塞控制】,因此网络出现【拥塞不会使源主机的发送速率降低】。
每一条TCP连接只能是【点到点】的;而UDP不建立连接,所以可以支持一对一,一对多,多对一和多对多的交互通信,也就是可以同时接受多个人的包。
TCP需要建立连接,首部开销20字节相比8个字节的UDP显得比较大。
TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
安全性付费,加密,可靠性;速度场景上

```

# 设置动态ip

vim /etc/sysconfig/network-sccripts/ifcfg-ens33     打开配置文件

TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"   #只需要将这里修改为dhcp。
DEFROUTE="yes"
NAME="ens33"
DEVICE="ens33"
ONBOOT="yes"

退出重启网络

systemctl  restart network   重启网络

查看mac地址

ifconfig  arp协议:地址解析协议     查看mac地址

arping  -I ens33  要查看的ip             要查看的ip地址

开发路由转发

临时设置

echo  1 >  /proc/sys/net/ipv4/ip_forward   #默认是0,没有开路由。1表示开启

永久设置

vim  /etc/sysctl/conf    打开配置文件

net.ipv4.ip_forward = 1

sysctl  -p  立即生效

---------

查看主机内核信息

uname -a    ;  uname -r ;

查看版本信息

cat /etc/redhat-release

修改主机名

hostname    查看主机名

hostnamectl  set-hostname  linux-server   修改主机名

vim /etc/hostname     编辑配置文件

soso666

修改主机名

reboot

配置本地解析

vi  /etc/hosts   添加内容

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.246.130 soso666 soso    #添加解析

![image-20230722104909900](C:\Users\Admin\AppData\Roaming\Typora\typora-user-images\image-20230722104909900.png)

**修改网卡**

1. 修改网卡配置文件

cd /etc/sysconfig/network-scipts/     移动到这里

mv  ifcfg-ens33    ifcfg-eth0                改名

vim  ifcfg-eth0     只需要修改配置文件中的名称

NAME="eth0"

DEVICE="eth0"

   2.GRUB添加kernel参数

vim /etc/sysconfig/grub   #在文件中最后一行添加
GRUB_CMDLINE_LINUX="...... net.ifnames=0" #告诉系统关闭原来命名功能

   3.执行命令生效----#加载配置文件

grub2-mkconfig -o /boot/grub2/grub.cfg    执行配置文件

   4.重启机器

reboot

cd /etc/sysconfig/network-scripts/      移动到这里

​                 目录

/bin    /sbin   存放命令文件目录bin是普通用户的命令,sbin是管理员相关命令

/etc  存放配置文件

/root   /home  家目录存放位置   /root是root用户的家目录,/home是普通用户的家目录存放位置

ls  -l     查看文件信息时

开头第一个字符表示文件属性

开头是(-)代表普通文件

开头是(d)代表目录文件

开头是(b)代表设备文件如磁盘

开头是(c)代表着字符文件

开头是(l)代表是符号链接文件,又称软连接文件

开头是(s)代表着套接字文件,实现两个进程的通信

开头是(p)代表着管道文件

开头是(l)代表着链接文件

df  -Th 打开磁盘使用情况

在Linux中以点开头的文件是隐藏文件

以根开头不以的路径是绝对路径,不以根开头的路径是相对路径

LINUX中后缀文件属性不影响文件

# 利用虚拟机挂载文件

```
curl 跟ip 显示文件首页内容
——————————————————————
curl -I ip  显示响应码


服务机c1
下载并启动nfs   rpc;共享一个含有index.html的文件夹c1-server
客户机c5
以服务机c1为实体,将c5的目录作为挂载点挂载在c1主机上
更改c5本身的根目录,以共享的c5目录作为功能共享目录。实现文件传输;
因为基于端口虚拟机,在子配置文件监听新的端口。
最后通过curl -I验证。
[root@c1 ~]# systemctl start rpcbind nfs
[root@c1 ~]# mkdir /c1-server
[root@c1 ~]# vim /etc/exports
/c1-server       192.168.59.50(rw,no_root_squash,sync)

[root@c1 ~]# systemctl restart nfs ;systemctl enable nfs;
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@c1 ~]# exportfs -v
/c1-server        192.168.59.50(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
[root@c1 ~]#  echo delegate > /c1-server/index.html
---------------------------------------------------
root@c5 ~]# systemctl start rpcbind httpd
[root@c5 ~]# mkdir /c5-client
[root@c5 ~]# mount -t nfs 192.168.59.10:/c1-server /c5-client
[root@c5 ~]# df -Th
文件系统                 类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root  xfs        17G  1.6G   16G   10% /
devtmpfs                 devtmpfs  478M     0  478M    0% /dev
tmpfs                    tmpfs     489M     0  489M    0% /dev/shm
tmpfs                    tmpfs     489M  6.8M  482M    2% /run
tmpfs                    tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda1                xfs      1014M  125M  890M   13% /boot
tmpfs                    tmpfs      98M     0   98M    0% /run/user/0
192.168.59.10:/c1-server nfs4       17G  1.6G   16G   10% /c5-client
[root@c5 ~]# vim /etc/httpd/conf.d/c5.conf
[root@c5 ~]# systemctl restart httpd 
[root@c5 ~]# curl -I 192.168.59.50:81


DocumentRoot /c5
ServerName test.tang.com

  AllowOverride None
  Require all granted


listen 81


【访问时要注意在英文模式下访问浏览器,中文可能访问不到】
挂载时需要注意mount -t nfs[指定类型]  ip:/共享目录   /挂载点
         或者mount                  ip:/共享目录   /挂载点


客户机
下载并开启httpd
在httpd的子配置文件目录里创建以.conf结尾的配置文件
在子配置文件里面写

DocumentRoot /页面地址
ServerName 域名

  AllowOverride None    设置目录特性,如地址重写
  Require all granted   允许所有人访问

```

# 一阶段测验

- ```
  1. 【OSI七层网络模型中,封装IP地址的操作在那一层?*】
  网络层
  物理层
  会话层
  传输层
  解析:A
  物理层——————比特流
  数据链路层————数据帧——————MAC头部,IP头部,TCP头部
  网络层——————数据包——————IP头部,TCP头部
  传输层——————数据段——————TCP头部
  ------------------------------


  OSI七层封装过程和解封装过程:


  封装过程:
  应用层到 表示层到 会话层到 传输层到 网络层到 数据层到 物理层[向下封装}
  解析:
  应用层:你所发送的文字,编辑的数字
  表示层:把你所发送的文字数字,压缩翻译成代码
  会话层:尝试建立会话
  传输层:传输到tcp头部{按照tcp协议进行封装} 传输协议
  网络层:由ip地址向下层传输包含ip头部tcp头部封装 ip地址 路由器
  数据层:由mac头部加上ip头部加上tcp头部封装 mac地址 交换机
  物理层:由物理层比特流{二进制的方式封装},网线,光缆
  (1)七层的基本概念:(从高到低):
  第七层应用层:网络服务与最终用户的一个接口(用户操作)人机交互窗口,把人的语言【输入】到计算机当中。例如,在00的对话窗口输入字符。
  
  第六层表示层 :数据的表示、安全、压缩(人的语言翻译成计算机)将接收到的数据翻译成二进制数组成的计算机语言,并对【数据进行压缩和解压】、数据加密和解密等工作0101。
  
  第五层会话层:建立、管理、中止会话(通信软件建立会话,比如:QQ)管理是否允许不同机器上的用户之间建立【会话连接】关系。
  
  第四层传输层: 定义【传输数据的协议端口号】,以及流控和差错校验(防火墙端到端) 将上层数据分片并加上端口号封装成【数据段】,或通过对报文头中的端口识别,实现网络中不同主机上的用户进程之间的数据。
  
  第三层网络层 :进行逻辑地址寻址,实现"不同网络之间"的"路径选择"(路由器) 将上层数据加上源和目的方的逻辑(IP)地址【封装成数据包】,实现数据从源端到目的端的传输。
  
  第二层数据链路层:建立逻辑连接、进行硬件地址寻址、差错校验等功能(交换机网卡)将上层数据加上源和目的方的物理(MAC)地址封装成数据帧,MAC地址是用来标识网卡的【物理地址】,建立数据链路:当发现数据错误时,可以重传数据帧。
  
  第一层物理层: 建立、维护、断开物理连接(网卡,网线,光纤,集线器,中继器,调制解调器) 报文头部和上层数据信息都是由二进制数组成的,物理层将这些二进制数字组成的比特流转换成电信号在网络中传输。
  2. 改变文件拥有者的命令是?*
  changer
  chmod
  BiuBiu
  chown
  D
  3. 以下那个是系统默认存放配置文件的目录?*
  /dev
  /etc
  /root/etc
  /home
  B
  4. 增加一个用户,使用哪个命令?它会修改/etc下的那些文件?*
  useradd;passwd
  Useradd;passwd
  Useradd;password
  useradd;password
  A
  5. 系统关机、[重启]的命令正确的是?*
  powerOff;init 0
  poweroff;init 0
  poweroff;init 6
  powerOff;init 6
  C
  6. 退出当前用户登录状态,使用什么命令?*
  su
  exit
  OFF
  poweroff
  B
  [7. 下面的网络协议中,面向连接的的协议是?*]
  TCP
  HTTP
  ICMP
  UDP
  A
  三次握手四次挥手


  8. 终止一个前台进程可能用到的命令和操作*
  Ctrl + c
  Ctrl + z
  bg
  fg
  A
  bg后台进程暂停激活;fg后台进程调到前台;ctrl+z前台进程调入到后台进程并暂停
  9. 【下列说法中,不属于ip a 命令作用范围的是?*】
  查看IPV4地址
  查看网卡数量
  查看IPV6地址
  查看网关地址
  D ip-r 查看网关
  
  问:ip a是什么意思?
  答:ip a是Linux系统中用于查看IP地址信息的命令。它可以显示本机的网络接口的信息,包括接口的状态、IP地址、子网掩码等。
  网关末位可以是除0(网络地址)和1(广播地址)以外的任意一个ip
  [root@c100 ~]# ip r
  default via 【192.168.59.2 】dev ens33 proto static metric 100 
  192.168.59.0/24 dev ens33 proto kernel scope link src 192.168.59.100 metric 100 
  
  [root@c100 ~]# ip a
  1: lo: mtu 65536 qdisc noqueue state UNKNOWN qlen 1
      link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
      inet 127.0.0.1/8 scope host lo
         valid_lft forever preferred_lft forever
      inet6 ::1/128 scope host 
         valid_lft forever preferred_lft forever
  2: ens33: mtu 1500 qdisc pfifo_fast state UP qlen 1000
      link/ether 00:0c:29:23:b2:e1 brd ff:ff:ff:ff:ff:ff
      inet 192.168.59.100/24 brd 192.168.59.255 scope global ens33
         valid_lft forever preferred_lft forever
      inet6 fe80::20c:29ff:fe23:b2e1/64 scope link 
         valid_lft forever preferred_lft forever
  
  
  10. VSFTPD服务中那个运行模式对于服务器本身的压力比较大?*
  被动模式
  主动模式
  自动模式
  随机模式
  B 21通信20传输端口【1025-65535】不仅接受消息,还要传输数据
  11. 公司目前有4个部门需要使用网络,但是只有一个网络地址:10.10.10.0/24.
  运维部需要:28个IP人事部需要:60个IP开发部需要:118个IP财务部需要:28个IP

  请使用VLSM的方式分配一下网络。


  要求:写出每个部门对应的网络地址、广播地址以及IP范围*
  子网掩码决定了网络位和主机位:
  主机位确定局域网中的一个主机身份网络位决定了网络在网络中的位置;
  表层信息246个IP需求子网掩码24,
  网络地址【网段】10.10.10.0/24   网络位不变,主机位归零
  广播地址       10.10.10.255/24 网络位不变,主机位归1
  网络借位1一个,子网络个数2的次方
  ——————————————————————————————
  28=2的x次方-2; 接近32,x=5;主机位即为5,网络位32-5=27
   假设主机位借位的是000     000|00000
  网络地址10.10.10.0/27
  广播地址10.10.10.31/27
  ip范围是10.10.10.2/27-10.10.10.31/27
  60+2=接近2的六次方 x=6,主机位为6,网络位(掩码)32-6=26
  假设主机借位是00 ,那么00|000000和上面重复
  假设主机借位 01    那么01|000000
  网络地址10.10.10.64/26
  广播地址10.10.10.127/26
  ip范围是10.10.10.64/26--10.10.10.127/26
  118+2=接近2的七次方,x=7 主机位7,网络位32-7=25
  假设主机位借的是1(0就重复了)那么1|0000000
  网络地址10.10.10.128/25
  广播地址10.10.10.255/25
  ip范围是10.10.10.128/25-10.10.255/25
  
  最后一步31-64中间缺,假设借位为001,那么当x=5 网络位27
  001|00000
  网络地址10.10.10.32/27
  广播地址10.10.10.63/27
  范围是10.10.10.32/27-10.10.10.63/27
  
  
  
  
  
  
  
  12. 请简述raid0 、raid1 、raid5 的区别?*
  raid0 条带卷,分开写,读写速度快,安全性差 至少两块盘 利用率100%
  raid1 镜像卷,写同样的东西,安全性较好利用率50%至少两块盘写速度不变,读的变快
  raid5 条带卷分开写,其中一块校验 ,一块冗余磁盘热备至少【四块】盘磁盘利用率大于70%,允许一块磁盘坏掉,当磁盘越多时,利用率越低。
  
  13. 软链接和硬链接的区别?*
  a)硬链接和源文件同一个节点;删除其中一个不影响阅读;硬链接不可以链接目录;不可以跨文件系统
  b) 符号链接可以链接到目录;删除原始文件,符号链接是无用的;可以跨硬盘;符号链接源文件和链接的inode不一致。
  
  14. 在/data/www_logs 目录下找出大于10M 并且在90天之前被修改过得log文件,并将文件移动到/usr/local/src 目录下*
  find /data/www_logs -size +10M -mtime +90 -name *.log |xargs -i mv{}/usr/local/src
  find /data/www_logs -size +10M -mtime +90 -name *.log -exec  mv{} /usr/local/src  \;
 

15. 在系统的根下,创建一个以当前时间.txt命名的文件*


  touch /`date +%x`.txt
  touch /$(date +%x-%X).txt
  date +%X |xargs -i touch /{}
  
  16. DNS与DHCP是什么?*
  DNS域名解析服务;
  DHCP动态分配IP服务
  


  17. 远程登录服务器连接失败的原因有哪些?并分析解决*


  端口错误
  网络不通,网线未插
  服务不启动 nginx或httpd 没有用systemctl start 命令
  网关错误【外网】
  /etc/hosts 本地域名解析文件 比如子啊里面设置 192.168.59.120 c-2
  
  18. 设置用户的计划任务,让atasha每天14:20时执行命令完成本机时间与ntp.aliyun.com同步。*
  crontab -e -u atasha
  20 14 * * * ntpdate  ntp.aliyun.com
  
  19. 查看系统的版本号,【硬盘】,内存信息,内核版本,平均负载的命令分别是?*
  版本号cat /etc/redhat-release
  硬盘lsblk
  内核版本uname -r
  平均负载 uptime/w/top
  
  
  20. 现有卷组vg-0已经没有剩余空间,现有逻辑卷LV-0大小为500M,有一个新的分区/dev/sdb1大小为500M,挂载点在/lv-0请调整逻辑卷的大小,把逻辑卷lv-0调整到1000M,900M和1100M间可接受。(写出命令步骤)*
  【不用声明pv,分区可以直接使用,主分区已经不是超级块了】
  # vgextend  vg-0  /dev/sdb1
  # lvextend  lv-0  -L 1000M     这一步最好使用PE的方式进行扩容)
  【当lv文件系统格式:XFS】
  # xfs_growfs /dev/vg-0/lv-0
  
  【当lv文件系统格式:ext4】
  #  resize2fs /dev/vg-0/lv-0
  
  
  
  21. 将/etc/passwd文件中的信息,按照uid的数值大小顺序排序,保存到/tmp/user.txt*
  
  # sort -k 3 -t :   -n /etc/passwd >>  /tmp/user.txt
  sort -n -t ":" -k 3    -n /etc/passwd |tee /tmp/user.txt
  管道符 紧跟命令
  重定向 输出的追加,右侧紧跟的时普通文件
  
  22.担心/var/log/nginx目录下日志信息丢失,需要对日志进行每日2:00远程备份处理,如何完成这个工作安排?(远程备份服务器IP:192.168.59.100,备份服务器存放路径:/bak_log目录)*
 

远程机上创建目录
  mkdir /bak_log
  最后的归档备份也是在远程机 上进行
  【第一步:编辑备份脚本并赋予脚本可执行权限】
  # vim  /nginx/scp_nginx_log.sh
  scp -r /var/log/nginx/*   192.168.59.100:/bak_log
  mkdir /nginx;  echo test > /var/log/nginx/scp_test
  #chmod +x  /nginx  ;chmod +x /nginx/scp_nginx_log.sh
  
  【第二部:传输公钥】
  # ssh-keygen
  # ssh-copy-id   192.168.59.100
  
  【第三步:按计划执行远程拷贝脚本】
  # crontab -e -u root
  * 2 * * *  /nginx/scp_ngix_log.sh
  
  【第四步:在存放备份机器内对备份目录定期进行打包整理,为了避免覆盖】
  # vim /tar.sh
  tar czf /opt/`date +%F`_nginx_bak.tar  /bak_log
  
  # crontab -e -u root
  0 2 * * *   /tar.sh
  
  -------------------------------------------
  客户端只需要建立一个备份目录;test文件是在 服务端/var/log/nginx查看效果的文件;此时脚本内容为下面更合适 
  scp -r /var/log/nginx/*   192.168.59.100:/bak_log
  为了检验效果,执行脚本频率为每小时每分钟
  23.在与开发部门进行项目对接时,被要求使用centos7.4操作系统且内核版本为3.10,你将如何验证已安装完成的系统与服务符合要求。*
  
  通过以下命令核对:
  【系统版本号】:# cat  /etc/redhat-release
  【内核版本号】:# uname -r  
  
  
  
  24. 请说出你所知道的WEB服务软件包的名字,并总结出它们之间的不同*
  nginx:高并发、轻量级WEB服务器....
  httpd: 稳定、安全、使用量全球第一...apache-httpd-serverls
  
  
  
  
  【25. 使用输入重定向的方式向alan.txt文件输入你的姓名。】
  [root@c130 ~]# cat >alan.txt<   > tony
  > eof
  
  输入重定向<   
  创建文件四种方式


  1.touch
  2.vim
  3.echo 输出重定向
  4 cat 输入重定向
  
  
  
  
  26. 创建用户tom,jack,zhuzhuxia;
  要求:zhuzhuxia用户的附加组为tom;
  jack主组为root组;
  tom用户ID号为6666.
  *
  # useradd tom -u 6666 
  # useradd jack -g root
  # useradd  zhuzhuxia -G tom
  
  
  
  27. 请将vsftpd的进程过滤出来并杀掉。*
  【方法一】
  # ps aux |grep vsftpd
  获得该进程的PID后
  # kill -9  PID
  
  【方法二】
  pkill -9  vsftpd
  
  28. 需要修改/etc/passwd文件属性。要求只可以追加,不允许修改。*
  # chattr +a  /etc/passwd
  
  29. 使用帮助查看date命令如何显示今年一共有多少天?并将对应的完整命令写出来。*
  date --help
  # date -d  "2023-12-31"   +%j
  -d 指定的字符串为设置时间, %j按年计算天数
  30. 为httpd服务设置日志轮转;
  要求1、服务的访问日志每天进行切割并保留2个备份;
      2、错误日志每个月轮转一次;*
      
  【第一步:编辑切割规则文件】nginx服务本身是个用户,也有默认的属组;:
  # cat > /etc/logrotate.d/nginx<<-EOF
  /var/log/nginx/access.log {        
   daily                            
   create 0600 nginx nginx    
   dateext 
   rotate 2                            
  } 
  /var/log/nginx/error.log {        
   monthly                            
   create 0600 nginx nginx    
   dateext 
   rotate 2                            
  } 
  
  EOF
  
  【第二步:编辑脚本文件】
  在根目录下建立nginx脚本目录
  【vim只能建立普通文件,不能创建目录否则无法写入,此时ctrl+z,进入前台创建目录,然后再fg 调到前台,wq保存刚才编辑的内容】
  # vim /nginx/cront.sh
  /usr/sbin/logrotate  /etc/logrotate.d/nginx
  
  # chmod +x /nginx/cront.sh
  
  【第三步:指定计划任务】
  # crontab -e -u root
  0 3 * * * /nginx/cront.sh
  
  
  --------------------------------
  口述下查看文件用什么命令【注意逻辑,递进关系,】
  面试官您好
  当我查看一个文件信息时ls
  如果查看详情加属性-l
  友好性查看大小-h
  查看隐藏文件时-a
  查看文件节点时-i
  查看当前家目录-d
  查看行数通过管道wc -l可以查看字符个数行数等
  
  #ls                 #查看当前目录下的文件
  #ls  -l     //长格式显示(显示文件的详细信息)
  -rw-r--r--          1       root       root     10086   May 7 12:15:16      alan.txt     
  文件类型\权限    硬链接个数   所有者   所属组    大小   修改时间     名字
  #ll -d /home/  #显示目录的详细信息
  #ls -h     //-h 人性化显示 (显示文件大小)
  #ls -a      //all 显示所有文件 (包括隐藏文件)
  #ls ./file*    #以file开头的所有文件    *通配符。表示所有字符(隐藏文件除外)
  #ls ./*.txt     #以任意开头以.txt结尾的所有文件
  # ll -d /home/  #查看目录详细信息
  # ll -t         #按最新的【修改时间】排序
  # ls -i /etc/hosts  #查看inode号
  -------------------------------------------
  薪资期望:班级百分之五十名次 郑州6-8k
           班级百分之八十名次 杭州8-12k
           注重表达。态度和逻辑能力。
           做好规划,总结,培养作息,自律的习惯;
  
  ```

# 心形脚本测试

```
#!/bin/bash
y=1250
for (( yy = 45; yy > 0; yy-- )); do
x=-1140
    for (( xx = -120; xx < 0; xx++ )); do
        ff=$(echo `awk -v x=${x} -v y=${y} 'BEGIN{printf "%.0f\n",(((x/1000)*(x/1000)+(y/1000)*(y/1000)-1)*((x/1000)*(x/1000)+(y/1000)*(y/1000)-1)*((x/1000)*(x/1000)+(y/1000)*(y/1000)-1)-(x/1000)*(x/1000)*(y/1000)*(y/1000)*(y/1000))*10000000}'`)
        if [[ ff -le 0 ]]; then
            printf "\e[1;41m \e[0m"
        else
            printf " "
        fi
    x=$((${x}+20))
    done
printf "\n"
y=$((${y}-50))
done


---------------------
首先定义变量y的初始值为1250。
使用两个嵌套的for循环,外层循环yy从45递减到1,内层循环xx从-120递增到0。
在内层循环中,使用awk命令计算变量ff的值。awk命令中的表达式是一个数学公式,根据量x和y的值计算出一个结果。
判断ff的值是否小于等于0,如果是则打印红色背景的字符,否则打印空格。
内层循环结束后,换行。
外层循环结束后,y的值减少50。
脚本结束。

```

```
1()是以 CIFS 网络协议实现的一款软件。
Alftp          Bftp   Cnfs           DSamba
正确答案:D 你的答案:C
2.查看 yum 源中是否存在可安装软件包的命令为( )。
Ayum install               Byum list        Cyum clean all           Dyum remove
正确答案:B 你的答案:A
3()文件主要为本地主机名、集群节点提供快速解析。
Ahosts          Bvsftpd       chostname            DDNS
正确答案:A 你的答案:D
CIFS是实现文件共享服务的一种文件系统,主要用于实现windows系统中的文件共享,linux系统中用的比较少linux系统中利用CIFS文件系统实现文件共享,需要安装samba服务;nfs是 UNIX 【linux】系统之间共享文件的一种协议;
/etc/resolv.conf是 DNS 客户机配置文件。
DNS 软件的包名为bind  ;bind 服务程序的主配置文件为/etc/named.conf

 cat 1.txt |sort|uniq -c|sort  -n注意去重统计时需要先排序,只有紧挨着的行之间uniq才能去重

```

# 一阶段面试题

1.你用的操作系统版本号是多少? centos7.6 centos7.9

   你用的操作系统内核版本号是多少? 3.10.0 

2.系统优化过什么?

01.关闭selinux

02.关闭防火墙

03.时间同步

04.修改默认仓库

05.安装扩展的仓库epel

3.CentOS 6和CentOS 7的区别

内核版本:CentOS 6使用的是2.6内核,而CentOS 7使用的是3.1内核,新内核带来了更好的性能和更多的功能。

系统架构:CentOS 6只支持32位和64位两种架构,而CentOS 7还支持【ARM架构。】

系统服务管理:CentOS 6使用的是service命令管理系统服务,而CentOS 7使用的是systemctl命令,更加方便和灵活。

文件系统:CentOS 6默认使用的是ext4文件系统,而CentOS 7默认使用的是XFS文件系统,XFS支持更大的【文件和更快的速度】。

3在取消挂载的时候取消不掉,怎么查看:用lsof命令查看挂载目录是否被占用

4linux中创建文件失败,但是磁盘空间也有,是什么原因

inode号是指操作系统中的一个标识符,它被用来唯一标识文件系统中的文件或目录

【权限不够、或者是磁盘的ionde节点】数用完了,可以使用df -i查看磁盘的inode数量

5systemctl启动和绝对路径启动的区别

systemctl启动后是在后台运行,绝对路径启动后是在终端运行。

6软链接和硬链接的区别

软链接可以跨文件系统,硬链接不可以,

软链接可以对目录进行连接,硬链接不可以;

删除源文件后,软链接失效,硬链接不影响

软链接的inode号不一样,硬链接的inode号一样

软链接的创建方式是ln -s 源文件 链接文件硬链接的创建方式 ln  源文件  链接文件

7查看系统资源的常见命令有哪些

查看磁盘空间和挂载情况 df -Th

查看内存使用情况  free -m 

查看系统的运行时间和平均负载  uptime 

动态查看系统资源 top

查看端口 netstat -tlanp

查看系统运行的进程 ps -ef   ;ps aux

8raid-磁盘阵列【安全,成本,读写速率,(磁盘个数,利用率)

RAID0 ---数据条带

最少需要两块磁盘,分别往每一块磁盘上写一部分数据;读写速度快,磁盘利用率高;但是无数据检验,不能保证数据的正确性,存在单点故障。

RAID1--镜像raid

一般需要两块磁盘,每块磁盘上都会存储一份完整数据。其数据安全性较高,但是磁盘空间利用率是比较低的。读速度快,写速度慢,无数据校验。磁盘利用率不高

RAID5

磁盘上同时存储数据和校验数据。当一个数据盘损坏时,系统可以根据其他数据块和对应的校验数据来重建损坏的数据。raid5最少需要3块磁盘。

优点:可以找回丢失的数据---通过校验计算得出、可以做冗余磁盘,当某一块磁盘坏掉后,冗余磁盘会自动替换上去、有校验机制、读写速度高、磁盘利用率高

缺点:磁盘越多安全性能越差

RAID6

RAID6 等级是在 RAID5 的基础上为了进一步增强数据保护而设计的一种 RAID 方式

优点:容错高、允许两块磁盘同时坏掉。读写快、良好的随机读性能、有校验机制

缺点:写入速度差、成本高

RAID10

先做镜像再作条带--也叫混合raid

优点:有较高的IO性能、有数据冗余、无单点故障、安全性能高

缺点:成本稍高

9cpu的平均负载和利用率有什么区别

cpu平均负载是指单位时间内cpu正在处理进程的数量。

cpu利用率是指cpu被使用的时间占总时间的百分比。

cpu平均负载反映cpu【任务队列的长度】,而cpu利用率反映cpu工作的【忙碌程度】。

10centos和ubantu的区别

安装软件包【命令格式】不一样。centos使用yum的方式,而Ubuntu使用apt-get 方式

centos支持【rpm包】,但Ubuntu不支持

【稳定性】CentOS比ubnatu要好

python和shell有什么区别

单行注释两者都用#,多行注释shell中为<

shell中引用变量分为弱引和强引,单引''为强引,双引""为弱引,而python中不区分强引弱引

python有严格的语法要求,一步出现错误则后面的不再执行,直接退出终端,shell脚本中一步出现错误,后面的不受影响继续执行

shell中引用变量需要加$,python不需要

shell中有数组,python中没有,但是有列表,元组数据类型等

固态磁盘(ssd)与机械磁盘的区别

固态磁盘读取速度较快、防震耐摔、无噪音,功耗低质量轻。

location匹配规则

/  通用匹配,优先级最低

=  精准匹配,优先级最高,

~  区分大小写正则匹配

~* 不区分大小写正则匹配

^~  优先级仅次于=, 匹配任何以 ^~后面的内容 开始的查询并且停止搜索,不再继续检查正则表达式。

你可能感兴趣的:(linux,运维,服务器)