Tips
面试指南系列,很多情况下不会去深挖细节,是小六六以被面试者的角色去回顾知识的一种方式,所以我默认大部分的东西,作为面试官的你,肯定是懂的。
上面的是脑图地址
叨絮
其实把 对Lunix也不算太熟,但是也不是特别熟悉,刚好小六六和大家一起复习复习,还有Docker的基本知识,因为随着服务治理的盛行,我们这些CRUD仔,离底层越来越远了,只能靠自己去补这些知识了,然后我发现公司的同学对Lunix这块还是比较牛的,因为以前都是可视化操作,现在全部改成了命令。哈哈,一起加油呀!
说说什么是Linux?
Linux,通常被认为是一套操作系统,实际上它是一系列Linux内核基础上开发的操作系统的总称。日常所见比较多的Ubuntu、企业常用的centos其实都是Linux系统,包括我国自己的中标麒麟系统其实也是基于Linux内核搞出来的,都可以视为Linux系统大家族的成员。
说说它的目录结构
Linux 文件系统的结构层次鲜明,就像一棵倒立的树,最顶层是其根目录:
常见目录说明:
- /bin:存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里;
- /etc:存放系统管理和配置文件;
- /home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示;
- /usr:用于存放系统应用程序;
- /opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里;
- /proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
- /root:超级用户(系统管理员)的主目录(特权阶级o);
- /sbin: 存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等;
- /dev:用于存放设备文件;
- /mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
- /boot:存放用于系统引导时使用的各种文件;
- /lib:存放着和系统运行相关的库文件 ;
- /tmp:用于存放各种临时文件,是公用的临时文件存储点;
- /var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
- /lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里。
聊聊PS命令
Linux ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。 其实这个我们用的蛮多的,比如下面这个
ps -ef | grep 进程关键字
我想这个命令大家都用过,这边带大家一起来看看你
例如显示 php 的进程:
我们可以找到对应的pid 然后可以ps pid
其实ps -ef的意思是 显示所有进程信息,连同命令行,这个我们用的最多了
怎么查看当前路径的命令,怎么清屏?怎么退出当前命令?
- 查看当前路径: pwd
- 清屏: clear
- 退出当前命令: ctrl+c 彻底退出
目录创建用什么命令?创建文件用什么命令?复制文件用什么命令?
- 创建目录: mkdir
- 创建文件:典型的如 touch,vi 也可以创建文件,其实只要向一个不存在的文件输出,都会创建文件
- 复制文件: cp 7. 文件权限修改用什么命令?格式是怎么样的?
- 文件权限修改: chmod
查看文件内容有哪些命令可以使用?
- vi 文件名 #编辑方式查看,可修改
- cat 文件名 #显示全部文件内容
- more 文件名 #分页显示文件内容
- less 文件名 #与 more 相似,更好的是可以往前翻页
- tail 文件名 #仅查看尾部,还可以指定行数
- head 文件名 #仅查看头部,还可以指定行数
Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
STAT: 该进程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 静止状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
怎么使一个命令在后台运行? 哪个命令专门用来查看后台任务? 终止进程用什么命令? 带什么参数?
- 一般都是使用 & 在命令结尾来让程序自动运行。(命令后可以不追加空格)
- job -l
- kill-9 pid
搜索文件用什么命令? 格式是怎么样的?
- find <指定目录> <指定条件> <指定动作>
- whereis 加参数与文件名
- locate 只加文件名
- find 直接搜索磁盘,较慢。
- find / -name "string*"
使用什么命令查看用过的命令列表?
- history
使用什么命令查看网络是否连通? 能详细说说吗?
netstat 是一个告诉我们系统中所有 tcp/udp/unix socket 连接状态的命令行工具。它会列出所有已经连接或者等待连接状态的连接。 该工具在识别某个应用监听哪个端口时特别有用,我们也能用它来判断某个应用是否正常的在监听某个端口。
检查所有的连接
netstat -a 这会显示系统所有的 tcp、udp 以及 unix 连接。
检查所有的 tcp/udp/unix socket 连接
- 使用 t选项只列出 tcp 连接,
$ netstat -at
- 类似的,使用u 选项只列出udp 连接,
$ netstat -au
- 使用 x 选项只列出 Unix socket 连接,
$ netstat -ax
同时列出进程 ID/进程名称
- 使用 p选项可以在列出连接的同时也显示 PID 或者进程名称,而且它还能与其他选项连用,
$ netstat -ap
只输出监听端口
netstat -l
- 过滤出某个端口
- 与grep 连用来过滤出某个端口的连接,
$ netstat -anp | grep 3306
wget命令
wget命令用于在终端命令行里下载网络文件,英文全称为:“web get”,语法格式为:“wget [参数] 网址”。
top命令
top命令用于动态地监视进程活动及系统负载等信息,输入后回车执行即可。
前5行的意义
- 第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。
- 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。
- 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“99.9 id”意味着有99.9%的CPU处理器资源处于空闲。
- 第4行:物理内存总量、内存空闲量、内存使用量、作为内核缓存的内存量。
- 第5行:虚拟内存总量、虚拟内存空闲量、虚拟内存使用量、已被提前加载的内存量。
locate命令
locate命令用于按照名称快速搜索文件所对应的位置,语法格式为:“locate 文件名称”。
使用find命令进行全盘搜索虽然更准确,但是效率有点低,如果仅仅是想找一些常见的、又知道大概名称的文件,不如试试locate命令的功能。locate命令是将一些常用的目录做成一个索引库文件,一般是叫做“/var/lib/mlocate/mlocate.db”,后续再搜索文件的时候就是根据这个数据库中所包含的路径进行查找,速度会快很多~
which命令
which命令用于按照指定名称快速搜索二进制程序(命令)所对应的位置,语法格式为:“which 命令名称”。
which命令是在PATH变量所指定的路径中,按照指定条件搜索命令所在的路径。也就是说如果我们既不关心同名文件(find与locate)、也不关心命令所对应的源代码和帮助文件(whereis),仅仅是想找到命令本身所在的路径,那么这个命令太适合了。那查找下whereis和which命令所对应的路径吧。
grep命令
这个也是用的很多的一个命令,grep是通用正则表达式解析器(General Regular Expression Parser)的缩写。
grep命令的功能是分析一行信息,若其中有我们所需要的信息,就将其拿出来。需要注意的是它以整行为单位进行数据的选取。
语法:grep [-acinv] [--color=auto] '要查找的字符串' filename
- a:将binary文件以text文件的方式查找数据
- c:计算找到查找字符串的次数
- i:忽略大小写的不同
- n:输出行号
- v:反向选择,显示出没有查找字符串的内容的行
- -color-auto:将找到的字符串以特殊颜色显示
grep [-A] [-B] [--color=auto]'查找字符串' filename'
- A:后面可加数字,为after的意思,除了列出该行以外,后续的n行也列出来。
- B:后面可加数字,为before的意思,除了列出该行以外,前面的n行也列出。
磁盘相关命令
df命令 – 显示磁盘空间使用情况
df命令的英文全称即“Disk Free”,顾名思义功能是用于显示系统上可使用的磁盘空间。默认显示单位为KB,建议使用“df -h”的参数组合,根据磁盘容量自动变换合适的单位,更利于阅读。
日常普遍用该命令可以查看磁盘被占用了多少空间、还剩多少空间等信息。
fdisk命令 – 磁盘分区
fdisk命令的英文全称是“Partition table manipulator for Linux”,即作为磁盘的分区工具。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。