Linux 面试题-(腾讯,百度,美团,滴滴)

Linux 面试题-(腾讯,百度,美团,滴滴)

分析日志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
答案: cat t.txt | cut -d ‘/’ -f 3 | sort | uniq -c | sort -nr

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

netstat -an | grep ESTABLISHED | awk -F " " ‘{print $5}’ | cut -d “:” -f 1 | sort | uniq -c| sort -nr

在这里插入图片描述

问题:如忘记了mysql5.7 数据库的ROOT 用户的密码,如何找回? (滴滴)

  1. 修改 vim /etc/my.cnf

在这里插入图片描述

  1. 添加一句话 跳过权限表 skip -grant -tables 这就意味这你登录的时候不走认证所以空密码也可以登录

  2. 重启 数据库 mysqld restart 这样刚刚配置的才会生效

在这里插入图片描述

  1. 登录 mysql -u root -p

在这里插入图片描述

  1. 不输入密码直接回车

  2. 查看所有的数据库
    在这里插入图片描述

  3. 使用 mysql数据库

在这里插入图片描述

  1. 看看有哪些表

在这里插入图片描述

在这里插入图片描述

  1. 使用user表 查看这个字段
    在这里插入图片描述

  2. 修改这个字段 打马赛克的是自己设的密码

在这里插入图片描述

  1. 刷新权限 flush privileges;

在这里插入图片描述

  1. 退出
    在这里插入图片描述

  2. 再打开vim /etc/my.cnf

  3. 注销第2步的跳过权限认证

在这里插入图片描述

  1. 重启

在这里插入图片描述

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

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

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

在这里插入图片描述

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

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

rewrite 模块,实现重写功能

access 模块:来源控制

ssl 模块:安全加密

ngx_http_gzip_module:网络传输压缩模块

ngx_http_proxy_module 模块实现代理

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

ngx_cache_purge 实现缓存清除功能

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

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

在这里插入图片描述

  1. 根据自己实际经验谈考虑因素
    注意权限分离,比如: 工作中,Linux 系统权限和数据库权限不要在同一个部门
    权限最小原则(即:在满足使用的情况下最少优先)
    减少使用root 用户,尽量用普通用户+sudo 提权进行日常操作。
    重要的系统文件,比如/etc/passwd, /etc/shadow etc/fstab,/etc/sudoers 等,日常建议使用chattr(change attribute)锁定,需要操作时再打开。

使用SUID, SGID, Sticky 设置特殊权限。

可以利用工具,比如chkrootkit/rootkit hunter 检测rootkit 脚本(rootkit 是入侵者使用工具,在不察觉的建立了入侵系统途径)

利用工具Tripwire 检测文件系统完整性

在这里插入图片描述

权限操作思考题

  1. 用户tom 对目录/home/test 有执行x 和读r 写w 权限,/home/test/hello.java 是只读文件,问tom 对hello.java
    文件能读吗(ok)? 能修改吗(no)?能删除吗?(ok)

  2. 用户tom 对目录/home/test 只有读写权限,/home/test/hello.java 是只读文件,问tom 对hello.java
    文件能读吗(no)? 能修改吗(no)?能删除吗(no)?

  1. 用户tom 对目录/home/test 只有执行权限x,/home/test/hello.java 是只读文件,问tom 对hello.java 文件能读吗(ok)?能修改吗(no)?能删除吗(no)?
  1. 用户tom 对目录/home/test 只有执行和写权限,/home/test/hello.java 是只读文件,问tom 对hello.java
    文件能读吗(ok)? 能修改吗(no)?能删除吗(ok)?

问题:列举Linux 高级命令,至少6个(百度)

netstat //网络状态监控top //系统运行状态lsblk //查看硬盘分区find

ps -aux //查看运行进程chkconfig //查看服务启动状态systemctl //管理系统服务器

问题:Linux 查看内存、io 读写、磁盘存储、端口占用、进程查看命令是什么?(瓜子)

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

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

张三40

李四50

王五60

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

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

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

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

9

8

7

6

5

4

3

2

10

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

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

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

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

find /home/test -name "*.*" | wc -l
find /home/test -name "*.*" | xargs wc -l

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

Nginx

Haproxy

Keepalived

LVS

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

在这里插入图片描述

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

  1. 对Linux 的架构的优化,和原则分析(示意图)

在这里插入图片描述

  1. 对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 /ect/shadow /etc/inittab
    (11) 禁用不必要的服务setup , ntsysv

说明Centos7 启动流程,并说明和CentOS6 相同和不同的地方(腾讯)

在这里插入图片描述
在这里插入图片描述

第一步、硬件启动阶段

这一步和CentOS6差不多,详细请看图

第二步、GRUB2引导阶段

从这一步开始,CentOS6和CentOS7的启动流程区别开始展现出来了。CentOS7的主引导程序使用的是grub2。

这一步的流程:显示加载两个镜像,再加载MOD模块文件,把grub2程序加载执行,接着解析配置文件/boot/grub2/grub.cfg,根据配置文件加载内核镜像到内存,之后构建虚拟根文件系统,最后转到内核。

第三步、内核引导阶段

这一步与CentOS6也差不多,加载驱动,切换到真正的根文件系统,唯一不同的是执行的初始化程序变成了/usr/lib/systemd/systemd

第四步、systemed初始化阶段(又叫系统初始化阶段)

主要区别

CentOS7中我们的初始化进程变为了systemd。执行默认target配置文件/etc/systemd/system/default.target
(这是一个软链接,与默认运行级别有关)。然后执行sysinit.target来初始化系统和basic.target来准备操作系统。
接着启动multi-user.target下的本机与服务器服务,
并检查/etc/rc.d/rc.local文件是否有用户自定义脚本需要启动。
最后执行multi-user下的getty.target及登录服务,检查default.target是否有其他的服务需要启动。

注意:/etc/systemd/system/default.target指向了/lib/systemd/system/目录下的graphical.target或multiuser.target。而graphical.target依赖multiuser.target,multiuser.target依赖basic.target,basic.target依赖sysinit.target,所以倒过来执行。

System概述(了解):systemd即为system daemon,是Linux下的一种init软件,开发目标是提供更优秀的框架以表示系统服务间的以来关系,并依此实现系统初始化时服务的并行启动,同时达到降低Shell系统开销的效果,最终代替现在常用的System V与BSD风格的init程序。

与多数发行版使用的System V风格的init相比,systemd采用了以下的新技术:A.采用Socket激活式与总线激活式服务,以提高相互依赖的各服务的并行运行性能;B.用Cgroup代替PID来追踪进程,即使是两次fork之后生成的守护进程也不会脱离systemd的控制。

unit对象:unit表示不同类型的systemd对象,通过配置文件进行标识和配置;文件中主要包含了系统服务、监听socket、保存的系统快照以及其他与init相关的信息。(也就是CentOS6中的服务器启动脚本

猜你喜欢

转载自blog.csdn.net/apple_67445472/article/details/131077947