关于java:我摊牌了大厂面试Linux就这5个问题

38次阅读

共计 2420 个字符,预计需要花费 7 分钟才能阅读完成。

说真的,这就是《我想进大厂》系列第八篇,然而 Linux 的问题的确很少,就这样,强行编几个没有养分的问题也没啥意义。

1.CPU 负载和 CPU 利用率的区别是什么?

首先,咱们能够通过 uptimew 或者 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% 呢?怎么排查?

  1. 通过 top 找到占用率高的过程。

  1. 通过 top -Hp pid 找到占用 CPU 高的线程 ID。这里找到 958 的线程 ID

  1. 再把线程 ID 转化为 16 进制,printf "0x%x\n" 958,失去线程 ID0x3be

  1. 通过命令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 来解压缩

正文完
 0