01.背景
作为一名测试工程师,Linux 是必须要掌握的一项技能。
因为大部分的互联网公司的项目都是搭建和部署在 Linux 服务器上的,所以测试就算不去负责搭建和维护测试环境,也需要在测试过程中去服务器那边定位测试中的问题。
所以,Linux 操作系统及命令是测试必备的技能;今天我们就给大家罗列一下 Linux 常用命令的使用及场景!
02.什么是 Linux 操作系统
Linux 是一套开源免费使用,支持多用户、多任务、支持多线程和多个核心 CPU 的操作系统。
我们现在市面上广泛使用的是 Linux 的发行版,所谓的 Linux 的发行版就是将 Linux(内核)与应用软件做一个打包,可供用户安装和配置。
目前市面上比较知名的发行版有:Ubuntu,RedHat,CentOS 等等。
03.Linux 和 windows 系统区别
Linux 和 windows 同作为操作系统,他们主要的区别有哪些呢?详见以下的表格
04.Linux 的目录结构
要更好的学好 Linux 操作性通,我们要先了解一下 Linux 的目录结构。
Linux 的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根主目录,下层是各种各样的子目录和文件。
理解根目录底下的相关 Linux 文件目录是非常重要的。
05.Linux 常用的命令
了解了 Linux 操作系统和目录结构之后,接下来就是要重点学习里面的一些常用命令了!
系统命令
uname:可显示电脑以及操作系统的相关信息
uname -a :显示主机名、内核等系统信息
hostname:显示系统主机名
hostname -i :显示系统 IP 地址
cal:显示本月的日历
date:显示当前时间
uptime:显示运行时间
whereis xxx :显示 xxx 程序可能的位置
which xxx:显示 xxx 命令对应执行的程序
硬件使用相关命令
cat /proc/cpuinfo : 显示 CPU 信息
cat /proc/meminfo: 显示内存信息
free :显示系统内存的使用情况,包括物理内存、交换内存(swap)和内核缓冲区内存等 =kB
free -m:-m 参数表示以 MB 为单位显示内存使用情况
man xxx :显示 xxx 命令的帮助手册信息
比如:man ps,就会显示 ps 命令的帮助文档:
磁盘使用情况 (disk free)
df :显示磁盘空间信息
df -h:以容易阅读的方式显示磁盘使用情况
df -i:显示文件系统上的空闲索引节点(inode)
其中,索引节点我们来解释一下,Inode 译成中文就是索引节点,每个存储设备(例如硬盘)或存储设备的分区被格式化为文件系统后,应该有两部份,一部份是 inode,另一部份是 Block,Block 是用来存储数据用的。
而 inode 呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode 为每个文件进行信息索引,所以就有了 inode 的数值。操作系统根据指令,能通过 inode 值最快的找到相对应的文件。
而服务器的 Block 计算还有剩余,但 inode 已经用满时,在创建新目录或文件时,系统仍然提示磁盘空间不足。
此时,我们就可以删除文件占用多的目录来解决这个问题。
磁盘使用情况 (disk usage)
du:显示目录和文件的大小,逐级进入指定目录的每一个子目录并显示该目录占用文件系统数据块(1024 字节)的情况。若没有给出指定目录,则对当前目录进行统计。
du -sh:-s 参数是求得总大小的意思,-h 参数以容易阅读的方式显示文件的大小
fdisk -l:显示磁盘和分区信息
findmnt:显示当前挂载的文件系统列表,以树状的格式显示
mount device-path mount-point:挂载设备到目录 (光盘 iso,移动硬盘,U 盘,NFS 文件共享)
以上两个命令都是磁盘使用情况的命令,那么 du 和 df 有什么区别呢?我们来简单的解释一下。
一个文件创建,就新生成了一个 inode 节点,且 inode 节点的引用计数为 1。当文件被一个进程打开,则在内存中缓冲建立此 inode 节点缓存,且其引用计数加 1。一个文件可以被多次打开,创建多个文件描述符,但对应的 inode 节点只有一个,对应的磁盘存储只有一个,只是引用计数每打开一次加 1。
当文件被 rm,目录项被删除,如果其对应的 inode 节点的引用计数为 0,则删除对应的 inode 节点,其对应磁盘可被再申请;但如果此文件被其他进程打开,则其对应的 inode 节点的引用计数不为 0,则不会删除对应的 inode 节点,其对应磁盘不能被再申请;只有当前文件被所有使用进程 close 后,系统才会删除对应的 inode 节点,其对应磁盘可被再申请。
一个被某进程打开的文件 被 rm 后,其目录项被删除了,在 du 命令下是不能被统计到,而其 inode 没有被删除,在 df 命令下是可以被统计到的,这就是在 du 和 df 存在差别的原因。
文件目录相关命令
ls 命令
ls :显示当前工作目录所含文件及子目录 --list
ls -al:-l (简写成 ll)–详细信息;-a 显示普通文件和隐藏文件的详细信息
pwd 命令
显示当前工作目录的绝对路径 ,全称是 print working directory
cd 命令
cd xxx :转到 xxx 目录 ,全称是 change directory
cd … : 转到上一级目录
cd :转到当前用户的家目录 ,效果等同于 cd ~
mkdir 命令
mkdir dir1:创建 dir1 目录,全称是 make directory
rm 命令
rm file1:删除 file1 文件
rm -r dir1:删除 dir1 目录及内含文件
rm -f file1: 强制删除 file1 文件
rm -rf dir1: 强制删除 dir1 目录及内含文件
cp 命令
cp file1 file2:复制 file1 并命名为 file2,若 file2 存在则内容覆盖(需要确认)
cp -r dir1 dir2: 递归拷贝 dir1 并命令为 dir2,若 dir2 存在则复制 dir1 目录中文件到 dir2
mv 命令
mv file1 file2: 将 file1 重命名为 file2,若 file2 存在则内容覆盖
软连接 ln 命令
ln -s file1 link:创建 file1 文件的软链接 —目标目录/文件 软连接地址
touch 命令
touch file1:file1 不存在时候创建 file1;若存在,则修改文件的时间属性为当前时间
查看文件命令
cat file1 > file2 : 将 file1 的文件内容输入到 file2 中
more file1:按页查看 file1 文件内容,从前向后翻看文件 (空格-一行行, 空白键-一页页)
less file1:按页查看 file1 文件内容,可往前往后翻看文件 (上下键)-q 退出
head -n 5 file1:显示 file1 文件的前 5 行 == 默认前 10 行
tail -n 5 file1:显示 file1 文件的后 5 行 === 默认后 10 行
tail -f file1:实时显示 file1 文件的最新增加内容 === 查看动态更新的日志 , ctrl + C 退出
wc /path/file: 输出 file 文件的行数,单词书和字节数