Linux 面试题总结

系统相关

  • 请描述下linux 系统的开机启动过程
开机加电BIOS自检———–>MBR引导———–>grub引导菜单———–>加载内核———–>启动init进程———–>读取inittab文件———–>启动mingetty进程———–>登录系统
  • 删除文件名是乱码的文件
通过inode来删除文件
ls -lhi
657659 -rw-rw-rw- 1 root root    0 Apr  7  2020 README.md
654084 -rw-r--r-- 1 root root 337K Dec 24 08:53 test-1-v1-20200406213113.zip
657652 drwxrwxrwx 2 root root 4.0K Apr  7  2020 чИмхПЦlolшЛ?щЫДчЪошВд
657658 drwxrwxrwx 3 root root 4.0K Apr  7  2020 чИмхПЦцИСчИ?цЦЧхЫ╛-(чЖКчМлхЫ╛)
解决:
rm -f `find . -inum 159004`
find . -inum 159004 -exec rm -f {} \;
find -inum 25815|xargs rm -f
  • 请执行命令取出 linux 中 eth0 的 IP 地址
方法1
ifconfig eth0|sed -n ‘2p‘|cut -d ":" -f2|cut -d " " -f1

方法2
ifconfig eth0|awk ‘NR==2‘|awk -F ":" ‘{print $2}‘|awk ‘{print $1}‘

方法3
ifconfig eth0|awk ‘NR==2‘|awk -F "[: ]+" ‘{print $4}‘
  • 如何查看/var/log目录下的文件数?
ls /var/log/ -1R | grep "-" | wc -l
  • 如何查看Linux系统每个ip的连接数?
netstat -n | awk ‘/^tcp/ {print $5}’ | awk -F: ‘{print $1}’ | sort | uniq -c | sort -rn
  • 如何查看当前的Linux服务器的运行级别?

who -r和 runlevel 命令可以用来查看当前的Linux服务器的运行级别。
  • 如何在/usr目录下找出大小超过10MB的文件?
find /usr -size +10M
  • 如何在/home目录下找出120天之前被修改过的文件?
find /home -mtime +120
  • linux系统环境下如何查看系统运行了多长时间?
执行系统命令uptime,其中第三个字段,如下的2:32处则表示系统从上次启动开始已运行了多长时间。
 10:05:18 up  4:31,  4 users,  load average: 0.00, 0.01, 0.05
  • 统计ip访问情况,要求分析nginx访问日志,找出访问页面数量在前十位的ip
cat access.log | awk ‘{print $1}’ | uniq -c | sort -rn | head -10
  • 如果向磁盘写入数据提示如下错误:

No space left on device,通过df -h查看磁盘空间,发现没满,请问可能原因是什么?

inode满了-- No space left on device

df -i  来查看
  • /var/log/messages 日志出现 kernel: nf_conntrack: table full, dropping packet.请问是什么原因

导致的?如何解决?

解答:上述结果会让业务访问很慢!各种网络服务耗时大幅上升,各种time out,各种丢包,完全无法正常提供服务,大并发业务场景下,开防火墙很容易出现这种问题.

解决方法1:关闭分防火墙服务

解决方法2:修改内核参数/etc/sysctl.conf

net.nf_conntrack_max= 25000000

net.netfilter.nf_conntrack_max= 25000000

net.netfilter.nf_conntrack_tcp_timeout_established= 180

net.netfilter.nf_conntrack_tcp_timeout_time_wait= 120

net.netfilter.nf_conntrack_tcp_timeout_close_wait= 60

net.netfilter.nf_conntrack_tcp_timeout_fin_wait= 120

但是流量特别大还是会满的.
  • 描述Linux下文件删除的原理
Linux系统是通过link的数量来控制文件删除的,只有当一个文件不存在任何link的时候,这个文件才会被删除。一般来说每个文件两个link计数器来控制i_count和i_nlink。当一个文件被一个程序占用的时候i_count就加1。当文件的硬链接多一个的时候i_nlink也加1。删除一个文件,就是让这个文件,没有进程占用,同时i_link数量为0。
  • 简述raid0 raid1 raid5 三种工作模式的工作原理及特点
RAID,可以把硬盘整合成一个大磁盘,还可以在大磁盘上再分区,放数据
还有一个大功能,多块盘放在一起可以有冗余(备份)

RAID 0,可以是一块盘和N个盘组合
其优点读写快,是RAID中最好的
缺点:没有冗余,一块坏了数据就全没有了

RAID 1,只能2块盘,盘的大小可以不一样,以小的为准
10G+10G只有10G,另一个做备份。它有100%的冗余,缺点:浪费资源,成本高

RAID 5 ,3块盘,容量计算10*(n-1),损失一块盘
特点,读写性能一般,读还好一点,写不好

防火墙相关

  • 如何将本地80 端口的请求转发到8080 端口,当前主机IP 为192.168.2.1
iptables -A PREROUTING -d 192.168.2.1 -p tcp -m tcp -dport 80 -j DNAT-to-destination 192.168.2.1:8080
  • 请用iptables控制来自192.168.1.2主机的80端口请求
 iptables -A INPUT -p tcp -s 192.168.1.2 –dport 80 -j ACCEPT   (允许来自192.168.1.2这台主机访问80端口)
  • 局域网的网络地址192.168.1.0/24,局域网络连接其它网络的网关地址是192.168.1.1。如何让192.168.1.20能访问172.16.1.0/24网络
route add –net 172.16.1.0 gw 192.168.1.1 netmask 255.255.255.255 metric 1

服务相关

  • 已知 apache 服务的访问日志按天记录在服务器本地目录/app/logs 下,由于磁盘空间紧张现在要求只能保留最近 7 天的访问日志!请问如何解决? 
find /app/logs/ -type f -mtime +7 -name “*.log”|xargs rm –f
  • LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?
LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
  • 简述DNS进行域名解析的过程?
用户要访问www.baidu.com,会先找本机的host文件,再找本地设置的DNS服务器,如果也没有的话,就去网络中找根服务器,根服务器反馈结果,说只能提供一级域名服务器.cn,就去找一级域名服务器,一级域名服务器说只能提供二级域名服务器.com.cn,就去找二级域名服务器,二级域服务器只能提供三级域名服务器.baidu.com.cn,就去找三级域名服务器,三级域名服务器正好有这个网站www.baidu.com,然后发给请求的服务器,保存一份之后,再发给客户端
  • Keepalived的工作原理?
Keepalived是一个基于VRRP协议来实现的服务高可用方案

在 Keepalived服务正常工作时,主 Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活看,当主 Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。
  • 你常用的Nginx模块,用来做什么
rewrite模块,实现重写功能
access模块:来源控制
ssl模块:安全加密
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module 模块实现代理
ngx_http_upstream_module模块实现定义后端服务器列表
ngx_cache_purge实现缓存清除功能
  • 查看http的并发请求数与其TCP连接状态
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’
  • 写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
for ip in seq 1 255
do
    ping -c 1 192.168.1.$ip > /dev/null 2>&1
    if [ $? -eq 0 ]; then
        echo 192.168.1.$ip UP
    else
        echo 192.168.1.$ip DOWN
    fi
done 

 

Linux 面试题总结

上一篇:Linux常用命令


下一篇:下载免费xshell