zoukankan      html  css  js  c++  java
  • centos7 基础命令

    一: linux基础

    (1) 查看服务器的IP信息

    ip add show
    ifconfig

    (2) 操作网卡命令(重启网络和启用网卡)

    systemctl restart network
    systemctl start network
    systemctl stop network

    启用和停止网卡命令

    ifup 网卡名
    例:
    ifup ens33 # 启用网卡
    ifdown ens33 # 停止网卡

     

    (3) 远程连接服务器

    注意: 因为我的讲师机的虚拟机是桥接模式,跟大家在同一个局域网,所以谁都可以连接

    但是,不要干坏事儿

    第一种方式: 使用第三方软件,我们教学就使用xshell进行连接就可以

    第二种方式: 使用命令进行连接

    ssh root@192.168.12.56

    三. linux目录结构

                  根目录   /

    /root    /bin  /dev  /etc  /home   /var  /lib  /usr  /media  /tmp  。。。。

     |                           |

    /root/desktop   /root/Media  。。。          /usr/bin  /usr/lib   。。。。

    (1) 查看服务器的IP信息

    ip add show
    ifconfig

    (2) 操作网卡命令(重启网络和启用网卡)

    systemctl restart network
    systemctl start network
    systemctl stop network

    启用和停止网卡命令

    ifup 网卡名
    例:
    ifup ens33 # 启用网卡
    ifdown ens33 # 停止网卡

     

    (3) 远程连接服务器

    注意: 因为我的讲师机的虚拟机是桥接模式,跟大家在同一个局域网,所以谁都可以连接

    但是,不要干坏事儿

    第一种方式: 使用第三方软件,我们教学就使用xshell进行连接就可以

    第二种方式: 使用命令进行连接

    ssh root@192.168.12.56

    三. 目录相关操作

    .    当前目录
    ..   上一层目录
    -   前一个工作目录
    ~   当前【用户】所在的家目录

    蓝色的文件: 都是目录

    白色的文件: 都是普通文件

    绿色的 文件: 都是可执行文件

     

    四. linux基本操作命令

    增删改查的高大上叫法 : CURD

    #  创建目录(文件夹)
    mkdir liulaoshi
    mkdir chenwen
    mkdir chengang
    mkdir zhangqihang
    # 创建普通文件
    touch huangchun
    touch xiaowei

    remove > 因为太长,所以改为rm
    rm或rm -i # 删除文件命令
    rm -r # 递归删除目录和文件命令
    rm -rf # 递归并且强制删除目录和文件命令
    rmdir # 删除一个空目录

    注意: rm -rf /*是炸弹命令,千万不要使用

    注意: rm -rf /*是炸弹命令,千万不要使用

    注意: rm -rf /*是炸弹命令,千万不要使用

    cd # 切换目录命令

    mv # 移动文件命令
    mv 源文件 目标文件   # 对文件重命名

    ls   # 查看当前目录下的文件夹和文件
    ls -l或ll # 查看当前目录下的文件夹和文件详情
    ls -la # 查看当前目录下的文件夹和文件详情, 还可以查看隐藏文件
    pwd # 查看当前所在的目录的绝对路径

    重启或关机命令

    init 6  # 重启
    init 0 # 关机

    linux下查看环境变量

    echo $PATH

    绝对路径和相对路径

    • 绝对路径:由根目录(/)为开始写起的文件名或者目录名称,如/home/oldboy/test.py;

    • 相对路径:相对于目前路径的文件名写法。例如./home/oldboy/exam.py或../../home/oldboy/exam.py,简单来说只要开头不是/,就是属于相对路径

     

    二: linux基本命令

    (1) 创建用户命令

    useradd liulaoshi   # 创建用户
    passwd liulaoshi   # 设置密码, 回车后会提示让你输入两次密码

    普通用户登录的命令提示符与root用户不一样

    (2) 修改命令提示符

    echo $PS1  # 查看命令提示符参数
    PS1="[u@h w ]$"  
      w 显示完整工作路径
      显示时间

    (3) 修改主机名

    hostnamectl set-hostname qishitwo

    (4) linux系统命令提示符

    命令     参数    需处理的内容

    (5) 创建目录命令

    mkdir -p liulaoshi/chenwen/liujie/xiaowei  # 递归创建目录
    mkdir -p {qihang,chenwen,yanglan,xiaowei} # 创建多个目录

    touch liulaoshi.py qihang.py yanglan.py xiaowei.py
    # 创建多个普通文件命令, 文件之间用空格隔开

     

    (6) VIM操作初识

    命令模式常用操作:
    :set nu 显示行号
    1G 或 gg ,跳转到文件的首行
    G ,跳转到文件的末尾行
    yy、#yy ,复制光标处的一行、#行
    p、P ,粘贴到光标处之后、之前
    x 或 Delete键 ,删除光标处的单个字符
    dd、#dd ,删除光标处的一行、#行
    d^、d$ ,从光标处之前删除至行首/行尾
    /word 向后查找字符串“word”,再按n/N跳至后/前一个结果
    u ,撤销最近的一次操作
    U ,撤销对当前行的所有修改
    Ctrl + r 取消前一次撤销操作
    ZZ 保存修改并退出
    末行模式常用操作:
    :s/old/new ,替换当前行第一个“old”
    :s/old/new/g ,替换当前行所有的“old”
    :n,m s/old/new/g ,替换第n-m行所有的“old”
    :% s/old/new/g ,替换文件内所有的“old”
    :w /root/newfile ,另存为其它文件
    :r /etc/filesystems ,读入其他文件内容
    :set nu|nonu ,显示/不显示行号
    :set ai|noai ,启用/关闭自动缩进

    (7) 修改网卡配置文件,使系统重启之后不用再手动启动网卡

    vim /etc/sysconfig/network-scripts/ifcfg-ens33

    改完之后,下一次你重启系统之后,就不用再使用ifup ens33命令手动启用网卡了

    (8) 查看普通文件内容

    cat 文件名   # 可以用绝对路径,也可以用相对路径

    (9) 特殊符号

    输入/输出
    >>  追加重定向
    >     重定向 会清空源文件
    <      输入重定项
    <<     将输入结果输入重定向

    (10) more和less命令

    more /etc/passwd  # 分页查看文件, 比cat命令好用
    less /etc/passwd # 同more 比more功能更多

    (11) linux快捷键

    1.tab键    用于自动补全命令/文件名/目录名
    2.ctrl + l  清理终端显示
    3.clear/cls 清理终端显示
    4.ctrl + c 终止当前操作

    (12) echo命令

    echo "山外青山楼外青楼" > passwd   # 单个>符号表示覆盖
    echo "能人背后有人弄" >> passwd # 两个>符号表示追加

    (13) 复制命令

    cp 参数 源文件 目标文件
    -r 递归,复制目录以及目录的子孙后代
    -p 复制文件,同时保持文件属性不变
    -a 相当于-pdr, 类似与Windows系统的复制快捷方式

    (14) 移动和重命名命令mv

    mv 源文件 目标文件
    # 不仅有移动的功能,还有重命令名的功能

    (15) 删除命令

    rm 参数 文件名
      -i 需要删除确认
       -f 强制删除
      -r 递归删除目录和内容

    (16)查找命令

    find 需要查找的目录
    -name # 指定文件的名字
    -type # 指定文件类型

    (17) 别名alias命令

    alias #查看系统存在的别名
    alias rm="echo '此命令太危险了,请你不要再使用'"
    # 给rm命令别名成为echo '此命令太危险了,请你不要再使用'
    # 当用户再输入rm命令时,就会执行这个命令:
    echo '此命令太危险了,请你不要再使用'
    unalias rm # 取消别名

    (18) 查看系统运行的进程

    ps -ef

    (19) 查看系统已开放的端口

    netstat -tunlp

    (19) 管道命令

    ps -ef | grep liulaoshi  # 查看系统中与liulaoshi相关的进程

    (20) grep命令

    grep nologin /etc/passwd  # 过滤出/etc/passwd下面所有含有noloing的信息
    grep root /etc/passwd # 过滤出/etc/passwd下面root信息

    语法:
    grep [参数] [--color=auto] [字符串] filename
    参数详解:
    -i : 忽略大小写
    -n : 输出行号
    -v : 反向选择
    --color = auto : 给关键词部分添加颜色

    (21) linux下面的IP地址信息(重要指数*)

    127.0.0.1  # 本机地址, 别人无法访问,只有本机才可以访问
    192.168.12.56 # 本机IP地址,别人可以访问
    localhost # 本机主机名
    0.0.0.0   # 本机环回地址, 相当于127.0.0.1加上192.168.12.56

    (22) head和tail命令(重要指数***)

    head显示文件前几行,默认前10行
    tail显示文件后几行,默认后10行
    想要显示/etc/passwd下面的第10行到第20行, 可以使用管道符进行二次过滤
    head -20 /etc/passwd | tail -1

    (23) which 命令(重要指数*)

    which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。 which指令会在环境变量$PATH设置的目录里查找符合条件的文件。 也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

    which pwd
    which python

    (24) scp命令(重要指数*)

    语法
    scp 【可选参数】 本地源文件 远程文件标记
      -r :递归复制整个目录
      -v:详细方式输出
      -q:不显示传输进度条
      -C:允许压缩
    scp liulaoshi.py root@192.168.12.77:/opt/  
    # 将本地的liulaoshi.py拷贝到远程服务器192.168.12.77的/opt目录下
    scp root@192.168.12.77:/opt/liulaoshi.py /root/
    # 将远程服务器192.168.12.77的/opt目录下liulaoshi.py拷贝到本地/root目录下
    scp -r /opt/liulaoshi root@192.168.12.77:/opt # 递归拷贝目录

    (25) 查看磁盘占用率命令

    df -h
    du -sh 文件或目录名 # 统计文件或目录的大小,以K,M,G为单位人性化显示

    (26) top命令

    top -hv | -bcHiOSs -d secs -n max -u|U user -p pid(s) -o field -w [cols]

    监控java线程数:
    ps -eLf | grep java | wc -l

    监控网络客户连接数:
    netstat -n | grep tcp | grep 侦听端口 | wc -l

    (27) chattr命令

    chattr +a huangxiaowei.py  # 给文件加锁
    chattr -a huangxiaowei.py  # 给文件解锁
    lsattr huangxiaowei.py  # 查看文件详细加锁信息

    (28) linux时间服务器 (重要指数***)

    date  查看系统当前时间
    ntpdate -u ntp.aliyun.com   # 从阿里云的NTP服务器更新系统的时间
    

     

    硬件时钟的查看
    hwclock
    
    //以系统时间为基准,修改硬件时间
    hwclock -w
    
    //以硬件时间为基准,修改系统时间
    hwclock -s
    date 041215002019 # 修改系统时间

    (29)wget 下载命令

    wget 链接

    (30) lrzsz软件包

    yum install lrzsz
    rz   # 上传
    sz 文件名   # 下载指定文件
    

    (31) 关机和重启命令

    reboot或init 6命令用于重启机器
    poweroff或init 0用于关闭系统

    (32)rsync 同步工具

    本地同步操作:
    rsync [选项...] 本地目录1 本地目录2
    rsync [选项...] 本地目录1/ 本地目录2
    rsync同步工具的常用选项:
    -n:测试同步过程,不做实际修改
    --delete:删除目标文件夹内多余的文档
    -a:归档模式,相当于-rlptgoD
    -v:显示详细操作信息
    -z:传输过程中启用压缩/解压
    1)将目录 /boot 同步到目录 /todir 下
    [root@svr7 ~]# ls  -l  /todir                  //同步前
    ls: 无法访问/todir: 没有那个文件或目录
    [root@svr7 ~]# rsync  -a  /boot  /todir          //将目录1作为目录2的子目录
    [root@svr7 ~]# ls  -l  /todir                  //检查同步结果
    总用量 4
    dr-xr-xr-x. 4 root root 4096 11月 30 18:50 boot
    
    2)将目录 /boot 下的文档同步到目录 /todir 下
    [root@svr7 ~]# rm  -rf  /todir                  //清理掉目录2
    [root@svr7 ~]# rsync  -a  /boot/  /todir          //将目录1下的文档同步到目录2下
    [root@svr7 ~]# ls  -l  /todir                  //检查同步结果
    总用量 126708
    -rw-r--r--. 1 root root   126426 10月 30 2015 config-3.10.0-327.el7.x86_64
    drwxr-xr-x. 2 root root     4096 11月 30 18:50 extlinux
    drwx------. 6 root root      104 12月  9 09:58 grub2
    
    3)同步效果测试
    在目录/boot下新增文件a.txt,删除/todir下的子目录 grub2:
    [root@svr7 ~]# touch  /boot/a.txt
    [root@svr7 ~]# rm  -rf  /todir/grub2/ 
    现在目录/boot和/todir目录下的内容已经不一致了:
    [root@svr7 ~]# ls  -ld  /boot/a.txt  /todir/a.txt
    ls: 无法访问/todir/a.txt: 没有那个文件或目录
    -rw-r--r--. 1 root root 0 1月  11 21:09 /boot/a.txt
    [root@svr7 ~]# ls  -ld  /boot/grub2  /todir/grub2
    ls: 无法访问/todir/grub2: 没有那个文件或目录
    drwx------. 6 root root 104 12月  9 09:58 /boot/grub2
    再次同步使/todir与/boot一致:
    [root@svr7 ~]# rsync  -a  /boot/  /todir/
    确认同步结果:
    [root@svr7 ~]# ls  -ld  /boot/a.txt  /todir/a.txt
    -rw-r--r--. 1 root root 0 1月  11 21:09 /boot/a.txt
    -rw-r--r--. 1 root root 0 1月  11 21:09 /todir/a.txt
    [root@svr7 ~]# ls  -ld  /boot/grub2  /todir/grub2
    drwx------. 6 root root 104 12月  9 09:58 /boot/grub2
    drwx------. 6 root root 104 12月  9 09:58 /todir/grub2
    步骤二:验证 -a、-v、-n、--delete 选项的含义
    1)验证-a选项
    当目录1包含文件夹时,若缺少-a或-r选项则文件夹会被忽略:
    [root@svr7 ~]# rsync  /home  /testa
    skipping directory home
    [root@svr7 ~]# ls  -ld  /testa
    ls: 无法访问/testa: 没有那个文件或目录
    添加-a后才会执行同步:
    [root@svr7 ~]# rsync  -a  /home/  /testa
    [root@svr7 ~]# ls  -ld  /testa
    drwxr-xr-x. 4 root root 31 1月   6 17:33 /testa
    类似的情况,当目录1中的数据出现权限、归属、修改时间等变化时,若文件内容不变默认不会同步,若希望目录2也同步这些变化,也需要-a选项。
    2)验证-v选项
    创建测试目录及文档:
    [root@svr7 ~]# mkdir  /fdir
    [root@svr7 ~]# touch  /fdir/1.txt
    添加-v选项时,可以看到操作细节信息,比如第一次同步时:
    [root@svr7 ~]# rsync  -av  /fdir/  /tdir
    sending incremental file list
    created directory /tdir
    ./
    1.txt                                 //传输文档列表
    
    sent 82 bytes  received 34 bytes  232.00 bytes/sec
    total size is 0  speedup is 0.00
    在目录/fdir/添加文件2.txt,再次跟踪同步信息:
    [root@svr7 ~]# touch  /fdir/2.txt
    sending incremental file list
    ./
    2.txt                                 //传输文档列表
    
    sent 100 bytes  received 34 bytes  268.00 bytes/sec
    total size is 0  speedup is 0.00
    确认目录1和目录2的内容已经一致:
    [root@svr7 ~]# ls  /fdir/  /tdir/
    /fdir/:
    1.txt  2.txt
    
    /tdir/:
    1.txt  2.txt
    再次跟踪同步信息,已经无需传输文件:
    [root@svr7 ~]# rsync  -av  /fdir/  /tdir
    sending incremental file list
    
    sent 58 bytes  received 12 bytes  140.00 bytes/sec
    total size is 0  speedup is 0.00
    3)验证-n选项
    将-n、-v选项合用,可以模拟同步过程,显示需要做哪些操作(但并不真的同步)。
    在目录/fdir下新建文件3.txt,测试同步操作:
    [root@svr7 ~]# touch  /fdir/3.txt
    [root@svr7 ~]# rsync  -avn  /fdir/  /tdir/
    sending incremental file list
    ./
    3.txt                                          //提示同步时会传输哪些文件
    
    sent 78 bytes  received 18 bytes  192.00 bytes/sec
    total size is 0  speedup is 0.00 (DRY RUN)
    [root@svr7 ~]# ls  -l  /tdir/3.txt                 //但实际并未真的同步
    ls: 无法访问/tdir/3.txt: 没有那个文件或目录
    去掉-n选项才会真正同步:
    [root@svr7 ~]# rsync  -av  /fdir/  /tdir/
    sending incremental file list
    ./
    3.txt
    
    sent 114 bytes  received 34 bytes  296.00 bytes/sec
    total size is 0  speedup is 0.00
    [root@svr7 ~]# ls  -l  /tdir/3.txt
    -rw-r--r--. 1 root root 0 1月  11 21:46 /tdir/3.txt
    4)验证--delete选项
    rsync同步操作默认只是将目录1的数据同步到目录2,但如果目录2存在多余的文件却并不会去除,除非添加—delete选项。
    在目录/fdir、/tdir已经完成同步后,删除/tdir/2.txt文件,再次同步:
    [root@svr7 ~]# rm  -rf  /fdir/2.txt 
    [root@svr7 ~]# rsync  -a  /fdir/  /tdir/
    检查发现目标文件夹/tdir下的2.txt文件还在:
    [root@svr7 ~]# ls  /fdir/  /tdir/
    /fdir/:
    1.txt  3.txt
    
    /tdir/:
    1.txt  2.txt  3.txt
    这种情况下添加--delete选项再次执行同步,两个目录的内容就一致了:
    [root@svr7 ~]# rsync  -a  --delete  /fdir/  /tdir/
    [root@svr7 ~]# ls  /fdir/  /tdir/
    /fdir/:
    1.txt  3.txt
    /tdir/:
    1.txt  3.txt
    

    rsync+SSH同步

    rsync user@host:远程目录/

    rsync [...] user@host:远程目录 本地目录

    rsync [...] 本地目录 user@host:远程目录

    1 查看远程主机svr7的/目录下有哪些子目录:
    [root@pc207 ~]# rsync  root@192.168.4.7:/
    2 rsync+SSH同步操作
    从远程主机svr7下载/etc/passwd文件到当前目录
    [root@pc207 ~]# rsync  root@192.168.4.7:/etc/passwd  ./
    3 将远程主机svr7的/boot/目录同步为本地的/fromssh
    [root@pc207 ~]# rsync  -a  root@192.168.4.7:/boot/  /fromssh
    4 将本机的/etc目录同步到远程主机svr7的/opt/下
    [root@pc207 ~]# du  -sh  /etc
    [root@pc207 ~]# rsync  -a  /etc  root@192.168.4.7:/opt/
    配置rsync服务端
    3.1 问题
    本例要求在主机svr7上配置rsync同步资源,完成下列任务:
    1.将 /usr/src 目录配置为 rsync 共享,其共享名为 tools,仅允许用户 ruser 以密码 pwd123 访问
    2.启动 rsync 服务,并将其设为开机自启
    3.2 步骤
    实现此案例需要按照如下步骤进行。
    步骤一:建立rsync账号文件
    1)建立账号记录
    [root@svr7 ~]# vim  /etc/rsyncd_users.db
    ruser:pwd123              //每行一个用户记录
    othername:123456
    2)控制账号文件权限(服务端严格模式有要求)
    [root@svr7 ~]# chmod  600  /etc/rsyncd_users.db
    [root@svr7 ~]# ls  -l  /etc/rsyncd_users.db              //确认权限调整结果
    -rw-------. 1 root root 27 12月 20 16:25 /etc/rsyncd_users.db
    步骤二:配置rsync共享资源
    1)确保被共享的目录可用
    [root@svr7 ~]# ls  /usr/src/                              //目录及文档资源存在
    copyright  debug               install.sh  license_ch.txt  src
    data       inotify-tools-3.13  kernels     README.md
    
    [root@svr7 ~]# ls  -ld  /usr/src/                          //权限允许访问
    drwxr-xr-x. 7 root root 4096 1月   7 13:57 /usr/src/
    2)建立rsyncd.conf配置文件
    [root@svr7 ~]# vim  /etc/rsyncd.conf
    [tools]                                                 //共享名
        path = /usr/src                                     //目录位置
        comment = Rsync Test Directory
        read only = yes                                      //默认只读
        dont compress = *.gz *.bz2 *.tgz *.zip                 //不需要压缩的文件
       auth users = ruser                                  //允许谁访问
        secrets file = /etc/rsyncd_users.db                  //账号文件
    步骤三:启用rsync服务端
    1)启动系统服务rsyncd,并设置开机自启
    [root@svr7 ~]# systemctl  restart  rsyncd
    [root@svr7 ~]# systemctl  enable  rsyncd
    Created symlink from /etc/systemd/system/multi-user.target.wants/rsync.service to /usr/lib/systemd/system/rsync.service.
    3)检查服务监听状态
    1.[root@svr7 ~]# netstat  -anptu  |  grep  rsync
    tcp        0      0 0.0.0.0:873             0.0.0.0:*               LISTEN      6339/rsync          
    tcp6       0      0 :::873                  :::*                    LISTEN      6339/rsync
    4 案例4:访问rsync共享资源
    4.1 问题
    本例要求掌握rsync与远程rsync资源的同步操作,使用rsync命令访问远程主机svr7,完成下列任务:
    1.列出远程主机提供的 rsync 资源,并查看内容
    2.将远程主机的 rsync 共享目录同步到本机
    4.2 方案
    列出 rsync 共享资源:
    rsync host::
    rsync rsync://host
    rsync+rsync远程同步操作:
    rsync [...] user@host::共享名 本地目录
    rsync [...] 本地目录 user@host::共享名
    访问需要验证的rsync资源时,可以通过 --password-file= 选项来加载提前准备的密码文件(权限600,不要包括除密码外的其他字符),便于计划任务或脚本使用。
    4.3 步骤
    实现此案例需要按照如下步骤进行。
    步骤一:列出远程主机提供的 rsync 资源,并查看内容
    1)列出有哪些rsync共享(无需密码)
    使用方式1:
    [root@pc207 ~]# rsync  192.168.4.7::
    tools              Rsync Test Directory
    或者,使用方式2:
    [root@pc207 ~]# rsync  rsync://192.168.4.7
    tools              Rsync Test Directory
    2)列出指定的rsync共享目录下有哪些内容
    访问目录内容时要求用户验证,否则会失败:
    [root@pc207 ~]# rsync  192.168.4.7::tools/
    Password: 
    @ERROR: auth failed on module tools
    rsync error: error starting client-server protocol (code 5) at main.c(1516) [Receiver=3.0.9]
    指定正确的用户名、密码才能够访问:
    [root@pc207 ~]# rsync  ruser@192.168.4.7::tools/
    Password:                                              //输入用户ruser的密码
    drwxr-xr-x        4096 2017/01/07 13:57:06 .
    -rw-r--r--         303 2015/12/23 19:36:55 README.md
    -rw-r--r--        2189 2015/11/18 20:47:12 copyright
    -rwxr-xr-x         773 2015/11/18 20:47:12 install.sh
    7.-rw-r--r--        7828 2015/11/18 20:47:12 license_ch.txt
    drwxr-xr-x        4096 2017/01/07 13:51:21 data
    .. ..
    步骤二:将远程主机的 rsync 共享目录同步到本机
    1)手动交互方式
    将远程tools共享的资源同步到本机的/mysrc目录:
    [root@pc207 ~]# rsync  -az  ruser@192.168.4.7::tools/  /mysrc
    Password:                                              //输入用户ruser的密码
    [root@pc207 ~]# du  -sh  /mysrc                         //检查同步结果
    17M    /mysrc
    2)自动交互方式
    通过--passwod-file选项提供密码文件:
    [root@pc207 ~]# echo   pwd123  >  /root/pass.txt         //建立密码文件
    [root@pc207 ~]# chmod  600  /root/pass.txt                 //控制密码文件的权限
    [root@pc207 ~]# rsync  -az  --password-file=/root/pass.txt  ruser@192.168.4.7::tools/  /mysrc  
                                                            //免除手动密码交互
    

      





  • 相关阅读:
    常见常用的CSS
    Js删除数组函数
    使用CSS让多出来的字变为省略号
    CSS缩写的样式
    mac下安装nginx
    ubuntu下程序员常用命令大全
    vue.js实现瀑布流之vue-waterfall-easy
    vue.js常见的报错信息及其解决方法的记录
    laravel5.4生成验证码
    java算法之超级丑数
  • 原文地址:https://www.cnblogs.com/liucsxiaoxiaobai/p/10734366.html
Copyright © 2011-2022 走看看