前言
好久没更新博客了,悄咪咪的看了下,上次更新说一年前的事情了。那时候立下flag:每周至少更新一次博客!呵呵,打脸了。
言归正传,现在之姐厚着脸皮来更新了
回顾这一年管理linux的情况(实际就是老大写的脚本,我只运行sh xxx.sh运行),啪啪打脸(捂脸)
测试场景应用
在测试工作中,我常用的场景有:
1.查看日志,定位后台问题
2.维护环境,保证测试环境正常运行(搭建环境另说)
3.跑日常接口脚本
前提了解:测试场景应用需要一定的权限,以及基本的一些操作
一.Linux下权限管理
1.Linux下有两种用户:普通用户和超级用户()。
普通用户:在linux下做有限的事情;
超级用户:可以在linux系统下做任何事情,不受限制。
普通用户的提示符是“$”,超级用户的命令提示符是“#”。
命令: su [用户名] 功能:切换用户
2.Linux权限管理
权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组
其他用户:o—Others
3.文件访问权限的种类
基本权限:
read 对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目录信息的权限。
write 对文件而言,具有修改文件内容的权限;对目录来说,具有删除移动目录内文件的权限。
execute 对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限。
- 表示不具有该权限。
3.文件权限值得表示方法
r– 只读,用数字4表示
-w- 仅可写,用数字2表示
–x 仅可执行,用数字1表示
rw- 可读可写,用数字6表示
-wx 可写可执行,用数字3表示
r-x 可读可执行,用数字5表示
rwx 可读可写可执行,用数字7表示
— 无权限
实例:
(1)增加文件t.log所有用户可执行权限
chmod a+x t.log
(2)撤销原来所有的权限,然后使拥有者具有可读权限,并输出处理信息
chmod u=r t.log -c
(3)给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod 751 t.log -c(或者:chmod u=rwx,g=rx,o=x t.log -c)
(4)将test目录及其子目录所有文件添加可读权限
chmod u+r,g+r,o+r -R text/ -c
4.用户和群组
groupadd group_name 创建一个新用户组
groupdel group_name 删除一个用户组
groupmod -n new_group_name old_group_name 重命名一个用户组
useradd -c "Name Surname " -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 "admin" 用户组的用户
useradd user1 创建一个新用户
userdel -r user1 删除一个用户 ( '-r' 排除主目录)
usermod -c "User FTP" -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性
passwd 修改口令
passwd user1 修改一个用户的口令 (只允许root执行)
chage -E 2005-12-31 user1 设置用户口令的失效期限
pwck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的用户
grpck 检查 '/etc/passwd' 的文件格式和语法修正以及存在的群组
newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组
二.操作
1.cd用法
Linux下的相对路径/绝对路径
cd ..返回上一级
cd -返回最近访问文件
cd /data/log/进入根目录下某个文件
pwd输出当前的绝对路径
2.查看文件内容
cat/tac命令
格式:cat [选项] [文件]
功能:查看目标文件的内容。
常用选项:
-b 对非空输出行编号。
-n 对输出的所有行编号。
-s 不输出多行空行。
more命令
格式:more [选项] [文件]
功能:more命令显示文件内容,每次显示一屏。
常用选项:
-n 对输出的所有行编号。
-s 将文件中连续的空白行压缩成一个空白行显示。
-num 这个选项制定一个整数,表示一屏显示多少行。
q 退出more。
less命令
格式:less [参数] 文件
功能:less命令与more命令类似,但二者存在差别,less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。
常用选项:
-i 忽略搜索时的大小写。
-N 显示每行的行号。
head命令
格式:head [选项] [文件]
功能:head命令在屏幕上显示指定文件的开头若干行。
常用选项:
-c –bytes=[-]N 显示每个文件前面N字节。
-n –lines=[-]N 显示指定文件的前面N行。
tail命令
格式:tail [选项] [文件]
功能:用于显示指定文件的末尾,不指定文件时,作为输入信息进行处理。常用查看日志文件。
说明:tail命令从指定点开始将文件写到标注输出。使用tail命令的-f选项可以方便的查阅正在改变的日志文件,tail -f filename会把filename里最尾部的内容显示在屏幕上,并且不断刷新,使你看到最新的文件内容。
常用选项:
-f 循环读取。
-n <行数> 显示行数
我看服务器日志常用命令:tailf app.log|grep "user_id/关键词"
3.touch使用
格式touch [文件]创建文件
-a 或--time=atime或--time=access或--time=use 只更改存取时间
-c 或--no-create 不建立任何文档
-d 使用指定的日期时间,而非现在的时间
-f 此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题
-m 或--time=mtime或--time=modify 只更改变动时间
-r 把指定文档或目录的日期时间,统统设成和参考文档或目录的日期时间相同
-t 使用指定的日期时间,而非现在的时间
4.创建目录
mikdir [文件1][文件2]目录:指定要创建的目录列表,多个目录之间用空格隔开。
5. mv命令
格式:mv [选项] 源文件或目录 目标文件或目录
功能:mv命令对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
常用选项:
-f force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖。
-i 若目标文件(destination)已经存在时,就会询问是否覆盖。
6. 删除文件
rm [选项][文件]
7.find命令
格式:find pathname -options
功能:用于在文件树种查找文件,并作出相应的处理(可能访问磁盘)。
常用选项:
-name 按照文件名查找文件。
8.grep命令
格式:grep [选项] 搜寻字符串文件
功能:在文件中搜索字符串,将找到的行打印出来。
常用选项:
-i 忽略大小写的不同,所以大小写视为相同。
-n 顺便输出行号。
-v 反向选择,亦即显出没有‘搜寻字符串’内容的那一行。
9.zip/unzip命令
格式:zip 压缩文件.zip 目录或文件
功能:将目录或文件压缩成zip格式。
常用选项:
-r 递归处理,将指定目录下的所有文件和子目录一并处理。
10.tar命令
式:tar [-cxtzjvf] 文件与目录… 参数
能:打包/解包,不打开它,直接看内容。
c 建立一个压缩文件的参数指令(create的意思)。
x 解开一个压缩文件的参数指令。
t 查看tarfile里面的文件。
z 是否同时具有gzip的属性?亦即是否需要用gzip压缩?
j 是否同时具有bzip的属性?亦即是否需要用bzip压缩?
v 压缩的过程中显示文件。这个常用,不建议用在背景执行过程。
f 使用档名,请留意,在f之后要立即接档名,不要再加参数。
C 解压到指定目录。
实例:
(1)将文件全部打包成tar包
tar -cvf log.tar 1.log,2.log 或tar -cvf log.*
(2)将/etc下的所有文件及目录打包到指定目录,并使用gz压缩
tar -zcvf /tmp/etc.tar.gz /etc
(3)查看刚打包的文件内容(一定加z,因为是使用gzip压缩的)
tar -ztvf /tmp/etc.tar.gz
(4)要压缩打包/home, /etc ,但不要 /home/dmtsai
tar --exclude /home/dmtsai -zcvf myfile.tar.gz /home/* /etc
11.df命令
显示磁盘空间使用情况。获取硬盘被占用了多少空间,目前还剩下多少空间等信息,如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示
-a 全部文件系统列表
-h 以方便阅读的方式显示信息
-i 显示inode信息
-k 区块为1024字节
-l 只显示本地磁盘
-T 列出文件系统类型
实例:
(1)显示磁盘使用情况
df -l
(2)以易读方式列出所有文件系统及其类型
df -haT
12.date命令
显示或设定系统的日期与时间
命令参数:
-d<字符串> 显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串> 根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u 显示GMT。
%H 小时(00-23)
%I 小时(00-12)
%M 分钟(以00-59来表示)
%s 总秒数。起算时间为1970-01-01 00:00:00 UTC。
%S 秒(以本地的惯用法来表示)
%a 星期的缩写。
%A 星期的完整名称。
%d 日期(以01-31来表示)。
%D 日期(含年月日)。
%m 月份(以01-12来表示)。
%y 年份(以00-99来表示)。
%Y 年份(以四位数来表示)。
实例:
(1)显示下一天
date +%Y%m%d --date="+1 day" //显示下一天的日期
(2)-d参数使用
date -d "nov 22" 今年的 11 月 22 日是星期三
date -d '2 weeks' 2周后的日期
date -d 'next monday' (下周一的日期)
date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d
date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d
date -d last-month +%Y%m(上个月是几月)
date -d next-month +%Y%m(下个月是几月)
13.grep命令
强大的文本搜索命令,grep(Global Regular Expression Print)全局正则表达式搜索
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
命令格式:
grep [option] pattern file|dir
常用参数:
-A n --after-context显示匹配字符后n行
-B n --before-context显示匹配字符前n行
-C n --context 显示匹配字符前后n行
-c --count 计算符合样式的列数
-i 忽略大小写
-l 只列出文件内容符合指定的样式的文件名称
-f 从文件中读取关键词
-n 显示匹配内容的所在文件中行数
-R 递归查找文件夹
grep的规则表达式:
^ #锚定行的开始 如:'^grep'匹配所有以grep开头的行。
$ #锚定行的结束 如:'grep$'匹配所有以grep结尾的行。
. #匹配一个非换行符的字符 如:'gr.p'匹配gr后接一个任意字符,然后是p。
* #匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.* #一起用代表任意字符。
[] #匹配一个指定范围内的字符,如'[Gg]rep'匹配Grep和grep。
[^] #匹配一个不在指定范围内的字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。
\(..\) #标记匹配字符,如'\(love\)',love被标记为1。
\< #锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\> #锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\} #重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。
x\{m,\} #重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。
x\{m,n\} #重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。
\w #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。
\W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。
\b #单词锁定符,如: '\bgrep\b'只匹配grep。
实例:
(1)查找指定进程
ps -ef | grep svn
(2)查找指定进程个数
ps -ef | grep svn -c
(3)从文件中读取关键词
cat test1.txt | grep -f key.log
(4)从文件夹中递归查找以grep开头的行,并只列出文件
grep -lR '^grep' /tmp
(5)查找非x开关的行内容
grep '^[^x]' test.txt
(6)显示包含ed或者at字符的内容行
grep -E 'ed|at' test.txt