linux种类型ext4和jfs2,linux命令基础(3)

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

find的使用格式如下:

find

- : 所要搜索的目录及其所有子目录。默认为当前目录。

- : 所要搜索的文件的特征。

- : 对搜索结果进行特定的处理。

[root@localhost /]# find . -name 'bin*'  查找当前目录下以bin开头的所有文件

./etc/binfmt.d

./etc/selinux/targeted/modules/active/modules/bind.pp

[root@localhost /]# find . -name 'bin*' -ls  查找当前目录下以bin开头的所有文件,并列出文件信息

您还可以在搜索字符串中指定多个起始目录。如果以具有相应权限的用户身份运行,以下命令将下到 /usr、/home /tmp 目录查找所有 jar 文件:

find /usr /home  /tmp -name "*.jar"

[root@localhost /]# find . -type d    -type制定要搜索文件的类型

其他 find 可以找到的文件类型包括:

b — 块(缓存)特殊

c — 字符(未缓存)特殊

p — 命名管道 (FIFO)

s — 套接字

查找时间

find 命令有几个用于根据您系统的时间戳搜索文件的选项。这些时间戳包括

mtime — 文件内容上次修改时间

atime — 文件被读取或访问的时间

ctime — 文件状态变化时间

mtime 和 atime 的含义都是很容易理解的,而 ctime 则需要更多的解释。由于 inode 维护着每个文件上的元数据,因此,如果与文件有关的元数据发生变化,则 inode 数据也将变化。这可能是由一系列操作引起的,包括创建到文件的符号链接、更改文件权限或移动了文件等。由于在这些情况下,文件内容不会被读取或修改,因此 mtime 和 atime 不会改变,但ctime 将发生变化。

这些时间选项都需要与一个值 n 结合使用,指定为 -n、n 或 +n。

-n 返回项小于 n

+n 返回项大于 n

n 返回项正好与 n 相等

[root@localhost /]# find /etc  -mtime -1  //查看一个小时内/etc目录下被修改的文件

/etc

/etc/resolv.conf

/etc/tuned/active_profile

/etc/sysconfig

/etc/sysconfig/network-scripts

按大小查找文件

-size 选项查找满足指定的大小条件的文件。

[root@localhost /]# find /etc  -size  -1k  //查看/etc目录下大小小于1k的文件

/etc/crypttab

/etc/motd

/etc/cron.deny

/etc/.pwd.lock

/etc/environment

/etc/sysconfig/run-parts

/etc/selinux/targeted/modules/semanage.read.LOCK

/etc/selinux/targeted/modules/active/netfilter_contexts

/etc/selinux/targeted/modules/semanage.trans.LOCK

/etc/selinux/targeted/contexts/files/file_contexts.local

/etc/selinux/targeted/contexts/files/file_contexts.subs

/etc/security/opasswd

/etc/exports

[root@localhost /]# find /etc  -empty  //-empty  空文件

/etc/terminfo

/etc/systemd/user

/etc/gnupg

/etc/crypttab

/etc/opt

/etc/motd

/etc/gcrypt

/etc/ppp/peers

/etc/chkconfig.d

/etc/rwtab.d

/etc/groff/site-font

/etc/firewalld/services

/etc/firewalld/icmptypes

按权限和所有者查找

find . -type f  -perm a=rwx -exec ls -l {} \;

[root@localhost /]# find /etc    -perm 777 -exec ls -l {} \;  //-perm 按权限查看

lrwxrwxrwx. 1 root root 38 Aug 31 03:07 /etc/systemd/system/getty.target.wants/getty@tty1.service -> /usr/lib/systemd/system/getty@.service

lrwxrwxrwx. 1 root root 41 Aug 31 03:08 /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service -> /usr/lib/systemd/system/firewalld.service

lrwxrwxrwx. 1 root root 46 Aug 31 03:08 /etc/systemd/system/dbus-org.freedesktop.NetworkManager.service -> /usr/lib/systemd/system/NetworkManager.service

[root@localhost /]# find  /etc/ -perm u=rwx -exec ls -l {} \; //根据属主的权限来查看文件

-rwx------. 1 root root 180 Jul 31  2013 /etc/cron.daily/logrotate

total 0

total 0

total 68

-rwxr-xr-x. 1 root root  8702 Mar 26 16:27 00_header

-rwxr-xr-x. 1 root root   992 Oct 17  2014 00_tuned

-rwxr-xr-x. 1 root root 10114 Mar 26 16:27 10_linux

-rwxr-xr-x. 1 root root 10275 Mar 26 16:27 20_linux_xen

-rwxr-xr-x. 1 root root  2559 Mar 26 16:27 20_ppc_terminfo

-rwxr-xr-x. 1 root root 11169 Mar 26 16:27 30_os-prober

-rwxr-xr-x. 1 root root   214 Mar 26 16:27 40_custom

-rwxr-xr-x. 1 root root   216 Mar 26 16:27 41_custom

-rw-r--r--. 1 root root   483 Mar 26 16:27 README

[root@localhost /]# find  /etc/ -perm u=rwx -exec ls -l {} \; 2>/dev/null //添加错误重定向

控制 find

与 Linux 中的许多命令不同,find 不需要 -r 或 -R 选项即可下到子目录中。它默认情况下就这样操作。但是,有时您可能希望限制这一行为。因此,选项 -depth、-maxdepth 和 -mindepth 以及操作 -prune 就派上用场了.

-maxdepth 和 -mindepth 选项允许您指定您希望 find 搜索深入到目录树的哪一级别.通过运行以下命令在目录树的前三个级别中查找日志文件,您可以看到 -maxdepth 的效果。使用该选项较之不使用该选项所生成的输出要少得多。

[root@localhost /]# find / -maxdepth 3  -name '*.log'

/tmp/yum.log

/var/log/boot.log

/var/log/yum.log

vim -->vi improved

vim [options] [file]...

模式切换

默认为编辑模式

编辑模式-->输入模式

i:当前光标所在处

I:在当前光标所在行行首

a: 光标所在字符后方

A:在当前光标所在行的行尾

o:在当前所在行的下方新建

O:在当前所在行的上方新建

末行模式:

:q!  强制退出

:wq  保存退出

:x  保存退出

:wq! 强制保存退出

:ZZ  保存退出

编辑模式: cc  删除光标所在行,并进入插入模式

C   删除光标后面的字符

可视化模式

v:选择光标所在行的左侧的内容

V:光标所在行整行都会选定

编辑模式的翻屏命令

Ctrl+f:向文件尾部翻一屏

Ctrl+b:向文件首部翻一屏

文本查找

/word

?word

地址定界  startline ,endline   #:第n行  .:当前行  $:最后一行 %:全文

相对定界: +#:从指定位置向下n行 -#:从指定位置向上n行

文本替换操作

s/要查找内容/要替换的内容/修饰符

/:分隔符  如#,@

g:全局替换

i:不区分大小写

要查找的内容:可以使用正则表达式

要替换的内容:不可以使用正则表达式

界面显示特性

语法高亮开启和关闭:

:syntax on/off

搜索高亮的开启和关闭:

:set hlsearch

: set nohlsearch

自动缩进

:set autoindent

: set noautoindent

vim 全局配置文件 /etc/vimrc

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

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权限;

SGID:

默认情况下,用户创建文件时,其属级为此用户所属的基本组;

一旦某目录被设定了SGID权限,则对此目录拥有写权限的用户在此目录中创建的文件所属的组为目录的属组,而非用户的基本组;

权限设定:

chmod g+s FILE...

chmod g-s FILE...

Sticky:

对于一个多人可写的目录,此权限用于限制每个仅能删除自己的文件;

权限设定

chmod o+t FILE...

chmod o-t FILE...

SUID, SGID, STICKY

000

001

010

011

100

101

110

111

Linux磁盘管理

硬盘:

机械式硬盘

SSD

机械式:

track

sector: 512bytes

cylinder: 分区的基本单位;

MBR:Master Boot Record

512bytes

446: bootloader

64: filesystem allocation table

16: 标识一个分区

2:55AA

磁盘接口类型:

IDE (ATA):133MB/s,/dev/hd

SCSI: 640MB/s

SATA:6Gbps

SAS:6Gbps

USB:480MB/s

识别硬盘设备:/dev/sd

标记不同的硬盘设备:/dev/sd[a-z]

标记同一设备上的不同分区:/dev/sd[a-z][1-]

1-4: 主或扩展分区标识

5+:逻辑分区标识

设备文件:特殊文件

设备号:

major, minor

major: 设备类型

minor: 同一类型下的不同设备

“块”:block,随机设备

“字符”:character,线性设备

GPT

分区:分隔存储空间为多个小的空间,每个空间可独立使用文件系统;

分区工具:

fdisk, parted, sfdisk

fdisk工具的使用:

最多支持在一块硬盘上的15个分区;

分区管理子命令:

p: 显示

n: 创建

d: 删除

t: 修改分区ID

l: 列出所有支持ID类型

w: 保存退出

q: 放弃修改并退出

m: 获取帮助

创建完成之后,查看内核是否已经识别新的分区:

# cat /proc/partitions

有三个命令可以让内核重读磁盘分区表:

CentOS 5: partprobe [DEVICE]

CentOS 6,7:

partx

kpartx

partx命令:

partx DEVICE

partx -a DEVICE

partx -a -n M:N DEVICE

M

M:

:N

kpartx命令:

kpartx -af DEVICE

Linux文件系统管理

文件系统:

VFS:Virtual File System

Linux:ext2, ext3, ext4, reiserfs, xfs, btrfs, swap

光盘:iso9660

Windows: fat32(vfat), ntfs

Unix: ffs, ufs, jfs, jfs2

网络文件系统:nfs, cifs

集群文件系统:ocfs2, gfs2

分布式文件系统:ceph,

moosefs, mogilefs, hdfs, gfs, glusterfs

(1) 日志型文件系统

非日志型文件系统:ext2

日志型文件系统:ext3

(2) swap:交换分区

创建文件系统:

在分区上执行格式化(高级格式化)

要使用某种文件系统,满足两个条件:

内核中:支持此种文件系统

用户空间:有文件系统管理工具

创建工具:mkfs (make filesystem)

mkfs -t type DEVICE

mkfs.type DEVICE

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

mke2fs -t {ext2|ext3|ext4} DEVICE

-b BLOCK: 1024, 2048, 4096

-L 'LABEL': 设定卷标

blkid命令:

blkid DEVICE

LABEL, UUID, TYPE

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值