Linux 命令常见面试题总结。
其它面试知识点突击整理:
序号 | 文章 |
---|---|
1 | Java基础面试突击 |
2 | JVM面试突击 |
3 | 设计模式面试突击 |
4 | 并发编程面试突击 |
5 | 消息队列Kafka面试突击 |
6 | Redis面试突击 |
7 | 计算机网络面试突击 |
8 | Spring面试突击 |
9 | Dubbo面试突击 |
10 | MyBatis面试突击 |
11 | 操作系统面试突击 |
12 | MySQL面试突击 |
13 | Linux命令面试突击 |
文章目录
- 1. 说一下常用的Linux命令?
- 2. 如何查看所有java进程
- 3. 如何杀掉某个服务的进程
- 4. 启动/停止服务
- 5. 如何查看测试项目的日志
- 6. 如何查看某个端口是否被占用
- 7. 查看当前所有已经使用的端口情况
- 8. 如何查找一个文件大小超过5M的文件
- 9. 如果知道一个文件名称,怎么查这个文件在linux下的哪个目录
- 10. find查找文件
- 11. vim(vi)编辑器
- 12. /etc/hosts⽂件什么作⽤?
- 13. 硬链接和软连接的区别?
- 14. linux连接超时,处理方案
- 15. 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
- 16. Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
- 17. 哪个命令专门用来查看后台任务?
- 18. 使用什么命令查看磁盘使用空间? 空闲空间呢?
- 19. du 和 df 的定义,以及区别?
- 20. Java服务端问题排查(OOM,CPU⾼,Load⾼,类冲突)?
1. 说一下常用的Linux命令?
序号 | 命令 | 命令解释 |
---|---|---|
1 | top | 查看内存 |
2 | df -h | 查看磁盘存储情况 |
3 | iotop | 查看磁盘IO读写 |
4 | iotop -0 | 直接查看比较高的磁盘读写程序 |
5 | nestat -tunlp | grep 端口号 | 查看端口占用情况 |
6 | uptime | 查看报告系统运行时常及平均负载 |
7 | ps aux | 查看进程 |
8 | ls【参数 -a -l】 | 列出文件列表 |
9 | mkdir rmdir | 创建目录和移除目录 |
10 | tar -xvf (-zcvf) | tail打包 (打包并压缩) |
11 | grep | 查找字符串 |
12 | pwd | 显示当前所在目录 |
13 | vim vi | 编辑器 |
14 | touch | 创建空文件 |
15 | ifconfig | 查看 ip 地址及接口信息 |
16 | netstat | 查看网络是否连通 |
2. 如何查看所有java进程
grep是搜索关键字>ps -ef | grep java-aux 显示所有状态>ps -aux | grep java
3. 如何杀掉某个服务的进程
kill 命令用于终止进程-9 强迫进程立即停止>kill -9 [PID]这里pid需要用 ps -ef | grep 查询pid
4. 启动/停止服务
以启动Tomcat为例,先cd到启动的.sh文件目录> cd /java/tomcat/bin> ./startup.sh停止Tomcat服务命令>./shutdown.sh
5. 如何查看测试项目的日志
一般测试的项目里面,有个logs的目录文件,会存放日志文件,有个xxx.out的文件,可以用tail -f 动态实时查看后端日志先cd 到logs目录(里面有xx.out文件)>tail -f xx.out这时屏幕上会动态实时显示当前的日志,ctr+c停止查看最近1000行日志>tail -1000 xx.out
6. 如何查看某个端口是否被占用
>netstat -anp | grep 端口号
图中主要看监控状态为LISTEN
表示已经被占用,最后一列显示被服务mysqld占用,查看具体端口号,只要有如图这一行就表示被占用了。
查看82端口的使用情况,如图
>netstat -anp |grep 82
可以看出并没有LISTEN那一行,所以就表示没有被占用。此处注意,图中显示的LISTENING并不表示端口被占用,不要和LISTEN混淆哦,查看具体端口时候,必须要看到tcp,端口号,LISTEN那一行,才表示端口被占用了。
7. 查看当前所有已经使用的端口情况
netstat -nultp(此处不用加端口号)
8. 如何查找一个文件大小超过5M的文件
>find . -type f -size +100M
9. 如果知道一个文件名称,怎么查这个文件在linux下的哪个目录
如:要查找tnsnames.ora文件
>find / -name tnsnames.ora查到:/opt/app/oracle/product/10.2/network/admin/tnsnames.ora/opt/app/oracle/product/10.2/network/admin/samples/tnsnames.ora
还可以用locate 来查找
>locate tnsnames.ora结果是:/opt/app/oracle/product/10.2/hs/admin/tnsnames.ora.sample
10. find查找文件
find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找find /etc -name httpd.conf #在/etc目录下文件httpd.conffind /etc -name ‘srm’ #使用通配符(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串‘srm’的文件find . -name ‘srm’ #表示当前目录下查找文件名开头是字符串‘srm’的文件按照文件特征查找 find / -amin -10 # 查找在系统中最后10分钟访问的文件(access time)find / -atime -2 # 查找在系统中最后48小时访问的文件find / -empty # 查找在系统中为空的文件或者文件夹find / -group cat # 查找在系统中属于 group为cat的文件find / -mmin -5 # 查找在系统中最后5分钟里修改过的文件(modify time)find / -mtime -1 #查找在系统中最后24小时里修改过的文件find / -user fred #查找在系统中属于fred这个用户的文件find / -size +10000c #查找出大于10000000字节的文件(c:字节,w:双字,k:KB,M:MB,G:GB)find / -size -1000k #查找出小于1000KB的文件
11. vim(vi)编辑器
有命令模式、输入模式、末行模式三种模式。
命令模式
:查找内容(/abc、跳转到指定行(20gg)、跳转到尾行(G)、跳转到首行(gg)、删除行(dd)、插入行(o)、复制粘贴(yy,p)输入模式
:编辑文件内容末行模式
:保存退出(wq)、强制退出(q!)、显示文件行号(set nu)
在命令模式下,输入a或i即可切换到输入模式,输入冒号(:)即可切换到末行模式;在输入模式和末行模式下,按esc键切换到命令模式
12. /etc/hosts⽂件什么作⽤?
在当前主机给ip设置别名,通过该别名可以访问到该ip地址,通过别名、ip访问的效果是⼀样的。
13. 硬链接和软连接的区别?
硬链接:
- ⽂件有相同的 inode 及 data block;
- 只能对已存在的⽂件进⾏创建;
- 不能交叉⽂件系统进⾏硬链接的创建;
- 不能对⽬录进⾏创建,只可对⽂件创建;
- 删除⼀个硬链接⽂件并不影响其他有相同 inode 号的⽂件。
软链接:
- 软链接有⾃⼰的⽂件属性及权限等;
- 可对不存在的⽂件或⽬录创建软链接;
- 软链接可交叉⽂件系统;
- 软链接可对⽂件或⽬录创建;
- 创建软链接时,链接计数 i_nlink 不会增加;
- 删除软链接并不影响被指向的⽂件,但若被指向的原⽂件被删除,则相关软连接被称为死链接(即
danglinglink,若被指向路径⽂件被重新创建,死链接可恢复为正常的软链接)。
14. linux连接超时,处理方案
-
测试网络是否通:
ping 远程IP
-
如果能ping通则表示与服务器网络连接是正常,接下来测试端口:
telnet 远程ip 端口
-
如果telnet不上,要考虑服务器是否有防火墙拦截:
CentOS7查看防火墙是否运行 firewall-cmd --state CentOS6查看防火墙是否运行 /sbin/service iptables status
-
如果防火墙被拦截,需要放行端口。如果防火墙没有拦截,则要考虑服务内部是否配置限定IP访问。
MySQL、MongoDB、Redis都有bind选项,用来限定客户端IP
-
再检查服务内部是否有其它权限设置,例如MySQL有远程访问配置,Redis有protected-mode改为no
15. 用什么命令对一个文件的内容进行统计?(行号、单词数、字节数)
wc 命令 - c 统计字节数 - l 统计行数 - w 统计字数
16. Linux 中进程有哪几种状态?在 ps 显示出来的信息中,分别用什么符号表示的?
不可中断状态
:进程处于睡眠状态,但是此刻进程是不可中断的。不可中断, 指进程不响应异步信号。暂停状态/跟踪状态
:向进程发送一个 SIGSTOP 信号,它就会因响应该信号 而进入 TASK_STOPPED状态;当进程正在被跟踪时,它处于 TASK_TRACED 这个特殊的状态。“正在被跟踪”指的是进程暂停下来,等待跟踪它的进程对它进行操作。就绪状态
:在 run_queue 队列里的状态运行状态
:在 run_queue 队列里的状态可中断睡眠状态
:处于这个状态的进程因为等待某某事件的发生(比如等待 socket 连接、等待信号量),而被挂起zombie 状态(僵尸)
:父亲没有通过 wait 系列的系统调用会顺便将子进程的尸体(task_struct)也释放掉退出状态
D 不可中断 Uninterruptible(usually IO)
R 正在运行,或在队列中的进程
S 处于休眠状态
T 停止或被追踪
Z 僵尸进程
W 进入内存交换(从内核 2.6 开始无效)
X 死掉的进程
17. 哪个命令专门用来查看后台任务?
job -l
把后台任务调到前台执行使用什么命令?把停下的后台任务在后台执行起来用什么命令?
把后台任务调到前台执行 fg把停下的后台任务在后台执行起来 bg
18. 使用什么命令查看磁盘使用空间? 空闲空间呢?
df -hl
文件系统 容量 已用 可用 已用% 挂载点
Filesystem Size Used Avail Use% Mounted on /dev/hda2 45G 19G 24G 44% /
/dev/hda1 494M 19M 450M 4% /boot
19. du 和 df 的定义,以及区别?
- du 显示目录或文件的大小
- df 显示每个<文件>所在的文件系统的信息,默认是显示所有文件系统。 (文件系统分配其中的一些磁盘块用来记录它自身的一些数据,如 i节点,磁盘分布图,间接块,超级块等。这些数据对大多数用户级的程序来说是不可见的,通常称为 Meta Data。)
- du命令是用户级的程序,它不考虑 Meta Data,而 df 命令则查看文件系统的磁盘分配图并考虑 Meta Data。
- df 命令获得
真正的文件系统数据
,而 du 命令只查看文件系统的部分情况
。
20. Java服务端问题排查(OOM,CPU⾼,Load⾼,类冲突)?
(1)业务⽇志相关:
1. less或者more
2. grep
3. tail -f filename
注意:切忌vim直接打开⼤⽇志⽂件,因为会直接加载到内存的
(2)数据库相关:
1. 登录线上库,show processlist查看数据库连接情况
(3) jvm相关:
1. jps 显示java进程
2. jinfo 实时查看和调整jvm参数
3. jstat 监控jvm各种运⾏状态信息;
4. jstack(Stack Trace for Java)命令⽤于⽣成JVM进程当前时刻的线程的调⽤堆栈,可以⽤来定位线程间死锁、锁等待、等待外部资源等
5. jmap(Memory Map for Java) 命令⽤于⽣成堆转储快照dump⽂件,除了这种⽅式还可以通过-XX:HeapDumpOnOutOfMemoryError参数,可以在虚拟机发⽣OOM的时候⾃动⽣成堆的dump⽂件,或者kill -3命令发出进程退出信号"吓唬"⼀下虚拟机,也能拿到dump⽂件。
(4)oom问题:
1. 配置了-XX:+HeapDumpOnOutOfMemoryError, 在发⽣OOM的时候会在-XX:HeapDumpPath⽣成堆的dump⽂件,结合MAT,可以对dump⽂件进⾏分析,查找出发⽣OOM的原因。
2. 另外⼿动dump堆快照,可以使⽤命令jmap -dump:format=b,file=file_name pid 或者kill -3 pid
(5)死锁:
1. jps -v
2. jstack -l pid
(6) 线程block、线程数暴涨:
1. jstack -l pid |wc -l
2. jstack -l pid |grep “BLOCKED”|wc -l
3. jstack -l pid |grep “Waiting on condition”|wc -l
线程block问题⼀般是等待io、等待⽹络、等待监视器锁等造成,可能会导致请求超时、造成造成线程数暴涨导致系统502等。
(7) 服务器问题:
1)CPU
top
2)内存
free -m -c10 -s1:
a. -m:以MB为单位显示,其他的有-k -g -b
b. -s: 间隔多少秒持续观察内存使⽤状况
c. -c:观察多少次
vmstat 1 10:1表示每隔1s输出⼀次,10 表示输出10次
a. r: 运⾏队列中进程数量,这个值也可以判断是否需要增加CPU。(⻓期⼤于1)
b. b: 等待IO的进程数量。
iostat -m 1 10:
-m:某些使⽤block为单位的列强制使⽤MB为单位
1 10:数据显示每隔1秒刷新⼀次,共显示10次
3)网络
netstat -antp:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服服务状态
-p 显示建⽴相关链接的程序名
(8)排查工具
Java常⽤问题排查⼯具及⽤法(top,iostat,vmstat,sar,tcpdump,jvisualvm,jmap,jconsole)
具体参考:Java自带的性能监测工具用法简介——jstack、jconsole、jinfo、jmap、jdb、jsta、jvisualvm
参考:
Java面试常问linux命令
Java linux面试题及答案
Linux命令常见面试题
Java面试题 -Linux命令