45.linux面试题

Posted HJingLei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了45.linux面试题相关的知识,希望对你有一定的参考价值。

1. 分析日志t.log(访问量),将各个ip地址截取,并统计出现次数,并按从大到小排序(腾讯)

http://192.168.200.10/index1.html
http://192.168.200.10/index2.html
http://192.168.200.20/index1.html
http://192.168.200.30/index1.html
http://192.168.200.40/index1.html
http://192.168.200.30/order.html
http://192.168.200.10/order.html

# 创建t.txt,将ip地址保存在t.txt目录中
# 统计
cat t.txt | cut -d \'/\' -f 3 | sort | uniq -c | sort -nr

2. 统计连接到服务器的各个ip情况,并按连接数从打到小排序(腾讯)

netstat -an | grep ESTABLISHED | awk -F " " \'{print $5}\' | awk -F ":" \'{print $1}\' | sort | uniq -c | sort -nr

3. 忘记mysql5.7数据库的root用户密码,如何找回(滴滴)

# 1.打开/etc/my.cnf文件
vim /etc/my.cnf
# 2.添加内容:skip-grant-tables,保存
# 3.重启mysqld服务
service mysqld restart
# 4.不需要输入用户名进入mysql,输入密码时直接回车
mysql -u root -p
# 5.选择mysql数据库
use mysql;
# 6.修改user表中的root密码
update user set authentication_string=password("12345678") where user=\'root\';
# 7.刷新权限
flush privileges;
# 8.退出mysql
exit
# 9.去掉/etc/my.cnf文件中之前添加的内容skip-grant-tables,再重启mysqld服务

4. 写出指令:统计ip访问情况,要求分析nginx访问日志(access.log),找出访问页面数两在前2位的ip(美团)

access.log内容:

192.168.130.21 aa.html
192.168.130.20 aa.html
192.168.130.20 aa.html
192.168.130.20 aa.html
192.168.130.23 aa.html
192.168.130.20 aa.html
192.168.130.25 aa.html
192.168.130.20 aa.html
192.168.130.20 aa.html
192.168.130.25 aa.html
192.168.130.20 aa.html

cat access.log | awk -F " " \'{print $1}\' | sort | uniq -c | sort -nr | head -2

5. 使用tcpdump监听本机,将来自ip 192.168.200.1,tcp端口为22的数据,保存输出到tcpdump.log,用作将来数据分析(美团)

tcpdump -i ens33 host 192.168.200.1 and port 22 >> /opt/interview/tcpdump.log

6. 常用的Nginx模块,用来做什么(头条)

rewrite模块:实现重写功能

access模块:来源控制

ssl模块:安全加密

ngx_http_gzip_module:网络传输压缩模块

ngx_http_proxy_module:模块实现代理

ngx_http_upstream_module:模块实现定义后端服务器列表

ngx_cache_purge:实现缓存清楚功能

7. 如果你是linux管理员,,在进行linux系统权限划分时,应该考虑哪些因素?(腾讯)

  1. 首先阐述linux权限的主要对象

image

  1. 根据自己实际经验谈考虑因素
    • 注意权限分离,比如:工作中,linux系统权限和数据库权限不要在同一个部门
    • 权限最小原则(即:在满足使用的情况下最少优先)
    • 减少使用root用户,尽量用普通用户+sudo提权进行日常操作。
    • 重要的系统文件比如/etc/passwd,/etc/shadow,/etc/fstab,/etc/sudoers等,日常建议使用chattr(change attribute)锁定,需要操作时再打开。比如:锁定/etc/passwd让任何用户都不能随意useradd,除非解除锁定
    • 使用SUID,SGID,Sticky设置特殊权限。
    • 可以利用工具,比如chkrootkit/rookit hunter检测rootkit脚本(rootkit时入侵者使用工具,在不觉察的时候建立了入侵系统途径)[wget ftp://ftp.pangeia.com.br/pub/seg/chkrootkit.tar.gz]
    • 利用工具Tripwire检查文件系统完整性

8. 权限操作思考题

  1. 用户tom对目录/home/test有执行读写权限,/home/test/hello.java是只读文件,

    问tom对hello.java能读吗(ok)?能修改吗(no)?能删除吗?(ok)

  2. 用户tom对目录/home/test只有读写权限,/home/test/hello.java是只读文件,

    问tom对hello.java能读吗(no)?能修改吗(no)?能删除吗?(no)

  3. 用户tom对目录/home/test只有执行权限,/home/test/hello.java是只读文件,

    问tom对hello.java能读吗(ok)?能修改吗(no)?能删除吗?(no)

  4. 用户tom对目录/home/test只有执行权限,/home/test/hello.java是只读文件,

    问tom对hello.java能读吗(ok)?能修改吗(no)?能删除吗?(ok)

9. 说明CentOS 7的启动流程,并说明和CentOS 6相同和不同的地方(腾讯)

image

image

10. 列举linux高级命令,至少6个(百度)

  • netstat 【网络状态监控】
  • top 【系统运行状态】
  • lsblk 【查看硬盘分区】
  • find 【查找文件】
  • ps -aux 【查看运行进程】
  • chkconfig 【查看服务启动状态】
  • systemctl 【管理系统服务器】

11. Linux查看内存、IO读写、磁盘存储、端口占用、进程查看命令是什么(瓜子)

  • top
  • iotop
  • df -lh
  • netstat -tunlp
  • ps -aux | grep 关心的进程

12. 使用linux命令计算t2.txt第二列的和并输出(美团)

t2.txt内容如下

张三 40

李四 50

王五 60

cat t2.txt | awk -F " " \'{sum+=$2} END {print sum}\'

13. shell脚本里如何检查一个文件是否存在,并给出提示(百度)

if [ -f 文件名 ]
then
	echo "存在"
else
	echo "不存在"
fi

14. 用shell写一个脚本,对文本t3.txt中无序的一列数字排序,并将总和输出(百度)

t3.txt内容如下:

9

8

7

6

5

4

3

2

10

sort -nr t3.txt | awk \'{sum+=$1; print $1} END {print "和="sum}\'

15. 用指令写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符"cat"的文件名称(金山)

grep -r "cat" /home | cut -d ":" -f 1

16. 请写出统计/home目录下所有文件个数和所有文件总行数的指令(在金山面试题扩展)

find /opt/interview/ -name "*.*" | wc -l
find /opt/interview/ -name "*.*" | xargs wc -l

17. 列出了解的web服务器负载架构(滴滴)

  • Nginx
  • Haproxy
  • Keepalived
  • LVS

18. 每天晚上10点30分,打包站点目录/var/spool/mail备份到/home目录下(每次备份按时间生成不同的备份包,比如按照 年月日时分秒)(滴滴)

新建mail.sh

#!/bin/bash
cd /var/spool/ && /bin/tar/ zcf /home/mail-`date +%Y-%m-%d_%H%M%S`.tar.gz mail/

给mail.sh添加执行权限

chmod u+x mail.sh

添加定时任务:crontab -e

30 22 * * * /root/mail.sh

19. 如何优化linux系统,说出你的方法(瓜子)

  • 对linux系统架构优化,负载均衡等等
  • 对linux系统本身优化
    1. 不用root,使用sudo提升权限
    2. 定时的自动更新服务时间,使用nptdate npt1.aliyun.com,让croud定时更新
    3. 配置yum源,指向国内镜像(清华,163)
    4. 配置合理的防火墙策略,打开必要的端口,关闭不必要的端口
    5. 打开最大文件数(调整文件的描述的数量)
      • vim /etc/profile
      • 修改:ulimit -SHn 65535
    6. 配置合理的监控策略
    7. 配置合理的系统重要文件的备份策略
    8. 对安装的软件进行优化,比如nginx,apache
    9. 内核参数进行优化 /etc/sysctl.conf
    10. 锁定一些重要的系统文件 chattr /etc/passwd /etc/shadow /etc/inittab
    11. 禁用不必要的服务 setup,ntsysv

以上是关于45.linux面试题的主要内容,如果未能解决你的问题,请参考以下文章

Java工程师面试题,二级java刷题软件

Java进阶之光!2021必看-Java高级面试题总结

经验总结:Java高级工程师面试题-字节跳动,成功跳槽阿里!

一道经典面试题:字符串在Java中如何通过“引用”传递

Mybatis最全的高质量面试题和答案—3

2021-12-24:划分字母区间。 字符串 S 由小写字母组成。我们要把这个字符串划分为尽可能多的片段,同一字母最多出现在一个片段中。返回一个表示每个字符串片段的长度的列表。 力扣763。某大厂面试