Linux理论基础知识
1.1 测试人员为什么学习linux
对于软件测试人员来说,我们测试的任何产品都是基于操作系统。比如我们每天都在使用的QQ软件,它有windows、ios、Android、Mac OS等版本,需要把QQ安装在各个平台上,才能进行相应的测试。因此,熟练使用这些操作系统和掌握一系诶操作系统对的基本知识应该是每个测试工程师必须掌握的基本功。
目前市面主流的操作系统有windows、unix、linux等,而linux作为很多软件应用的后台服务器部署所采用的操作系统,也是当下应用最多的服务器端操作系统。熟练使用linux 系统,这样的词汇经常出现在测试岗位的要求和求职人员的技能描述中。而在测试人员这个群体中,真正能熟练运用linux操作系统的、哪怕只是对常用命令比较熟悉,也是比较稀缺的!因此测试人员学习linux ,不仅可以提高测试深度,也可以增加自己的核心竞争力、拓宽自己的技能栈,让自己的测试能力有更深层次的提高。
测试人员学习linux 可以做什么呢?作为初学者,搭建测试环境应该作为学习首要目的。
1.2 什么是linux
linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多中性,大型甚至是巨型项目都在使用linux。
linux 内核:redhat、红旗linux、ubuntu、suse、fedora,
它们的内核都是一样的(linux其实是一个统称)
linux 操作系统的优点很多:开源免费、支持多线程、支持多用户、安全性好、对内存和文件管理优越、适合小内核程序的嵌入系统等
linux 的缺点是使用命令行操作,因此操作相对困难,但正是这种字符级命令行的操作,占用的系统资源会更少,也减少了被攻击、出错的可能性
1.3 linux 和Windows的不同
Windows 与linux 的比较 |
||
windows |
linux |
|
收费 |
收费 |
免费 |
开源性 |
非开源 |
开源 |
软件资源 |
软件资源丰富,但是可能大部分都需要购买授权 |
大部分软件都可以自由获取,同样功能的软件选择较少 |
技术支持 |
主要图形化界面 |
主要是字符模式,命令行界面 |
1.4 如何学习linux
测试人员学习linux 不一定非常的系统性,因为精通linux那是运维人员的工作职责,作为测试人员,学习的首要目的应该是够熟练使用常用命令、熟练搭建测试环境。因此,不断的练习命令,每个常用命令都应该去多敲几遍,验证输入命令后的反馈,最后熟能生巧,慢慢地就能把常用命令记住了。
所以,如何学习linux?一个字:练!
2. linux入门须知
2.1 文件、目录
13.2.2linux文件
linux 所有的内容都是以文件形式保存,包括硬件(一切内容皆文件),并且linux不靠扩展名区分文件类型。
linux有多种基本类型,常见的有如下三种:
普通文件 |
如文本文件、shell脚本、java源代码、c语言源代码等,可以使用文件操作命令如vi、cat、more、less来进行管理 |
目录文件 |
就是目录,相当于windows上的文件夹,包括目录名、子目录名,可以用ls列出目录的内容 |
链接文件 |
类似windows下面的快捷方式 |
2.3 linux 目录
linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录“/” ,然后在此目录下再创建其他的目录。
在linux 系统中,所有的文件与目录都是根目录 / 开始的,以 / 开头的目录成为绝对目录,不以根目录 / 开头的称为相对目录。
linux 系统文件目录整理如下
/ |
linux 文件系统的上层根目录,文化系统树的最顶端,称为根目录或顶级目录 |
root |
存放root 用户的相关文件 |
home |
系统预设的使用者的家目录(宿主目录),存放普通用户的相关文件 |
bin |
存放所有用户都可以使用常用命令的目录 |
sbin |
系统管理相关的二进制文件存放目录,要具有一定权限才可以使用其中命令 |
etc |
存放各种配置文件 |
var |
存放经常变化的文件,如网络连接的sock文件 |
boot |
启动目录,存放引导系统启动的相关文件 |
usr |
Unix System Resource:安装软件的默认目录,相当于windows下的program files文件夹 |
dev |
设备文件保存目录 |
lib |
系统库保存目录 |
mnt |
默认挂载光驱和软驱的目录 |
opt |
额外所安装的应用程序目录,有些软件包我们可以将它安装在该目录中 |
proc |
直接写入内存的,不能直接操作,保存的是内存的挂载点 |
2.4 常用快捷键
tab |
自动的补全 |
ctrl+c |
强制终止当前命令执行,即杀死当前进程 |
ctrl+l |
清屏 |
ctrl+z |
把命令放入到后台 |
ctrl+r |
在历史命令中搜索 |
ctrl+a |
光标移动到命令行首 |
ctrl+e |
光标移动到命令行尾 |
ctrl+u |
从光标所在位置删除到行首 |
ctrl+b |
同键盘左键 |
ctrl+f |
同键盘右键 |
3. 常用命令
用户登录linux后,可以在linux 的命令提示符后面输入命令与系统进行交互。
如下所示:
[root@localhost~]#
其中:
root:当前登录用户
localhost:主机名
~:当前所在目录,~ 表示家目录
#:超级用户的提示符,如果是普通用户的提示符是$
linux的命令格式: 命令 [选项] [参数]
如:cp dir1 dir2 ,cp是拷贝命令,dir1 和dir2是参数,表示把dir1拷贝到dir2中
注意:
个别命令使用不遵守此格式
当有多个命令时,可以写在一起
简化选项与完整选项,如 -a 等于 -all
linux 是严格区分大小写,一般命令没有特殊说明,都是小写
linux命令和参数之间是有空格的,请不要像英文字母一样,全部挤在一块
下面就linux 使用最频繁、最常用的命令进行详述。
4. 磁盘管理
4.1 cd
cd ,切换目录(chang directory)
cd 命令可以让登录用在不同的目录间切换
语法 :cd [目标目录]
下面是一些常用的目录切换
cd ~ |
进入当前用户的家目录 |
cd |
进入当前用户的家目录 |
cd - |
进入上次目录 |
cd .. |
进入上一级目录 |
cd . |
进入当前目录 |
cd / |
进入根目录 |
相对路径与绝对路径的区别
cd 相对路径:只要开头不是 / 就是属于相对路径的写法,会参照当前所在目录,通过该相对路径进行查找
cd 绝对路径:绝对路径是由根目录 / 开头的文件名或目录名称。如:/home/data/package,会从根目录(即顶级目录/)开始,一级一级的去进行递归查找,通过cd 命令采用绝对路径e方式,只要路径是正确的,可以在任何目录下进入指定的该目录。
4.2 ls
ls,列出目录内容
语法:ls [目标目录]
ls 指令可列出目录内容,包括文件和子目录的名称
-a |
显示目录下的所有文件,包括隐藏文件 |
-l |
显示长列表格式,简写为ll |
-d |
查看目录属性 |
-h |
人性化显示文件大小 |
-i |
显示inode |
工作中使用习惯一般是cd 命令切换到某个目录后,直接输入ls 查看当前目录的内容,类似于在windows系统上点开某个文件夹。
另外一个比较常用的写法是ll ,ll 是 ls -l 的缩写,可以以列表格式列出目录内容,如:
下面package 各个属性的描述:
drwxxr-xr-x |
通过10个字符可以确定该文件的类型以及不同用户针对该文件的 |
2 |
连接的文件数 |
root |
表示用户 |
root |
表示用户所在的组 |
4096 |
表示文件大小 |
6月23 05:28 |
表示最后修改日期 |
package |
表示文件名 |
每行最前面10个字符可以确定该文件的类型以及不同用户针对该文件的权限
第一个字符表示类型:文件(-)、目录(d),链接(l)
其余字符每3个一组(rwx)、读(r)、写(w)、执行(x)
第一组 rwx:文件所有者的权限是读、写和执行
第二组 r-x:与文件所有者同一组的用户的权限是读和执行,没有写的权限
第三组 r-x:不与文件所有者同组的其他用户的权限是读和执行,没有写的权限
读、写、执行用数字表示分别为 r=4 ,w=2,x=1。
rwx =4+2+1=7
r-x=4+0+1=5
r-x=4+0+1=5
所以该文件针对不同用户的权限可以用数值755表示
4.3 pwd
pwd,显示工作目录(print working directory)
执行pwd命令可以获得当前所在的工作目录的绝对路径。
4.4 mkdir
mkdir,建立目录(make directory)
-p:递归创建目录,即如果建立目录的上层目录没有创建,会一并建立上层目录
4.5 rmdir
删除空目录,这条命令实际操作中用得很少,我们一般用rm
注意 rmdir 命令只能删除空目录,如果要删除目录下所有文件可用:rm -rf 路径
4.6 df
df,显示磁盘的相关信息,如文件系统的使用情况
df [-ahikHTm] [目录或文件名]
-a :列出所有的文件系统
-k:以KB为单位显示各个文件系统
-m:以MB为单位显示各个文件系统
-h:以GB、MB、KB等格式显示
-H:以M =1000K取代 M=1024K的计算方式
-T:连同该分区的文件系统名(例如 ext3 )一起列出
-i:不用硬盘容量,而以inode 的数量来显示
df [路径],查看某个目录是在哪个分区,并显示其它信息
注意df、du两个命令对于测试人员来说应用频率并不高。
4.7 du
du,显示目录或者文件的大小,du 命令显示指定的目录或文件占用的磁盘空间
语法:du [-ahskm] [文件或目录名称]
-a : 列出所有的文件与目录容量
-h:以人们易读的容量格式(G/M)显示
-s: 显示总计,不列出每个目录占用的容量
-k: 以KB列出容量显示
-m:以MB列出容量显示
5. 文件管理
5.1 touch
touch,改变文件或者目录时间,也可以建立空文档
touch [-acdmt] 文件名
-a : 修改access time
-c : 修改时间,而不建立文件
-d: 后面可以接日期,也可以使用 --date="日期或时间"
-m:修改 mtime
-t:后面可以接时间,格式为[YYMMDDhhmm]
5.2 cp
cp 复制命令
cp 指令用于复制文件或者目录,参数必须指定两个或者两个以上的文件或目录,并且最后一个路径必须是已经存在的目录,可以把之前指定的文件或者目录复制到该目录中。
常见参数:
-a 该选项通常在拷贝目录时使用。它保留链接、文件属性,并递归地拷贝目录。
-p 复制源文件的内容,并且会复制修改时间和访问权限到新文件中
-r 若给出的源文件是一目录文件,此时cp 将递归复制该目录下所有的子目录和文件。此时目标文件必须为一个目录名
如:cp -r dir1 dir2 dir3,递归复制,把dir1、dir2 复制到dir3目录中
5.3 mv
mv , 移动和重命名
mv 命令可以移动文件或者目录,也可以更改文件或目录名称
语法:
mv [源文件或者目录] [目标文件或目录]
如 mv dir1 dir2 :把dir1 移动到 dir2目录中
mv /home/hello /home/world; 把/home 目录下的hello 文件重命名为world
5.4 rm
rm ,删除文件和目录
rm 命令可以删除文件或目录,使用参数“-r” 可以删除目录,否则默认是删除文件
rm -rf * ,删除所有内容,包含目录和文件
其中 -r 表示递归,-f 表示强制
5.5 cat
cat ,显示文件内容,将文件内容打印到标准输出设备上
语法 :cat fileName
常用参数:
-n : 对输出的行数进行编号
5.6 head
查看纯文本文档的前N行,写到标准输出
head -n 20 查看文本文件前20行
5.7 tail
查看纯文本文档的后N行,写到标准输出
tail -n 20 查看文本文档后20行
tail -f error.log 不断刷新,实时查看文件内容改变
5.8 more、less
more ,显示文件内容带分页
语法:more fileName
more命令类似cat ,以一页一页形式显示,方便阅读,按空格键往后翻下一页,按b键(或 ctrl + pag up 上翻) 往前翻一页
more + 10 fileName : 从第10 行显示fileName 内容
less ,显示文件内容带分页
less 与 more 类似,使用less 可以随意浏览文件
5.9 echo
echo:输出字符串
语法:echo [-ne] [字符串] 或 echo [--help][--version]
echo会将输入的字符串送往标准输出
6. 系统设置
6.1 alias
alias:有些命令很长,或者名字显得别扭,可以给命令起一个别名
命令: alias :显示系统当前定义的所有alias
【案例】 alias cp = ‘cp -i’
【案例】alias li = ‘ls -l -color=tty’
用户可利用alias , 自定指令的别名。若仅输入alias ,则可列出目前所有的别名设置。alias的效力仅基于该次登入的操作。若要每次登入是即自动设置好别名,可在/etc/profile 或自己的 ~/.bashrc 中设定指令的别名。
还有,如果你想给每一位用户都生效的别名,请把 alias la = 'ls -al' 一行加在/etc/bashrc最后面
bashrc 是环境变量的配置文件 /etc/bashrc 和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用,如果你想给每一位用户都生效的别名,请把alias la = 'ls -al' 一行加在 /etc/bashrc 最后面,bashrc是环境变量的配置文件 /etc/bashrc 和~/.bashrc 区别就在于一个是设置给全系统一个是设置给单用户使用
命令的执行顺序:
1: 执行用绝对路径和相对路径的命令
2:执行别名
3:执行Bash的内部命令
4:执行按照¥PATH 环境变量定义的目录找到第一个命令
6.2 alias
unalias:删除别名
语法:unalias 别名
6.3 export
export, 设置和显示环境变量
export 命令可新增、修改和删除环境变量
export -p :列出所有的shell 赋予程序的环境变量。
6.4 man
man [command] , 帮助,类似与dos中的help ;man实际为manual(操作说明),
man的级别:
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件得帮助,主要是 /dev 目录下的文件
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其它杂项的帮助
8:查看系统管理员可用命令的帮助
9:查看和内核相关文件得帮助
查看命令拥有那个级别的帮助:
man -f 命令,相当于whats命令
eg:man -5 passwd
man -4 null
man -8 ifconfig
查看和命令相关的所有帮助
man -k命令,相当于 apropos 命令
6.5 netstat
netstat -ntpl:查看端口占用情况