IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 6、find命令、if语句、磁盘管理、文件系统管理 -> 正文阅读

[系统运维]6、find命令、if语句、磁盘管理、文件系统管理

文件查找

? 在文件系统上查找符合条件的文件

? 文件查找:locate,find

? locate 非实时查找 find 实时查找

? locate:依赖于事先构建的索引;索引的构建是在系统较为空闲时自动自行(周期性任务);也可以手动更新数据库(updatedb)

? 索引的构建过程需要遍历整个根文件系统,非常消耗资源

? 工作特点:查找速度快;模糊查找;非实时查找

? locate KEYWORD

? find:实时查找工具,通过遍历指定路径下的文件系统完成文件查找

? 工作特点:查找速度略慢;精确查找;实时查找

? 语法:

? find [OPTION]… [查找路径] [查找条件] [处理动作]

? 查找路径:指定具体目标路径,默认为当前目录

? 查找条件:指定查找标准,可以是文件名、大小、类型、权限等标准进行,默认找出指定路径下的所有文件

? 处理动作:对符合条件的文件做什么操作,默认输出至屏幕

? 1、查找条件

(1)根据文件名查找

-name "文件名称" 支持使用glob
-iname "文件名称"		不区分大小写
-regex "PATTERN"	以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称
[root@localhost mnt]# find /etc -name "*passwd*"
[root@localhost mnt]# find /etc -regex "/etc/passwd"
/etc/passwd

(2)根据属主、属组查找

-user USERNAME	查找属主为指定用户的文件
-group GROUPNAME	查找属组为指定组的文件
-uid UserID		查找属主为指定的UID的文件
-gid GroupID	查找属组为指定GID号的文件
-nouser		查找没有属主的文件
-nogroup	查找没有属组的文件

(3)根据文件类型查找

-type TYPE
      f: 普通文件
      d: 目录文件
      l: 符号链接文
      s:套接字文件
      b: 块设备文件
      c: 字符设备文件
      p: 管道文件

(4)组合条件

与:-a
或:-o
非:-not, !
!A -a !B = !(A -o B)
!A -o !B = !(A -a B)
例:找出/tmp目录下,属主不是root,且文件名不是fstab的文件
find /tmp \(-not -user root -a -not -name 'fstab' \) -ls
find /tmp -not \( -user root -o -name 'fstab' \) -ls
例:找出/tmp目录下没有属主或没有属组的文件
[root@localhost tmp]# find /tmp \( -nouser -o -nogroup \) -ls

(5)根据文件大小来查找

-size [+|-]#UNIT
常用单位:k,M,G
#UNIT: (#-1,#]
-#UNIT:[0,#-1]
+#UNIT:(#,oo)
[root@localhost tmp]# find /etc -size 3k

(6)根据时间戳

以“天”为单位;
  -atime [+|-]#
  #:[#,#+1)
  +#:[#+1,oo]
  -#:[0,#)
  -mtime
  -ctime
以“分钟”为单位:
  -amin
  -mmin
  -cmin

(7)根据权限查找

-perm [/|-]MODE
MODE: 精确权限匹配
/MODE:任何一类(u,g,o)对象的权限中只要能一位匹配即可;
-MODE:每一类对象都必须同时拥有为其指定的权限标准;
find /etc -perm /060 -ls   文件属组有读或者写的权限即可
find /etc -perm -644 -ls   文件的属主有读写权限,属组和其它有读权限

2、处理动作

-print:默认的处理动作,显示至屏幕;
-ls:类似于对查找到的文件执行“ls-l”命令;
-delete:删除查找到的文件
-fls /path/to/somefile:查找到的所有文件的长格式信息保存至指定文件中
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认;
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令
	{}: 用于引用查找到的文件名称自身
	注意:find传递查找到的文件至后面指定的命令时,查找到所有符合条件的文件一次性传递给后面的命令
例:
[root@localhost tmp]# find /tmp -nouser -exec chown root {} \;
[root@localhost tmp]# find /tmp -cmin 5 -exec mv {} {}.new \;

练习:

1、查找/var目录下属主为root,且属组为mail的所有文件或目录

find /var \( -user root -a -group mail \) -ls

2、查找/usr目录下不属于root、bin或hadoop的所有文件或目录

find /usr -not \( -user root -o -user bin -o -user hadoop \)

3、查找/etc目录下最周一周内其内容修改过,同时属主不为root,也不是hadoop的文件或目录

find /etc -atime -7 -a -user root -a -user hadoop

4、查找当前系统上没有属主或属组,且最近一个周内曾被访问过的文件或目录

find / -nouser -a -nogroup -a -atime -7

5、查找/etc目录下大于1M且类型为普通文件的所有文件

find /etc -size +1M -a -type f

6、查找/etc目录下所有用户都没有写权限的文件

find /etc -not -perm /222

7、查找/etc目录下至少有一类用户没有执行权限的文件

find /etc -not -perm -111

8、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户有写权限的文件

find /etc/init.d -perm -113

Linux文件系统上的特殊权限

SUID、SGID、Sticky

1、权限 r,w,x

2、安全上下文

? 前提:进程有属主和属组,文件有属主和属组

? (1)任何一个可执行程序文件能不能启动为进程,取决于发起者对程序文件是否具有执行权限

? (2)启动为进程之后,其进程的属主为发起者,进程的属组为发起者所属的组

? (3)进程访问文件时的权限,取决于进程的发起者

? (a)进程的发起者,同文件的属主,则应用文件属主权限

? (b)进程的发起者,属于文件的属组,则应用文件属组权限

? (c)应用文件 other 权限

3、SUID

? (1) 任何一个可执行程序文件能不能启动为进程,取决发起者对程序文件是否拥有执行权限

? (2) 启动为进程之后,其进程的属主为原程序文件的属主

? 权限设定: chmod u+s FILE… chmod u-s FILE…


4、SGID

? 默认情况下,用户创建文件时,其属组为此用户所属的基本组;
? 一旦某目录被设定了SGID,则对此目录有写权限的用户在此目录中创建的文件所属的组为此目录的属组;

? 权限设定: chmod g+s DIR… chmod g-s DIR…

[root@localhost mnt]# chown .gp1 text
[root@localhost mnt]# chmod g+w text
[root@localhost text]# touch r1.txt
[root@localhost text]# ll
-rw-r--r--. 1 root root 0 Aug 31 19:36 r1.txt
[root@localhost text]# chmod g+s /mnt/text
[root@localhost text]# touch r2.txt
[root@localhost text]# ll
-rw-r--r--. 1 root gp1  0 Aug 31 19:43 r2.txt

注:一个用户能不能删除一个文件,并不取决于这个文件它有无写权限,而是这个文件所在的目录是否具有写权限

[c2@localhost ~]$ ll /mnt/text/
total 0
-rw-rw-r--. 1 c1   c1   0 Aug 31 19:36 c1.t1
-rw-rw-r--. 1 c1   gp1  0 Aug 31 19:39 c1.t2
-rw-rw-r--. 1 c2   c2   0 Aug 31 19:37 c2.t1
-rw-rw-r--. 1 c2   gp1  0 Aug 31 19:40 c2.t2
[c2@localhost ~]$ rm -rf /mnt/text/c1.t1
[c2@localhost ~]$ ll /mnt/text/
total 0
-rw-rw-r--. 1 c1   gp1  0 Aug 31 19:39 c1.t2
-rw-rw-r--. 1 c2   c2   0 Aug 31 19:37 c2.t1
-rw-rw-r--. 1 c2   gp1  0 Aug 31 19:40 c2.t2

5、Sticky

? 对于一个多人可写的目录,如果设置了sticky,则每个用户仅能删除自己的文件

? 权限设定: chmod o+t DIR… chmod o-t DIR…

? /tmp、/var/tmp 在 /tmp 目录下,每个用户均能够进行相关操作,具有Sticky权限后,用户只能够对自己所创建的文件进行删除操作

[root@localhost ~]# ll -d /tmp /var/tmp
drwxrwxrwt. 40 root root 8192 Aug 31 16:49 /tmp
drwxrwxrwt. 51 root root 8192 Aug 31 16:49 /var/tmp

6、几个权限位的映射

? chmod 7777 DIR|FILE 最左侧为特殊权限的授予,数字含义类似于普通权限

SUID: user, 占据属主的执行权限位;
 	s: 属主拥有x权限
 	S:属主没有x权限
SGID: group, 占据group的执行权限位;
 	s: group拥有x权限
 	S:group没有x权限   	 
Sticky: other, 占据ohter的执行权限位;
 	t: other拥有x权限
 	T:other没有x权限

Bash 脚本编程

? 过程式编程语言:顺序执行,选择执行,循环执行

? 选择执行:

? if 判断条件; then

? 条件为真的分支代码

? fi

? if 判断条件; then

? 条件为真的分支代码

? else

? 条件为假的分支代码

? fi

例:

#!/bin/bash
if [ $# -lt 1 ]; then
	echo "At least one argument."
	exit 1
fi
if id $1 &> /dev/null; then
	echo "$1 exists."
	exit 0
else
	useradd $1
	[ $? -eq 0 ] && echo "$1" | passwd --stdin $1 &> /dev/null
fi

Linux磁盘管理

? 块设备:block,存取单位“块”,磁盘
? 字符设备:char,存取单位“字符”,键盘

? 设备文件:关联至一个设备驱动程序,进而能够跟与之对应硬件设备进行通信;

? 设备号码:
? 主设备号:major number, 标识设备类型
? 次设备号:minor number, 标识同一类型下的不同设备

? 硬盘接口类型:
? 并行:
? IDE:133MB/s
? SCSI:640MB/s
? 串口:
? SATA:6Gbps
? SAS:6Gbps
? USB:480MB/s

? /dev/DEV_FILE
? 磁盘设备的设备文件命名:

? IDE: /dev/hd
? SCSI, SATA, SAS, USB: /dev/sd
? 不同设备:a-z
? /dev/sda, /dev/sdb, …
? 同一设备上的不同分区:1,2, …
? /dev/sda1, /dev/sda5

? 机械式硬盘:
? track:磁道
? cylinder: 柱面
? secotr: 扇区
? 512bytes

? 如何分区:
? 按柱面

? 0磁道0扇区:512bytes
? MBR: Master Boot Record
? 446bytes: boot loader
? 64bytes:分区表
? 16bytes: 标识一个分区
? 2bytes: 55AA

? 4个主分区;
? 3主分区+1扩展(N个逻辑分区)
? 逻辑分区

? 问题:UEFI, GPT?

分区管理工具:fdisk, parted, sfdisk
fdisk:对于一块硬盘来讲,最多只能管理15分区;

fdisk -l [-u] [device…]

fdisk device

? 子命令:管理功能
? p: print, 显示已有分区;
? n: new, 创建
? d: delete, 删除
? w: write, 写入磁盘并退出
? q: quit, 放弃更新并退出
? m: 获取帮助
? l: 列表所分区id
? t: 调整分区id

? 查看内核是否已经识别新的分区:cat /proc/partations

? 通知内核重新读取硬盘分区表:
? partx -a /dev/DEVICE
? -n M:N // 从那个分区开始到那个分区结束

? kpartx -a /dev/DEVICE
? -f: force

? CentOS 5: 使用partprobe
? partprobe [/dev/DEVICE]

Linux文件系统管理

? Linux中的文件系统:ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap
? swap:交换分区
? Windows:fat32,ntfs
? Unix:FFS,UFS,JFS2
? 网络文件系统:NFS,CIFS
? 集群文件系统:GFS2,OCFS2
? 分布式文件系统:ceph,moosefs,mogilefs,GlusterFS,Lustre

? 根据其是否支持"journal"功能:
? 日志型文件系统: ext3, ext4, xfs, …
? 非日志型文件系统: ext2, vfat

? 文件系统的组成部分:
? 内核中的模块:ext4, xfs, vfat
? 用户空间的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat

? Linux的虚拟文件系统:VFS

1、创建文件系统:
mkfs 命令:

(1)# mkfs.FS_Type /dev/device
		FS_type:ext4、xfs、btrfs、vfat
(2)# mkfs -t FS_TYPE /dev/DEVICE
		-L 'LABEL':设定卷标   //可通过卷标来调用分区

? mke2fs:ext 系列文件系统专用管理工具

-t {ext2|ext3|ext4}
-b {1024|2048|4096}  // 指明块大小,指明后不可修改
-L 'LABEL'
-j: 相当于 -t ext3     // 打开日志功能
	mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3
-i #: 为数据空间中每多少个字节创建一个inode;此大小不应该小于block的大小;
-N #:为数据空间创建个多少个inode;
-m #: 为管理人员预留的空间占据的百分比;
-O FEATURE[,...]:启用指定特性
-O ^FEATURE:关闭指定特性

? mkswap:创建交换分区
? mkswap [options] device
? -L ‘LABEL’
? 前提:调整其分区的 ID 为82

2、其它常用工具

? blkid:块设备属性信息查看
? blkid [OPTION]… [DEVICE]
? -U UUID: 根据指定的UUID来查找对应的设备
? -L LABEL:根据指定的LABEL来查找对应的设备
? UUID:UUID 意即通用唯一识别码Universally Unique Identifier,它可以帮助 Linux 系统识别一个磁盘分区而不是块设备文件

? e2label:管理 ext 系列文件系统的 LABEL
? # e2label DEVICE [LABEL]

? tune2fs:重新设定ext系列文件系统可调整参数的值
? -l:查看指定文件系统超级块信息;super block
? -L ‘LABEL’:修改卷标
? -m #:修预留给管理员的空间百分比
? -j: 将ext2升级为ext3
? -O: 文件系统属性启用或禁用
? -o: 调整文件系统的默认挂载选项
? -U UUID: 修改UUID号

? dumpe2fs
? -h:查看超级块信息

3、文件系统检测

? fsck: File System CheCk
? fsck.FS_TYPE
? fsck -t FS_TYPE
? -a: 自动修复错误
? -r: 交互式修复错误
note:FS_Type 一定要与分区上已有的文件类型相同

? e2fsck:ext 系列文件专用的检测修复工具
? -y:自动回答为 yes
? -f:强制修复

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2021-09-13 09:39:24  更:2021-09-13 09:42:15 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 16:29:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码