目录
一.虚拟机的三种网卡模式
二.基础知识
2.1 shell的内外部命令
2.2可以使用type命令来区分内外部命令
2.3命令行头解释
2.4文件具体信息含义
2.5命令行格式
三.基础命令
3.1 help
3.2 man
3.3 pwd
3.4 cd
3.5 ls
3.6 通配符
3.7 alias
3.8 du(disk usage)
3.9 mkdir
3.10 软连接与硬链接
3.11 复制
3.12 移动 改名 批量改名?写脚本
3.13 删除文件
3.14 which
3.15 find
一.虚拟机的三种网卡模式
桥接模式:虚拟机和本机使用同一个物理网卡,共享主机IP地址
nat模式:内外网地址转换,生成一个VMware8网卡,此网卡必须与虚拟机在同一个网段,虚拟机 才可上网。
仅主机模式:主机和虚拟机在独立的网络,不能上外网
二.基础知识
luinx,一切都是一个文件(硬件,文本,二进制,源代码), 系统中拥有小型单一用途的程序, 遇到复杂任务,通过通过不同功能用途的程序组合起来完成,没有复杂用户界面,配置文件 都存储在文本。
2.1 shell的内外部命令
shell是Linux系统中后台运行的一种特殊程序也可以理解成一种特殊的软件,提供了用户与内核进 行交互操作的一种接口。
bash是linux里面默认的shell程序,路径位于/bin/bash,分为内外部命令
内部命令 | 外部命令 |
---|---|
集成于Shell解释器程序内部的一些特殊指令,也称为内建(Built-in)指令 | Linux系统中能够完成特定功能的脚本文件或二进制程序 |
属于Shell的一部分 | 属于Shell解释器程序之外的命令 |
没有单独对应的系统文件 | 每个外部命令对应了系统中的一个文件 |
自动载入内存,可以直接使用 | 必须知道其对应的文件位置,由Shell加载后才能执行 |
2.2可以使用type命令来区分内外部命令
比如
内部命令
[root@localhost /]# type cd
cd 是 shell 内嵌 //内嵌代表内部命令
[root@test1 /]# type -a ls
ls 是 `ls --color=auto' 的别名 //别名代表外部命令
ls 是 /usr/bin/ls //外部命令会有程序路径
[root@localhost /]# whereis ls //whereis 可以查找命令具体的位置所在
[root@localhost ~]# type -a echo
echo 是 shell 内嵌
echo 是 /usr/bin/echo
help 内部命令
外部命令
外部命令存放于 echo $PATH 一个一个找,找到为止,找不到就报无命令
外部命令使用过后会被记录在内存(缓存,但是会占用内存,临时性的)加快读取速度
[root@localhost ~]# type useradd
useradd 是 /usr/sbin/useradd
[root@localhost ~]# useradd wu
[root@localhost ~]# type useradd
useradd 已被哈希 (/usr/sbin/useradd)
[root@localhost ~]# hash //或者使用hash
hash 缓存
使用过一次 外部命令 我就会将这个外部命令 缓存在hash
外部命令需要取找他的路径才能执行, 直接在缓存 调用 加快了速度
--help 外部命令
内部 外部 hash 的优先级 为 内部 hash 外部
先判断是不是别名,如果是,就执行。如果不是就看是不是内部命令,如果是,就执行,如果不是就看hash表,如果缓存里有,就执行,如果没有就看外部命令,如果有就执行,没有就报错
2.3命令行头解释
[root@localhost ~]# 例如root用户登录的行头
①第一个root代表是登录的用户是root。
②第二个localhost是主机名称位localhost。
③第三个 ~ 代表当前用户的家目录,存放用户个性化设置
除此之外,
cd change directory, 文件位置
# 超级管理员
/ 根目录
$ 普通用户
ls 显示当前文件夹
cd~ 回到家目录,
end 到最后
../ 上层打开的目录
cd- 切换到上次执行cd命令之前所在的目录
..开头 表示当前目录上一级目录
.开头 表示隐藏文件
~ky18 以指定用户的宿主目录作为起点
这些只是简单的少量基础命令,还有很多。
2.4文件具体信息含义
- rwxr-xr-x 1 root root 368 11月 1 10:13 ky26.sh
第一字段 文件类型
第二字段 权限 读写执行
第三字段 硬连接数
第四字段 所有者
第五字段 所属组
第六字段 文件大小
第七字段 最后一次修改时间
第八字段 文件名
2.5命令行格式
命令字 空格 [选项] 空格 [参数]
1.命令字 是整条命令中最关键的一部分 唯一确定
2.选项 短格式选项:使用“-”符号引导 通常 一个字母
长格式选项:使用“--”符号引导 通常完整的单词
3.参数 命令字的处理对象 可以是文件名、目录(路径)名或用户名等内容 个数可以是零到多个
;可以隔开命令,执行多个命令
编辑Linux命令行的辅助操作
快捷键 | 功能 |
---|---|
Tab 键 | 自动补齐(两次可以显示所有选项) |
反斜杠“\” | 强制换行或转义 |
Ctrl+a | 光标移到最前 |
Ctrl+e 或 end 键 | 光标移到最后 |
Ctrl+U | 清空至行首不包括当前光标处的 字符 |
Ctrl+K | 清空至行尾包括当前光标处的字符 |
Ctrl+w | 从当前光标删除到开头 |
ALT+d | 从当前光标删除末尾 |
Ctrl+l | 清屏 |
Ctrl+c | 取消本次命令编辑 |
Ctrl+s/Ctrl+q | 锁屏/解锁 |
向上下箭头 | 回看执行过的命令 |
三.基础命令
3.1 help
格式说明
-
[]表示可选项
-
CAPS或<>表示可变化的数据
-
...表示一个列表可加多个一个或多个
-
x|y|z 表示或的意思
-
-abc 是-a -b -c (有些命令选项有先后顺序) 多个 -abc 一般而言是没有顺序先后 (绝大多数是没有的,只有少数分先后
只能查看内部命令的 使用方法 tar -zxvf tar zxfv -区分前后
--help 查看外部命令帮助
[root@localhost ~]# ls --help
[root@localhost dev]# useradd --help
3.2 man
#whatis 1 passwd 用户指令man第一章节
#man 5 passwd 文件格式man第五章节
3.3 pwd
#pwd //显示当前路径
#ped -p 文件的真实路径
#ln -s /opt/ky18/ /mnt/k18 #设置软连接
#cd /mnt/k18/ #切换到软连接
3.4 cd
cd 目标位置change directory
命令 | 效果 |
---|---|
cd cd ~ | 若不指定目标位置,切换到当前用户的宿主目录(家目录) |
cd - | 到前一次目录 |
一个点号“.”开头(自己) | 表示以当前的工作目录作为起点(已点开头的是) |
两个点号“..”开头(上一级) | 表示以当前目录的上一级目录(父目录)作为起点 |
“~用户名”形式开头 | 表示以指定用户的宿主目录(家目录)作为起点 |
"."开头文件 | 表示隐藏文件 |
~ky18 (有个用户叫ky18 家目录为起点) | 表示以指定用户的宿主目录作为起点 |
相对路径 cd ../../切换到上两层目录 没有将路径写完整
绝对路径 / 根目录开始的路径
bin 普通用户命令
boot 开机启动文件
dev 设备文件保存位置
etc 配置文件存放位置
var/log 登陆文件保存日志
3.5 ls
生产环境中慎重直接使用,文件量过大会直接死机
ls [选项] [文件或目录… ]
-
-l 已长格式显示文件和目录列表 ll=ls -l
-
-a 显示全部包括隐藏文件
-
-A 显示全部文件或隐藏文件,但不包括 . 和..
-
-d 仅列出目录本身,而不是列出目录内的文件数据
-
-h 友好显示文件大小(human,人性化)
-
-R 递归显示该目录及该目录的子目录下的所有内容
-
--color 显示颜色
-
-S 以文件容量大小排序
# vim /etc/DIR_COLORS 颜色在这里显示
文件类型
-
- 普通文件
-
d 目录文件directory
-
l 符号链接文件link
-
b 块设备block 比如直接读1块 /dev 4k (512*8(扇区)=4096字节=4k)
-
c 字符设备character 一个字符一个字符读取 /dev/zero (/dev/null)
-
p 管道文件pipe 两个软件联系 A-管道文件-B A 写 B 读 单向的
-
s 套接字文件socket 可以双向的
第一个字符 | 文件类型 |
---|---|
- | 普通文件,包括纯文本文件、二进制文件、各种压缩文件等。 |
d | 目录,类似 Windows 系统中的文件夹。 |
b | 块设备文件,就是保存大块数据的设备,比如最常见的硬盘。 |
c | 字符设备文件 |
s | 套接字文件,通常用在网络数据连接,可以启动一个程序开监听用户的要求,用户可以通过套接字进行数据通信。 |
p | 管道文件,其主要作用是解决多个程序同时存取一个文件所造成的错误。 |
l | 链接文件,类似 Windows 系统中的快捷方式。 |
补充:
file命令可以识别文件类型,文件后缀无法判断文件类型,文件后缀无所谓
[root@localhost data]# ls /run/ autofs.fifo-misc #管道 gssproxy.sock #套接字
touch file{A..Z}.txt ls file[zhou].txt
3.6 通配符
去匹配文件名(包括文件夹)ls
符号 | 效果 |
---|---|
? | 匹配一个字符 f?.txt |
* | 匹配所有非隐藏的字符无论多长多短,但不匹配 "." 开头的文件,即隐藏文件 |
{1..10} | 1到10 |
{a..z} | a b c ...z |
{A..Z} | A B C .....Z |
[123]([此处括号里值代表一个字符]) | 取其中之一有就显示没有也无所谓 |
[a-z]单个小写字母 | 范围需要注意 |
[0-9]单个数字 | 匹配数字范围(0123456789) |
\ | 转义符,表示原来的意思 |
[[:lower:]] | 小写字母表示 a-z |
[[:upper:]] | 大写字母表示 A-Z |
[^zhou] | 匹配列表中的所有字符以外的字符 |
[[:digit:]] | 任意数字,相当于0-9 |
[root@localhost data]# ls -a * 1 #不显示隐藏文件 [root@localhost data]# ls -a . .. 1 #显示隐藏文件 [root@localhost data]# ls * # *不包括.开头的 ls: 无法访问*: 没有那个文件或目录 [root@localhost data]# ls .* #包括了 .. 上层目录中的文件 .: ..: aaa boot dev home lib64 misc net proc run sdb1 sys usr bin data etc lib media mnt opt root sbin srv tmp var [root@test1 opt]# touch f{a..z}.log [root@test1 opt]# touch f{A..Z}.log [root@test1 opt]# ls 123456.txt fa.log fe.log fj.log fo.log ft.log fy.log 123.txt f{A.Z}.log ff.log fk.log fp.log fu.log fz.log 1.txt fb.log fg.log fl.log fq.log fv.log rh 2.txt fc.log fh.log fm.log fr.log fw.log test.txt abc.txt fd.log fi.log fn.log fs.log fx.log [root@test1 opt]# ls f[zhou].log #####四个其中的之一有就全显示 fh.log fo.log fu.log fz.log [root@test1 opt]# ls f[x-z].log ####显示的xXyYz 不包括Z fx.log fX.log fy.log fY.log fz.log [root@test1 opt]# ls f[a-c].log #####显示的A b B c C 不包括a fa.log fA.log fb.log fB.log fc.log [root@test1 opt]# ls f{a..c}.log #显示所有小写 -rw-r--r-- 1 root root 0 Nov 7 09:46 fa -rw-r--r-- 1 root root 0 Nov 7 09:46 fb -rw-r--r-- 1 root root 0 Nov 7 09:46 fc [root@localhost ~]# ls 1[[:lower:]]* #########显示小写字母 1a1.txt 1e1.txt 1i1.txt 1m1.txt 1q1.txt 1u1.txt 1y1.txt 1b1.txt 1f1.txt 1j1.txt 1n1.txt 1r1.txt 1v1.txt 1z1.txt [root@localhost ~]# ls 1[[:upper:]]* ########################显示大写字母 [root@localhost ~]# ls 1[[:upper:]]* 1A1.txt 1E1.txt 1I1.txt 1M1.txt 1Q1.txt 1U1.txt 1Y1.txt ######[0-9]只能匹配10 以下的 [root@localhost data]# touch f{1..10}.txt [root@localhost data]# touch f{10..20}.txt [root@localhost data]# ll f[0-9].txt -rw-r--r--. 1 root root 0 8月 29 01:50 f1.txt -rw-r--r--. 1 root root 0 8月 29 01:50 f2.txt -rw-r--r--. 1 root root 0 8月 29 01:50 f8.txt -rw-r--r--. 1 root root 0 8月 29 01:50 f9.txt [root@localhost data]# ll f[0-9][0-9].txt #两个 [0-9]可以匹配双数字 [root@localhost data]# ll f{1..20}.txt #{10..20}可以匹配双数字 [root@localhost data]# ll f??.txt #两个?号可以匹配 [root@localhost data]# ll f*.txt # *也可以 -rw-r--r--. 1 root root 0 8月 29 01:51 f10.txt -rw-r--r--. 1 root root 0 8月 29 01:51 f11.txt -rw-r--r--. 1 root root 0 8月 29 01:51 f12.txt [root@localhost data]# ls /etc/.* #显示隐藏文件也包括.. 的上层目录 #如果不想看上层目录 就要加-d 只显示当前目录 [root@localhost data]# ls /etc/.* -d #只显示当前目录 /etc/. /etc/.. /etc/.java /etc/.pwd.lock /etc/.updated 3.7 alias
临时修改
-
alias 命令别名 = ’命令‘
-
unalias 别名命令 删除别名
-
\加别名命令 (显示原始命令)
du --max-depth=1 /etc/ |sort -nr du -d 2 /etc/ |sort -nr a s h [root@localhost dev]# vim /etc/sysconfig/network-scripts/ifcfg-ens33 [root@localhost dev]# alias myvim='vim /etc/sysconfig/network-scripts/ifcfg-ens33' #如果不加引号无法识别 [root@localhost dev]# alias myls=ls -alh -bash: alias: -alh: 未找到 #就想使用原来的命令 [root@localhost dev]# ls [root@localhost dev]# \ls #删除别名 [root@localhost dev]# unalias myvim [root@localhost dev]# myvim bash: myvim: 未找到命令... 永久修改 - 在/etc/.bashrc 会影响全部 - /root/.bashrc只影响当前用户
补充:绝对路径>别名>内部>hash>外部命令(先查找别名在查找内部命令,缓存最后外部)
3.8 du(disk usage)
查看当前所在文件夹的总磁盘占用量了。
du [选项] [文件或目录… ]
选项 | 说明 |
---|---|
-a | 统计磁盘空间占用时包括所有的文件,而不仅仅只统计目录 |
-h | 以更人性化的方式(默认以KB计数,但不显示单位)显示出统计结果 |
-s(--summarize) | 只统计所占用空间总的(Summary)大小,而不是统计每个子目录、文件的大小 |
--max-depth=n (-d 1) | 最大显示到第n层 |
--exclude | 不计入统计 |
注意a s无法同时使用
文件夹是可以嵌套的,有的时候,我们只想展示第一级或第二级子文件夹的信息,而不希望 du 统计的层次太深,那么我们可以用 --max-depth(-d) 选项来进行控制。
[root@localhost opt]#ls -lh
总用量 4.0K
-rw-r--r--. 1 root root 2.6K 8月 26 11:55 passwd
[root@localhost opt]#du -ch passwd
4.0K passwd
4.0K 总用量
[root@localhost etc]#du -d1
#只显示etc目录下的第一层
[root@localhost opt]#ls
f1111.txt ky18 passwd
[root@localhost opt]#du --exclude=*.txt
#排除已txt结尾的
0 ./ky18
4 .
3.9 mkdir
mkdir -p 递归创建 没有文件夹 会自动递归创建
mkdir [选项] 目录位置及名称…
[root@localhost data]# mkdir a b c d #创建多个文件夹 [root@localhost data]# ls a b c d [root@localhost data]# mkdir -p aaa/bbb/cccc # 递归创建文件夹 [root@localhost data]# ls a aaa b c d [root@localhost data]# tree . ├── a ├── aaa │ └── bbb │ └── cccc ├── b ├── c └── d touch touch 新文件…(可为空) touch 不会破坏已有文件 刷新时间 每个文件有三个时间戳: 1.access time 访问时间,atime,读取文件内容 2.modify time 修改时间,mtime,改变文件内容(数据) 3.change time 改变时间,ctime,元数据发生改变(元数据 文件大小 权限 )
[root@localhost data]# touch 1 2 3
#创建新文件,或空的新文件
[root@localhost data]# ls
1 2 3
[root@localhost data]# echo "" > 4
#创建4的空文件
[root@localhost data]# ls
1 2 3 4
[root@localhost bin]# stat /etc/passwd
##############查看三种时间
3.10 软连接与硬链接
硬连接 同一个文件取不同的名或者叫多个名字(比如 苏轼 字子瞻 号东坡居士 苏二 谥号文忠 )不支持文件夹,创建一个连接数加一,多路径访问。
软连接 类似于windows里快捷方式,软连接,符号连接,会指向原来的文件
ln [-s] 源文件或目录… 链接文件或目标位置
加s是软连接 符号连接
对比项 | 硬链接 | 软链接 |
---|---|---|
本质 | 本质是同一个文件 | 本质不是同一个文件 |
inode(身份证号) | 相同 | 不同 |
连接数 | 创建新的硬链接,链接数会增加,删除硬链接,链接数减少 | 删除,新建都不会改变 |
文件夹 | 不支持 | 支持 |
删除源文件 | 只是链接数减一,但链接文件的访问不受影响 | 无法访问连接文件 |
文件类型 | 和源文件相同 | 链接文件,和源文件无关 |
文件大小 | 和源文件相同(指向硬盘上的同一个文件) | 源文件的路径的长度 |
例子
[root@localhost data]# cp /etc/passwd /data/f1.txt [root@localhost data]# ls f1.txt [root@localhost data]# ln /data/f1.txt /data/f11.txt #建立硬连接 #不能跨分区建立连接 无法对文件夹创建 [root@localhost data]# ln /data/f1.txt /boot/f111.txt ln: 无法创建硬链接"/boot/f111.txt" => "/data/f1.txt": 无效的跨设备连接 #删除硬链接可以继续访问硬链接。 当前目录 opt . 自己 .. /根目录 opt下有个目录 aa cd aa . .. .aa ../opt
软连接例子
删除源文件无法访问,再新建同名文件后依然可以访问
可以跨设备
可以支持文件夹
相对路径与绝对路径 建议绝对路径
[root@localhost data]# ln -s f1.txt /opt/f1111.txt
[root@localhost data]# ll /opt/
软件版本升级迭代
开发出 app1.0 做软连接 app
如果有 app2.0 就把 软连接app删除 新建app2.0的软连接app
$PATH 以后自行安装软件 系统不会自行 识别 httpd mysql ls
1将程序文件 放入$PATH 路径 usr/bin
2做软连接 $PATH
3修改$PATH 路径
硬链接删除一定要全删除,软连接一定要做绝对路径
软连接#ln -s /etc/ ./test
硬链接#ln/etc/./hard "/etc/":不允许将硬链接指向目录
软连接删除#rm-rf soft/^c soft 不加/
软连接文件夹不加/会把文件夹下文件全删除
3.11 复制
cp(copy)备份
1. cp [选项]… 源文件 目标 相当改名复制 文件夹 文件相当于 改名字另存为
2. cp [选项]... 源文件... 文件夹 多个源文件只能复制到文件夹
选项 | 说明 |
---|---|
-f | 覆盖目标同名文件或目录时不进行提醒,直接强制复制 |
-i | 覆盖目标同名文件或目录时提醒用户确认 |
-p | 复制时保持源文件的权限、属主及时间标记等属性不变 |
-r | 复制目录时必须使用此选项,表示递归复制所有文件及子目录 |
-a | 完整保留所有的信息 |
-v | 可视化 |
-u | 相当于增备,差异备份(只对文件夹起作用) |
[root@localhost data]# cp -r /etc/ /opt/
#复制文件夹要加 -r 不加不让复制
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#改名字
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#变成 etc.bak 的子目录
[root@localhost data]# cp -r /etc/ /opt/etc.bak
#会问你要不要覆盖,cp是别名 加\cp 直接覆盖
[root@localhost data]# cp /etc/passwd /etc/shadow /opt
[root@localhost data]# cp /etc/passwd /etc/shadow /opt/f111.txt
#复制多个文件必须要是目录,不能是文件,且目录要存在。
cp: 目标"/opt/f111.txt" 不是目录
3.12 移动 改名 批量改名?写脚本
mv [选项] … 源文件或目录… 目标文件或目录 单个文件
移动 或者改名
- -f:强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖;
- -i:交互移动,如果目标文件已经存在,则询问用户是否覆盖(默认选项);
- -n:如果目标文件已经存在,则不会覆盖移动,而且不询问用户;
- -v:显示文件或目录的移动过程;
批量
rename log log.bak* //所有 log文件改成 log.bak
rename 旧字符 新字符 目标文件
[root@test1 opt]# rename txt txt.bak *
#将txt改成txt.bak
[root@test1 opt]# ls
rename 旧字符 新字符 目标文件
bash
[root@test1 opt]# rename txt txt.bak *.txt
#把 txt 改成 txt.bak
3.13 删除文件
rm [选项] 要删除的文件或目录
-
-f、强制
-
-i、交互
-
-r 递归(删除目录需要)
[root@localhost ~]# rm -rf / #不让执行 [root@localhost ~]# echo * #删根后查看 [root@localhost ~]# rm -rf /data/* [root@localhost ~]# rm -rf /data /* ##之间的区别误操作,等于删根
如何删除特殊的文件
[root@localhost ~]# touch ./-f # -开头的文件 [root@localhost ~]# ls [root@localhost ~]# rm -f -f #删除不掉 [root@localhost ~]# rm -f ./-f #需要加路径 [root@localhost ~]# touch ./-f [root@localhost ~]# rm -- -f rm:是否删除普通空文件 "-f"?y
删除文件后空间不释放
[root@localhost ~]# cp /dev/zero /boot/bigfile.img
cp: 写入"/boot/bigfile.img" 出错: 设备上没有空间
cp: 扩展"/boot/bigfile.img" 失败: 设备上没有空间
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293876 181644 99% /
devtmpfs 917600 0 917600 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 9216 924308 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 5232640 5232620 20 100% /boot
tmpfs 186708 12 186696 1% /run/user/42
tmpfs 186708 0 186708 0% /run/user/0
#磁盘使用满了以后会造成服务的停止业务受影响,是一个重大的事故
[root@localhost ~]# ll -S /boot ##文件大小排序
总用量 5191344
-rw-r--r--. 1 root root 5171437568 8月 26 01:00 bigfile.img
-rw-------. 1 root root 69266920 8月 6 21:02 initramfs-0-rescue-869dbd607e5e4f758fa152ef2229f2b6.img
-rw-------. 1 root root 30802796 8月 6 21:03 initramfs-3.10.0-693.el7.x86_64.img
-rw-------. 1 root root 18808968 8月 6 21:06 initramfs-3.10.0-693.el7.x86_64kdump.img
-rw-r--r--. 1 root root 10182684 8月 6 21:02 initrd-plymouth.img
-rwxr-xr-x. 1 root root 5877760 8月 6 21:02 vmlinuz-0-rescue-869dbd607e5e4f758fa152ef2229f2b6
-rwxr-xr-x. 1 root root 5877760 8月 23 2017 vmlinuz-3.10.0-693.el7.x86_64
-rw-------. 1 root root 3228420 8月 23 2017 System.map-3.10.0-693.el7.x86_64
-rw-r--r--. 1 root root 293027 8月 23 2017 symvers-3.10.0-693.el7.x86_64.gz
-rw-r--r--. 1 root root 140894 8月 23 2017 config-3.10.0-693.el7.x86_64
drwx------. 5 root root 97 8月 6 21:03 grub2
drwxr-xr-x. 2 root root 27 8月 6 20:58 grub
drwxr-xr-x. 3 root root 17 8月 6 20:57 efi
#使用另一个xshell打开 bigfile文件 也是可以删除的,但是空间不会释放
#文件正在使用可以删除,
[root@localhost ~]# rm -rf /boot/bigfile.img
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293964 181556 99% /
devtmpfs 917600 0 917600 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 9216 924308 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 5232640 5232620 20 100% /boot
tmpfs 186708 12 186696 1% /run/user/42
tmpfs 186708 0 186708 0% /run/user/0
[root@localhost ~]# lsof |grep delete
#过滤出被删除的文件list open file
pulseaudi 1671 gdm 6u REG 0,4 67108864 23475 /memfd:pulseaudio (deleted)
alsa-sink 1671 1674 gdm 6u REG 0,4 67108864 23475 /memfd:pulseaudio (deleted)
alsa-sour 1671 1677 gdm 6u REG 0,4 67108864 23475 /memfd:pulseaudio (deleted)
vim 7532 root 3r REG 8,1 5171437568 80 /boot/bigfile.img (deleted)
[root@localhost ~]# w
#查看谁在使用什么进程
01:09:59 up 8:49, 2 users, load average: 0.98, 0.57, 0.27
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.91.1 00:54 7.00s 0.12s 0.01s w
root pts/1 192.168.91.1 01:05 4:07 4:07 4:06 vim /boot/bigfile.img
#另一终端退出使用空间被释放
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293868 181652 99% /
devtmpfs 917600 0 917600 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 9216 924308 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 5232640 182388 5050252 4% /boot
tmpfs 186708 12 186696 1% /run/user/42
tmpfs 186708 0 186708 0% /run/user/0
[root@localhost ~]# echo"" > /boot/bigfile.img
#写入空文件,依赖shell
[root@localhost ~]# df
文件系统 1K-块 已用 可用 已用% 挂载点
/dev/mapper/centos-root 10475520 10293892 181628 99% /
devtmpfs 917600 0 917600 0% /dev
tmpfs 933524 0 933524 0% /dev/shm
tmpfs 933524 9216 924308 1% /run
tmpfs 933524 0 933524 0% /sys/fs/cgroup
/dev/sda1 5232640 182388 5050252 4% /boot
tmpfs 186708 12 186696 1% /run/user/42
tmpfs 186708 0 186708 0% /run/user/0
[root@localhost ~]# rm -rf /boot/bigfile.img
#清空文件
后者保留etc
rm -rf / 删除不了
在本目录下可以 不管你在不在使用
3.14 which
/user/bin/cp 绝对路径
which ls
which cd
which cp
#crontab -e 类似于定期执行 (周一干什么,周二干什么,周三干什么。。。)
3.15 find
locate 查询系统上预建立的文件索引数据库,跟find功能类似。系统生成文件,有个索引数据库, 在数据库寻找快,但新建的文件需要一段时间才能存进数据库。常用于系统不忙时,寻找 老文件,占用系统效率
#locate -n1 yj
find命令的特点:
全系统搜索,
- 精确查找
- 实时查找
- 支持查找条件巨多
格式:
find [OPTION]... [查找路径] [查找条件] [处理动作]
查找路径:指定具体目标路径;不指定为默认为当前目录
查找条件:可以对文件名、大小、类型、权限等标准进行查找;默认为找出指定路径下的所有文件
处理动作:对符合条件的文件做操作,默认输出至屏幕(print)
常用可选项
查找类型 | 关键字 | 说明 |
---|---|---|
按名称查找 | -name | 根据目标文件的名称进行查找,允许使用“*”及“?”通配符 |
按文件大小查找 | -size | 根据目标文件的大小进行查找一般使用“+”、“-”号设置超过或小于指定的大小作为查找条件常用的容量单位包括 kB(注意 k 是小写)、MB、GB |
按文件属主查找 | -user | 根据文件是否属于目标用户进行查找 |
按文件类型查找 | -type | 根据文件的类型进行查找文件类型包括普通文件(f)、目录(d)、块设备文件(b)、字符设备文件(c)等 |
按inode号 | -inum | 根据文件inode号查找 |
按权限查找 | -perm | 按文件权限查找 |
最大搜索目录深度 | -maxdepth level | 将你的文件已分级的形式查找 |
最小搜索目录深度 | -mindepth level | 同上 |
-size [+|-]#UNIT #常用单位:k, M, G,c(byte),注意大小写敏感 +大于 -小于
-type TYPE
TYPE可以是以下形式:
f: 普通文件
d: 目录文件
l: 符号链接文件
s:套接字文件
b: 块设备文件
c: 字符设备文件
p: 管道文件
-user USERNAME #查找属主为指定用户(UID)的文件
-group GRPNAME #查找属组为指定组(GID)的文件
-uid UserID #查找属主为指定的UID号的文件
-gid GroupID #查找属组为指定的GID号的文件
-nouser #查找没有属主的文件
-nogroup #查找没有属组的文件
例如
-name "文件名称" #支持使用glob,如:*, ?, [], [^],通配符要加双引号引起来
-inum n #按inode号查找
-links n #链接数为n的文件
[root@test1 opt]# find /etc/ -name passwd
#查找名字叫 passwd的文件
/etc/pam.d/passwd
/etc/passwd
[root@test1 opt]# find /etc/ -name *.conf
#查找所有.conf 结尾的 ,不要在当前路径下找自己路径下的文件
/etc/resolv.conf
/etc/fonts/conf.d/57-dejavu-serif.conf
/etc/fonts/conf.d/65-1-vlgothic-gothic.conf
/etc/fonts/conf.d/31-cantarell.conf
/etc/fonts/conf.d/65-0-lohit-nepali.conf
/etc/fonts/conf.d/59-liberation-mono.conf
/etc/fonts/conf.d/65-0-lohit-bengali.conf
/etc/[root@test1 opt]# find /mnt -user root
#查找 用户为root的用户
/mnt
/mnt/abc
/mnt/ad
/mnt/ad/ad2
/mnt/ad/ad2/bbbbb.txt
/mnt/zhangsanlianjie
[root@test1 opt]# find -size 1k
# 0.1字节 到 1k
./rh
./rh/aaa
[root@localhost boot]# find ./ -name "vm*"
#查找vm开头的
[root@localhost boot]# find /boot/ -size -10M -a -name "*img"
#小于10M 的img文件
[root@localhost etc]# find /etc/ -maxdepth 2 -mindepth 2
#只看第二级目录
[root@localhost opt]# find /boot -d
#先显示 文件在显示目录
#找/home 下属于zhangsan的文件并列出属性
[root@localhost opt]# find /home -user zhangsan -ls
#找/home 下属于zhangsan的文件并列出属性
[root@localhost opt]# useradd hehe
[root@localhost opt]# userdel hehe
[root@localhost opt]# ls /home/
hehe mysql zhangsan
[root@localhost opt]# ll /home/
总用量 0
drwx------. 3 1002 1002 78 8月 26 09:27 hehe
drwx------. 3 mysql mysql 78 8月 25 11:45 mysql
drwx------. 3 zhangsan zhangsan 78 8月 6 20:57 zhangsan
[root@localhost opt]# find /home/ -nouser
#找home下的无主文件夹
/home/hehe
/home/hehe/.mozilla
/home/hehe/.mozilla/extensions
/home/hehe/.mozilla/plugins
/home/hehe/.bash_logout
/home/hehe/.bash_profile
/home/hehe/.bashrc
#或与且的优先级
[root@localhost opt]# find /etc/ -type d -o -type l |wc -l
1008
[root@localhost opt]# find /etc/ -type d -o -type l -ls |wc -l
1008
[root@localhost opt]# find /etc/ -type d -o -type l -a -ls |wc -l
274
[root@localhost opt]# find /etc/ \( -type d -o -type l \) -a -ls |wc -l
1008
[root@localhost opt]# find -size 1G
#查找1G的文件会把所有都显示出来
.
./100.img
./99.img
#按大小查找新建两个文件
[root@localhost opt]# dd if=/dev/zero of=99.img bs=99M count=1
[root@localhost opt]# dd if=/dev/zero of=100.img bs=100M count=1
[root@localhost opt]# ls
100.img 99.img
[root@localhost opt]# find -size 100M
./100.img
[root@localhost opt]# find /opt/ -size 100M
/opt/100.img
[root@localhost opt]# ll 99.img
-rw-r--r--. 1 root root 103809024 8月 26 10:02 99.img
[root@localhost opt]# echo >>99.img
[root@localhost opt]# ll 99.img
-rw-r--r--. 1 root root 103809025 8月 26 10:03 99.img
[root@localhost opt]# find /opt/ -size 100M
/opt/100.img
/opt/99.img
#这是应为linux中的100M不是正好100M 是99开始不包括99到100(99-100]
#思考 1024M 和 1G 一样么?
1024M 代表 1023M - 1024M 不包括1023
1G 表示 0G -1G 不包括0G
-size 10k 表示9k 到10k 且不包括9k
-size -10k 表示9k 以内 包括9k
-size +10k 表示10k 以上 不包括 10k
#权限查找 -perm
[root@localhost opt]# find -perm 644
./100.img
./99.img
./a.txt
[root@localhost opt]# find -name "*.img" -delete
#找到并删除(找到name为什么并且删除)要加引号
############处理动作#############################
-print:默认的处理动作,显示至屏幕
-ls:类似于对查找到的文件执行"ls -dils"命令格式输出
-fls file:查找到的所有文件的长格式信息保存至指定文件中,相当于 -ls > file
-delete:删除查找到的文件,慎用!
-ok COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令,对于每个文件执行命令之前,都会交互式要求用户确认
-exec COMMAND {} \; 对查找到的每个文件执行由COMMAND指定的命令{}: 用于引用查找到的文件名称自身
[root@localhost opt]# find -name "*.txt" -ok mv {} /mnt \;
[root@localhost opt]# find -name "*.txt" -exec mv {} /mnt \;
#以“天”为单位
-atime [+|-]#
# #表示[#,#+1)
+# #表示[#+1,∞]
-# #表示[0,#)
-mtime
-ctime
#以“分钟”为单位
-amin
-mmin
-cmin
find -mtime 10
#10天到11天
find -mtime +10
#代表11天以上
find -mtime -10
#10天以内
找到大于 7天,大于1G普通文件,并删除
find /-mtime +7 -typef -size +1G -delete
find -nouser -delete 无主文件
-empty 空文件或目录
#find /app -type d -empty app代表空文件
与:-a 可以省略
或:-o
非:-not !
例子
#find -name "*.txt" -ok mv {} /mnt \;
找到 名后有.txt的文件 连接符 移动到 找到的所有文件 mnt目录
找到后一个个放入mnt并一个个询问
\;代表结束,一定不能忘
-ok可以换成exec,没有确认,直接移动
find -name “*.tst” -exec mv {}.sl \;
find -name “*.tst” -fls abc 导入abc