我摊牌了,大厂面试Linux就这5个问题
说真的,这就是《我想进大厂》系列第八篇,但是Linux的问题确实很少,就这样,强行编几个没有营养的问题也没啥意义。
1.CPU负载和CPU利用率的区别是什么?
首先,我们可以通过uptime
,w
或者top
命令看到CPU的平均负载。
Load Average :负载的3个数字,比如上图的4.86,5.28,5.00,分别代表系统在过去的1分钟,5分钟,15分钟内的系统平均负载。他代表的是当前系统正在运行的和处于等待运行的进程数之和。也指的是处于可运行状态和不可中断状态的平均进程数。
如果单核CPU的话,负载达到1就代表CPU已经达到满负荷的状态了,超过1,后面的进行就需要排队等待处理了。
如果是是多核多CPU的话,假设现在服务器是2个CPU,每个CPU2个核,那么总负载不超过4都没什么问题。
怎么查看CPU有多少核呢?
通过命令cat /proc/cpuinfo | grep "model name"
查看CPU的情况。
通过cat /proc/cpuinfo | grep "cpu cores"
查看CPU的核数
CPU 利用率:和负载不同,CPU利用率指的是当前正在运行的进程实时占用CPU的百分比,他是对一段时间内CPU使用状况的统计。
我举个栗子:
假设你们公司厕所有1个坑位,有一个人占了坑位,这时候负载就是1,如果还有一个人在排队,那么负载就是2。
如果在1个小时内,A上厕所花了10分钟,B上厕所花了20分钟,剩下30分钟厕所都没人使用,那么这一个小时内利用率就是50%。
2.那如果CPU负载很高,利用率却很低该怎么办?
CPU负载很高,利用率却很低,说明处于等待状态的任务很多,负载越高,代表可能很多僵死的进程。通常这种情况是IO密集型的任务,大量请求在请求相同的IO,导致任务队列堆积。
同样,可以先通过top
命令观察(截图只是示意,不代表真实情况),假设发现现在确实是高负载低使用率。
然后,再通过命令ps -axjf
查看是否存在状态为D+
状态的进程,这个状态指的就是不可中断的睡眠状态的进程。处于这个状态的进程无法终止,也无法自行退出,只能通过恢复其依赖的资源或者重启系统来解决。(对不起,我截不到D+的状态)
3.那如果负载很低,利用率却很高呢?
如果你的公司只有一个厕所,外面没人排队,却有一个人在里面上了大半个小时,这说明什么?
两种可能:他没带纸,或者一些奇怪的事情发生了?
这表示CPU的任务并不多,但是任务执行的时间很长,大概率就是你写的代码本身有问题,通常是计算密集型任务,生成了大量耗时短的计算任务。
怎么排查?直接top
命令找到使用率最高的任务,定位到去看看就行了。如果代码没有问题,那么过段时间CPU使用率就会下降的。
4.那如果CPU使用率达到100%呢?怎么排查?
- 通过
top
找到占用率高的进程。
- 通过
top -Hp pid
找到占用CPU高的线程ID。这里找到958的线程ID
- 再把线程ID转化为16进制,
printf "0x%x\n" 958
,得到线程ID0x3be
- 通过命令
jstack 163 | grep '0x3be' -C5 --color
或者jstack 163|vim +/0x3be -
找到有问题的代码
5.说说常见的Linux命令吧?
常用的文件、目录命令
ls
:用户查看目录下的文件,ls -a
可以用来查看隐藏文件,ls -l
可以用于查看文件的详细信息,包括权限、大小、所有者等信息。
touch
:用于创建文件。如果文件不存在,则创建一个新的文件,如果文件已存在,则会修改文件的时间戳。
cat
:cat是英文concatenate
的缩写,用于查看文件内容。使用cat
查看文件的话,不管文件的内容有多少,都会一次性显示,所以他不适合查看太大的文件。
more
:more和cat有点区别,more用于分屏显示文件内容。可以用空格键
向下翻页,b
键向上翻页
less
:和more类似,less用于分行显示
tail
:可能是平时用的最多的命令了,查看日志文件基本靠他了。一般用户tail -fn 100 xx.log
查看最后的100行内容
常用的权限命令
chmod
:修改权限命令。一般用+
号添加权限,-
号删除权限,x
代表执行权限,r
代表读取权限,w
代表写入权限,常见写法比如chmod +x 文件名
添加执行权限。
还有另外一种写法,使用数字来授权,因为r
=4,w
=2,x
=1,平时执行命令chmod 777 文件名
这就是最高权限了。
第一个数字7=4+2+1代表着所有者的权限,第二个数字7代表所属组的权限,第三个数字代表其他人的权限。
常见的权限数字还有644,所有者有读写权限,其他人只有只读权限,755代表其他人有只读和执行权限。
chown
:用于修改文件和目录的所有者和所属组。一般用法chown user 文件
用于修改文件所有者,chown user:user 文件
修改文件所有者和组,冒号前面是所有者,后面是组。
常用的压缩命令
zip
:压缩zip文件命令,比如zip test.zip 文件
可以把文件压缩成zip文件,如果压缩目录的话则需添加-r
选项。
unzip
:与zip对应,解压zip文件命令。unzip xxx.zip
直接解压,还可以通过-d
选项指定解压目录。
gzip
:用于压缩.gz后缀文件,gzip命令不能打包目录。需要注意的是直接使用gzip 文件名
源文件会消失,如果要保留源文件,可以使用gzip -c 文件名 > xx.gz
,解压缩直接使用gzip -d xx.gz
tar
:tar常用几个选项,-x
解打包,-c
打包,-f
指定压缩包文件名,-v
显示打包文件过程,一般常用tar -cvf xx.tar 文件
来打包,解压则使用tar -xvf xx.tar
。
Linux的打包和压缩是分开的操作,如果要打包并且压缩的话,按照前面的做法必须先用tar打包,然后再用gzip压缩。当然,还有更好的做法就是-z
命令,打包并且压缩。
使用命令tar -zcvf xx.tar.gz 文件
来打包压缩,使用命令tar -zxvf xx.tar.gz
来解压缩
- END -
我摊牌了,大厂面试Linux就这5个问题的更多相关文章
- 经验总结:超详细的 Linux C/C++ 学习路线!大厂面试指南
❝ 文章每周持续更新,「三连」让更多人看到是对我最大的肯定.可以微信搜索公众号「 后端技术学堂 」第一时间阅读(一般比博客早更新一到两篇) ❞ 最近在知乎经常被邀请回答类似如何学习C++和C++后台开 ...
- 【大厂面试07期】说一说你对synchronized锁的理解?
synchronized锁的原理也是大厂面试中经常会涉及的问题,本文主要通过对以下问题进行分析讲解,来帮助大家理解synchronized锁的原理. 1.synchronized锁是什么?锁的对象是什 ...
- 面试 Linux 运维工作至少需要知道哪些知识?
前言 我们已经发过不少 Linux 面试题,但是单独的面试题总感觉会过于零碎,没有体系化内容给人的帮助大. 知乎上有这样一个问题:一个新手面试 Linux 运维工作至少需要知道哪些知识?其中有一个答案 ...
- 面试linux运维一定会问到Shell脚本这24个问题
面试linux运维一定会问到Shell脚本这24个问题 虽然现在Python在运维工作中已经使用很普遍,但是很多企业在找Linux云计算工程师的时候还是会问到 shell 脚本的问题,它有助于你在工作 ...
- 《大厂面试》京东+百度一面,不小心都拿了Offer
你知道的越多,你不知道的越多 点赞再看,养成习惯 本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试点思维导图,也整理了很多我的文档,欢迎Star和 ...
- 深度解析互联网大厂面试难题自定义@EnableXX系列
深度解析互联网大厂面试难题自定义@EnableXX系列 其实是一个@Import的设计技巧 创建注解@EnableXX(任何名称注解都行,只是这个名字好一些) XXConfiguration类不能 ...
- 大厂面试官问你META-INF/spring.factories要怎么实现自动扫描、自动装配?
大厂面试官问你META-INF/spring.factories要怎么实现自动扫描.自动装配? 很多程序员想面试进互联网大厂,但是也有很多人不知道进入大厂需要具备哪些条件,以及面试官会问哪些问题, ...
- 大厂面试官最常问的@Configuration+@Bean(JDKConfig编程方式)
大厂面试官最常问的@Configuration+@Bean(JDKConfig编程方式) 现在大部分的Spring项目都采用了基于注解的配置,采用了@Configuration 替换标签的做法.一 ...
- 4000字干货长文!从校招和社招的角度说说如何准备Java后端大厂面试?
插个题外话,为了写好这篇文章内容,我自己前前后后花了一周的时间来总结完善,文章内容应该适用于每一个学习 Java 的朋友!我觉得这篇文章的很多东西也是我自己写给自己的,比如从大厂招聘要求中我们能看到哪 ...
随机推荐
- Assert类的静态方法
五:常用断言 在NUnit中,断言是单元测试的核心.NUnit提供了一组丰富的断言,这些断言是Assert类的静态方法.如果一个断言失败,方法的调用不会返回值,并且会报告一个错误.如果一个测试包含多个 ...
- 解决无法访问 Github
可以正常使用Google,但无法打开Github. 查阅了一些资料,发现需要在hosts文件中添加映射. 在hosts文件中加入两行 140.82.113.4 github.com 140.82.11 ...
- 1. 线性DP 1143. 最长公共子序列
最经典双串: 1143. 最长公共子序列 (LCS) https://leetcode-cn.com/problems/longest-common-subsequence/submissions/ ...
- kettle连接报错
如何查看端口号 cmd命令行 输入mysql -u root -p密码进入mysql 输入show global variables like 'port'; 就可以看到端口号3306 测试数据库链接 ...
- Linux(Centos6.8)配置Nginx环境
1.环境配置 操作系统:centos6.8 [root@host79 ~]# uname -a Linux host79.pluto 2.6.32-642.el6.x86_64 #1 SMP Tue ...
- IGH_Master主站配置驱动伺服电机和变频器总结
IGH_Master主站配置驱动伺服电机和变频器总结 Ethercat是倍福公司提出的一种工业现场总线协议,具有很好的实时性,IGH是一种开源的Ethercat主站实现协议,本文总结了一下使用IGH_ ...
- git 最新笔记,工作中的必会技能
1.状态查看: git status 可以查看工作区,暂存区的状态 untracked 在暂存区没有该文件 modified 修改过 staged 使用git add 暂存过 2.添加操作: git ...
- Linux下查询外网IP的办法。
Curl 纯文本格式输出:curl icanhazip.comcurl ifconfig.mecurl curlmyip.comcurl ip.appspot.comcurl ipinfo.io/ip ...
- 用Camtasia设计微课视频封面,让课程更加高大上
在网络时代,尤其现在疫情影响只能线上学习,微课的应用前景已经越来越广了.但是想把微课做好,只有内容与录制精细是不够的,还需要一个精美的封面来吸引学生.接下来,小编就用微课制作软件Camtasia 20 ...
- 利用perspective 和 transform 里面的几个参数来实现旋转照片墙
旋转照片墙 首先,来看下,是什么效果吧,上效果图 ↓ 其实这个东西,很容易制作,先说下思路, 把照片都给叠在一起,然后 rotateY 旋转,给每张图片 旋转不一样的角度能构成一圈, 然后transl ...