您的位置:首页 > 运维架构 > Shell

L3 关于vim,find,bash,磁盘管理总结与练习题

2015-09-02 16:10 351 查看
1、总结文本编辑工具vim的使用方法;

一、打开文件
vim +#:打开文件,并定位于第#行

vim +:打开文件,并定位至最后一行

vim +/PATTERN:打开文件,定位至第一次被PATTERN匹配的行的行首

二、关闭文件

:q 退出

:wq 保存并退出 等于 :x 等于 编辑模式下 zz

:q! 不保存强行退出

:w 保存

:w! 强行保存

三、模式转换

编辑模式―>输入模式

i:在当前光标所在字符的前面,转为输入模式

a:在当前光标所在字符的后面,转为输入模式

o:在当前光标所在行的下方,新建一行,并转为输入模式

I:在当前光标所在行的行首,转为输入模式

A:在当前光标所在行的行尾,转为输入模式

O:在当前光标所在行的上方,新建一行,并转为输入模式

输入模式―>编辑模式
ESC

编辑模式―>末行模式



末行模式―>编辑模式

ESC

编辑模式―>可视模式

v 可视模式下可以从光标位置自由选择,然后对选择的内容进行删除、复制等操作

四、移动光标(编辑模式)

1、逐字符移动

h,j,k,l :左,下,上,右

2、以单词为单位移动

w:跳至下一个单词的词首

e:跳至当前或下一个单词的词尾

b:跳至当前或前一个单词的词首

3、行内跳转

0:绝对行首

^:行首的第一个非空白字符

$:绝对行尾

4、行间跳转

#G:跳转至第#行 等于 末行模式下 :# 直接给出行号即可

G:跳至最后一行 等于 末行模式下 :$

gg:跳至第一行
五、翻屏

ctrl + d:向下翻半屏

ctrl + u:向上翻半屏

ctrl + f:向上翻一屏

ctrl + b:向下翻一屏

六、删除

1、删除单个字符

x:删除光标所在处的单个字符,删除的单词可以用p复制。
2、d命令跟跳转命令组合使用

dw,de,db 删除当前光标后/前的一个单词

dd:删除当前光标所在的行

#dd:删除包括当前光标所在行在内的#行(或者d#d)

七、复制粘贴

1、复制 y 用法同 d命令

2、粘贴 p或P

八、替换

r #:用#替换当前字符

R:替换模式

九、撤销编辑

u:撤销前一次的编辑操作,连续u命令可一直往前撤销

ctrl + r :撤销最近一次撤销

十、重复前一次编辑操作

. 重复前一个操作
十一、查找替换

/PATTERN:从光标开始处向文件尾搜索PATTERN

?PATTERN:从光标开始处向文件首搜索PATTERN

n:在同一方向重复上一次搜索命令

N:在反方向上重复上一次搜索命令

查找替换
s: 在末行模式下,在地址定界的范围内完成查找替换操作;
s/要查找的内容/替换为的内容/修饰符
要查找的内容:可使用模式
替换为的内容:不能使用模式,但可以使用后向引用符号,以引用前面模式中的分组括号所匹配到的内容;
\1, \2, ...
&:引用“要找的内容”匹配到的整个内容;
修饰符:
i: 忽略大小写
g: 全局替换
/:用于分隔符,所以,要查找的内容或替换为的内容中出现此符号,要使用\对其转义,使用格式:\/
分隔符可替换为其它字符:例如@,#等;
:s/p1/p2/g 在当前行中所有p1用p2代替

:n1,n2s/p1/p2/g 将n1至n2行中的所有p1用p2代替

:%s/p1/p2/g 将文件中的所有p1用p2代替

十二,多文件模式

vim FILE1 FILE2 ...注意:要再保存以后才能next,first切换 :next :first :prev :last :wqall :q!all (qall!)多文件窗口分割: vim -o|-O FILE1 FILE2 ... Ctrl+w:切换文件 ARROW单文件窗口分割: Ctrl+w, s: split, 水平分割 Ctrl+w, v: vertical, 垂直分割 十三,定制vim的某些工作特性:
(1) 行号
显示:set nu
禁用:set nonu
(2) 括号匹配
显示:set sm
禁用:set nosm
(3) 自动缩进:
set ai
set noai
(4) 高亮搜索
set hlsearch
set nohlsearch
(5) 语法着色
syntax on
syntax off
(6) 忽略字符大小写
set ic
set noic
:help 获取帮助
:help SUBJECT
特性设定的永久生效方式:
全局配置文件:/etc/vimrc
用户个人的配置文件:~/.vimrc

2、总结文件查找命令find的使用方法;
文件查找:
在文件系统上查找符合条件的文件的过程;

文件查找:locate, find
locate: 非实时查找工具;依赖于事先构建的索引;索引的构建是在系统较为空闲时自动进行(周期性任务);手动更新此数据库(updatedb);查找速度快;模糊查找;
find:实时查找;查找速度略慢;精确查找;

find命令:
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:默认为当前路径;
查找条件:指定的查找标准,可以根据文件名、大小、属主属组、类型等进行;默认为找出指定路径下的所有文件;
处理动作:对符合条件的文件做什么操作;默认为输出至屏幕;

查找条件:

根据文件名进行查找:
-name "文件名称": 支持使用glob;
*, ?, []
* :所有任意字符
? :单个字符
-iname "文件名称":不区分字符大小写,支持使用glob;

-regex "PATTERN":以PATTERN匹配整个文件路径字符串,而不仅仅是文件名称;
说明:
-regex是把find输出的整个结果(有别于绝对路径名)作为要匹配的对象, 而不仅仅是结果的最后一部分, 举例/tmp
目录下有且仅有 aaa, aa, 1, 2 这些文件
find -name "a*"可以找到
aaa和aa

find /tmp -regex "a*"就不行, 它一个都找不到, 因为找到的每个结果是这样的
/tmp/aaa
/tmp/aa
-name 是对结果中的"aaa"和"aa"这个部分进行匹配, 而-regex却是对完整的
"/tmp/aaa"和"/tmp/aa"进行匹配.
所以你要写作
find /tmp -regex ".*a.*"
注意上面的是.*而不是*

-name所能解释的是基于shell中file glob的匹配字符, 包括:
(1)*表示任意长度字符串
(2)?表示任意的单个字符
(3)[set] 表示一个可选字符集合
(4)[^set]或[!set]表示以ASCII为全集对[set] 求补集的一个集合
(5)brace expansion, 即把/tmp/{a,b,c}扩展为三个字串
/tmp/a /tmp/b 和/tmp/c
注意 shell的file globing机制往往不被认为是正则表达式.

根据属主、属组查找:
-user USERNAME: 查找属主为指定用户的文件;

-group GROUPNAME:

-uid UserID: 查找文件的属主指定uid的文件;
-gid GroupID:

-nouser: 查找没有属主的文件;
-nogroup:查找没有属组的文件;

根据文件类型进行查找:
-type TYPE
f: 普通文件
d: 目录
l: 符号链接
b: 块设备
c: 字符设备
p: 命名管道
s: 套接字

组合查找条件:
与条件:-a
或条件:-o
非条件:-not, !
find / -name a.txt -o -name b.txt

!A -o !B = !(A -a B)
!A -a !B = !(A -o B)

根据文件大小来查找:
-size [+|-]#UNIT
单位:k, M, G
dd if=/dev/zero of=hello.txt bs=100M count=1 --创建100M的hello.txt文件

#UNIT: (#-1,#]
+#UNIT: (#,+oo)
-#UNIT:[0,#-1]

根据时间戳:
以“天”为单位
-atime [+|-]#
#:[#,#+1)
+#: [#+1,oo]
-#: [0,#)
-mtime
-ctime
find ./ -atime -10 --10天以内, 0-10天
find ./ -atime 10 --第10天,9-10天
find ./ -atime +10 --10天以外(之前)

以“分钟”为单位
-amin
-mmin
-cmin
根据权限:

-perm [/|-]MODE
MODE: 精确权限匹配
/MODE:任何一类对象(u,g,o)的任何一位权限符合条件即可;隐含或条件;
/400
-MODE:为每一类对象指定的每一位权限都必须同时存在方为符合条件;隐含与条件;
说明:
find ./ -perm 222 -精确匹配
find ./ -perm /222 -任何一位有2权限
find ./ -perm -222 -更精确匹配

find -perm mode , 表示严格匹配,也就是你的文件权限位转换成对应的十进制数字与mode一模一样,那么匹配成功,需要注意的是如果mode给的数字不足3位,那么前面自动添0(严格的说是不足4位,原因就是前面所说的setuid,setgid,稍后解释)

find -perm -mode , 表示mode中转换成二进制的1在文件权限位里面必须匹配,比如mode=644那么转换成二进制为110 100 100,而被查找的文件的权限位也可以被转换成一个二进制数,两者在位上为1的部分必须完全匹配,而0则不管。例如被查找的文件的权限为转换成二进制数是111 111 111那么这个比如被匹配,而假如是100 100 100那么则不会匹配。所以这个'-'的作用归结起来就是匹配比mode权限更充足的文件(找不到什么词语来形容了)

find -perm +mode , 与 -mode的区别是+mode只需其中的任意一个1的部分被匹配,-mode是所有1的部分都必须被匹配,同样+mode也不管0位。

-prune 忽略目录:
比如在查找/apps忽略/apps/bin目录
find /apps -path "/apps/bin" -prune -o -print

处理动作:
-print: 默认处理动作
-ls:类似于对查找到的每个文件做"ls -l"的操作;
-delete: 删除查找到的文件;
-fls /path/to/somefile:查找到的文件的详细路径信息保存至指定文件中;
find / -name etc -fls /tmp/etc.txt
-ok COMMAND {} \;

对每个文件执行指定的命令之前需要用户事先确认;
-exec COMMAND {} \;
无需用户确认;

3、总结bash环境变量的相关内容;
bash环境配置:

配置文件,生效范围划分,存在两类:
全局配置:
/etc/profile, /etc/profile.d/*.sh
/etc/bashrc
个人配置:
~/.bash_profile
~/.bashrc
按功能划分,存在两类:
profile类:为交互式登录的shell提供配置
/etc/profile, /etc/profile.d/*.sh
~/.bash_profile
功用:
(1) 定义环境变量,例如PATH、PS1
(2) 运行命令或脚本
bashrc类:为非交互式登录shell提供配置
/etc/bashrc
~/.bashrc
功用:
(1) 定义命令别名;
(2) 定义本地变量;
变量:内存空间,变量名
类型:
环境变量:作用范围当前shell进程及其子进程
本地变量:作用范围当前shell进程
局部变量:作用范围仅为当前shell进程中某代码片断(通常为函数上下文)
位置变量:$1, $2
特殊变量:$?
变量定义方式:
bash内置变量:可直接调用,内置了许多环境变量,例如PATH等
自定义变量:
变量赋值:变量名=值
bash弱类型:
变量存储数据时,默认均采用字符形式;任何变量可以不经声明,直接引用;
120:24bits
120: 8bits
定义本地变量:
name=value
查看:set
定义环境变量:
export name=value
declare -x name=value
查看:env, printenv, export
撤消变量:
unset name
引用变量:
${name}, $name
bash中的引用符号:
'': 强引用,变量替换不会发生
"":弱引用
``: 命令引用

shell登录类型:
交互式登录:
直接通过终端进行的登录;
通过su -l Username命令实现的用户切换;
非交互式登录:
图形界面下打开的命令行窗口;
执行脚本;
su Username;
配置文件作用次序:
交互式登录:
/etc/profile --> /etc/profile.d/*.sh --> ~/.bash_profile --> ~/.bashrc --> /etc/bashrc
非交互式登录:
~/.bashrc --> /etc/bashrc --> /etc/profile.d/*.sh
编辑配置文件定义的新配置如何生效?
(1) 重新登录;
(2) 让当前shell进程去重新读取指定的配置文件;
source /PATH/TO/SOMEFILE
. /PATH/TO/SOMEFILE
注意:副作用
,有时候使用source或者.读取两次,会在配置文件添加两次修改(添加的信息)
4、总结Linux文件系统上的特殊权限(SUID、SGID、Sticky)的知识点;
Linux文件系统上的特殊权限

权限模型:
u, g, o
r, w, x
进程的安全上下文:

前提:进程有属主(进程以哪个用户的身份运行);文件有属主和属组;
(1) 用户是否能够把某个可执行程序文件启动为进程,取决于用户对程序文件是否拥有执行权限;
(2) 程序启动为进程后,此进程的属主为当前用户,也即进程的发起者;进程所属的组,为发起者的基本组;
(3) 进程拥的访问权限,取决其属主的访问权限:
(a) 进程的属主,同文件属主,则应用文件属主权限;
(b) 进程的属主,属于文件的属组,则应用文件属组权限;
(c) 则应用其它权限;

SUID:(针对文件):
让本来没有相应权限的用户运行这个程序时,可以访问他没有权限(文件属主)访问的资源
(1) 任何一个可执行程序文件能不能启动为进程:取决于发起者对程序文件是否有执行权限;
(2) 启动为进程之后,其属主不是发起者,而程序文件自己的属主;这种机制即为SUID;

权限设定:
chmod u+s FILE...
chmod u-s FILE...

注意:
s: 属主原本拥有x权限;
S: 属主原本无x权限;
例子说明:
下面就是passwd这个命令的执行过程
1、因为/usr/bin/passwd的权限对任何的用户都是可以执行的,所以系统中每个用户都可以执行此命令。
2、而/usr/bin/passwd这个文件的权限是属于root的。
3、当某个用户执行/usr/bin/passwd命令的时候,就拥有了root的权限了。
4、于是某个用户就可以借助root用户的权力,来修改了/etc/shadow文件了。
5、最后,把密码修改成功。为了防止普通用户修改其他人密码,linux做了内部限制,比如:普通用户passwd命令后不能跟任何参数注:这个SUID只能运行在二进制的程序上(系统中的一些命令),不能用在脚本上(script),因为脚本还是把很多的程序集合到一起来执行,而不是脚本自身在执行。同样,这个SUID也不能放到目录上,放上也是无效的。

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

权限设定:
chmod g+s FILE...
chmod g-s FILE...
一般用于,将需要组权限的用户都加入这个组,然后创建目录为这个组,加SGID权限,这样所有用户都有了一直的组权限。
例子说明:
使a,b用户在t1目录下都拥有目录c的组权限
[root@zy03 shell]# ll
total 4
drwxrwsrwx 2 root c 4096 Sep  2 14:14 t1   #设置了SGID
[root@zy03 shell]# su - a
[a@zy03 ~]$ cd /t1/
[a@zy03 t1]$ touch a
[a@zy03 t1]$ ll
-rw-rw-r-- 1 a c 0 Sep  2 14:20 a    #这里组权限是c
[root@zy03 shell]# su - b
[a@zy03 ~]$ cd /t1/
[a@zy03 t1]$ touch b
[a@zy03 t1]$ ll
-rw-rw-r-- 1 a c 0 Sep  2 14:20 b    #这里组权限也是c


Sticky:(针对目录)

注意:能否删除一个文件,取决于这个文件的上级目录是否有w权限,对于目录来说,x权限是是否允许切入的概念。
对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;

权限设定
chmod o+t FILE...
chmod o-t FILE...
SUID, SGID, STICKY

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

chmod 4777 FILE
chmod 3755 DIR
例子说明:
用户root,a,b在加了STICKY权限的目录t1创建文件,只能删除自己所创建的文件
[root@zy03 shell]# mkdir t1
[root@zy03 shell]# chmod o+w,o+t t1   #添加其他用户可以写入,和STICKY权限
[root@zy03 shell]# ll
total 4
drwxr-xrwt 2 root root 4096 Sep  2 14:29 t1
[root@zy03 shell]# cd t1/
[root@zy03 t1]# touch root
[root@zy03 t1]# su - a
[a@zy03 ~]$ cd /shell/t1/
[a@zy03 t1]$ touch a
[a@zy03 t1]$ logout
[root@zy03 t1]# su - b
[b@zy03 ~]$ cd /shell/t1/
[b@zy03 t1]$ touch b
[b@zy03 t1]$ ll
total 0
-rw-rw-r-- 1 a    a    0 Sep  2 14:30 a
-rw-rw-r-- 1 b    b    0 Sep  2 14:30 b
-rw-r--r-- 1 root root 0 Sep  2 14:30 root
[b@zy03 t1]$ rm -f a root
rm: cannot remove `a': Operation not permitted
rm: cannot remove `root': Operation not permitted   #b用户不能删除root和a用户创建的文件
[b@zy03 t1]$ rm -f b                 #b用户成功删除自己创建的文件
[b@zy03 t1]$ ll
total 0
-rw-rw-r-- 1 a    a    0 Sep  2 14:30 a
-rw-r--r-- 1 root root 0 Sep  2 14:30 root


5、总结Linux磁盘管理、文件系统相关知识点及其相关命令的使用方法;
用实例说明命令使用:Linux磁盘管理常用所涉及到的命令:fdisk, blkid,mkfs, mkfs -t type = mkfs.type,ext专用mke2fs,tune2fs,dumpe2fs:fsck,mount ,free,mkswap,swapon,swapoff,df,du等

创建一个10G的文件系统,类型为ext4,要求开机可自动挂载至/mydata目录
1)创建分区
fdisk -l
Disk /dev/vda: 53.7 GB, 53687091200 bytes, 104857600 sectors  #50G硬盘1/dev/vda
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000bb195
Device Boot      Start         End      Blocks   Id  System
/dev/vda1   *        2048      616447      307200   83  Linux
/dev/vda2          616448    94486527    46935040   83  Linux
/dev/vda3        94486528   104447999     4980736   82  Linux swap / Solaris
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors   #100G硬盘2/dev/sda
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

fdisk /dev/sda    #操作第二块没有分区的新硬盘
Command (m for help): p   #查看分区信息
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x34165aa2
Device Boot      Start         End      Blocks   Id  System                                  #硬盘没有分区
Command (m for help): n       #新建分区
Partition type:
p   primary (0 primary, 0 extended, 4 free)
e   extended
Select (default p): p        #主分区
Partition number (1-4, default 1):    #回车默认为分区1
First sector (2048-209715199, default 2048):  #回车默认从高2048开始
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-209715199, default 209715199): +10G  #创建为10G大小
Partition 1 of type Linux and of size 10 GiB is set

Command (m for help): p        #查看,下面出现了/dev/sda1证明创建成功
Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x34165aa2
Device Boot      Start         End      Blocks   Id  System
/dev/sda1            2048    20973567    10485760   83  Linux
Command (m for help): w        #保存退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
2,格式化分区
[root@os01 ~]# mke2fs -t ext4  -L 'TEST01' -b 2048 /dev/sda1
#格式化分区/dev/sda1文件系统为ext4 卷标为TEST01 块大小为2048
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=TEST01
OS type: Linux
Block size=2048 (log=1)
Fragment size=2048 (log=1)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 5242880 blocks
262144 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=273678336
320 block groups
16384 blocks per group, 16384 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104,
2048000, 3981312

Allocating group tables: done
Writing inode tables: done
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done
[root@os01 ~]# blkid /dev/sda1 #查看/dev/sda1
/dev/sda1: LABEL="TEST01" UUID="242dca5e-7909-407c-ba25-eabb763d5f53" TYPE="ext4"
3)挂载/dev/sda1到/sda1_point
[root@os01 ~]# mkdir /mydata
[root@os01 ~]# mount /dev/sda1 /mydata
[root@os01 ~]# mount   #查看挂载是否成功(最后一行显示成功挂载),这样挂载在重启后将失效,重启后仍然挂载需要下一步的永久挂载
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,size=487312k,nr_inodes=121828,mode=755)
......
/dev/sda1 on /sda1_point type ext4 (rw,relatime,data=ordered)
4)永久挂载
[root@os01 ~]# vim /etc/fstab  #添加最后一行
# /etc/fstab
# Created by anaconda on Thu Aug 20 01:14:29 2015
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=a082897a-e1a4-4c7b-81f8-56b9f250cf60 /                       xfs     defaults        0 0
UUID=046de458-2504-44dd-8d78-b9ac85dd3fa1 /boot                   xfs     defaults        0 0
UUID=5341f7ce-4821-490d-936e-f3118fdc7b44 swap                    swap    defaults        0 0
UUID=242dca5e-7909-407c-ba25-eabb763d5f53 /mydata           ext4      defaults        0 0
[root@os01 ~]# mount -a   #挂载fstab内可以允许自动挂载的设备
/dev/sda1       9.8G   13M  9.3G   1% /sda1_point
[root@os01 ~]# df -h  #-h以M为单位列出磁盘信息
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        45G  3.8G   41G   9% /
devtmpfs        476M     0  476M   0% /dev
tmpfs           485M   84K  485M   1% /dev/shm
tmpfs           485M  6.9M  478M   2% /run
tmpfs           485M     0  485M   0% /sys/fs/cgroup
/dev/vda1       297M  111M  187M  38% /boot
/dev/sda1       9.8G   13M  9.3G   1% /mydata    #挂载成功
5)卸载分区
umount /mydata  #
#注意:如果卸载出现如下信息,证明这个挂载的目录正在被用户使用
[root@os01 mydata]# umount /dev/sda1
umount: /mydata: target is busy.
(In some cases useful info about processes that use
the device is found by lsof(8) or fuser(1))
[root@os01 ~]# fuser -v /mydata/   #查看正在使用的用户,发现user01正在使用这个目录
USER        PID ACCESS COMMAND
/mydata:             root     kernel mount /mydata
user01     3346 ..c.. bash
[root@os01 ~]# fuser -km /mydata/  #终止所有正在使用该目录的用户
/mydata:              3346c
[root@os01 ~]# umount /mydata    #卸载成功

6)对磁盘挂载属性进行修改并重新挂载。
[root@os01 ~]#mount -o remount,ro,user,acl /dev/sda1 /mydata #挂载为只读,普通用户可以挂载,启用acl
[root@os01 ~]#mount   #查看
/dev/sda1 on /mydata type ext4 (ro,nosuid,nodev,noexec,relatime,data=ordered)
mount [options] [-o options] DEVICE MOUNT_POINT
[options]:命令选项
[-o options]:挂载选项
-o 挂载选项:
async:异步模式
sync: 同步模式
atime/noatime:是否更新访问时间戳;
diratime/nodiratime:是否更新目录的访问时间戳;
auto/noauto: 是否允许此设备被自动挂载;
exec/noexec:是否允许执行此文件系统上应用程序;
dev/nodev:是否支持在此设备上使用设备文件;
suid/nosuid:
remount:重新挂载
ro
rw
user/nouser: 是否允许普通挂载此设备;
acl:是否支持此设备上使用facl;
defaults:rw, suid, dev, exec, auto, nouser, and async
7)查看分区信息:df
[root@os01 ~]# df -h    #-h选项为用M为单位显示
Filesystem      Size  Used Avail Use% Mounted on
/dev/vda2        45G  3.8G   41G   9% /
devtmpfs        476M     0  476M   0% /dev
tmpfs           485M   84K  485M   1% /dev/shm
tmpfs           485M  6.8M  478M   2% /run
tmpfs           485M     0  485M   0% /sys/fs/cgroup
/dev/vda1       297M  111M  187M  38% /boot
/dev/sda1       9.8G   13M  9.3G   1% /mydata
#查看刚才挂载的/mydata目录大小
[root@os01 ~]# du -sh /mydata  #这个查看的是目录本身所占大小为18k
18K     /mydata
[root@os01 ~]# cd /mydata
[root@os01 mydata]# dd if=/dev/zero of=hello.txt bs=10M count=1
1+0 records in
1+0 records out
10485760 bytes (10 MB) copied, 0.0201304 s, 521 MB/s
[root@os01 mydata]# du -sh hello.txt  #查看文件大小
10M     hello.txt
[root@os01 mydata]# du -sh /mydata  #现在为目录总大小
11M     /mydata
8)一些其他的磁盘错做命令
e2lable DEVICE [LABEL]   #查看,修改卷标
[root@os01 ~]# e2label /dev/sda1    #查看
TEST01
[root@os01 ~]# e2label /dev/sda1 TEST  #修改卷标为TEST
[root@os01 ~]# e2label /dev/sda1
TEST
tune2fs
显示ext系列文件系统的属性,或调整其属性;

-l:显示超级块中的信息;显示整个文件的属性及布局等相关信息;
-L 'LABEL':修改卷标;
-m #: 调整预留给管理员的管理空间百分比;
-j: ext2 --> ext3
-O:文件系统属性的启动或关闭
-o:文件系统默认挂载选项的启用或关闭

dumpe2fs:
-h: 仅显示超级块信息;

文件系统检测:
fsck: Filesystem check
fsck -t type
fsck.type
-a: 自动修复错误
-r: 交互式修复错误
-f: 强制检测

e2fsck:ext系列文件系统专用的检测修复工具;
-y: 自动回答为“yes”
-f:force
6、复制/etc/grub.cfg配置文件至/tmp目录,用查找替换命令删除/tmp/grub.cfg文件中的行首的空白字符;
:%s/[[:space:]]\+/g
7、复制/etc/rc.d/init.d/functions文件至/tmp目录,用查找替换命令为/tmp/functions的每行开头为空白字符的行的行首加一个#; 原有空白字符保留;
:%s/^[[:space:]]\+/#&/g
8、替换/tmp/functions文件中的/etc/sysconfig/init为/var/log;
:%s@/etc/sysconfig/init@/var/log@g
9、删除/tmp/functions文件中所有#开头,且#后面至少跟了一个空白字符的行的行首#;
:%s/^#\([[:space:]]\+\)/\1/g
10、查找/var目录属主为root,且属组为mail的所有文件;
find /var/ -user root -group mail
/var/spool/mail
/var/spool/mail/root
11、查找/usr目录下不属于root、bin或hadoop的所有文件;

find /usr ! \( -user root -o -user bin -o -user hadoop \)
12、查找/etc目录下最近一周内其内容修改过,且属主不为root或hadoop的所有文件;
find /etc/ -atime -7 ! \( -user root -o  -user hadoop \)
13、查找当前系统上没有属主或属组,且最近一周内曾被访问过的所有文件;
find / \( -nouser -o  -nogroup \) -atime -7
14、查找/etc目录下大于20k且类型为普通文件的所有文件;

find /etc/ -type f -size +20k
15、查找/etc目录下所有用户都没有写权限的文件;

find /etc/  -type f  ! -perm +222
16、查找/etc目录下至少有一类用户没有执行权限的文件;
find /etc/  -type f  !  -perm -001 -ls
17、查找/etc/init.d目录下,所有用户都有执行权限,且其它用户拥有写权限的文件;
find /etc/init.d/  -type f   -perm -113 -ls
18、让普通用户能使用/tmp/cat去查看/etc/shadow文件;
[root@zy03 tmp]# cp -p /bin/cat /tmp
[root@zy03 tmp]# chmod u+s /tmp/cat
[root@zy03 tmp]# su - usertest
[usertest@zy03 ~]$ /tmp/cat /etc/shadow
19、创建目录/test/data,让某组内普通用户对其有写权限,且创建的所有文件的属组为目录所属的组;此外,每个用户仅能删除自己的文件;
[root@zy03 ~]# mkdir -p /test/data
[root@zy03 ~]# groupadd test
[root@zy03 ~]# chmod g+w /test/data/
[root@zy03 ~]# chmod g+s /test/data/
[root@zy03 ~]# chmod o+t /test/data/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: