题目皆取自于《一周学会Linux》,仅做了一些笔记。
【小白入门 通俗易懂】2021韩顺平 一周学会Linux
文章存在哪些问题,无论是错别字,还是哪一处不理解,欢迎在评论区指出。
1. 统计IP访问次数题目描述
分析日志t.log(访问量),将各个ip地址截取,并统计出现次数,并按从大到小排序(腾讯.) t.log 中有这些内容: 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 :查看文档内容,并且以cut ‘/’ 截断内容,获取第3部分的内容
192.168.200.10 192.168.200.10 192.168.200.20 192.168.200.30 192.168.200.40 192.168.200.30 192.168.200.10
- cat t.txt |cut -d '/' -f 3 |sort |uniq -c : 将ip地址排序,然后去重并统计次数,次数显示在第一列
3 192.168.200.10
1 192.168.200.20
2 192.168.200.30
1 192.168.200.40
sort | uniq -c 经常配合使用
- cat t.txt |cut -d '/' -f 3 |sort |uniq -c | sort -nr : 按统计次数从大到小排序
3 192.168.200.10
2 192.168.200.30
1 192.168.200.40
1 192.168.200.20
需要掌握的Linux命令
cutsortuniq 2. 统计连接到服务器IP情况
题目描述
统计连接到服务器的各个ip 情况,并按连接数从大到小排序(腾讯)
答案及分析
- netstat -an |grep ESTABLISHED : netstat 命令用于显示网络状态, -an显示所有连线中的Socket,直接使用IP地址,而不通过域名服务器。查看已连接的IP
tcp 0 36 192.168.200.128:22 192.168.200.1:8553 ESTABLISHED udp 0 0 192.168.200.128:44568 116.203.151.74:123 ESTABLISHED
- netstat -an |grep ESTABLISHED | awk -F " " '{print $5}' : 以空格分隔,显示分割后的第5个部分。
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。
-F fs or --field-separator fs
指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。使用","分割$ awk -F, ‘{print $1,$2}’ log.txt
192.168.200.1:13474 192.168.200.1:8553
- netstat -an |grep ESTABLISHED | awk -F " " '{print $5}' |awk -F ":" '{print $1}' |sort |uniq -c |sort -nr :统计三连:排序 去重统计 排序
2 192.168.200.1
需要掌握的Linux命令
netstatawk统计三连 sort | uniq -c |sort -nr
问:统计三连 为什么要先sort?
因为 uniq -c 统计相邻行的重复情况,所以要先排序,再将相同的IP排序一起统计
3. 找回MySQL数据库的密码题目描述
问题:如忘记了mysql5.7数据库的ROOT用户的密码,如何找回?(滴滴)
分析及答案
- 修改/etc/my.cnf 文件 ,添加内容skip-grant-tables,保存退出重启MySQL服务,systemctl restart mysqld输入空密码进入修改密码,在mysql 数据库use mysql;,修改user表的authentication_string字段;update user set authentication_string=password("新密码") where user='root';刷新,flush privileges;退出,修改/etc/my.cnf 文件 ,删除内容skip-grant-tables,保存退出重启MySQL服务,systemctl restart mysqld输入新密码进入
题目描述
写出指令:统计ip访问情况,要求分析nginx访问日志(access.log),找出访问页面数量再前2位的ip(美团)
192.168.130.21 aaa.html 192.168.130.20 aaa.html 192.168.130.20 aaa.html 192.168.130.20 aaa.html 192.168.130.23 aaa.html 192.168.130.20 aaa.html 192.168.130.25 aaa.html 192.168.130.20 aaa.html 192.168.130.20 aaa.html 192.168.130.25 aaa.html 192.168.130.20 aaa.html
分析及答案
- cat acccess.log |awk -F " " '{print $1}':管道分割打印
192.168.130.21 192.168.130.20 192.168.130.20 192.168.130.20 192.168.130.23 192.168.130.20 192.168.130.25 192.168.130.20 192.168.130.20 192.168.130.25 192.168.130.20
- cat acccess.log |awk -F " " '{print $1}' |sort |uniq -c|sort -nr:统计三连
7 192.168.130.20
2 192.168.130.25
1 192.168.130.23
1 192.168.130.21
- cat acccess.log |awk -F " " '{print $1}' |sort |uniq -c|sort -nr |head -2:显示前2位
7 192.168.130.20
2 192.168.130.25
需要掌握的Linux命令
awk
统计三连
head
5. tcpdump监听题目描述
使用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:
Linux tcpdump命令用于倾倒网络传输数据。
执行tcpdump指令可列出经过指定网络界面的数据包文件头
需要掌握的Linux命令
tcpdump追加>> 6. Nginx模块
题目描述
常用的Nginx模块,用来做什么(头条)
答案
rewrite模块:实现重写功能 access模块:来源控制 ssl模块:安全加密 ngx_http_gzip_module:网络传输压缩模块 ngx_http_proxy_module 模块实现代理 ngx_http_upstream_module模块实现定义后端服务器列表 ngx_cache_purge实现缓存清除功能7. 权限划分,考虑哪些问题
题目描述
如果你是系统管理员,在进行Linux系统权限划分时,应考虑哪些因素?(腾讯)
回答思路
1)首先阐述Linux权限的主要对象
2)根据自己实际经验谈考虑因素
注意权限分离权限最小原则(即:在满足使用的情况下最少优先)减少使用root用户,尽量用普通用户+sudo提权进行日常操作重要的系统文件,比如/etc/passwd,/etc/shadow etc/fstab,/etc/sudoers等,日常建议使用chattr锁定,需要操作时再打开(【演示比如:锁定letc/passwd让任何用户都不能随意useradd,除非解除锁定】)chattr +i /etc/passwd:锁定passwd文件;chattr -i /etc/passwd:解锁 ps:可以移动改名/usr/bin/chattr防止黑客使用SUID,SGID,Sticky设置特殊权限可以利用工具,比如chkrootkit/rootkit hunter 检测rootkit脚本(rootkit是入侵者使用工具,在不察觉情况下建立了入侵系统途径)利用工具Tripwire检测文件系统完整性 8. 权限操作思考题
题目描述1及答案
用户tom对目录/home/test有执行x和读r写w权限,/home/test/hello.java是只读文件,问tom对 hello.java文件能读吗(ok)?能修改吗(no)?能删除吗?(ok)
对文件的删除权限仅仅跟 文件所在的文件夹w权限有关。
题目描述2及答案
用户tom对目录/home/test只有读写权限,/home/test/hello.java是只读文件,问tom对 hello.java文件能读吗(no)?能修改吗(no)?能删除吗?(no)
对文件夹没有x执行权限,是进入不了文件夹的,执行不了任何操作。
题目描述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启动流程
题目描述
说明Centos7启动流程,并说明和CentOS6 相同和不同的地方(腾讯)
网络文章
CentOS7启动流程,CentOS6启动流程(含详细流程图)
10. Linux高级命令题目描述1
问题:列举Linux高级命令,至少6个(百度)
答案
netstat //网络状态监控 top //系统运行状态 lsblk //查看硬盘分区 老色逼来看硬盘分区??? find ps -aux //查看运行进程 chkconfig //查看服务启动状态 systemctl //管理系统服务
题目描述2
问题:Linux查看内存、io 读写、磁盘存储、端口占用、进程查看命令是什么?(瓜子)
答案
查看内存 --> top 查看io读写 --> iotop 查看磁盘存储 --> df -lh (disk free) 查看端口占用 --> netstat -tunlp (-t或--tcp 显示TCP传输协议的连线状况;-u或--udp 显示UDP传输协议的连线状况;-n或--numeric 直接使用IP地址,而不通过域名服务器;-l或--listening 显示监控中的服务器的Socket;-p或--programs 显示正在使用Socket的程序识别码和程序名称) 查看进程 --> ps -aux | grep xx11. 计算列和
题目描述
使用Linux命令计算t2.txt第二列的和并输出(美团) 张三 40 李四 50 王五 60
答案
cat t2.txt |awk -F " " ‘{sum+=$2} END {print sum}’
12. Shell检测文件存在
题目描述
Shell脚本里如何检查一个文件是否存在?并给出提示(百度)
答案
if [ -f 文件名 ] then echo "存在" else echo "不存在" fi13. Shell排序求和
题目描述
用shell写一个脚本,对文本t3.txt中无序的一列数字排序,并将总和输出(百度) 9 8 7 6 5 4 3 2 10
答案
sort -nr t3.txt | awk '{sum+=$0;print $0} END {print "和="sum}'
$n与$0的区别
| $n | 当前记录的第n个字段,字段间由FS分隔 |
| $0 | 完整的输入记录 |
题目描述1
请用指令写出查找当前文件夹(/home)下所有的文本文件内容中包含有字符“cat”的文件名称
答案
grep -r "cat" /home | cut -d ":" -f 1
需要掌握的Linux命令
grepcut
Linux grep 命令用于查找文件里符合条件的字符串。
grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。
Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字
-d :自定义分隔符,默认为制表符。-f :与-d一起使用,指定显示哪个区域。
题目描述2
请写出统计/home目录下所有文件个数和所有文件总行数的指令(在金山面试题扩展)
答案
find /home/ -name "*.*" | wc -l find /home/ -name "*.*" | xargs wc -l
需要掌握的Linux命令
wcxargs 15. web服务器负载架构
题目描述
列出你了解的web服务器负载架构(滴滴)
答案
Nginx Haproxy Keepalived LVS16. 定时任务备份文件
题目描述
每天晚上10点30分,打包站点目录/var/spool/mail 备份到/home目录下(每次备份按时间生成不同的备份包比如按照年月日时分秒)(滴滴)
思路及答案
写一个Shell脚本放到crond中
vim mail.sh
#!/bin/bash cd /var/spool && /bin/tar zcf /home/mail-`date +Y-%m-%d_%H%M%S`.tar.gz mail/
crontabl -e
30 20 * * * /bin/sh /root/mail.sh17. 优化Linux
题目描述
如何优化Linux系统,说出你的方法(瓜子)
回答思路
1)对Linux的架构的优化,和原则分析(示意图)
单体->负载均衡
- 网络优化磁盘IO 读写分离文件连接数 能打开多个文件安全性 防止黑客攻击防火墙 不要监听过多的端口,内部端口就不要搞到外部去监听内存 关闭不必要的服务
2)对linux系统本身的优化-规则
- 不用root ,使用sudo提升权限定时的自动更新服务器时间,使用nptdate npt1.aliyun.com让croud定时更新配置yum源,指向国内镜像(清华,163)配置合理的防火墙策略,打开必要的端口,关闭不必要的端口打开最大文件数(调整文件的描述的数量) vim /etc/profile ulimit -SHn 65535配置合理的监控策略配置合理的系统重要文件的备份策略对安装的软件进行优化,比如nginx ,apache内核参数进行优化/etc/sysctl.conf锁定一些重要的系统文件 chattr /etc/passwd lect/shadow /etclinittab禁用不必要的服务 setup , ntsysv



