NSD2005班第一次串讲笔记

  • ==命令基础==
  • 一、文件和目录管理
    • 1.1、Linux系统的目录结构
    • 1.2、文件和目录的管理命令
      • 1.2.1、pwd
      • 1.2.2、cd
      • 1.2.3、ls
      • 1.2.4、du
      • 1.2.5、cat
      • 1.2.6、head和tail
      • 1.2.7、grep工具
      • 1.2.8、mkdir
      • 1.2.9、touch
      • 1.2.10、rm
      • 1.2.11、mv
      • 1.2.12、cp
    • 1.3、归档及压缩
      • 1.3.1、tar 集成备份工具
      • 1.3.2、zip
    • 1.4、管道和重定向
    • 1.5、find命令
  • 二、Linux软件包管理
    • 2.1、rpm 命令
      • 2.1.1、查询已软件的软件
      • 2.1.2、查询目录或文件是由那个RPM包产生的
      • 2.1.3、查询未安装的软件包信息
      • 2.1.4、安装rpm包
      • 2.1.5、卸载软件
      • 2.1.6、导入红帽签名信息
    • 2.2、yum仓库
      • 2.2.1、构建本地的yum仓库
      • 2.2.2、使用yum安装软件
      • 2.2.3、使用yum卸载软件
      • 2.2.4、yum 常用操作
      • 2.2.5、mount挂载操作
  • 三、用户和组管理
    • 3.1、用户管理
      • 3.1.1、创建用户
      • 3.1.2、修改用户属性
      • 3.1.3、给用户设置密码
      • 3.1.4、删除用户
    • 3.2、组管理
      • 3.2.1、创建组
      • 3.2.2、管理组成员
  • 四、权限管理
    • 4.1、基本权限和归属
    • 4.2、修改权限
    • 4.3、修改归属关系
    • 4.4、ACL策略
    • 4.5、附加权限
  • 五、磁盘管理
    • 5.1、fdisk 分区工具
    • 5.2、格式化
    • 5.3、挂载使用分区
    • 5.4、parted 分区工具
    • 5.5、交换空间
      • 5.5.1、使用分区做交换空间
      • 5.5.2、使用文件所占用的硬盘空间,充当交换空间
    • 5.6、逻辑卷管理
      • 5.6.1、物理卷管理
        • 5.6.1.1、添加物理卷
        • 5.6.1.2、查看物理卷
        • 5.6.1.3、删除物理卷
      • 5.6.2、卷组管理
        • 5.6.2.1、添加卷组vg0
        • 5.6.2.2、扩展卷组vg0的容量
        • 5.6.2.3、查看卷组
        • 5.6.2.4、从卷组中删除物理卷
        • 5.6.2.5、删除卷组
      • 5.6.3、逻辑卷管理
        • 5.6.3.1、添加逻辑卷
        • 5.6.3.2、查看逻辑卷
        • 5.6.3.3、更改逻辑卷大小
        • 5.6.3.4、删除逻辑卷
    • 5.7、RAID磁盘阵列
  • 六、进程管理
    • 6.1、查看进程
      • 6.1.1、查看进程树
      • 6.1.2、查看进程快照
      • 6.1.3、进程动态排名
      • 6.1.4、检索进程
    • 6.2、控制进程
      • 6.2.1、进程的前后台调度
      • 6.2.2、杀死进程
  • 七、计划任务
  • 八、Linux系统中的网络管理
    • 8.1、修改网卡的命名规则
      • 8.1.1、修改配置文件
      • 8.1.2、删除识别错误的网络配置
      • 8.1.3、添加新的网卡名
    • 8.2、修改网络连接配置
    • 8.3、SSH
    • 8.4、scp
  • 九、vim编辑器
  • 十、补充的命令

命令基础

  • 命令的执行依赖于解释器(默认的解释器:/bin/bash)

    • 用户—》解释器—》内核—》硬件
     [root@localhost ~]# cat /etc/shells     #查看当前系统有哪些解释器
    
  • 命令行的一般格式基本用法

    • 命令字 [选项]… [参数1] [参数2]…
  • Linux执行大多数命令,都要找到对应的执行程序

    • which 查看命令对应的执行程序
      • 大多数命令是有对应的执行程序的
  • 命令行的快捷键

    • Ctrl+C 废弃当前编辑的命令行、结束当前正在运行的命令
    • Ctrl+L 清空屏幕
    • ALT/ESC+. 粘贴上一条命令的最后一个参数
    • Ctrl+U 清楚光标前的内容
    • Ctrl+W 以空格为界定,删除一个参数或命令
    • Tab 自动补全

一、文件和目录管理

1.1、Linux系统的目录结构

  • Linux系统的目录结构:树形结构
    • 哲学理念:一切皆文件。
    • 根目录:用 **“ / ”**表示
      • Linux系统的起点

  • /root:管理员用户的家目录
  • /bin :存放二进制可执行文件
  • /boot:存放启动系统所需要的引导文件
  • /etc :存放的是系统管理所用到的配置文件
  • /home:存放普通用户家目录的
  • /dev :存放硬件设备的目录
  • /var :常态性变动的文件,包括日志文件以及某些软件运作所产生的文件

1.2、文件和目录的管理命令

1.2.1、pwd

  • (Print Working Directory)显示出完整的当前工作目录的名称
[root@localhost ~]# pwd
/root

1.2.2、cd

  • (Change Directory)切换目录

  • 命令格式:cd [目标文件夹位置]

[root@localhost ~]# cd /opt/
[root@localhost opt]# pwd
/opt
  • cd 命令常用的几种方式

    1. 直接使用 cd 会切换到当前登录用户的家目录、
    [root@localhost opt]# cd 
    [root@localhost ~]# pwd
    /root
    
    1. cd … 切换到当前目录的父目录
    [root@localhost ~]# cd ..
    [root@localhost /]# pwd
    /
    
    1. cd ~用户名 切换到目标用户的家目录
    [root@localhost ~]# useradd nsd2005
    [root@localhost ~]# cd ~nsd2005
    [root@localhost nsd2005]# pwd
    /home/nsd2005
    
  • 绝对路径和相对路径

    • 绝对路径:以根目录开始的完整路径
    • 相对路径:以当前所在的目录为参照物的路径

1.2.3、ls

  • (list)显示指定目录下的内容(列出当前工作目录所含文件及子目录)

  • 命令格式:ls [选项] [目录或文件名]…

[root@localhost ~]# ls
anaconda-ks.cfg       公共  视频  文档  音乐
initial-setup-ks.cfg  模板  图片  下载  桌面
  • 常用的选项

    • -l 长格式显示文件的详细属性
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2727 6月   8 10:24 /etc/passwd
    
    - -A  显示目标目录下所有的文件和目录,包括隐藏文件
    
    [root@localhost ~]# ls -A /root/
    
    • -d 显示目录本身的属性
    [root@localhost ~]# ls -ld /etc
    
    • -h 提供一个易读的单位
    [root@localhost ~]# ls -lh /etc/passwd
    
    • -R 递归显示内容
    [root@localhost ~]# ls -R /etc/
    

1.2.4、du

  • 统计文件或者目录使用硬盘空间的大小

  • 命令格式 : du [选项] 文件或目录

  • 常用选项

    • -s 显示文件或目录的大小
    • -h 加一个易读的单位
    [root@localhost ~]# du -sh /etc/passwd
    

1.2.5、cat

  • 将[文件]或标准输入组合输出到标准输出。

  • 命令格式:cat [选项]… [文件]…

[root@localhost ~]# cat /etc/passwd
  • 常用的选项

    • -n 对输出的所有行编号
    [root@localhost ~]# cat -n /etc/passwd
    

1.2.6、head和tail

  • 查看部分内容的命令

  • head命令格式:head [-n] 数字 文件名

    • 默认查看文件前10行
    [root@localhost ~]# head /etc/passwd		//显示前十行内容[root@localhost ~]# head -2 /etc/passwd		//显示前两行内容
    
  • tail命令格式: tail [-n] 数字 文件名

    • 默认查看文件后10行
    [root@localhost ~]# tail /etc/passwd		//显示后十行内容[root@localhost ~]# tail -2 /etc/passwd		//显示后两行内容
    

1.2.7、grep工具

  • 输出包含指定字符串的行
  • 命令格式: grep 查找条件 目标文件
[root@localhost ~]# grep ^root /etc/passwd		//查询以root开头的行[root@localhost ~]# grep bash$ /etc/passwd		//查询以bash结尾的行
  • 常用选项

    • -v 结果取反
    • -i 忽略大小写
    [root@localhost ~]# grep -v ^root /etc/passwd   //查询不以root开头的行[root@localhost ~]# grep -v bash$ /etc/passwd   //查询不以bash结尾的行
    

1.2.8、mkdir

  • 创建目录

  • 命令格式:mkdir [选项]… 目录…

[root@localhost ~]# mkdir /opt/nsd2005
[root@localhost ~]# cd /opt/nsd2005
[root@localhost nsd2005]# pwd
/opt/nsd2005
  • 常用的选项

    • -p 创建一个目录并将它的父目录也创建出来(创建一个连续的目录)
    [root@localhost nsd2005]# mkdir -p /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost nsd2005]# cd /opt/nsd2005/aa/bb/cc/dd/ee
    [root@localhost ee]# pwd
    /opt/nsd2005/aa/bb/cc/dd/ee
    
    • -m 创建目录时指定权限
    [root@localhost ~]# mkdir -m 444 /opt/nsd05
    [root@localhost ~]# ls -ld /opt/nsd05
    dr--r--r--. 2 root root 6 6月   8 10:50 /opt/nsd05
    

1.2.9、touch

  • 创建文件
  • 命令格式: touch 文件名
[root@localhost ~]# touch 1.txt   //在当前目录下创建文件1.txt
[root@localhost ~]# touch /opt/1.txt   //在指定目录下创建文件1.txt

1.2.10、rm

  • 删除目录或文件

  • 命令格式:rm [选项]… 文件…

  • 常用的选项

    • -r :递归删除(删除目录必须要有)
    • -f : 强制删除
    [root@localhost ~]# rm -rf /opt/1.txt 
    [root@localhost ~]# rm -rf /opt/nsd05/
    [root@localhost ~]# ls /opt/
    

1.2.11、mv

  • (move)移动文件或目录

  • 路径不变的移动(重命名)

  • 命令格式:mv 原文件… 目标路径

    [root@localhost ~]# touch 1.txt
    [root@localhost ~]# mv 1.txt  /opt/1.txt
    
  • 重命名

    [root@localhost ~]# mv  /opt/1.txt /opt/2.txt
    [root@localhost ~]# ls /opt/
    

1.2.12、cp

  • (copy)复制

  • 命令格式:cp [选项]… 原文件1、原文件2… 目标路径

  • 常用选项

    • -r 递归复制,复制目录时必须有的选项
    [root@localhost ~]# cp /etc/passwd /opt/passwd
    [root@localhost ~]# ls /opt/[root@localhost ~]# cp /etc/passwd /opt/pass
    [root@localhost ~]# ls /opt/
    

1.3、归档及压缩

  • 归档:将多个文件或目录整理为一个文件,文件总大小不会改变。

  • 压缩:按照某种算法减小文件占用空间的大小

  • Linux系统中常见的压缩格式

    • .gz ==》 gzip
    • .bz2 ==》 bzip2
    • .xz ==》 xz

1.3.1、tar 集成备份工具

  • 创建压缩包

    • 命令格式1: tar 选项 /路径/压缩包的名字 /路径/被压缩归档的数据…
  • 释放压缩包:

    • 命令格式2: tar 选项 /路径/压缩包的名字 -C(大写) /路径/
  • 常用选项

    • -c 创建归档
    • -x 释放归档
    • -f 指定归档文件名称,必须要有的选项,必须放在所有选项后面。
    • -z 、 -j 、-J : 分别表示gz、bz2、xz
    • -t : 显示归档文件中的清单。不执行解压缩的操作
    • -C : 指定释放路径
[root@localhost ~]# tar -zcf /root/tarfile.tar.gz  /boot  /opt/
tar: 从成员名中删除开头的“/”
[root@localhost ~]# tar -tf /root/tarfile.tar.gz
[root@localhost ~]# mkdir /opt/tarfiles[root@localhost ~]# tar -xf /root/tarfile.tar.gz -C  /opt/tarfiles/
[root@localhost ~]# ls /opt/tarfiles/
boot  opt

1.3.2、zip

  • zip归档工具:可跨平台的

    • 归档+压缩
    • zip -r 备份文件.zip 被归档的文件或目录
    [root@localhost ~]# zip -r /root/zipfiles.zip /home /boot
    
    • 释放+解压

    • unzip 备份文件.zip -d [目标文件夹]

[root@localhost ~]# mkdir /zipfiles
[root@localhost ~]# unzip /root/zipfiles.zip -d /zipfiles
[root@localhost ~]# ls /zipfiles
boot home
```

1.4、管道和重定向

  • 管道 | 将前面命令的输出结果,传递给后面的命令作为参数

  • 重定向 > 将前面命令的输出作为内容,写入到目标文件中

    • (不存在会自动创建)
    • 覆盖重定向: >
    • 追加重定向: >>

1.5、find命令

  • 命令格式: find [目录] [条件1] [条件2]

  • 常用的条件

    • -type 类型 (f 文本文件、 d 目录、 L快捷方式)
    • -name “文件名称”
    • -size + | - 文件大小(k、M、G、TB、PB、EB)
    • -user 用户名
    • -mtime 修改时间
    [root@localhost ~]# find /boot/ -type f
    
  • 高级使用:处理查找的内容

  • 命令格式:find [范围] [条件] -exec 处理命令 {} ;

    • -exec
    • 示例
    [root@localhost ~]# find /boot/ -type f  -exec cp {} /opt/ \;[root@localhost ~]# find /opt/ -type f  -exec rm -rf  {}  \;
    [root@localhost ~]# ls /opt/
    

二、Linux软件包管理

  • 常见的软件包
    • Red Hat系列 : rpm软件包
    • Debian系列 : deb软件包
    • 源代码软件包 :通常以 .tar.gz、.tar.bz2 格式的压缩包提供,包含程序的原始代码文件
    • 绿色版软件 :免安装

2.1、rpm 命令

2.1.1、查询已软件的软件

  • 命令格式: rpm -q[子选项] [软件名称]

  • 常用的子选项

    • -qa:列出已安装的所有软件包
    • -qi :查看指定软件的详细信息
    • -ql:查看指定软件的文件安装清单
    [root@localhost ~]# rpm -q firefox
    [root@localhost ~]# rpm -qi firefox
    [root@localhost ~]# rpm -ql firefox
    

2.1.2、查询目录或文件是由那个RPM包产生的

  • 命令格式 :rpm -qf [文件路径]…

    • 即使目标被删除也可以查询
    [root@localhost ~]# rpm -qf /etc/passwd
    

2.1.3、查询未安装的软件包信息

  • 命令格式:rpm -q[子选项] [RPM包文件路径]

  • 常用的子选项

    • -qpi:查看指定软件的详细信息
    • -qpl:查看指定软件的文件安装清单
    [root@localhost ~]# rpm -qpi /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm [root@localhost ~]# rpm -qpl /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm 
    

2.1.4、安装rpm包

  • 命令格式: rpm -i RPM软件包路径

  • 辅助选项

    • -v : 显示安装细节信息
    • -h : 显示安装进度
    • –force : 强制安装、覆盖安装
    • –test : 测试安装,不做真实安装动作
    [root@localhost ~]# rpm -q httpd			//查询是否安装[root@localhost ~]# rpm -ivh  /mydvd/Packages/httpd-2.4.6-80.el7.centos.x86_64.rpm
    
  • 恢复被删除的程序

[root@localhost ~]# which hostname
/usr/bin/hostname
[root@localhost ~]# rm -rf /usr/bin/hostname
[root@localhost ~]# rpm -qf /usr/bin/hostname
hostname-3.13-3.el7.x86_64
[root@localhost ~]# rpm -ivh --force /mydvd/Packages/hostname-3.13-3.el7.x86_64.rpm 

2.1.5、卸载软件

  • 命令格式: rpm -e 软件名
[root@localhost ~]# rpm -e httpd
[root@localhost ~]# rpm -q httpd
未安装软件包 httpd 

2.1.6、导入红帽签名信息

  • 命令格式: rpm --import 签名信息文件存放路径
[root@localhost ~]# rpm --import /mydvd/RPM-GPG-KEY-CentOS-7

2.2、yum仓库

  • 基于RPM包构建的软件更新机制

  • 自动解决软件包依赖关系

  • 所有软件包由集中的YUM软件仓库提供

2.2.1、构建本地的yum仓库

[root@localhost ~]# mkdir /etc/yum.repos.d/repo_bak
[root@localhost ~]# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/repo_bak
[root@localhost ~]# vim /etc/yum.repos.d/dvd.repo
[root@localhost ~]# cat /etc/yum.repos.d/dvd.repo
[dvd]                       //仓库的标识
name=dvd.repo               //仓库的描述信息
baseurl=file:///dvd         //仓库在哪里,file://代表本机
enabled=1                   //是否启用本文件
gpgcheck=0 					//是否检测红帽签名
#gpgkey= 签名文件路径         //gpgcheck=0 gpgkey不需要写[root@localhost ~]# yum repolist

2.2.2、使用yum安装软件

[root@localhost ~]# yum -y install httpd

2.2.3、使用yum卸载软件

[root@localhost ~]# yum -y remove httpd

2.2.4、yum 常用操作

  • yum 查询
[root@localhost ~]# yum list ftp		//查询软件[root@localhost ~]# yum provides ftp	
//查询提供ftp命令的软件包,也可以查询文件由那个软件包提供[root@localhost ~]# yum search ftp		//查询与ftp有关的软件包
  • yum 缓存
[root@localhost ~]# yum makecache 		//手动建立缓存[root@localhost ~]# yum clean all		//清楚缓存

2.2.5、mount挂载操作

  • 让目录成为设备的访问点

  • 以光驱设备为例。

[root@localhost ~]# ls -l /dev/cdrom 
lrwxrwxrwx. 1 root root 3 6月   8 15:17 /dev/cdrom -> sr0[root@localhost ~]# mkdir /dvd				//创建挂载点
[root@localhost ~]# mount /dev/cdrom /dvd	[root@localhost ~]# df -ah | grep dvd
/dev/sr0                 8.8G  8.8G     0  100% /dvd
  • 卸载操作
[root@localhost ~]# umount /dvd/
[root@localhost ~]# df -ah | grep dvd

三、用户和组管理

3.1、用户管理

  • 用户的标识: UID

  • 管理员用户 root 的UID 为0 ; 普通用户的UID从1000开始。

  • 一个用户必须属于一个组,在创建用户的用时,也会创建一个与这个用户相对应得基本组。

  • /etc/passwd,保存用户帐号的基本信息

    • 每个用户记录一行,以:分割为7个字段
    [root@localhost ~]# head -1 /etc/passwd
    root:x:0:0:root:/root:/bin/bash
    

    用户名:密码占位符:用户的UID:基本组的GID:描述信息:家目录:解释器

  • /etc/passwd,保存用户密码/有效期等信息

    • 每个用户记录一行,以:分割为9个字段
    [root@localhost ~]# grep root /etc/shadow
    root:$6$Jw6.2w9W$NSXSyOBuR.afacfARXMyylkpvhb1X847sSmeeP15pAZo8JhGbBlaaYCBWh9U/SIHoTvUctpOqK2deERW8R/Sh.:18421:0:99999:7:::
    

    字段1:用户帐号的名称
    字段2:加密后的密码字符串
    字段3:上次修改密码的时间(上一次修改密码的时间:从1970-1-1到达上一次修改密码的时间经历的天数)
    字段4:密码的最短有效天数,默认0
    字段5:密码的最长有效天数,默认99999
    字段6:密码过期前的警告天数,默认7
    字段7:密码过期后多少天禁用此用户账号
    字段8:帐号失效时间,默认值为空
    字段9:保留字段(未使用)

  • 用户初始配置文件

    • 新建用户时,根据 /etc/skel 模板目录复制

3.1.1、创建用户

  • useradd 命令

    • 命令格式: useradd [选项]… 用户名

    • 常用选项

      • -u:指定 UID 标记号
      [root@localhost ~]# useradd -u 2005 nsd01
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01)=2005(nsd01)
      
      • -d:指定宿主目录(家目录),缺省为 /home/用户名
      [root@localhost ~]# useradd -d /opt/nsd02 nsd02
      [root@localhost ~]# ls -ld /opt/nsd02/
      drwx------. 3 nsd02 nsd02 78 6月   8 15:56 /opt/nsd02/
      
      • -G:指定所属的附加组
      [root@localhost ~]# useradd -G nsd2005 nsd03
      [root@localhost ~]# id nsd03
      uid=2007(nsd03) gid=2008(nsd03)=2008(nsd03),2007(nsd2005)
      
      • -s:指定用户的登录解释器
      [root@localhost ~]# useradd -s /sbin/nologin nsd04
      [root@localhost ~]# su - nsd04
      This account is currently not available.		//次账户目前不可用
      

3.1.2、修改用户属性

  • usermod 命令

    • 命令格式: usermod [选项]… 用户名

    • 常用的选线:

      • -u:用户id
      [root@localhost ~]# id nsd01
      uid=2005(nsd01) gid=2005(nsd01)=2005(nsd01)[root@localhost ~]# usermod -u 3000 nsd01
      [root@localhost ~]# id nsd01
      uid=3000(nsd01) gid=2005(nsd01)=2005(nsd01)
      
      • -s:登录解释器
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/sbin/nologin[root@localhost ~]# usermod -s /bin/bash nsd04
      [root@localhost ~]# cat /etc/passwd | grep nsd04
      nsd04:x:2008:2009::/home/nsd04:/bin/bash
      
      • -l:更改用户帐号的登录名称
      [root@localhost ~]# id nsd100
      id: nsd100: no such user[root@localhost ~]# usermod -l nsd100 nsd01[root@localhost ~]# id nsd01
      id: nsd01: no such user
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01)
      
      • -G:附加组 //重置附加组
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01)
      [root@localhost ~]# groupadd test1
      groupadd:“test1”组已存在[root@localhost ~]# usermod -G test1 nsd100
      [root@localhost ~]# id nsd100
      uid=3000(nsd100) gid=2005(nsd01)=2005(nsd01),1000(test1)
      
      • -d:家目录路径
      [root@localhost ~]# cd ~nsd100
      [root@localhost nsd01]# pwd
      /home/nsd01[root@localhost nsd01]# usermod -d /opt/nsd100 nsd100[root@localhost nsd01]# cd ~nsd100
      -bash: cd: /opt/nsd100: 没有那个文件或目录[root@localhost nsd01]# mkdir /opt/nsd100
      [root@localhost nsd01]# cd ~nsd100
      [root@localhost nsd100]# pwd
      /opt/nsd100
      [root@localhost nsd100]# ls -ld /opt/nsd100
      drwxr-xr-x. 2 root root 6 6月   8 16:08 /opt/nsd100
      

3.1.3、给用户设置密码

  • passwd 命令
    • 命令格式: passwd [选项]… 用户名
[root@localhost ~]# passwd 				//直接使用passwd可修改当前登录用户的密码
更改用户 root 的密码 。
新的 密码:
无效的密码: 密码少于 8 个字符
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • 取消交互式设置密码
[root@localhost ~]# echo 123456 | passwd --stdin root
更改用户 root 的密码 。
passwd:所有的身份验证令牌已经成功更新。

3.1.4、删除用户

  • userdel 命令

    • 命令格式: userdel [-r] 用户名

    • 常用选项

      • -r 连同家目录/用户邮件一起删除
      [root@localhost ~]# userdel -r nsd02
      [root@localhost ~]# userdel -r nsd03
      [root@localhost ~]# userdel -r nsd100
      userdel:/opt/nsd100 并不属于 nsd100,所以不会删除
      

3.2、组管理

  • /etc/group,保存组帐号的基本信息

    • 每个组记录一行,以:分割为4个字段
    [root@localhost ~]# groupadd nsd2005
    groupadd:“nsd2005”组已存在
    [root@localhost ~]# grep nsd2005 /etc/group
    nsd2005:x:2007:
    

    组名:组的密码占位符:GID:组的成员列表

3.2.1、创建组

  • groupadd 命令

    • 命令格式: groupadd [选项] 组
    [root@localhost ~]# groupadd nsd2005
    

3.2.2、管理组成员

  • gpasswd 命令

    • 命令格式: gpasswd [选项]… 组名

    • 常用选项

      • -a 添加组成员,一次一个
      [root@localhost ~]# useradd haha
      [root@localhost ~]# gpasswd -a haha nsd2005
      
      • -d 删除组成员,一次一个
      [root@localhost ~]# gpasswd -d haha nsd2005
      正在将用户“haha”从“nsd2005”组中删除
      
      • -M 定义组成员用户列表,可设置多个
    • 覆盖之前,重定义

      [root@localhost ~]# gpasswd -M haha,xixi,hehe nsd2005
      [root@localhost ~]# grep nsd2005 /etc/group
      nsd2005:x:2007:haha,xixi,hehe
      
    
- -A    定义组管理员列表,可定义多个- 覆盖之前,重定义```shell[root@localhost ~]# gpasswd -A www1 nsd2005[root@localhost ~]# su - haha上一次登录:一 6月  8 16:40:36 CST 2020pts/0 上[haha@localhost ~]$ gpasswd -d haha nsd2005gpasswd:没有权限。[root@localhost ~]# su - www1[www1@localhost ~]$ gpasswd -d hah nsd2005正在将用户“hah”从“nsd2005”组中删除gpasswd:用户“hah”不是“nsd2005”的成员```### 3.2.3、删除组- groupdel   命令- 命令格式: groupdel   组名- 删除的组不能是用户的基本组```shell[root@localhost ~]# groupdel nsd2005[root@localhost ~]# grep nsd2005 /etc/group

四、权限管理

4.1、基本权限和归属

  • 基本权限:

    • 读 : r (read)
    • 写 : w (write)
    • 执行 : x (excute)
  • 归属关系:

    • 所有者 : u (user)
    • 所属组 : g (group)
    • 其他用户 : o (other)
    [root@localhost ~]# ls -l /etc/passwd
    -rw-r--r--. 1 root root 2635 6月   5 19:04 /etc/passwd
    权限  硬链接数  属主  属组   大小   最后修改时间   文件名
    
    • -rw-r–r--
      • 最前面的 - 表示 文件类型是普通文件(d,表示目录,l,表示链接文件)
      • 第二到第四个字符 rw- 表示属主(所有者)具有可读可写的权限
      • 第五到第七个字符 r– 表示属组(所属组)具有可读的权限
      • 第八到第十个字符 r– 表示其他人具有可读的权限

4.2、修改权限

  • chmod命令
    • 命令格式1:chmod [ugoa] [±=] 文件
    • 命令格式2: chmod [nnn] 文件
    • 常用选项
      • -R 递归修改权限
    • 权限的8进制数表示
      • r = 4
      • w = 2
      • x = 1
[root@localhost ~]# touch 1.txt
[root@localhost ~]# ls -l 1.txt
-rw-r--r--. 1 root root 0 6月   8 16:51 1.txt
[root@localhost ~]# chmod a+x 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxr-xr-x. 1 root root 0 6月   8 16:51 1.txt[root@localhost ~]# chmod 777 1.txt
[root@localhost ~]# ls -l 1.txt
-rwxrwxrwx. 1 root root 0 6月   8 16:51 1.txt

4.3、修改归属关系

  • chown 命令
    • 命令格式1: chown 属主 文件
    • 命令格式2: chown 属主:属组 文件
    • 命令格式3: chown :属组 文件
    • 常用的选项
    • -R : 递归修改归属关系
[root@localhost ~]# useradd test1
[root@localhost ~]# mkdir -p /opt/aa/bb/cc[root@localhost ~]# chown test1 /opt/aa/
[root@localhost ~]# ls -ld /opt/aa/
drwxr-xr-x. 3 test1 root 16 6月   8 16:59 /opt/aa/[root@localhost ~]# chown -R test1:test1 /opt/aa/
[root@localhost ~]# ls -lR /opt/aa/

4.4、ACL策略

  • 针对个别用户,个别组设置独立的权限

  • setfacl 命令

    • 命令格式1: setfacl [选项] u:用户名:权限 文件

    • 命令格式2: setfacl [选项] g:组名:权限 文件

    • 常用选项

      • -m:定义一条ACL策略
      [root@localhost ~]# useradd dc
      [root@localhost ~]# setfacl -m u:dc:rw /opt/aa/
      
      • -x:清除指定的ACL策略
      [root@localhost ~]# setfacl -x u:dc /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      
      • -b: 清楚所有已设置的ACL策略
      [root@localhost ~]# setfacl -b /opt/aa/
      
      • -R:递归设置ACL策略
      [root@localhost ~]# setfacl -Rm u:dc:rwx /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/
      [root@localhost ~]# getfacl /opt/aa/bb/
      

4.5、附加权限

  • Set GID权限(s权限)

    • 使用方式:chmod u+s 目标文件
    • 占用属主的x位,显示为s或S,取决于属组是否有x权限(有x权限,就是s。没有就是S)
    • 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
  • Set UID

    • 使用方式:chmod g+s 目标目录
    • 占用属主的x位
      • 显示为s或S,取决于属组是否有x权限(有x权限,就是s。没有就是S)
      • 仅对可执行的程序有意义
      • 当其他用户执行带SUID标记的程序时,具有此程序属主的身份和相应权限
  • 粘滞位,sticky Bit权限(t权限)

    • 使用方式:chmod o+t 目标目录
    • 占用其他人的x位
    • 显示为t或T,取决于其他人是否有x权限(有x权限,就是s。没有就是S)
    • 适用于目录,用来限制用户滥用写入权限、

五、磁盘管理

磁盘是任何系统中存储文件和数据的重要载体。是必不可缺的。无论是Windows还是Linux在安装系统时,必须先有分区来做这个载体。

在Linux系统中主要使用的磁盘工具是fdisk和parted两种。

[root@localhost ~]# lsblk 			//列出当前系统识别到的硬盘
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
  • 分区模式:MBR和GPT

    • MBR/msdos分区模式

      • 分区类型:主分区、扩展分区、逻辑分区
    • 最多只能有4个主分区

    • 扩展分区可以没有,至多有一个

    • 1~4个主分区,或者 3个主分区+1个扩展分区(n个逻辑分区)

    • 最大支持容量为 2.2TB 的磁盘

    • 扩展分区不能格式化,空间不能直接存储数据

    • 可以用于存储数据的分区:主分区与逻辑分区

  • GPT分区模式

    • 全局唯一标识分区表
    • 突破固定大小64字节的分区表限制
      • 最多可支持128个主分区,最大支持18EB容量
    • 1 EB = 1024 PB = 1024 x 1024 TB

5.1、fdisk 分区工具

  • 命令格式1:fdisk [选项] <磁盘> //更改分区表
  • 命令格式2:fdisk [选项] -l <磁盘> //列出分区表
[root@localhost ~]# fdisk /dev/sdb
  • 进入fdisk交互模式
    • 常用的交互指令
      • m 列出指令帮助
      • p 查看现有的分区表(存放分区信息的表格)
      • n 新建分区
      • d 删除分区
      • q 放弃更改并退出
      • w 保存更改并退出
命令(输入 m 获取帮助):n			//新建分区
Partition type:p   primary (0 primary, 0 extended, 4 free)		//主分区e   extended										//扩展分区
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+1G
分区 1 已设置为 Linux 类型,大小设为 1 GiB命令(输入 m 获取帮助):n
Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
Select (default p): 
Using default response p
分区号 (2-4,默认 2):
起始 扇区 (2099200-41943039,默认为 2099200):
将使用默认值 2099200
Last 扇区, +扇区 or +size{K,M,G} (2099200-41943039,默认为 41943039):+5G
分区 2 已设置为 Linux 类型,大小设为 5 GiB命令(输入 m 获取帮助):p磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x2b679b16设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048     2099199     1048576   83  Linux
/dev/sdb2         2099200    12584959     5242880   83  Linux

5.2、格式化

  • 格式化:赋予空间文件系统的过程

    • 文件系统:数据在空间中存放的规则

    [root@localhost ~]# mkfs.
    mkfs.btrfs mkfs.ext2 mkfs.ext4 mkfs.minix mkfs.vfat
    mkfs.cramfs mkfs.ext3 mkfs.fat mkfs.msdos mkfs.xfs

    
    ```shell
    [root@localhost ~]# mkfs -t 
    btrfs   ext2    ext4    minix   vfat    
    cramfs  ext3    fat     msdos   xfs 
    
  • 格式化分区

[root@localhost ~]# mkfs.ext4 /dev/sdb1[root@localhost ~]# mkfs -t ext4 /dev/sdb1[root@localhost ~]# blkid /dev/sdb1
/dev/sdb1: UUID="ae37b440-69ec-47ef-b617-02807f48496f" TYPE="ext4"
  • 刷新分区表
[root@localhost ~]# partprobe

5.3、挂载使用分区

  • 开机自动挂载/etc/fstab
[root@localhost ~]# mkdir /mypart1
[root@localhost ~]# vim /etc/fstab
/dev/sdb1 /mypart1  ext4  defaults 0 0 
[root@localhost ~]# mount -a
[root@localhost ~]# df -h  | grep mypart1
/dev/sdb1                976M  2.6M  907M    1% /mypart1
  • /etc/fstab

/dev/sdb1 /mypart1 ext4 defaults 0 0

设备名称 挂载点 文件系统 参数 备份标记 检测顺序

  • 参数
Async/sync 设置是否为同步方式运行,默认为async
auto/noauto 当下载mount -a 的命令时,此文件系统是否被主动挂载。默认为auto
rw/ro 是否以以只读或者读写模式挂载
exec/noexec 限制此文件系统内是否能够进行"执行"的操作
user/nouser 是否允许用户使用mount命令挂载
suid/nosuid 是否允许SUID的存在
Usrquota 启动文件系统支持磁盘配额模式
Grpquota 启动文件系统对群组磁盘配额模式的支持
Defaults 同时具有rw,suid,dev,exec,auto,nouser,async等默认参数的设置
  • 备份标记

    • 能否被dump备份命令作用
    • 但是现在有比dump更好的备份方式
  • 是否检验扇区

    • 开机的过程中,系统默认会以fsck检验我们系统是否为完整
    0 不要检验
    1 最早检验(一般根目录会选择)
    2 1级别检验完成之后进行检验

5.4、parted 分区工具

  • parted交互模式管理分区
[root@localhost ~]# parted /dev/sdb
(parted) mktable gpt			//指定分区模式
警告: The existing disk label on /dev/sdb will be destroyed and all
data on this disk will be lost. Do you want to continue?
//重新建立磁盘标签,磁盘中原来的数据会丢失,是否继续。      是/Yes/否/No? yes(parted) mkpart 				//建立分区
分区名称?  []? sdb1				//名称随意
文件系统类型?  [ext2]? ext4		//这里不会格式化	
起始点? 0						
结束点? 2G
警告: The resulting partition is not properly aligned for best performance.
//得到的分区没有正确对齐以获得最佳性能。                                         忽略/Ignore/放弃/Cancel? Ignore(parted) print 				//查看分区表信息
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: Number  Start   End     Size    File system  Name  标志1      17.4kB  2000MB  2000MB               sdb1(parted) resizepart 
分区编号? 1
结束点?  [2000MB]? 4G
(parted) print
Number  Start   End     Size    File system  Name  标志1      17.4kB  4000MB  4000MB               sdb1(parted) rm 1				//删除分区

5.5、交换空间

5.5.1、使用分区做交换空间

  • 在Linux系统下除了存放文件的分区以外,还需要一个Swap(交换分区)用来充当虚拟内存。

  • SWAP分区是Linux暂时存储数据的交换分区,主要用于保存物理内存上暂时不用的数据,在需要的时候调进内存。一般情况下SWAP分区应该大于或者等于物理内存大小。

  • 虚拟内存

    • 当物理内存占满了,CPU可以将内存的中数据,暂时放入交换空间中,缓解真实物理内存的压力
[root@localhost ~]# ls /dev/sdb2
/dev/sdb2
[root@localhost ~]# mkswap /dev/sdb2		//格式化交换文件
正在设置交换空间版本 1,大小 = 3905532 KiB
无标签,UUID=3802ca2f-3f92-4e8f-8092-950f163de988
[root@localhost ~]# blkid /dev/sdb2			//查看文件系统类型
/dev/sdb2: UUID="3802ca2f-3f92-4e8f-8092-950f163de988" TYPE="swap" PARTLABEL="sdb2" PARTUUID="ea9e855a-0857-4c79-826d-1f351c6da31d" [root@localhost ~]# swapon 					//查看交换空间组成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
[root@localhost ~]# swapon /dev/sdb2		//启用交换空间
[root@localhost ~]# swapon 					//查看交换空间组成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
/dev/sdb2 partition 3.7G   0B   -2[root@localhost ~]# free -m 				//查看交换空间大小total        used        free      shared  buff/cache
Mem:            974         403         192           8         379
Swap:          5861           0        5861[root@localhost ~]# swapoff /dev/sdb2		//停用交换分区
[root@localhost ~]# swapon 					//查看交换空间组成
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
[root@localhost ~]# free - m			total        used        free      shared  buff/cache   available
Mem:         997956      409692      199724        8636      388540      385896
Swap:       2097148           0     2097148
  • 开机启用交换分区
[root@localhost ~]# vim /etc/fstab 
[root@localhost ~]# tail -1 /etc/fstab
/dev/sdb2 swap  swap defaults 0 0
[root@localhost ~]# swapon -a
[root@localhost ~]# swapon 
NAME      TYPE      SIZE USED PRIO
/dev/dm-1 partition   2G   0B   -1
/dev/sdb2 partition 3.7G   0B   -2

5.5.2、使用文件所占用的硬盘空间,充当交换空间

  • Linux中的虚拟设备

    • /dev/zero 设备产生无意义数据
      • “零”设备,可以无限的提供空字符(0x00,ASCII代码NUL)。
      • 常用来生成一个特定大小的文件。
    • /dev/null
      • “空”设备,也有人称它为黑洞。任何输入到这个“设备”的数据都将被直接丢弃。
      • 最常用的用法是把不需要的输出重定向到这个文件
    • /dev/random和/dev/urandom
      • 随机数设备,提供不间断的随机字节流。
      • 二者的区别是/dev/random产生随机数据依赖系统中断,当系统中断不足时,/dev/random设备会“挂起”,因而产生数据速度较慢,但随机性好;
  • 建立一个大文件

    • dd命令
      • 命令格式: if=输入文件名 of=输出文件名 bs=块大小 count=块数
[root@localhost ~]# dd if=/dev/zero of=/opt/swap.txt bs=1M  count=2048
记录了2048+0 的读入
记录了2048+0 的写出
2147483648字节(2.1 GB)已复制,13.3674 秒,161 MB/秒[root@localhost ~]# du -sh /opt/swap.txt 
2.0G	/opt/swap.txt
  • 利用文件制作交换空间
[root@localhost ~]# mkswap /opt/swap.txt 
正在设置交换空间版本 1,大小 = 2097148 KiB
无标签,UUID=ca89ca53-13c1-418a-b04d-2fbeba7ea408
[root@localhost ~]# swapon /opt/swap.txt
swapon: /opt/swap.txt:不安全的权限 0644,建议使用 0600。
[root@localhost ~]# swapon
NAME          TYPE      SIZE  USED PRIO
/dev/dm-1     partition   2G 66.3M   -1
/opt/swap.txt file        2G    0B   -2

5.6、逻辑卷管理

LVM是Linux操作系统中对磁盘分区进行管理的一种机制。

是建立在磁盘和分区之上的一个逻辑层,可以提高磁盘分区管理的灵活性。

最重要的三个概念

  • 物理卷(PV,physical Volume)
  • 卷组(VG,Volume group)
  • 逻辑卷(LV,logical Volumes)

环境准备

  • 新添加两块磁盘
  • 使用fdisk分区工具创建几个分区
[root@localhost ~]# lsblk 
NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda               8:0    0   20G  0 disk 
├─sda1            8:1    0    1G  0 part /boot
└─sda2            8:2    0   19G  0 part ├─centos-root 253:0    0   17G  0 lvm  /└─centos-swap 253:1    0    2G  0 lvm  [SWAP]
sdb               8:16   0   20G  0 disk 
├─sdb1            8:17   0   10G  0 part 
├─sdb2            8:18   0    5G  0 part 
├─sdb3            8:19   0    3G  0 part 
└─sdb4            8:20   0    2G  0 part 
sdc               8:32   0   20G  0 disk 
├─sdc1            8:33   0   10G  0 part 
└─sdc2            8:34   0   10G  0 part 

5.6.1、物理卷管理

物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。

每一个物理卷被划分为若干个PE(physical Extents)。PE的大小默认是4MB。

(创建卷组的时候就会直接将对应的分区创建为物理卷)

5.6.1.1、添加物理卷

[root@localhost ~]# pvcreate /dev/sdb1  /dev/sdc1Physical volume "/dev/sdb1" successfully created.Physical volume "/dev/sdc1" successfully created.

5.6.1.2、查看物理卷

可以看到刚刚被创建完成的物理卷/dev/sdb1 和/dev/sdc1以及安装系统是自动创建的/dev/sda2

[root@localhost ~]# pvdisplay --- Physical volume ---PV Name               /dev/sda2VG Name               centosPV Size               <19.00 GiB / not usable 3.00 MiBAllocatable           yes (but full)PE Size               4.00 MiBTotal PE              4863Free PE               0Allocated PE          4863PV UUID               ETpx0V-4iUA-ZzXt-BceZ-ZmSM-DQAN-5F0VAG"/dev/sdb1" is a new physical volume of "10.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdb1VG Name               PV Size               10.00 GiBAllocatable           NOPE Size               0   Total PE              0Free PE               0Allocated PE          0PV UUID               fphv7f-5zXj-NYdk-0e3e-1JXP-d8jR-kwRCi0"/dev/sdc1" is a new physical volume of "10.00 GiB"--- NEW Physical volume ---PV Name               /dev/sdc1VG Name               PV Size               10.00 GiBAllocatable           NOPE Size               0   Total PE              0Free PE               0Allocated PE          0PV UUID               8ljhmv-sH3W-OZIT-G9y3-AEKf-mSkT-eOeBbI

5.6.1.3、删除物理卷

不需要的物理卷可以删除,但是已经属于某个卷组的物理卷删除会报错

[root@localhost ~]# pvremove /dev/sdc1Labels on physical volume "/dev/sdc1" successfully wiped.
[root@localhost ~]# pvdisplay 

5.6.2、卷组管理

卷组可以由一个或者多个物理卷组成,一个卷组可以创建多个逻辑卷。当卷组空间不足时,可以往卷组中添加新的物理卷。

(创建卷组的时候就会直接将对应的分区创建为物理卷)

5.6.2.1、添加卷组vg0

创建一个名字叫做vg0的卷组

[root@localhost ~]# vgcreate vg0  /dev/sdb1Volume group "vg0" successfully created

5.6.2.2、扩展卷组vg0的容量

[root@localhost ~]# vgextend vg0 /dev/sdb2Physical volume "/dev/sdb2" successfully created.		//往卷组中添加新的物理卷时,会将它自动创建为物理卷。Volume group "vg0" successfully extended

5.6.2.3、查看卷组

[root@localhost ~]# vgdisplay 	//不指定卷组名字则查看全部--- Volume group ---VG Name               centosSystem ID             Format                lvm2Metadata Areas        1Metadata Sequence No  3VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                2Open LV               2Max PV                0Cur PV                1Act PV                1VG Size               <19.00 GiBPE Size               4.00 MiBTotal PE              4863Alloc PE / Size       4863 / <19.00 GiBFree  PE / Size       0 / 0   VG UUID               DfeNcj-tPls-WVXD-UUCH-9Rej-b7ai-sAhF2a--- Volume group ---VG Name               vg0System ID             Format                lvm2Metadata Areas        2Metadata Sequence No  2VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                2Act PV                2VG Size               14.99 GiBPE Size               4.00 MiBTotal PE              3838Alloc PE / Size       0 / 0   Free  PE / Size       3838 / 14.99 GiBVG UUID               3ODNGU-R4Qj-4pF0-FBag-9EGc-7mgi-2g4jAr[root@localhost ~]# vgs

5.6.2.4、从卷组中删除物理卷

[root@localhost ~]# vgreduce vg0 /dev/sdb2Removed "/dev/sdb2" from volume group "vg0"
[root@localhost ~]# vgdisplay vg0--- Volume group ---VG Name               vg0System ID             Format                lvm2Metadata Areas        1Metadata Sequence No  3VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                1Act PV                1VG Size               <10.00 GiBPE Size               4.00 MiBTotal PE              2559Alloc PE / Size       0 / 0   Free  PE / Size       2559 / <10.00 GiBVG UUID               3ODNGU-R4Qj-4pF0-FBag-9EGc-7mgi-2g4jAr

5.6.2.5、删除卷组

[root@localhost ~]# vgremove vg0 Volume group "vg0" successfully removed
[root@localhost ~]# vgdisplay vg0Volume group "vg0" not foundCannot process volume group vg0

5.6.3、逻辑卷管理

逻辑卷基于卷组。

逻辑卷和普通的磁盘分区非常的类似,在逻辑卷上也同样可以建立文件系统。

逻辑卷被划分为LE(logical Extents)的基本单位。在同一个卷组中LE和PE的大小是相同的,并且一 一对应。

环境准备

  • 新建卷组vg0
  • 将磁盘分区分区/dev/sdb1、/dev/sdb2、/dev/sdb3、/dev/sdb4都加入到vg0里面。
[root@localhost ~]# vgcreate vg0 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb4Volume group "vg0" successfully created
[root@localhost ~]# vgdisplay vg0--- Volume group ---VG Name               vg0System ID             Format                lvm2Metadata Areas        4Metadata Sequence No  1VG Access             read/writeVG Status             resizableMAX LV                0Cur LV                0Open LV               0Max PV                0Cur PV                4Act PV                4VG Size               19.98 GiBPE Size               4.00 MiBTotal PE              5116Alloc PE / Size       0 / 0   Free  PE / Size       5116 / 19.98 GiBVG UUID               CvjdYK-0ZOB-9nQS-sWzk-5twJ-6fdi-E8Tv2G

5.6.3.1、添加逻辑卷

在卷组vg0中,创建逻辑卷lv0,大小为1111MB。

[root@localhost ~]# lvcreate -L 1111M -n lv0  vg0Rounding up size to full physical extent <1.09 GiBLogical volume "lv0" created.

在卷组vg0中,创建逻辑卷lv1,大小为1000个PE。

[root@localhost ~]# lvcreate -l 1000 -n lv1  vg0Logical volume "lv1" created.

在卷组和逻辑卷创建完成后,会在/dev目录下创建于其名字对应的目录。

[root@localhost ~]# ls -l /dev/vg0
total 0
lrwxrwxrwx. 1 root root 7 Apr 24 16:14 lv0 -> ../dm-2
lrwxrwxrwx. 1 root root 7 Apr 24 16:16 lv1 -> ../dm-3

5.6.3.2、查看逻辑卷

[root@localhost ~]# lvdisplay /dev/vg0/lv0		//不指定逻辑卷名称,则查看全部--- Logical volume ---LV Path                /dev/vg0/lv0LV Name                lv0VG Name                vg0LV UUID                vNdfVn-6ktv-dOwq-lTpq-yJUg-r8du-hMMtdOLV Write Access        read/writeLV Creation host, time localhost.localdomain, 2020-04-24 16:14:04 -0400LV Status              available# open                 0LV Size                <1.09 GiBCurrent LE             278Segments               1Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2[root@localhost ~]# lvs

5.6.3.3、更改逻辑卷大小

不建议减少逻辑卷的空间,因为可能会导致逻辑卷上的文件系统中的数据丢失。

将lv0的大小增加为1500MB。

[root@localhost ~]# lvresize -L 1500M /dev/vg0/lv0Size of logical volume vg0/lv0 changed from <1.09 GiB (278 extents) to 1.46 GiB (375 extents).Logical volume vg0/lv0 successfully resized.
[root@localhost ~]# lvdisplay /dev/vg0/lv0--- Logical volume ---LV Path                /dev/vg0/lv0LV Name                lv0VG Name                vg0LV UUID                vNdfVn-6ktv-dOwq-lTpq-yJUg-r8du-hMMtdOLV Write Access        read/writeLV Creation host, time localhost.localdomain, 2020-04-24 16:14:04 -0400LV Status              available# open                 0LV Size                1.46 GiBCurrent LE             375Segments               2Allocation             inheritRead ahead sectors     auto- currently set to     8192Block device           253:2
  • 刷新文件系统

​ xfs_growfs:扩展xfs文件系统

​ resize2fs:扩展ext4文件系统

[root@localhost ~]# xfs_growfs   逻辑卷设备[root@localhost ~]# resize2fs	逻辑卷设备

5.6.3.4、删除逻辑卷

删除逻辑卷lv1

[root@localhost ~]# lvremove /dev/vg0/lv1
Do you really want to remove active logical volume vg0/lv1? [y/n]: yLogical volume "lv1" successfully removed
[root@localhost ~]# lvdisplay /dev/vg0/lv1Failed to find logical volume "vg0/lv1"

5.7、RAID磁盘阵列

硬RAID:通过RAID卡管理

软RAID:通过软件来管理

  • Redundant Array of Independent Disks 独立磁盘冗余阵列

  • 其实就是用多个独立的磁盘组成在一起形成一个大的磁盘系统,从而实现比单块磁盘更好的存储性能和更高的可靠性。

  • 常见的RAID方案

    • RAID0(最少两块)

      • 最早出现的RAID模式,数据分条技术(Data Striping)
      • RAID 0最简单的实现方式就是将N块硬盘(最好容量相同)串联在一起形成一个大的硬盘组,在写入数据时,数据会被分为一定大小的多个区块,依次写入到磁盘中。
      • 优点:
        • 磁盘利用率是100%。
        • 较高的读写性能。
      • 缺点:
        • 一块盘坏掉,数据就会丢失。没有冗余。
    • RAID1(最少两块)

      • 磁盘镜像模式

      • 原理在一个硬盘上写入数据时会在闲置硬盘上也同时写入,生成镜像文件,在不影响性能的情况下尽可能保证可靠性。

      • 优点:

        • 高度冗余
      • 缺点:

        • 磁盘利用率50%
        • 读写性能一般
    • RAID10(最少四块)

      • 镜像加条带(先镜像,再分条)
      • 优点:
        • 高度冗余
        • 读写性能较高
      • 缺点:
        • 磁盘利用率50%
    • RAID5(最少三块)

      • 分布式独立磁盘阵列。
      • RAID 5将数据以块为单位分布在各个硬盘上。RAID 5不对数据进行备份,而是把数据和对应的奇偶校验信息存储在组成磁盘阵列的各个磁盘上,并且奇偶校验信息和与其相对应的信息存放在不同的硬盘上。
      • 当一个硬盘损坏时,系统可以根据在另一块硬盘上存放的该损坏数据相对应的奇偶校验信息来恢复数据。
      • 磁盘利用率是 n-1/n
      • 优点:
        • 读写性能比较高
      • 缺点:
        • 只允许同时损坏一块盘
    • RAID6(最少四块)

      • RAID 6除了每个硬盘上都有同级数据(也就是硬盘级)的XOR校验区外,还有一个针对每个数据块的XOR校验区,而且同样是交错存储。
      • 磁盘利用率是 n-2/n
      • 优点:
        • 冗余性能更好
        • 最多可坏两块盘
      • 缺点:
        • 写入性能降低
        • 多了一个校验区,减少了有效的存储空间

六、进程管理

  • 每个执行的任务都被称为进程(process)。

  • Linux系统中每运行一个程序都会创建一个进程。

  • 进程就是一个正在运行的程序实例。

  • 进程是一个动态的概念,可以与操作系统、其他进程以及用户进行数据交互。

  • 每个进程启动后,系统都会自动为它分配一个唯一的数值,用于标识该进程,这个数值就被称为进程号(Process ID,PID)。进程号是这个进程的唯一标识,系统也是通过进程号来管理的。

6.1、查看进程

6.1.1、查看进程树

  • pstree 命令(Processes Tree)
    • 命令格式: pstree [选项] [PID或用户名]
    • 常用命令选项
      • -a 显示完整的命令行
      • -p 列出对应的PID编号
[root@localhost ~]# pstree  
[root@localhost ~]# pstree  -p
[root@localhost ~]# pstree -a[root@localhost ~]# pstree  lisi
bash
[root@localhost ~]# pstree  -p lisi
bash(17546)
  • systemd 上帝进程(所有进程的父进程)

6.1.2、查看进程快照

  • ps 命令 (Processes Snapshot)

    • 命令格式: ps [选项]

    • 常用选项

      • aux:
        • a 显示当前终端所有进程
        • x 当前用户在所有终端下的进程
        • u 以用户格式输出
      [root@localhost ~]# ps aux
      

      用户 进程ID 占用CPU 占用内存 虚拟内存 固定内存 终端 状态 起始状态 CPU时间 程序指令

      • -elf:
        • e 显示当前终端所有进程
        • l 以长格式显示
        • f 最完整的进程信息
      [root@localhost ~]# ps -elf
      

      输出内容中会显示PPID(父进程ID)

6.1.3、进程动态排名

  • top交互式工具
    • 命令格式: top [-d 刷新秒数] [-U 用户名]
[root@localhost ~]# top -d5
  • P 按照占用CPU进行排序
  • M 按照占用内存进行排序

6.1.4、检索进程

  • pgrep (Process Grep)

    • 命令格式 : pgrep [选项] 查询条件

    • 常用命令:

      • -l 输出进程名
      [root@localhost ~]# pgrep -l bash			//查找进程名中带有bash的
      17012 bash
      17476 bash
      17546 bash
      
      • -U 检索指定用户的进程
      [root@localhost ~]# pgrep -lU lisi			//查找用户lisi的进程
      17546 bash
      
      • -x 精确匹配完整的进程名
      [root@localhost ~]# pgrep -lx   crond		//查找进程名叫crond的
      1145 crond
      

6.2、控制进程

6.2.1、进程的前后台调度

  • 前台启动

    • 输入命令后,会占用当前的终端
  • 后台启动

    • 在命令行后加“&”,不占用当前终端
  • Ctrl+z 挂起当前进程(暂停运行转入后台)

  • jobs 命令

    • 查看后台任务列表
[root@localhost ~]# sleep 100 &
[1] 21162
[root@localhost ~]# jobs
[1]+  运行中               sleep 100 &
  • fg 命令
    • 将后台任务恢复到前台运行
[root@localhost ~]# fg 1
sleep 100
  • bg 命令
    • 激活后台被挂起任务
[root@localhost ~]# fg 1
sleep 100
^Z
[1]+  已停止               sleep 100[root@localhost ~]# jobs
[1]+  已停止               sleep 100
[root@localhost ~]# bg 1
[1]+ sleep 100 &
[root@localhost ~]# jobs
[1]+  运行中               sleep 100 &

6.2.2、杀死进程

普通用户只能终止自己运行的进程,root用户可以终止所有。

  • Ctrl+C 结束前台进程

  • kill 命令

    • 命令格式1: kill [-9] PID
    • 命令格式2: kill [-9] %后台任务编号
    • -9 表示强制杀死
    [root@localhost ~]# sleep 100000 &
    [1] 23123
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# kill 23123
    [root@localhost ~]# jobs
    [1]+  已终止               sleep 100000[root@localhost ~]# sleep 100000 &
    [1] 23168
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# kill %1
    [root@localhost ~]# jobs
    [1]+  已终止               sleep 100000
    
  • killall 命令

    • 命令格式: killall [-9] 进程名
    • 命令格式: killall [-9] -u 用户名
    [root@localhost ~]# sleep 100000 &
    [1] 23300
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# killall sleep
    [1]+  已终止               sleep 100000
    
  • pkill 命令

    • 命令格式: pkill 查找条件
    [root@localhost ~]# sleep 100000 &
    [1] 23363
    [root@localhost ~]# jobs
    [1]+  运行中               sleep 100000 &
    [root@localhost ~]# pkill -9 sleep
    [1]+  已杀死               sleep 100000
    

七、计划任务

  • 按照设定的时间周期性的执行某一项任务

  • 使用的软件包:cronie 、 crontabs

  • 系统服务: crond

  • 日志文件: /var/log/cron

  • crontab 命令

    • 命令格式: crontab [选项] -u 用户名
    • 常用选项
      • -e 编辑
      • -l 查看
      • -r 清除
[root@svr7 ~]# crontab -e -u root
[root@svr7 ~]# crontab -l -u root
* * * * *   date >> /opt/time.txt
[root@svr7 ~]# crontab -r -u root
[root@svr7 ~]# crontab -l -u root
no crontab for root
  • 计划任务的记录格式

    分 时 日 月 周 命令

八、Linux系统中的网络管理

8.1、修改网卡的命名规则

8.1.1、修改配置文件

  • 修改前
[root@svr7 ~]# cat -n /etc/default/grub1	GRUB_TIMEOUT=52	GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"3	GRUB_DEFAULT=saved4	GRUB_DISABLE_SUBMENU=true5	GRUB_TERMINAL_OUTPUT="console"6	GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"7	GRUB_DISABLE_RECOVERY="true"[root@svr7 ~]# nmcli connection add ifname eth0 con-name eth0 type ethernet  
连接“eth0”(b953b30d-6881-4ef4-a21f-8a572a6939ff) 已成功添加。
[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    b953b30d-6881-4ef4-a21f-8a572a6939ff  ethernet  eth0   
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 
  • 修改后
    • ​ 在第六行的末尾添加 net.ifnames=0 biosdevname=0
[root@svr7 ~]# cat -n /etc/default/grub    //grub是引导内核的程序1	GRUB_TIMEOUT=52	GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"3	GRUB_DEFAULT=saved4	GRUB_DISABLE_SUBMENU=true5	GRUB_TERMINAL_OUTPUT="console"6	GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet net.ifnames=0 biosdevname=0"7	GRUB_DISABLE_RECOVERY="true"[root@svr7 ~]# ifconfig | head -2
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
  • 重新生成grub配置文件
[root@svr7 ~]# grub2-mkconfig -o /boot/grub2/grub.cfg   //重新生成grub配置文件
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-862.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-862.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-e7698cd933f74608881ae839d102df88
Found initrd image: /boot/initramfs-0-rescue-e7698cd933f74608881ae839d102df88.img
done

8.1.2、删除识别错误的网络配置

[root@svr7 ~]# nmcli connection show
NAME        UUID                                  TYPE      DEVICE 
virbr0      06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 
有线连接 1  cdb69c51-bfa2-315e-bbe6-099bb3e41cfe  ethernet  eth0   
ens33       d154e33c-0886-4129-808a-def0196782c5  ethernet  --   [root@svr7 ~]# nmcli connection delete ens33 
成功删除连接 'ens33'(d154e33c-0886-4129-808a-def0196782c5)。
[root@svr7 ~]# nmcli connection delete 有线连接\ 1 
成功删除连接 '有线连接 1'(cdb69c51-bfa2-315e-bbe6-099bb3e41cfe)。[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE    DEVICE 
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge  virbr0 

8.1.3、添加新的网卡名

[root@svr7 ~]# nmcli connection add ifname eth0 con-name eth0 type ethernet  
连接“eth0”(b953b30d-6881-4ef4-a21f-8a572a6939ff) 已成功添加。
[root@svr7 ~]# nmcli connection show 
NAME    UUID                                  TYPE      DEVICE 
eth0    b953b30d-6881-4ef4-a21f-8a572a6939ff  ethernet  eth0   
virbr0  06a11f3d-6132-43a6-8142-92d9716e924b  bridge    virbr0 

8.2、修改网络连接配置

[root@svr7 ~]# nmcli connection modify eth0 ipv4.method manual ipv4.addresses 192.168.1.100/24 autoconnect yes 
[root@svr7 ~]# nmcli connection up eth0 		//激活网卡

8.3、SSH

  • 默认端口是 TCP 22

  • openssh

  • 服务名称:sshd

  • 主程序: /usr/sbin/sshd (服务端)、/usr/bin/ssh (客户端)

  • 配置文件:/etc/ssh/sshd_config

    ​ /etc/ssh/ssh_config

  • SSH 无密码验证

    • 生成公钥和私钥
    • 将公钥传递给对方主机
    [root@svra ~]# ssh-keygen 				//一路回车
    Generating public/private rsa key pair.
    Enter file in which to save the key (/root/.ssh/id_rsa): 
    Created directory '/root/.ssh'.
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa.
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    The key fingerprint is:
    SHA256:Th88OtWziD2xfQ5LERowcVaZfDlB+MKIPv9+jWpujYw root@svra.tedu.cn
    The key's randomart image is:
    +---[RSA 2048]----+
    |        +.oo.=oo |
    |         =  = +  |
    |         ..o.o . |
    |        ...+o..  |
    |       .S B +.   |
    |       oo* B +   |
    |        =o*o=o.o |
    |         .Eo==+ .|
    |           **o.  |
    +----[SHA256]-----+[root@svra ~]# ssh-copy-id root@192.168.1.101
    

8.4、scp

  • 安全复制工具

  • 基于ssh协议

  • 命令格式:scp [-r] 用户名@服务器:路径 本地路径

    ​ scp [-r] 本地路径 用户名@服务器:路径

与cp命令用法相同

九、vim编辑器

  • 命令模式
    • 行间跳转: gg 跳转到首行、G跳转到尾行
      • 扩展: ngg (n表示行号) 跳转到指定行
    • 列间跳转: ^ 跳转到行首 、 $ 跳转到行尾
      • 扩展: n| (n表示列号)
    • 复制: yy 复制一行 nyy 复制多行
    • 粘贴: p 复制到光标下面的一行, P 复制到光标的上一行
    • 删除 : dd 删除光标所在行
      • C 删除光标后的内容,与d$相同
      • d^ 删除光标前的内容
    • 文本查找:
      • /word 向后查找字符串
      • n 向下 N 向上
    • 撤销编辑
      • u 撤销最近的一次修改。长摁就相当于多次u,返回到最开始的状态
      • U 撤销对当前行的修改
      • CTRL+R 撤销前一次的撤销操作
    • 保存退出
      • ZZ
  • 末行模式
    • 保存 :w
    • 退出 :q! 放弃更改退出
    • 保存并退出 :wq
    • 另存为 :w /目标文件路径
    • 读入其它文件内容 :r 目标文件
    • 字符串替换
      • 行内替换
        • 😒/old/new 替换当前行第一个“old”
        • 😒/old/new/g 替换当前行所有的“old”
      • 区域内替换
        • :n,m s/old/new/g 替换n到m行所有的old
        • :% s/old/new/g 替换文件内所有的old
    • 显示行号:
      • :set nu | nonu 显示和不显示行号
      • :set ai|noai 启用和关闭自动缩进

十、补充的命令

  • 通配符

    • “ * ” : 任意多个字符

    • “ ? ” :任意单个字符

    • [a-z] : 连续范围内的一个

    • {a,min,max}:多个不连续的字符串,全匹配

  • less 分屏阅读工具

    • 命令格式:less 文件名…
    • 优势:支持上下键滚动
    [root@localhost ~]# less /etc/passwd     //按q可以退出
    
  • 列出CPU处理器信息

[root@localhost ~]# lscpu
  • 列出内存信息
[root@localhost ~]# cat /proc/meminfo
  • 列出当前系统的主机名称
[root@localhost ~]# hostname
  • 列出网卡信息
[root@localhost ~]# ifconfig
  • 关机:poweroff

  • 重启:reboot

  • 别名: 复杂的命令简单化

    • 查看已设置的别名

    • alias [别名名称]

    • 定义新的别名

    • alias 别名名称= ‘实际执行的命令行’

    • 取消已设置的别名

    • unalias [别名名称]

VDO

虚拟数据优化器

查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. LeetCode全局变量问题 - 由构造二叉树发现的

    LeetCode全局变量问题 - 由构造二叉树发现的 今天有小伙伴(好基友)问了我一个问题,他在LeetCode刷到一道题,碰到一个问题一直没想通,也不知道怎么解决,于是过来让我一起看。为了说清楚这个问题,我们先看题目: 根据一棵树的前序遍历与中序遍历构造二叉树。 注意:你可以…...

    2024/5/8 1:15:29
  2. 营销推广?!还涉及!我这点点击量,还推广,人家用得着我推广吗?

    ...

    2024/5/7 19:12:56
  3. 执行git clone拉取代码出现错误RPC failed,curl 56 OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 10054解决方法

    最近在系统学习多线程并发的课程,课程中讲到了unsafe类,由于unsafe类在jdk中看不到源码,在idea中打开是反编译的,看不到具体的注释,所以去github上拉取openjdk的源码,openjdk上可以看到源码注释,但是在拉取时,一开始是好好地,但是拉取了一二十分钟后,突然报错了以前在…...

    2024/4/24 12:46:41
  4. 汽车组合仪表SVS指示灯与MIL指示灯的区别

    SVS 发动机故障系统指示灯MIL 发动机排放故障指示灯MIL指示灯和SVS指示灯都指的是发动机系统故障指示灯,但是两个指示灯有什么区别呢?即使是老司机可能对这个问题也没有太多的关注,现在就一起来探讨一下这个问题。首先SVS指示灯和MIL指示灯都是由EMS发出来,所以两个这两个指…...

    2024/5/7 19:12:16
  5. PID控制器

    位置式PID公式增量式PID公式位置式和增量式区别两者参数调节好之后,可以达到相同的效果 增量式PID输出为增量 即本次输出 = 上次输出 + 增量式PID输出的增量,当系统出现异常后,增量式会保持当前值附近。pid.h #ifndef _PID_H_ #define _PID_H_#include <stdint.h>type…...

    2024/4/24 12:46:42
  6. 腾讯云上面搭建nginx和php时出现的问题

    今天买了腾讯云服务器,上面搭建一套LNMP结构,在php安装完以后,浏览器上面访问查看php的安装哪些参数,发现不能正常显示。 用ps -ef|grep php,发现php正常运行。首页文件index.html和index.php编辑好了,访问index.html,location /{ index index.html index.php; } 应该是找…...

    2024/4/26 16:24:35
  7. week9 目录管理系统

    问题:输入输出: 样例输入: 1 22 MKDIR dira CD dirb CD dira MKDIR a MKDIR b MKDIR c CD … MKDIR dirb CD dirb MKDIR x CD … MKDIR dirc CD dirc MKDIR y CD … SZ LS TREE RM dira TREE UNDO TREE 样例输出: OK ERR OK OK OK OK OK OK OK OK OK OK OK OK OK 9 dira di…...

    2024/4/24 12:46:39
  8. 从0获取10万种子用户实操全流程

    写在前面:产品运营从0到1(实操篇):如何获取种子用户的系列文章,主要是针对产品、人群、渠道、文案、活动、优化六个方面来写。至于为什么先写实操篇:1、实操篇难写而且累,没有真正主导、经历过的人很难写出来;2、网上的文章大多讲理论,脱离了实操的步骤,小白一般看的…...

    2024/4/24 12:46:39
  9. 11-继承

    继承(Inheritance)值类型(枚举、结构体)不支持继承,只有类支持继承没有父类的类,称为:基类 Swift 并没有像 OC、Java 那样的规定:任何类最终都要继承自某个基类子类可以重写父类的下标、方法、属性,重写必须加上 override内存结构class Animal {var age = 0 }class Dog: A…...

    2024/4/30 18:47:36
  10. Java练习(一)之:P1038 括号编码

    括号编码 Acceteped : 1101 Submit : 2242 Time Limit : 1000 MS Memory Limit : 65536 KB Description S = s1 s2…s2n 是一个符合格式的括号的字符串,S能按下面两种方式编码: P编码:编码是一个整数序列P = p1 p2…pn,pi是第i个右括号之前的左括号的数目。 W编码:编码…...

    2024/4/24 12:46:38
  11. transition和animation的区别

    animation和transition大部分属性是相同的,,都是随时间改变元素的属性值 主要的区别是 transition需要触发一个事件才能改变属性,而animation不需要触发任何事件,就可以随时间改变属性值 transition规定动画的名字,规定完成过渡效果需要多少秒或毫秒,规定速度效果,定义过…...

    2024/4/24 12:46:36
  12. Unity SPR 01 Custom Render Pipeline 翻译

    原文 : https://catlikecoding.com/unity/tutorials/custom-srp/custom-render-pipeline/ 强烈建议对照原文看,我很有可能会翻译出问题,而且原文的代码会比这边更清楚(更改的地方有高亮) 文中的连接都是原文的连接, 还没翻译, 翻译后可能会换成翻译后的连接. 本文翻译未经作…...

    2024/5/2 15:19:16
  13. 网课答案公众号搭建-网课题库接口

    前两天我发布的帖子,有些人可能没看懂。今天在发一下网课答案公众号的搭建方法 首先我们需要准备以下几个东西 1:微信公众号 2:网课答案接口 我们第一步去微信公众号官方注册一个自己的微信公众号2.查题接口注册注册一个属于自己的查题接口,如果这边看不懂的话可以官网看看视…...

    2024/5/2 18:56:07
  14. 给图片设置透明度

    from PIL import Imageimg = Image.open("F:/mx_matting/test_pic/img_resize/erzhitu_bai/000006_croped7_2.png") img = img.convert(RGBA) # 修改颜色通道为RGBA x, y = img.size # 获得长和宽#设置每个像素点颜色的透明度 for i in range(x):for k in range(y):c…...

    2024/5/2 8:56:37
  15. Python loggin模块的小坑

    今天遇到了一个loggin模块的小坑,将日志记录配置好之后不希望日志信息在控制台输出。logger.propagate = False 配置loggin是否传播即可。但是这项配置起作用的前提是中必须传入参数,否则配置无效。logger = logging.getLogger()在源码中找到了原因:如果不存在则会返回roo…...

    2024/4/15 4:24:05
  16. 列的类型定义

    1.整数类型 整数类型是数据库中最基本的数据类型。标准SQL中支持INTEGER和SMALLINT这两种数据类型。MySQL数据库除了支持这两种类型以外,还扩展支持了TINYINT、MEDIUMINT和BIGINT。下表从不同整数类型的字节数、取值范围等方面进行对比。mysql> use school; #选择数据库s…...

    2024/4/16 22:52:46
  17. 入门黑客必看书籍

    昨天推送的是视频,今天给大家推荐基本入门渗透测试的好书,以结合昨天文章一起学习,忘记了的可以回复“学习之路”会自动跳出文章的,好的话不多说,直接上主菜了!第一本当然是我们网络基础的书,这里推荐《计算机网络自顶向下的方法》,该书从应用层一直往下到物理层层层讲…...

    2024/5/2 17:19:39
  18. js封装网易云api请求

    封装axios,以及封装网易云音乐api文档中的所有请求 封装号的js文件地址Github:云博前端项目-网易云音乐api封装后的js文件地址 向将axios请求封装 npm install axios -s封装的请求函数文件,通过传入type=GET/POST/PUT/DELETE分别发送 axios.get(url)和 axios.post(url,data) …...

    2024/5/2 12:17:46
  19. 【人工智能与机器学习】基于卷积神经网络的图像分类

    准备工作: 一.安装所需的python库 1️⃣ tensorflow库 打开anaconda promp,输入pip install tensorflow,安装tensorflow库(推荐使用科学上网下载)2️⃣keras库 同在是在anaconda promp里,输入pip install keras,安装keras库 3️⃣测试 最后在jupyter中输入以下代码看看是…...

    2024/5/2 14:00:43
  20. 蓝桥杯 历届试题 打印十字图

    问题描述小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示:..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$.......$...$ $.$$$.$$$$$.$$$.$ $.$...$...$...$.$ $.$.$$$.$.$$$.$.$ $.$.$...$...$.$.$ $.$.$.$$$$$.$.$.$ $.$.$...$...$.$.$ $.$.…...

    2024/5/2 20:10:08

最新文章

  1. C++面经 每日一问(二)

    将引用作为函数参数有什么影响&#xff1f; 传递引用给函数与传递指针的效果相同。这意味着被调函数中的形参变量将成为主调函数中实参的别名&#xff0c;从而直接对目标对象进行操作。相比于传递指针&#xff0c;这种方式消除了对指针的繁琐操作&#xff0c;提高了代码的清晰性…...

    2024/5/8 5:48:38
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/5/7 10:36:02
  3. 开启 Keep-Alive 可能会导致http 请求偶发失败

    大家好&#xff0c;我是蓝胖子&#xff0c;说起提高http的传输效率&#xff0c;很多人会开启http的Keep-Alive选项&#xff0c;这会http请求能够复用tcp连接&#xff0c;节省了握手的开销。但开启Keep-Alive真的没有问题吗&#xff1f;我们来细细分析下。 最大空闲时间造成请求…...

    2024/5/5 19:08:29
  4. 图像处理相关知识 —— 椒盐噪声

    椒盐噪声是一种常见的图像噪声类型&#xff0c;它会在图像中随机地添加黑色&#xff08;椒&#xff09;和白色&#xff08;盐&#xff09;的像素点&#xff0c;使图像的质量降低。这种噪声模拟了在图像传感器中可能遇到的问题&#xff0c;例如损坏的像素或传输过程中的干扰。 椒…...

    2024/5/5 8:37:08
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/5/7 5:50:09
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/5/7 9:45:25
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/5/4 23:54:56
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/5/7 14:25:14
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/5/4 23:54:56
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/5/4 23:55:05
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/5/4 23:54:56
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/5/7 11:36:39
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/5/4 23:54:56
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/5/6 1:40:42
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/5/4 23:54:56
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/5/4 23:55:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/5/7 9:26:26
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/5/4 23:54:56
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/5/4 23:55:06
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/5/5 8:13:33
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/5/4 23:55:16
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/5/4 23:54:58
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/5/6 21:42:42
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/5/4 23:54:56
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57