云计算第一阶段学习汇总
一、系统部署
-
获取Linux 常用发行版的方式:官网:www.centos.org,选择centos-linux-x86-DVD-ios
-
改变路径:cd /etc/dir1
-
删除文件:rm -rf 文件名 ( -f --force(强制) -r --recursive递归)
-
改名文件:mv file1.txt file2.txt
-
关机:init 0
-
重启:init 6
-
pwd:查看当前所在的目录
-
快捷命令集锦
ctrl+c (强制中断程序的执行,杀死程序的进程)
ctrl+z (将任务中断,挂起的状态,进程还存在,任务还没有结束) sleep
exit(退出)= ctrl+D
ctrl+A(命令行最前面)
ctrl+E(命令行最后)
Ctrl+l(清屏)
Ctrl+u(删除光标后的字符)
Ctrl+k(删除光标后的字符)
二、文件和用户管理
1、文件管理
-
touch file1.txt touch file{1…1000}.txt
-
mkdir /home/dir1 mkdir -p -m 777 dir1/dir2/dir3(嵌套式) mkdir dir{1…1000}
// -p --parents 需要创建的迭代目录即使已经存在不报错 -m—mode 在创建目录的时候设置权限
-
cp 源文件 目标文件夹 cp /etc /dev/sdb1 cp file 1.txt file2.txt file3.txt dir(多个文件复制一个文件夹)
-
mv 参数1 参数2 mv /etc /home/dir1 mv aa bb dir/(多个文件移动一个文件夹)
-
rm -rf 文件或目录的路径 rm -rf /file1.txt rm -rf dir1/dir2/dir3/(只删除dir3)
-
vim /vi /home/file1.txt
-
文本编辑
-
yy 复制
-
dd 删除
-
p 粘贴
-
u---- undo撤销
-
/every 在文件中查找every
-
set nu 设置行号
-
set nonu 取消设置行号
-
查找 / 加查找内容
- cd /etc/ //任意目录cd回到家目录
- ./(当前目录)…/(上一级目录)
- 查看命令小结
- cat /home/file1.txt tail -3 /home/file1.txt head -3 /home/file1.txt tail -f file1.txt (锁定屏幕)
- grep 12323 /dev/file.txt(过滤file.txt的12323信息,更多的时候充当辅助的作用) 如: ps aux | grep sleep
- ls:查列出有关文件的信息 // -l --list 长列表显示ls -l = ll // -a —all查询目录下的所有文件包括隐藏文件//-s—size 按文件大小排序 // -i----inode显示文件索引号 //-d----directory显示当前目录的目录文件
2、用户管理
- 用户基本信息
- useradd user1
- useradd user1 -u 1500:创建用户user02,指定uid
- useradd user03 -d /user03:创建用户user03 指定用户登入时的启始目录
- useradd user04 -g xiaozu1 -G xiaozu2 // -g—选择默认组 -G—添加到额外组
- gpasswd -d user02 hr:将用户移出扩展组 d—delete
- userdel -r user1 r—recursive:递归
- passwd user1 创建user1密码
- id user1(查询用户ID,组ID,和用户所在的组)
- cat /etc/passwd(查看七列字段-- 用户名:密码占位符:用户id 0(超管)0-999(内置用户):组id 0(超管)0-999(内置用户):描述:家目录(超管目录):登录shell(壳—应用程序)
- cat /etc/shadow(查看用户密码信息由九字段组成)
- 组基本信息
-
groupadd hr
-
groupadd net01 -g 1007
-
groupdel hr
-
cat /etc/group:组名:组密码:组ID:组成员
-
tail -3 /etc/group
-
su - user1 :切换用户 exit= ctrl+D----退出用户返回root
-
小结
touch /home/file1.txt(有一个默认属主属组),建一个user1、组hr,使得文件的属主属组是所建的,用户和组-------chown user1.hr /home/file1.txt
三、用户的权限
1、基本权限UGO
- 修改权限
- 使用符号:u(user)用户 g(group)组 o(other)其他 r(read)读 w(write)写 x执行
- chmod u+x (w/r) file1
- chmod a=rwx file1 //所有人等于读写执行
- chmod a=- file1 //所有人没有权限
- chmod ug=rw,o=r file1 //属主属组等于读写,其他人只读
- /root/file.txt (运行相应文件里面的程序)
- ll file1:查看文件的权限等
- 使用数字修改权限
- 4读 2写 1执行
- chmod 644 file1
- ll file1:查看文件的权限等
- 更改属主、属组
- chown alice.hr file1:改属主、属组
- chown alice file1 :只改属主
- chown .hr file1:只改属组
- -R针对目录中所有的文件。chown -R test.test testdir/ <==修改testdir及它的下级目录和所有文件到新的用户和用户组 变更属主和属组需要事先创建好。
2、基本权限 ACL
- setfacl -m u:alice:rw /home/test.txt m— 更改文件或者目录的acl规则
命令 设置 用户或组:用户名:权限 文件对象
- setfacl -m u:alice:- /home/test.txt
- setfacl -m o::rw /home/test.txt
- 删除ACL权限
- setfacl -x g:hr /home/test.txt: x—删除文件或者目录指定的acl规则
- setfacl -b /home/test.txt: b—删除文件或者目录所有的acl规则
- 查看
- getfacl /home/test.txt----------查看文件的属主、属组,以及属主属组权限
- lsattr file. txt(查看文件是否有特殊属性)
四、进程管理
-
ps aux | head -2 ps (precess status)
ps a: 显示现行终端机下的所有程序
ps u:以用户为主的格式来显示程序状况
ps x:不以终端机来区分
静态显示USER,PID,%CPU,%MEM,VSZ,TTY,STAT,START,TIME,COMMAND
-
查看进程的CPU占比降序排列情况(-是降序)
[root@localhost ~]# ps aux --sort -%cpu
[root@localhost ~]# ps aux --sort %cpu -
查看进程的父子关系。 请观察PID和PPID
[root@localhost ~]# ps -ef -
top:动态查看进程 top -d 1 -p 10126 查看指定进程的动态信息 ,每秒刷新一次 d— p— process
-
kill -15 4326(进程号) 15:正常终止信号 9:强制终止 1:重新加载配置
-
kill -l :列出所有支持的信号 l—list
-
ps axo pid,command,nice --sort=-nice:查看进程的nice(优先级)级别
-
启动具有不同nice级别的进程:nice -n -5 sleep 6000 & nice -n -10 sleep 7000 &
-
更改现有进程的nice级别:renice -20 2669 (2669旧的级别是0)
-
sleep 3000 &(&:表示后台运行) jobs:查看后台进程–[1]+ Running sleep 3000 &–调回前台只需 fg 1
-
虚拟文件系统 proc
五、重定向管道
1、重定向
(1)FD
- file descriptors = FD:文件描述
- 标准输入 0 —> 键盘
- 标准输出 1 —> 显示器
- 标准错误输出 2 —> 显示器 2+可读写文件
- 通常在 /proc/PID/fd 就能看到文件的FD调用情况
-
打开一个进程如:vim
-
ps aux | grep vim —找到vim进程号
-
ll /proc/43544/fd-------就可以了解相应打开文件的FD
(2)案例
-
正确输出:1> = > :再输入内容会覆盖掉 1>> = >> :再输入内容是一种续写的操作,不会覆盖
-
错误输出:2> = > :再输入内容会覆盖掉 2>> = >> :再输入内容是一种续写的操作,不会覆盖
-
ls /home/ > file1.txt :因为执行此命令会有正确输出,故file1.txt会有信息,ls /home/ 2> file1.txt
file.txt不会有内容
-
ls /home/123221334 > file1.txt :因为执行此命令会有错误输出,故file1.txt不会有信息,
ls /home/ 244216534634 2> file1.txt :file.txt有信息
-
ls /home/ /aaaaaaaaa &> file1.txt.txt &:1/2, file1.txt一定会有信息
2、管道
- 语法:command1 | command2 |command3 |…
- cat /etc/passwd | tail -3
- ps aux | grep ‘sshd’
- tee管道
- cat /etc/passwd |tee 88.txt | tail -1 如同T
- 一些特殊命令不服从管道
- 如rm - rf
- 解决:使用xargs命令 如:cat files.txt |xargs rm -rvf
六、存储管理1
1、基本分区
- 管理磁盘
- fdisk /dev/sdb partprobe /dev/sdb :刷新分区列表
- mkfs -t ext4 /dev/sdb1
- mkdir /mnt/dir1 mount /dev/sdb1 /mnt/dir1
- 查看磁盘信息
- ll /dev/sd*----显示各个磁盘及权限
- lsblk----显示各个磁盘及磁盘大小
- 查看挂载信息
- df -hT (hT查询已经装载磁盘的空间容纳情况)
- mount
- 自启动文件(防止重启后挂载失败)
- vim /root/.bashrc
- mount -t ext4 /dev/sdb1 /mnt/disk1
2、逻辑卷LVM:Logical Volume Manager
- 创建LVM
- pvcreate /dev/sdb pvs pvdisplay:查看详细信息
- vgcreate vg1 /dev/sdb vgs vgdisplay
- lvcreate -L 100M -n lv1 vg1 lvs lvdisplay L–long 逻辑卷大小 n–name
- mkfs - t ext4 /dev/vg1/lv1
- mkdir /mnt/dir1
- mount /dev/vg1/lv1 /mnt/dir1 df -HT
- 扩展VG
- pvcreate /dev/sdc
- vgextend vg1 /dev/sdc
- LV扩容
- lvextend -L +200M /dev/vg1/lv1
- resize2fs /dev/vg1/lv1:刷新LV
3、交换分区管理swap
- fdisk /dev/sdf t—L-----82:修改为交换分区
- partprobe /dev/sdf1 :刷新sdf盘
- mkswap /dev/sdf1
- swapon /dev/sdf1
- free -m :查看分区情况 -m 参数就是用 M显示内容使用情况
七、存储管理2
1、文件系统详解
- EXT4文件系统
- inode(index node 索引节点):ll -i file.txt 查询文件的索引节点 i—inode
- block(块 文件内容)
- inode决定了文件系统中文件的数量:touch file{1…30000}
- block存储空间:可以向文件对应的各个块中存储数据
- 磁盘空间的限制:inode+block两方面
- df -hT :可以查询已经装载磁盘的空间容纳情况
2、文件链接
- 软连接
- ln -s 真实存在文件 以软连接形式存在的文件 s–
- echo 123 > /file1.txt
- ln -s /file1.txt /home/file11.txt
- 查看: ll /file1.txt /home/file11.txt
- rm -rf /file1.txt
- 总结:软连接像快捷方式,可以对文件和目录做软连接。软连接记录的只是指向源文件的路径,软连接失去源文件不可用。
- 硬链接
- echo 123 > /file2.txt
- ln /file2.txt /home/file22.txt
- 硬链接删除源文件,依然可以用(硬链接本质:相当于为源文件的数据块多了一个索引节点)不允许将硬链接指向目录,硬链接只能针对文件、同分区使用,不能对目录使用。
3、RAID
-
mdadm -C /dev/md0 (只是一个名字可任意) -l5 -n3 -x1 /dev/sd{d,e,f,g} C–create
n–number l–level x-热备磁盘数量
-
mkfs -t ext4 /dev/md0
-
mkdir /mnt/raid5
-
mount /dev/md0 /mnt/raid5
-
cp -rf /etc /mnt/raid5/etc1-----(让已经搭建的RAID存储数据 )
-
mdadm -D /dev/md0 D–detail:查看详细信息
-
模拟一块硬盘损坏,并移除
-
watch -n 0.5 ‘mdadm -D /dev/md0 | tail’ //watch----持续查看,实现动态显示。
watch:默认 watch 会以 2s 的间隔重复运行命令,也可以用 -n 参数指定时间间隔,还有一个实用的参数是 d,这样 watch 会帮你高亮显示变化的区域,这样更加一目了然了,Ctrl+c 就可以退出。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。
-d, --differences[=cumulative] 高亮显示变动
-n, --interval= 周期(秒)
-
mdadm /dev/md0 -f /dev/sde -r /dev/sde //模拟坏了并移除 -f --fail-------force(强制) -r --remove
八、文件查找
- 命令查找:which 相应的命令 which vim which ls 类似的:wherels 相应的命令
- 任意文件查找
- local file1.txt ----新建的文件系统需要刷新之后才能查找:updatedb
- find [path…] [options] [expression] [action]
命令 路径 选项 表达式 动作 - 按文件名:find /etc -iname “hosts” i----表示不区分大小写
- 按文件大小: find /etc -size +/-/=5M
- 指定查找的目录深度: find / -maxdepth 4 -a -name “ifcfg-en*” -a(and)
- 按文件属主、属组找: find /home -user jack 、 find /home -group hr
- 按文件类型:find /tmp -type f // f普通文件,b块设备文件,d目录,p管道,l连接
- 按文件权限: find . -perm 644 -ls ls:查找的文件已ls的显示方式展现 .(包含隐藏文件)
- 找到后默认是显示文件: find . -perm 644 -ls
- 找到后删除:find /etc -name “775*” -delete
- 找到后复制:find /etc -name “ifcfg*” -ok cp -rvf {} /tmp ;
占位符
- 文件打包及压缩
- tar -xvf etc2.tar.bz2 -C /tmp -C重定向到/tmp目录 v–vision f–file x–解压
九、软件管理
1、RPM管理
-
RPM:Red Hat Package Manage 无法实现个性化 软件包示例(注意后缀)
mysql-community-common-5.7.12-1.el7.x86_64.rpm
-
Yum:Yellow dog Updater, Modified:可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
-
配置yum仓库 /部署163yum源
-
yum install wget
-
mv /etc/yum.repos.d/* /tmp
-
wget http://mirrors.aliyun.com/repo/Centos-7.repo -O /etc/yum.repos.d/CentOS-Base.repo
-
更新YUM源: yum repolist yum makecache
- 配置EPEL文件
- EPEL (Extra Packages for Enterprise Linux
- 下载epel配置文件:wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
- 重建缓存:yum makecache
- Nginx:(配置文件)
- 第一步:通过官网查找Nginx
- 第二步:根据提示创建配置文件
- 第三步: 查看服务器是否已经具备软件官方源
- yum repolist yum list | grep Nginx
- 使用YUM管理RPM包
-
ping www.baidu.com :网络测试
-
yum -y install httpd vsftpd -y (yes自动确认)
systemctl start httpd
systemctl stop firewalld
-
查询YUM源:yum repolist
-
查询HTTP程序:yum list httpd
-
卸载程序:yum -y remove httpd
- 当一个程序需要安装并使用时:
- yum provides ifconfig 查询一下所要安装的程序是否为已知的名字
- 查询出不匹配,使用查询的结果来安装:yum install -y net-tools-2.0-0.25.20131004git.el7.x86_64
2、源码包
- 源码包:可以实现个性化功能 软件包示例:nginx-1.8.1.tar.gz
- 从相应的官网获得源码包
- Apache: www.apache.org
- Nginx: www.nginx.org
- Tengine: tengine.taobao.org
- 部署tengine
- wget http://tengine.taobao.org/download/tengine-2.2.0.tar.g
- tar -xvf tengine-2.2.0.tar.gz
- cd tengine-2.2.0
- useradd www
- ./configure --user=www --group=www --prefix=/usr/local/nginx //配置
- make:编译
- make install
- systemctl stop httpd:确保关闭httpd
- 测试:/usr/local/nginx/sbin/nginx systemctl stop firewalld 使用浏览器访问本机的IP
十、计划任务
- 一次性调度执行 at
- 语法格式:at 如:now +5min teatime tomorrow noon +4 days
- 一次性任务计划
- at now +1min
- at> useradd uuuu
- CTRL+D输入完毕,提交任务
- atq:查询-----得到任务号
- at -d 任务号 / at -d 文件名:删除任务
- 循环调度执行 cron
- crontab是一个命令,存在于“/etc/crontab”文件中
- systemctl status crond.service ps aux |grep crond :查看cron循环任务
- 创建计划:crontab -e e—editor
- 查询计划:crontab -l l–list
- 删除计划:crontab -r r—remove
- systemctl start crond //启动服务
- systemctl stop crond //关闭服务
- systemctl restart crond //重启服务
- systemctl reload crond //重新载入配置
- systemctl status crond //查看服务状态
- 循环任务计划
-
循环任务内容存放在:/var/spool/cron/
-
ls:实现查看循环任务内容
-
循环任务内容: * * * * * //分时日月周:设置循环任务执行时间 * * * * * + command
-
示例
准备创建脚本文件:vim /root/1.sh----/usr/bin/touch /root/
date +%F-%H-%M-%S
.txt(在已建文件中编辑)给文件执行权限:chmod +x /root/1.sh
编写任务计划:crontab -e---- * * * * * /root/1.sh
十一、日志管理
1、rsyslog 系统日志管理
-
观察 rsyslog进程:ps aux |grep rsyslogd
-
常见的日志文件(系统、进程、应用程序)及存放位置
-
tail -f /var/log/messages 显示系统主日志文件 f—锁定在屏幕上
-
tailf /var/log/secure
-
tail /var/log/yum.log
-
tail /var/log/maillog
-
tail /var/log/cron
-
tail /var/log/dmesg
- rsyslog
-
yum install rsyslog — 一般已经默认安装
-
systemctl start rsyslog.service
-
rpm -qc rsyslog ----查询软件包安装路径和各配置文档的具体路径 /etc/rsyslog.conf -q–query -c----config
-
rpm -qa 查看所有软件包 -a–all
-
vim /etc/rsyslog.conf—对主配置文件进行编辑 :RULES 包含设备、级别、日志存储位置
如:authpriv.* /var/log/secure(SSH信息)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CvXTqfli-1618235370324)(G:\图片收集区\7.png)]
- 如果对某一种程序(ssh)日志有特定的需要(修改设备类型),需要将日志放到特定位置记录,方便查看
-
vim /etc/ssh/sshd_config SyslogFacility AUTHPRIV – SyslogFacility LOCAL5:自定义程序的设备类型
-
vim /etc/rsyslog.conf local5.* /var/log/serverzz(任意添加的一个日志存放位置)
-
systemctl start rsyslog----自定义修改之后需要重新加载才能起作用
-
vim /etc/rsyslog.conf ------ 可以修改相应设备日志存放位置
-
产生日志的程序 rsyslog 其他应用程序(后续安装)
2、logrotate日志轮转
- 按照配置进行轮转
- 主配置文件:vim /etc/logrotate.conf: (适用于所有日志文件轮转,优先级低于子配置文件的要求)
- 子配置文件夹:vim /etc/logrotate.d/* (自定义配置)如;/etc/logrotate.d/yum — 实现对yum命令日志的个性化配置
- 观察主文件和子文件: ls /etc/logrotate.conf /etc/logrotate.d/
- 查看yum日志 ls /var/log/yum.log
- 配置轮转规则
- missingok //丢失不执行
- notifempty //空文件不论转
- maxsize 30k //达到30k轮转
- yearly //或者一年一轮转
- daily //1天轮转
- rotate 3 //轮转保留3次
- create 0777 root root
十二、网络管理1
- 查看网络管理程序的状态:systemctl status NetworkManager
- 查看网络子管理程序的状态:systemctl status network
- 使用vim命令配置网络:vim /etc/sysconfig/network-scripts/ifcfg-ens33 . ----root目录
- ONBOOT=yes//是否启用该设备
- BOOTPROTO=none //手动(none/static)还是自动获取IP(dhcp)
- IPADDR=192.168.142.131 IP a
- NETMASK=255.255.255.0
- GATEWAY=192.168.142.2 ip r
- DNS1=192.168.142.2 cat /etc/resolv.conf
- boot:启动 protocol:协议 获得ip地址有三种:dhcp–自动 none—手动 static—静态
- ping 192.168.1.1 测试网络
- 注意事项
- ls /etc/sysconfig/network-scripts/ifcfg-ens33 -a 查看所有文件包含隐藏文件(在你编辑文件时由于没有保存编辑文件,系统默认保存并以隐藏文件的形式存在,由此产生一系列错误)解决方法就是删除:rm -rf ()
- cp /etc/sysconfig/network-scripts/ifcfg-ens33 . (防止修改之后产生不可挽回的错误)
- 配置完后需要重启:systemctl restart network
- 查看主机名:hosname
- 修改主机名:vim /etc/hostname
- 端口号(后续学习继续补充)
-
网站服务器端口号:80/tcp(http) 443/tcp(https)
-
远程连接端口号:22
-
控制端口 command :21
-
数据端口 data :20
- 查端口号: ss -tnl ss–网络连接命令 t—tcp n—number l—list:列举
- 装最小化centos系统的注意事项
- 配置YUM 源
- 关防火墙:systemctl stop firewalld 开机禁用防火墙:systemctl disable firewalld 查看防火墙状态:systemctl status firewalld
- selinux : vim /etc/sysconfig/selinux 改为SELINUX=disabled 查看:getenforce
- 6.安装常用程序:yum install -y lrzsz sysstat elinks wget net-tools bash-completion vim
- 拍快照
十三、网络管理实战1
- OSI:Open System Interconnection 开放系统互联模型
- OSI:7层次结构/功能:推出较早,只有理论,没有实践
- 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层
- TCP/IP(Transmission Control Protocol/Internet Protocol):5层结构/功能:美国军方制定,当今通信标准
- TCP/IP = 应用层+表示层+会话层:用户信息转换为数据,以便在网络上传输,为了实现这一功能,需要在应用层数据的前端附加一个 TCP 首部
- 传输层:数据转换为数据段,并在发送方和接收方主机之间建立一条可靠的连接
- 网络层:数据段转换为数据包或数据报,并在报头中放上逻辑地址,这样每一个数据包都可以通过互联网络进行传输
- 数据链路层:数据包或数据报转换为帧,以便在本地网络中传输。在本地网段上,使用硬件地址MAC,唯一标识每一台主机。(功能:链路创建,维护,管理,帧封装,传输,同步,差错校验)
- 物理层:帧转换为比特流,并采用数字编码和时钟方案,通过某种传输介质发送数去。
- 5层模型协议分类
- 应用层:HTTP/超文本传输协议/网站 FTP/文件传输协议 SSH/远程连接协议/远程控制 DNS/域名服务/WWW
- 传输层:TCP/传输控制协议/可靠 UDP/用户数据报协议/不可靠
- 网络层:IP/互联网协议/寻址 ICMP/网络消息管理协议/测试
- 数据链路层:MAC(媒体访问控制地址)Media Access Control Address
- 物理层:光纤,网线
- 各进制关系和转化
- 十进制:由0-9十个数字组成,满十进一
- 二进制:由0-1两个数字组成,满二进一
- 十六进制:由0-9,A,B,C,D,E,F十六个字符组成,满十六进一
- 二进制转换为八进制
例如:1111000010.01101
以小数点为界,分为三三一组,然后读出该数
例如:001 111 000 010 . 011 010
1 ----7----0----2—.—3—2
所以这个数转为八进制数就是1702.32 - 二进制转换为十六进制
还是这个数
以小数点为界,分为四四一组,然后读出该数
例如;0011 1100 0010 . 0110 1000
—3-------C-----2----.—6------8
所以这个数转为八进制数就是3C2.68 - 八进制转换为二进制:上述的方法反向操作就可以了,把每一个数用二进制读出来,并分三个位的位置
/超文本传输协议/网站 FTP/文件传输协议 SSH/远程连接协议/远程控制 DNS/域名服务/WWW - 传输层:TCP/传输控制协议/可靠 UDP/用户数据报协议/不可靠
- 网络层:IP/互联网协议/寻址 ICMP/网络消息管理协议/测试
- 数据链路层:MAC(媒体访问控制地址)Media Access Control Address
- 物理层:光纤,网线
- 各进制关系和转化
- 十进制:由0-9十个数字组成,满十进一
- 二进制:由0-1两个数字组成,满二进一
- 十六进制:由0-9,A,B,C,D,E,F十六个字符组成,满十六进一
- 二进制转换为八进制
例如:1111000010.01101
以小数点为界,分为三三一组,然后读出该数
例如:001 111 000 010 . 011 010
1 ----7----0----2—.—3—2
所以这个数转为八进制数就是1702.32 - 二进制转换为十六进制
还是这个数
以小数点为界,分为四四一组,然后读出该数
例如;0011 1100 0010 . 0110 1000
—3-------C-----2----.—6------8
所以这个数转为八进制数就是3C2.68 - 八进制转换为二进制:上述的方法反向操作就可以了,把每一个数用二进制读出来,并分三个位的位置
- 十六进制转换为二进制:把每一个数用二进制读出来,并分四个位的位置