写点什么

2022-Java 后端工程师必会知识点 -(Lunix)

作者:自然
  • 2022 年 8 月 02 日
  • 本文字数:3529 字

    阅读完需:约 12 分钟

前言

文本已收录至我的 GitHub 仓库,欢迎 Star:https://github.com/bin392328206/six-finger

种一棵树最好的时间是十年前,其次是现在

Tips

面试指南系列,很多情况下不会去深挖细节,是小六六以被面试者的角色去回顾知识的一种方式,所以我默认大部分的东西,作为面试官的你,肯定是懂的。


https://www.processon.com/view/link/600ed9e9637689349038b0e4


上面的是脑图地址

叨絮

其实把 对 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”,即作为磁盘的分区工具。进行硬盘分区从实质上说就是对硬盘的一种格式化, 用一个形象的比喻,分区就好比在一张白纸上画一个大方框,而格式化好比在方框里打上格子。


乞丐并不会妒忌百万富翁,但是他肯定会妒忌收入更高的乞丐


我是小六六,欢迎大家点赞 转发 一键三连,我们下篇再见

用户头像

自然

关注

还未添加个人签名 2020.03.01 加入

小六六,目前负责营收超百亿的支付中台

评论

发布
暂无评论
2022-Java后端工程师必会知识点-(Lunix)_Lniux_自然_InfoQ写作社区