2019-03-17

#Doy12

##课堂笔记

###2019年3月15日

LInux文件核心属性知识

Linux是一个多用户,多任务的操作系统

用户:即UID,管理Linux系统而存在的用户一般分为用户名和用户口令相当于我们的名字和身份证,名字和学号。

用户名方便管理原使用,用户ID是唯一区别一个用户(计算机只识别ID)

Usr UID

UID即用户ID

GID即即组ID

Linux里所有的用户和进程都要有用户对应。

文件存在必须对应用户

进程运行必须对应用户

用户管理命令 ID                Whoami             useradd添加普通用户

Linux用户分三类                    

[if !supportLists]1. [endif]超级管理员root

权限堪称皇帝。UID为0,换句话UID为0的都有皇帝对应的权限

不要修改ID为0变管理员。

[if !supportLists]2. [endif]虚拟用户(傀儡)

实际存在的用户,但是又不允许它登录。

价值何在?

满足文件或进程运行属主的要求。但是又不会带来管理风险。

UID 1-499

[if !supportLists]3. [endif]普通用户

实际存在的用户,又允许它登录。管理员身份创建的,帮助管理员管理系统的。

权限仅仅限制家目录,在一些系统级目录可读读不可以写,不可以进入/root目录

UID C7 1000起步 C6 500起步

[root@oldboyedu ~]# useradd oldgirl

 

用户组:集合,组织

Linux里每个用户都必须要有一个组织,这个组织就叫做用户组。

用户组也是给人看,用户组也有唯一的标识,Group ID简称GID

默认情况创建用户,并没有创建用户组啊,他会自动创建一个和用户名相同的用户组以及相同的GID。

[root@oldboyedu ~]# id oldgirl

uid=1001(oldgirl) gid=1001(oldgirl) groups=1001(oldgirl)

 

 

用户和用户组的对应关系

[if !supportLists]1. [endif]1对1

[if !supportLists]2. [endif]1对多个用户组

[if !supportLists]3. [endif]多个用户对应一个用户组

[if !supportLists]4. [endif]多对多

 

HTML高级语言培训 基本网页语言编程

[root@oldboyedu ~]# useradd test

[root@oldboyedu ~]# id test

uid=1002(test) gid=1002(test) groups=1002(test)

[root@oldboyedu ~]# groupadd sa

[root@oldboyedu ~]# su - test

[test@oldboyedu ~]$ touch test.txt

[test@oldboyedu ~]$ ls -l

total 0

-rw-rw-r--. 1 test test 0 Oct  1 10:20 test.txt

 

文件权限:严格的权限,Linux安全权限严格。

rwxr-xr-x

Linux中,每个文件或目录都有一组共9个基础权限位,每三位字符被分为一组,分别是属主权限为,属组权限位,其他用户权限位。    9个字符

表示权限的字符rwx-分别代表特定的含义

r read可读取

wwrite可写

X execute可执行

- 没有权限

字符分组:3个字符是一组

d      rwx       r-x         r-x      .2root root 6Mar 13 2019 test

用户权限用户组权限其它权限

 

文件修改时间属性列

789列:文件的最后修改时间

文件时间有三种:

修改时间:文件内容改过之后的时间

访问时间:文件内容被访问过的时间

改变时间:文件状态最后被改变的时间

[root@oldboyedu ~]# stat /etc/hosts

File:‘/etc/hosts’

  Size: 158        Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d Inode: 16829878    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: system_u:object_r:net_conf_t:s0

Access: 2020-10-01 00:00:21.849999186 +0800访问时间

Modify: 2013-06-07 22:31:32.000000000 +0800修改时间

Change: 2019-03-04 11:15:49.426692303 +0800变化时间

 Birth: -

[root@oldboyedu ~]# stat -c %A /etc/hosts

-rw-r--r--

 

 

[root@oldboyedu /data]# echo oldboy>>test.txt

[root@oldboyedu /data]# stat test.txt

File:‘test.txt’

  Size: 14         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d Inode: 33656257    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:default_t:s0

Access: 2020-10-01 11:07:28.953508888 +0800

Modify: 2020-10-01 11:07:53.119507988 +0800

Change: 2020-10-01 11:07:53.119507988 +0800

 Birth: -

[root@oldboyedu /data]# cat test.txt

oldboy

oldboy

[root@oldboyedu /data]# cat test.txt

oldboy

oldboy

[root@oldboyedu /data]# stat test.txt

File:‘test.txt’

  Size: 14         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d Inode: 33656257    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:default_t:s0

Access: 2020-10-01 11:08:32.147506535 +0800

Modify: 2020-10-01 11:07:53.119507988 +0800

Change: 2020-10-01 11:07:53.119507988 +0800

 Birth: -

[root@oldboyedu /data]# chmod +x test.txt

[root@oldboyedu /data]# stat test.txt

File:‘test.txt’

  Size: 14         Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d Inode: 33656257    Links: 1

Access: (0755/-rwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)

Context: unconfined_u:object_r:default_t:s0

Access: 2020-10-01 11:08:32.147506535 +0800

Modify: 2020-10-01 11:07:53.119507988 +0800

Change: 2020-10-01 11:08:57.442505593 +0800

 Birth: -

 

[root@oldboyedu /data]# ls --time-style=long-iso -l

total 12

-rw-r--r--. 1 root root   0 2020-10-01 00:19 1.txt

-rw-r--r--. 1 root root   0 2020-10-01 00:19 2.txt

-rw-r--r--. 1 root root   0 2020-10-01 00:19 3.txt

-rw-r--r--. 1 root root   0 2020-10-01 00:19 4.txt

-rw-r--r--. 1 root root   0 2020-10-01 00:19 5.txt

-rw-r--r--. 1 root root 187 2020-10-01 09:01 oldboy.tar.gz

-rw-r--r--. 1 root root  18 2020-10-01 09:01 paichu.txt

-rwxr-xr-x. 1 root root  14 2020-10-01 11:07 test.txt

 

 

 

ls参数:

-t modify,文件内容被改过之后的时间。-c change,文件属性发生改变的时间。-a access,文件内容被访问过的时间。

 

索引节点

第一列:

inde表现形式是数字33631841叫做文件的索引节点(Index Node)

类似人的身份证,索引节点是文件在系统中的唯一标识。

找一个文件最终都要通过索引节点才能找到

索引节点的概念处在ext文件系统中(ext2 ext3 ext4)

索引节点是硬盘上的一块存储空间。大小2 5 6字节或512字节。

索引节点里存放十数据是文件的属性(大小,时间,用户合租,权限等)都在索引节点里,唯独不包含文件名(文件名在上机目录的block里)

 

磁盘要想使用,先分区,格式化(创建文件系统)。

格式化创建文件系统时,就会生成大量的inode和block。

inode作用存储文件的属性消息,同事存放指向文件实体(block)的指针(类似软链接)

block作用是存放文件内容的。

Block叫做磁盘块,是用来存放实际数据的实体单元(ext文件系统一般最大为4KB),即用来真正存放数据,例如:照片、视频等普通文件数据,单个大的文件需要占用多个Block块来存储,特别小的单个文件如果不能占满整个Block块,剩余的空间也无法在利用。

 

一个Block最多只能存一个文件的内容,一个block 4K,放了0.1K文件,剩3.9K浪费了。

Inode特点

1.ext3/ext4文件系统(centos 5.x/6.x默认的文件系统)下;一个非空文件至少要占用一个Inode。

和一个Block。

[if !supportLists]2. [endif]Inode节点号相同的文件,互为硬链接文件,可以认为是一个文件的不同入口。

[if !supportLists]3. [endif]Inode在某一个文件系统(分区)内是唯一的。

Block的特点如下:

[if !supportLists]1. [endif]磁盘读取数据是按Block为单位读取的。

[if !supportLists]2. [endif]每读取一个Block就会消耗一次磁盘I/O(input/output磁盘读写)。

[if !supportLists]3. [endif]若文件比较大,一个文件可能占用多个Block。

[if !supportLists]4. [endif]若文件比较小,一个Block剩余空间会被浪费,无论内容有多小。

 

[root@oldboyedu /]# df -i看inode数量

Filesystem      Inodes IUsed   IFree IUse% Mounted on

/dev/sda3      9960960 72199 9888761    1% /

devtmpfs        250820   375  250445    1% /dev

tmpfs           253514     1  253513    1% /dev/shm

tmpfs           253514   693  252821    1% /run

tmpfs           253514    16  253498    1% /sys/fs/cgroup

/dev/sda1       131072   332  130740    1% /boot

tmpfs           253514     1  253513    1% /run/user/0

[root@oldboyedu /]# df -h看block数量

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        19G  1.9G   18G  10% /

devtmpfs        980M     0  980M   0% /dev

tmpfs           991M     0  991M   0% /dev/shm

tmpfs           991M   18M  973M   2% /run

tmpfs           991M     0  991M   0% /sys/fs/cgroup

/dev/sda1       253M  136M  118M  54% /boot

tmpfs           199M     0  199M   0% /run/user/0

df  -i看inode数量

df  -h看block数量

 

磁盘满原因俩种:

1.inode满了

2.block满了

提示no space left on device报错 ,没有空间在设备上了。

[root@oldboyedu /]# cd /app/logs/

[root@oldboyedu /app/logs]# touch {1..100}.txt

touch: cannot touch ‘6.txt’: No space left on device

touch: cannot touch ‘7.txt’: No space left on device

检查步骤:

[if !supportLists]1. [endif]df  -h

[if !supportLists]2. [endif]df  -i看是不是inode 满了

 

为什么inode会满 ? 小文件太多

初始化时候block数量大于inode数量。

一个文件大片占一个inode,10万个block。

[root@oldboyedu /app/logs]# cp /bin/cat ddd

[root@oldboyedu /app/logs]# cp /bin/cat dddd

cp: error writing ‘dddd’: No space left on device

cp: failed to extend ‘dddd’: No space left on device

文件满了。

 

你可能感兴趣的:(2019-03-17)