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

简介: 前言文本已收录至我的GitHub仓库,欢迎Star:github.com/bin39232820…种一棵树最好的时间是十年前,其次是现在

Tips


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

www.processon.com/view/link/6…

上面的是脑图地址


叨絮


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

相关文章
|
2月前
|
安全 Java 编译器
揭秘JAVA深渊:那些让你头大的最晦涩知识点,从泛型迷思到并发陷阱,你敢挑战吗?
【8月更文挑战第22天】Java中的难点常隐藏在其高级特性中,如泛型与类型擦除、并发编程中的内存可见性及指令重排,以及反射与动态代理等。这些特性虽强大却也晦涩,要求开发者深入理解JVM运作机制及计算机底层细节。例如,泛型在编译时检查类型以增强安全性,但在运行时因类型擦除而丢失类型信息,可能导致类型安全问题。并发编程中,内存可见性和指令重排对同步机制提出更高要求,不当处理会导致数据不一致。反射与动态代理虽提供运行时行为定制能力,但也增加了复杂度和性能开销。掌握这些知识需深厚的技术底蕴和实践经验。
54 2
|
19天前
|
架构师 前端开发 Java
Java开发工程师的职业规划应该是什么样的?
Java开发工程师的职业规划涵盖多个阶段,包括初入行业(0-1年)、技能提升(1-3年)、技术专家(3-5年)及管理或专家路线选择(5年以上)。各阶段设定了明确的技能要求与职业目标,从掌握Java基础、常用框架到深入研究高级技术、微服务架构乃至担任管理职务或成为技术专家。通过持续学习与实践,结合个人兴趣,Java工程师可在技术或管理领域找到合适的发展方向,最终实现职业成功。
241 83
|
19天前
|
设计模式 架构师 Java
Java开发工程师转架构师需要学习什么
Java开发工程师转型为架构师需掌握多项技能:精通Java及框架、数据库与分布式系统;熟悉设计模式与架构模式;积累项目经验;提升沟通与领导力;持续学习新技术;培养系统设计与抽象能力;了解中间件及开发工具;并注重个人特质与职业发展。具体路径应结合个人目标与实际情况制定。
42 18
|
18天前
|
人工智能 前端开发 Java
Java开发工程师转哪个行业比较好?
Java开发工程师转哪个行业比较好?
73 2
|
2月前
|
人工智能 自然语言处理 Java
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
文章介绍了Spring AI,这是Spring团队开发的新组件,旨在为Java开发者提供易于集成的人工智能API,包括机器学习、自然语言处理和图像识别等功能,并通过实际代码示例展示了如何快速集成和使用这些AI技术。
Spring AI,Spring团队开发的新组件,Java工程师快来一起体验吧
|
2月前
|
负载均衡 Java 应用服务中间件
谁说后端不需要懂的-Nginx知识点
先赞后看,南哥助你Java进阶一大半他叫,一个俄罗斯程序员。就是他,着手开发了大名鼎鼎处理高并发、高负载网络请求的Nginx,同时他在2004年把Nginx作为开源软件发布。大家好,我是南哥。一个Java学习与进阶的领路人,相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
谁说后端不需要懂的-Nginx知识点
|
18天前
|
小程序 前端开发 JavaScript
Java开发工程师转小程序开发的前景如何?
Java开发工程师转小程序开发的前景如何?
27 0
|
2月前
|
前端开发 IDE Java
"揭秘前端转Java的秘径:SpringBoot Web极速入门,掌握分层解耦艺术,让你的后端代码飞起来,你敢来挑战吗?"
【8月更文挑战第19天】面向前端开发者介绍Spring Boot后端开发,通过简化Spring应用搭建,快速实现Web应用。本文以创建“Hello World”应用为例,展示项目基本结构与运行方式。进而深入探讨三层架构(Controller、Service、DAO)下的分层解耦概念,通过员工信息管理示例,演示各层如何协作及依赖注入的使用,以此提升代码灵活性与可维护性。
39 2
|
2月前
|
消息中间件 缓存 Java
如何优化大型Java后端系统的性能:从代码到架构
当面对大型Java后端系统时,性能优化不仅仅是简单地提高代码效率或硬件资源的投入,而是涉及到多层次的技术策略。本篇文章将从代码层面的优化到系统架构的调整,详细探讨如何通过多种方式来提升Java后端系统的性能。通过对常见问题的深入分析和实际案例的分享,我们将探索有效的性能优化策略,帮助开发者构建更高效、更可靠的后端系统。
|
2月前
|
前端开发 JavaScript Java
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
【Azure 应用服务】App Service For Windows 中如何设置代理实现前端静态文件和后端Java Spring Boot Jar包
下一篇
无影云桌面