测试人员该了解的Linux命令
1.更改文件权限
如果想了解一下文件权限的组成,可以参考【Linux 文件基本属性,点我鸭!】.
chmod [-R] xyz 文件或目录 (ps:其中xyz是权限的数字和)
或者:
2.文件与目录的管理
2.1 ls: 列出目录
参数 | 意义 |
---|---|
-a | 全部的文件,连同隐藏档( 开头为 . 的文件) 一起列出来(常用) |
-d | 仅列出目录本身,而不是列出目录内的文件数据 |
-l | 长数据串列出,包含文件的属性与权限等等数据;(常用) |
ps:可以组合参数、例如将家目录下的所有文件列出来(含属性与隐藏档),可以已使用【ls -al】.
2.2 cd:切换目录
命令 | 含义 |
---|---|
cd /root/runoob/ | #使用绝对路径切换到 runoob 目录 |
cd ./runoob/ | #使用相对路径切换到 runoob 目录、一般可以省略./ |
cd ~ | # 表示回到自己的家目录,root用户家目录是 /root 、普通用户则在/home下对应目录 |
cd … | # 表示去到目前的上一级目录,如 /root 的上一级目录是/ |
cd - | # 快速返回上一次操作的目录 |
2.3 其他文件操作命令
指令:pwd [-P]
指令含义:显示目前的目录,参数 -P:显示出确实的路径,而非使用连结 (link) 路径。
指令:touch FileName
指令含义:创建空文件
指令:mkdir [-mp] 目录名称
参数:-m :配置文件的权限,-p:帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
指令:rmdir 目录名称
指令含义:删除空的目录,
指令:cp 文件|目录 文件|目录 【含义:复制】
参数解释:
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-r:递归持续复制,用於目录的复制行为;(常用)
指令:rm [-fir] 文件或目录 【含义:移除】
参数解释:
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息
-i :互动模式,在删除前会询问使用者是否动作
-r :递归删除啊!最常用在目录的删除了!
指令: mv [-fiu] source destination 【含义: 移动】
-f :就是 force 的意思,忽略不存在的文件,不会出现警告信息;
-i :互动模式,在删除前会询问使用者是否动作
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
2.4 查看文件内容
命令 | 含义 |
---|---|
cat | 由第一行开始显示文件内容 |
tac | 从最后一行开始显示,可以看出 tac 是 cat 的倒著写! |
nl | 显示的时候,顺道输出行号! |
more | 一页一页的显示文件内容 |
less | less 与 more 类似,但是比 more 更好的是,他可以往前翻页! |
head | 只看头几行 |
tail | 只看尾巴几行 |
3.vi/vim命令的使用
vi/vim 的使用【详细请查看教程】
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
输入模式
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
q 退出程序
w 保存文件
按ESC键可随时退出底线命令模式。
4.常见解压压缩命令[tar,zip]
tar命令
解包:tar zxvf FileName.tar
打包:tar czvf FileName.tar DirName
zip命令
解压:unzip FileName.zip
压缩:zip FileName.zip DirName
更多简单例子 | 详细查看
5.查找文件命令[locate,find]
5.1 locat命令
是在后台数据库中按文件名搜索(也只能按文件名搜索),搜索速度较快
这个数据库的目录,不同的linux发行版不同,在centos6.10中,这个数据库的目录为:/var/lib/mlocate/mlocate.db
这个数据库默认一天一更新,所以一般新建的文件,如果不手动更新该数据库,在该天内是无法使用locate命令来查看文件位置的,更新该数据库的命令为:updatedb (# 需要使用root权限才能生效)
5.2 find命令
语法:find [options…] [查找的路径] [查找条件] [处理动作]
查找的路径:指定查找目标文件具体路径。默认为当前目录
查找条件:指定的查找标准,可以是文件名、大小、类型、权限、属组或者属主等标准进行查找。默认为找出指定路径下的所有文件
处理动作:对查找符合的文件做什么操作。默认输出至屏幕
5.2.1查找条件有哪些?仅部分
命令 | 含义 |
---|---|
根据文件名查找 | -name “文件名称”,文件名称支持使用glob,也就是可以是用*、?、[]、[^],是严格区分文件大小写 的 。-iname “文件名称”,不区分文件的大小写 |
根据文件的属组、属主查找 | -user USERNAME:查找属主为USERNAME的文件,-group GROUPNAME:查找属组为GROUPNAME的文件。 -nouser:查找没有属主的文件,-nogroup:查找没有属组的文件。 |
根据文件类型查找: -type TYPE | TYPE包含下列几种【f:普通文件,d:目录文件,l:符号链接文件,s:套接字文件,p:管道文件,b:块设备文件,c:字符设备文件 |
根据文件大小查-size [+/-]num | 指定文件的大小来进行查找。num表示文件的大小,后边可以跟一个单位,单位包括k、m、g |
①当我们给定数字和单位,那么去找寻文件时表示查询的文件的大小范围在大于这个给定数字减一到这个给定数字之间的任何值 | |
②如果使减号后面跟数字加单位,表示找寻的文件大小是从0开始到给定数字减一的所有文件 | |
③如果使用加号后面跟数字加单位,表示去找寻的文件是从当前给定数字到无穷大之间的所有文件的大小 | |
根据文件时间戳查找 | 以天为单位:-atime [+/-] num:查询访问时间,-mtime [+/-] num:查询修改时间,-ctime [+/-] num:查询文件属性改变时间。 |
以一分钟为单位:-amin [+/-] num:查询访问时间,-mmin [+/-] num:查询修改时间,-cmin [+/-] num:查询文件属性改变时间。 | |
①num:如果只是数字,那么表示大于等于我们给定的前num这个天数,小于给定num天数加1 | |
② -num:从当前开始(即大于等于0)到前num天,但是不包括前第num天即小于num天数,即num天内 | |
③+num:表示指定天数大于等于num+1天之前 |
另外以上条件还可以组合查找: -a:与(可以省略),-o:或,-not或者 ! :非
ps:组合条件查找时有时需要把组合条件执行了再执行处理动作,因此,这个是组合条件就需要加括号(括号需要转义)避免出错。因为组合条件可能和后边的处理动作产生歧义,造成意想不到的效果
5.2.2处理动作
处理动作及描述 |
---|
-print:默认的处理动作,显示到屏幕上 |
-ls:类似于对查询到的文件执行ls -l命令 |
-delete:删除查询到的文件,谨慎使用 |
-fls FILE:查询到的所有文件的长格式信息保存值指定的PATH文件中 |
-ok COMMAND {} ; :对查询到的每个文件执行由COMMAND指定的命令。但是这个命令在对每个文件进行命令之前都会交互是的与用户进行确认。注意:大括号与反斜线之间必须要有空格,否则报错。相对安全 |
-exec COMMAND {} \; :对查询到的每个文件执行由COMMAND指定的命令。但是这个不会跟用户进行交互式确认。注意:大括号与反斜线之间必须要有空格,否则报错。比较不安全 |
注意:花括号{ }的表示的是引用find查询到的文件,而\;表示固定格式
5.2.3 find命令示例
仅供参考,如有错误欢迎指正。
1>找出/tmp目录下,属主不是root,并且文件的名字不是www的文件
find /tmp ! ( -user “root” -o -name “www” ) -ls
2>查找/tmp目录下,大小是3k的文件
find /tmp -size 3k -type f
3>查询/var/目录下属主为root且属组为mail的文件或者目录
find /var/ -user root -a -group mail
4>查询/usr下属主不为root、bin、或者hadoop的所有文件或者目录
find /usr -not ( -user root -o -user bin -o -user hadoop )
find /usr -not -user root -a -not -user bin -a -not -user haddop
5>查询当前系统上没有属主或者属组且最近一周内曾被访问过的文件或者目录
find / -nouser -a -nogroup -a -atime -7
6>查询/etc/目录下最近一周内其内容被修改过,同时属主不为root,也不是hadoop的文件或者目录
find /etc/ -mtime -7 -a ! ( -user root -o -user hadoop )
7>查询/etc/目录下大于1M且类型为普通文件的所有文件
find /etc -size +1m -type f
8>在/home目录下查找以.txt结尾的文件名
find /home -name “.txt"
find /home -iname ".txt”
9>当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . -iname “.txt" -o -iname " .pdf"
find . ( -iname ".txt" -o -iname ".pdf” )
10>
搜索最近七天内被访问过的所有文件
find . -type f -atime -7
搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7
搜索超过七天内被访问过的所有文件
find . -type f -atime +7
搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
找出比file.log修改时间更长的所有文件
find . -type f -newer file.log
11>
搜索大于10KB的文件
find . -type f -size +10k
搜索小于10KB的文件
find . -type f -size -10k
搜索等于10KB的文件
find . -type f -size 10k
12>删除当前目录下所有.txt文件
find . -type f -name “*.txt” -delete
13>找出当前目录用户组sunk拥有的所有文件
find . -type f -group sunk
14>找出当前目录下所有root的文件,并把所有权更改为用户tom
find .-type f -user root -exec chown tom {} \;
上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
15>找出自己家目录下所有的.txt文件并删除
find $HOME/. -name “*.txt” -ok rm {} \;
16>其它
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name “.txt" -exec cat {} \;> all.txt
将30天前的.log文件移动到old目录中
find . -type f -mtime +30 -name ".log” -exec cp {} old \;
找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来
find . -type f -name “*.txt” -exec printf “File: %s\n” {} \;
因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令
-exec ./text.sh {} \;
要列出所有长度为零的文件
find . -empty
6.查找日志
1.查看日志常用命令
tail:
-n 是显示行号;相当于nl命令;例子如下:
tail -100f test.log 实时监控100行日志
tail -n 10 test.log 查询日志尾部最后10行的日志;
tail -n +10 test.log 查询10行之后的所有日志;
head:
跟tail是相反的,tail是看后多少行日志;例子如下:
head -n 10 test.log 查询日志文件中的头10行日志;
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志;
cat:
tac是倒序查看,是cat单词反写;例子如下:
cat -n test.log |grep “debug” 查询关键字的日志
2.应用场景一:按行号查看—过滤出关键字附近的日志
cat -n test.log |grep “debug” 得到关键日志的行号
3.应用场景二:根据日期查询日志
4.应用场景三:日志内容特别多,打印在屏幕上不方便查看
(1)使用more和less命令,
如: cat -n test.log |grep “debug” |more 这样就分页打印了,通过点击空格键翻页
(2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析
如:cat -n test.log |grep “debug” >debug.txt
5 普通:搜索trace.log 中含有ERROR字段的日志
grep ERROR trace.log
6 输出文件:可以将日志输出文件中
grep ERROR trace.log > error.log
7 反向:搜索不包含ERROR字段的日志
grep -v ERROR trace.log
8 向前:搜索包含ERROR,并且显示ERROR前10行的日志
grep -B 10 ERROR trace.log
9 向后:搜索包含ERROR字段,并且显示ERROR后10行的日志
grep -A 10 ERROR trace.log
10 上下文:搜索包含ERROR字段,并且显示ERROR字段前后10行的日志
grep -C 10 ERROR trace.log
11 多字段:搜索包含ERROR和DEBUG字段的日志
gerp -E ‘ERROR|DEBUG’ trace.log
12 多文件:从多个.log文件中搜索含有ERROR的日志
grep ERROR *.log
13 省略文件名:从多个.log文件中搜索ERROR字段日志,并不显示日志文件名
从多个文件中搜索的日志默认每行会带有日志文件名
grep -h ERROR *.log
14 时间范围: 按照时间范围搜索日志
awk ‘$2>“17:30:00” && $2<“18:00:00”’ trace.log
日志形式如下, $2代表第二列即11:44:58, awk需要指定列
11-21 16:44:58 /user/info/
15 有没有:搜索到第一个匹配行后就停止搜索
grep -m 1 ERROR trace.log
7.乱七八糟的命令
测试环境搭建,部署项目的时候会用到哪些命令呢,
监控网络资源,服务器资源
命令 | 含义 |
---|---|
cmp [第一个文件][第二个文件] | 用于比较两个文件的差异 |
file [文件或目录…] | 通过file指令,我们得以辨识该文件的类型。 |
ps | 对进程进行监测和控制,参考地址1,参考地址2,参考地址3 |
kill | 结束进程,参考地址 |
free | 会显示内存的使用情况,参考地址 |
netstat | 监控网络状态,参考地址 |
grep | grep命令是一种文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来,参考地址 |