一、Linux操作系统
1.内核和发行版
- Linux内核
系统的心脏
是开源的 - Linux发行版
包括了桌面环境,办公套件,媒体,播放器等
常见发行版
- CentOS:国内使用最多的服务器系统,免费
- Ubuntu:乌邦图国内使用率第二,免费
- Redhat:红帽子,收费
面试题
你们公司服务器用的是什么系统?[1]
centos7
2.Linux的应用领域和主流操作系统
- 服务器操作系统
- Linux:免费,占有率高,安全且稳定
- Windows Server:收费,占有率比较低
- 嵌入式操作系统
Linux
- 免费
- Linux内核比较小,最小只有几百KB
- 嵌入式设备:只能机顶盒,智能手表,只能扫地机器人
个人界面操作系统 - Windows:用户群体很大
- macOS:
- Linux
移动端操作系统 - iOS
- Android:(基于Linux)
- 鸿蒙OS
二、远程连接
1.远程连接所需要素
- 协议
通信双方对数据传输控制的一组规则 - IP
- 端口
- 账号/密码
面试题
操作服务器常用什么软件?
我连接公司的服务器用的是xshell
如果需要向服务器传输文件的话,我用xftp
三、常用信息查看类命令
whoami
:查看用哪个用户在使用系统pwd
:查看当前所在文件夹(print work directory)date
:查看系统时间ls
:查看当前目录下的文件或者文件夹ifconfig
:查看内网IP地址eth0
这个设备是物理网卡ping
:一般用于监测当前计算机到目标计算机之间的网络是否通畅
ping IP地址
使用场景
- 检查服务器有没有联网时,检查网络延迟时,ping一下百度
- 检查另一台服务器有没有开机时,另一台服务器IP地址
history
:用于查看用户执行历史命令clear
:清屏free -h
:查看服务器内存信息df -h
:查看硬盘剩余空间du -h
:显示目录文件大小
面试题
free,df,du这些命令的作用?或者性能测试时,比较常用的服务器指标监控的命令?[3]
- 一般来说在性能测试时,我们需要监控服务器的资源使用情况
- 比如监控服务器内存使用情况,我就会用free -h
- 比如需要监控服务器硬盘剩余情况,我会用到df -h,当然有时也会用du -h去查看硬盘目录下的文件大小
Linux常用目录有哪些?
- 必须回答
1./
根目录
/root
管理员家目录/home/用户名
普通用户的家目录/bin
存放二进制可执行文件
- 可选,可以回答更好
/lib
存放库文件/tmp
存放临时文件/var
配置环境变量时经常会用
四、目录和文件管理
1.目录管理
mkdir
:创建一个新的目录(文件夹)cd
:切换目录
指令 | 说明 |
---|---|
cd/ | 切换到根目录 |
cd 目录 | 切换到指定目录 |
cd ~ | 切换到用户的家目录 |
cd … | 切换到上一级目录 |
ls
:列出当前目录下的内容ls 目录
: 表示列出具体目录下的内容ll
:表示的ls -l的缩写,指列出目录下详细信息rm
:删除文件或目录
- rm -rf 目录:表示删除对应目录和目录下的所有目录和文件
- rm -rf 目录/* 表示删除对应目录下的所有目录和文件,保留对应目录
- mv:移动或重命名,针对文件或目录
- 移动:
mv 源文件夹 目标文件夹/
例如mv a b/
表示把当前目录下的a目录放到当前目录下的b目录中 - 重命名:
mv源文件 目标文件夹
例如mv a c
表示在当前目录下把a重命名为c
-find
:查找文件按或目录 find 目录 -name 文件夹的名字
2.文件管理
touch
:创建文件
- 如果文件不存在,则创建一个空白文件
vim
:核心作用是编辑文本文件
- 需要按i进入编辑模式
- 编辑后,需要按ESC按键,退出编辑模式
- 输入
:wq!
保存并退出这个文件 - w表示写入
- q表示退出
- !表示强制
-
cat
:查看文件内容,只作为一次性展示,只适合查看较小的文本文件o -n
参数表示查看文件内容的同时显示行号
-
more
:适合查看较大的文本文件 -
less
:适合查看较大的文本文件 -
tail
:可以查看文件按末尾指定行数的内容- 使用场景:测试人员一遍操作软件,一边查看日志的动态输出,为了bug
tail -100f xx.log
代表动态查看日志的末尾100行
- 使用场景:测试人员一遍操作软件,一边查看日志的动态输出,为了bug
-
grep
:强大的文本搜索工具grep ni error xx.log
代表去搜某个日志文件中含有error信息的日志内容,并且显示行号,忽略大小写
-
cp
:复制文件或者目录*
cp 源文件/目录 目标文件/目录
cp x.txt xx.txt
代表在同目录下把x.txt复制一份,复制出来的文件叫xx.txt
面试题
less和more的区别是什么?[2]
-
在操作上基本区别不大
-
less加载速度上会比more更快,less不必读整个文件
-
阅读到结束时,more会自动退出阅读,less不会
-
相比more,less提供更加友好的搜索,高亮显示
3.压缩和解压缩
-
在不同操作系统中,常用的压缩包的格式是不一样的
-
Windows常用 zip,rar格式
-
mac常用zip格式
-
Linux常用 tar.gz格式
命令
-
tar -zxvf xx.tar.gz
解压缩 -
tar -zxvf xx.tar.gz -C 目标路径
解压缩文件到某个目录下 -
tar -zcvf xx.tar.gz 被压缩目录
创建压缩文件
4.小节
面试题
文件和目录的增删改查怎么操作?[2]
- 新建一个文件按会用到
touth
,新建目录会用到mkdir
- 删除文件或目录时,我经常用
rm -rf
- 修改文件内容我用vim,重命名目录我会用到
mv
- 如果是查找文件或目录我会用到
find
- 如果查看文件内容,命令比较多
cat/more/less/tail/grep
文件目录的删除命令是什么,有什么需要注意的地方[3]
- 删除命令是
rm
代表remove 删除的意思 - 需要特别注意的地方是删除是的路径填写
vim命令的使用方式[2]
- 一般我在编辑文本文件时会用到这个命令
- 我用vim打开文件后,会按-i 按键进入编辑模式,然后开始输入内容
- 完成输入后,按ESC退出编辑模式
- 最后通过
:wq!
完成保存并退出文件的操作
如何动态查看某个日志文件最后20行?[3]
- 通过tail命令来完成
- 具体操作时
tail -20f某日志文件
压缩和解压缩怎么操作[3]
-
压缩和解压缩都是通过
tar
命令来操作的 -
压缩用到的参数
-zcvf
-
解压缩用到的参数
-zxvf
怎么做到远程复制文件?[2]
- 远程复制文件需要考虑环境问题
- 如果是Windows上的文件复制到Linux上,使用xftp工具拖拽文件即可
- 如果是Linux 服务器之间的远程文件复制,使用
scp
命令即可
五、用户权限相关命令
1.用户和权限的基本概念
Linux用户管理中包括用户和用户组的管理
对用户组设置权限后,就不需要对每个用户去设置权限
通过ll命令查看目录下的所有文件和文件夹的详细信息
2.权限修改
chmod
,可以修改文件或目录所有权限(用户/用户组/其他用户所对应的权限)
chmod使用格式:chmod 权限 目标文件或目录
chmod 777 目标文件或目录
代表给用户/用户组/其他用户所有权限
面试题
如何修改文件或目录的权限?[3]
-
我们组织规划的比较好,一般不太需要修改权限
-
如果一定修改的话,那么
chmod 777
可以解决所有权限问题 -
比如我可以让管理员登录root用户去帮我执行权限修改的命令
-
或者我如果有root账号的话,我可以切换管理员去修改权限
3.超级用户
Linux 系统中的root账号通常对系统所有资源具有所有权限
但不推荐直接使用root账号登录
我们可以切换管理员账号
1. su
,是swith user 的缩写,表示切换用户
2. 切换用户时,需要输入密码,之后有一定的时效,超过时效则必须重新输入密码
六、进程管理
1.进程的概念
指的就是当前正在执行中的程序
-
可以基于理解为一个程序对应一个进程
命令 -
top 用于动态显示运行中的程序,并且可以暂时出系统总体运行相关信息
- 在性能测试过程中,可能会用到top ,来查看当前系统运行的资源占用情况
- 需要查看当前进程时,也会用到top命令
ps -ef
来查看进程详细信息
- 经常使用的格式是
ps -ef | grep要查的进程的相关信息
|
是管道,作用是一个命令的输出通过通道作为另一个命令的输入
kill -9
对应的进程ID ,作用是干掉某个进程
面试题
你了解top 命令嘛? 在什么时候会用到top命令[3]
top
用于动态显示运行中的进程,并且可以展示出系统总体运行相关信息- 在性能测试过程中没可能会用到
top
,来查看当前系统运行的资源占用情况 - 需要查看当前进程时,也会用到
top
命令
如何查看mysql进程[3]
- 我通过ps命令来实现
ps -ef | grep mysql
通过管道符匹配mysql关键字来筛选具体要查找的mysql进程
2.端口概念
端口就是计算机的某个服务与外界通讯交流的出口
查看端口的命令
netstat
用于显示linux 的端口信息
netstat -plunt | grep 对应要找的端口号
面试题
如何查看22端口?[3]
我是通过netstat
命令来实现的,然后执行netstat -plunt | grep 22