操作系统

Linux运维基础技能: 接入层与网络基础

本系列文章一共三篇,分别为《脚本编程与 Linux 命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。 希望对需要学习、面试 Linux 运维的同学有所帮助。 MSS与MTU的区别,默认大小各是多少? 标准以太网接口缺省的MTU(最大传输单元)为1500 字节,是最大帧1518减去源宿的MAC、FCS后最大的IP packet大小; MTU减去20字节IP包头减去20字节TCP包头 ,即是MSS,1460字节 一台交换机要保证接口MTU的一致性。如果在一个VLAN上、或整个交换机都采用同样的MTU,避免一些奇怪的问题 参考:https://www.zhihu.com/question/21524257 TIME_WAIT 与CLOSE_WAIT 的区别 主动关闭连接的一方进入TIME_WAIT ,若客户端高并发访问HTTP接口又没有使用会话或者线程池机制,可能会导致本地端口耗尽。 CLOSE_WAIT 出现在被动断开连接。可能常见在Server端,例如在Netty的I/O线程里做DB读写、日志记录这种不可控的阻塞行为,可能会引发客户端超时。 如何查看机器上所有的tcp连接? natstat -ant netstat -antp 如何统计time_wait 状态的连接? IP 包头大小? 20 字节 url.cn 是几级域名? -- 二级 www.qq.com 是几级域名? -- 三级 url.cn 可以CNAME到 demo.te.isc.demo-cloud.net 吗? 不建议这么操作,实际上很多场合是不可以这么操作的。 https://serverfault.com/questions/613829/why-cant-a-cname-record-be-used-at-the-apex-aka-root-of-a-domain 递归解析与迭代解析的区别? 先理解13组根DNS服务器、顶级域DNS服务器(各解析.com .net .gov 等)、权威DNS服务器、本地DNS服务器。 考虑浏览器客户端访问www.qq.com ,会向小区宽带的本地DNS查询域名解析IP ,而本地DNS会向根DNS、顶级域DNS、权威DNS逐个查询。 从客户端到本地DNS的查询是递归的;而其余的查询是迭代的。(参考《自顶向下理解计算机网络》89页) x-forwarded-for 与 remote_addr 的区别? X-Forwarded-For: client1, proxy1, proxy2 <proxy1>, <proxy2>如果一个请求经过了多个代理服务器,那么每一个代理服务器的IP地址都会被依次记录在内。也就是说,最右端的IP地址表示最近通过的代理服务器,而最左端的IP地址表示最初发起请求的客户端的IP地址。 https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-Forwarded-For 鉴于伪造这一字段非常容易,应该谨慎使用X-Forwarded-For字段。正常情况下XFF中最后一个IP地址是最后一个代理服务器的IP地址 remote_addr 是通讯客户端与服务器实际进行TCP通信的IP IPv4地址分类 (IPv4地址32位) A 类 0.0.0.0/8 127.255.255.255 结束 B 类 128.0.0.0/16 191.255.255.255 结束 C 类 192.0.0.0/24 D 类 224.0.0.0~239.255.255.255 192.168.2.47/26 这个子网的开始IP 和结束IP是? (32-26)=6 , 2^6 = 64...
阅读全文
操作系统

Linux运维基础技能: 脚本编程与Linux命令

本系列文章一共三篇,分别为《脚本编程与Linux命令》、《接入层与网络基础》和《 MySQL 与 SQL 优化》,由腾讯高级工程师 luaruan(阮永顺) 原创、张戈博客整理分享,如有勘误请在博客留言。 希望对需要学习、面试Linux运维的同学有所帮助。 $1 入参,空值时默认赋值技巧 $* 和 $@ 区别 $* 和 $@ 都表示传递给函数或脚本的所有参数,不被双引号(" ")包含 时,都以"$1" "$2" … "$n" 的形式输出所有参数。 但是当它们被双引号(" ")包含时,"$*" 会将所有的参数作为一个整体, 以"$1 $2 … $n"的形式输出所有参数;" $@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出所有参数。 区别在于,分别输出 1 2 3 和 1 2 3 几个 Shell 里的内置变量 Tips: awk 教程 https://coolshell.cn/articles/9070.html sed 教程 https://coolshell.cn/articles/9104.html Shell script 基础问答 https://linux.cn/article-5607-1.html Shell 四则运算方法 函数定义与调用 条件判断 字符串与序列、随机数 name=John && echo 'My name is $name' 输出'My name is $name ,因为单引号里面的$只会当作字面值 字符串截取 a=123456789 ; echo ${a:0:3} 输出 123 echo 替换字符 序列 随机数 使用 cksum 从管道灌进去一些随机文本可生成一些随机数字,需要使用 cut 切 割 字符串截取 提取最后一位 日期 删除空行 Shell script 语法在线检查与建议:https://www.shellcheck.net...
阅读全文
Linux高级运维工程师:100道面试题整理 资源分享

Linux高级运维工程师:100道面试题整理

本套笔试题共100题,每题1分,共100分。(参考答案在文章末尾) 1. cron 后台常驻程序 (daemon) 用于:  A. 负责文件在网络中的共享 B. 管理打印子系统 C. 跟踪管理系统信息和错误 D. 管理系统日常任务的调度 2. 在大多数Linux发行版本中,以下哪个属于块设备 (block devices) ? A. 串行口 B. 硬盘 C. 虚拟终端 D. 打印机 3. 下面哪个Linux命令可以一次显示一页内容? A. pause B. cat C. more D. grep 4. 怎样了解您在当前目录下还有多大空间? A. Use df B. Use du / C. Use du . D. Use df . 5. 怎样更改一个文件的权限设置? A. attrib B. chmod C. change D. file 6. 假如您需要找出 /etc/my.conf 文件属于哪个包 (package) ,您可以执行: A. rpm -q /etc/my.conf B. rpm -requires /etc/my.conf C. rpm -qf /etc/my.conf D. rpm -q | grep /etc/my.conf 7. 假如当前系统是在 level 3 运行,怎样不重启系统就可转换到 level 5 运行? A. Set level = 5 B. telinit 5 C. run 5...
阅读全文
Linux运维工程师:30道面试题整理 资源分享

Linux运维工程师:30道面试题整理

前段时间,我在准备面试的时搜到的一套Linux运维工程师面试题,感觉比较全面,一直保存在草稿,刚在整理后台时翻了出来,干脆就发出来好了,以备不时之需。   1.linux如何挂在windows下的共享目录 linux 下的server需要自己手动建一个  后面的user与pass 是windows主机的账号和密码 注意空格 和逗号 2.查看http的并发请求数与其TCP连接状态 还有ulimit -n 查看linux系统打开最大的文件描述符,这里默认1024,不修改这里web服务器修改再大也没用。若要用就修改很几个办法,这里说其中一个: 修改/etc/security/limits.conf 重启后生效 3.用tcpdump嗅探80端口的访问看看谁最高 4.查看/var/log目录下文件数 5.查看当前系统每个IP的连接数 6.shell下32位随机密码生成 将生成的32位随机数 保存到/pass文件里了 7.统计出apache的access.log中访问量最多的5个IP 8.如何查看二进制文件的内容 我们一般通过hexdump命令 来查看二进制文件的内容。 hexdump -C XXX(文件名)  -C是参数 不同的参数有不同的意义 -C  是比较规范的 十六进制和ASCII码显示 -c  是单字节字符显示 -b  单字节八进制显示 -o  是双字节八进制显示 -d  是双字节十进制显示 -x  是双字节十六进制显示 等等等等 9.ps aux 中的VSZ代表什么意思,RSS代表什么意思 VSZ:虚拟内存集,进程占用的虚拟内存空间 RSS:物理内存集,进程战用实际物理内存空间 10.检测并修复/dev/hda5 fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查,用法: 11.Linux系统的开机启动顺序 加载BIOS–>读取MBR–>Boot Loader–>加载内核–>用户层init一句inittab文件来设定系统运行的等级(一般3或者5,3是多用户命令行,5是界面)–>init进程执行rc.syninit–>启动内核模块–>执行不同级别运行的脚本程序–>执行/etc/rc.d/rc.local(本地运行服务)–>执行/bin/login,就可以登录了。 12.符号链接与硬链接的区别 我们可以把符号链接,也就是软连接 当做是 windows系统里的 快捷方式。 硬链接 就好像是 又复制了一份. ln 3.txt 4.txt   这是硬链接,相当于复制,不可以跨分区,但修改3,4会跟着变,若删除3,4不受任何影响。 ln -s 3.txt 4.txt  这是软连接,相当于快捷方式。修改4,3也会跟着变,若删除3,4就坏掉了。不可以用了。 13.保存当前磁盘分区的分区表 dd 命令是以个强大的命令,在复制的同时进行转换 14..没有14题,我自己来个简单的,如何在文本里面进行复制、粘贴,删除行,删除全部,按行查找和按字母查找。 以下操作全部在命令行状态操作,不要在编辑状态操作。 在文本里 移动到想要复制的行  按yy  想复制到哪就移动到哪,然后按P  就黏贴了 删除行  移动到改行 按dd 删除全部  dG  这里注意G一定要大写 按行查找  :90 这样就是找到第90行 按字母查找 /path  这样就是 找到path这个单词所在的位置,文本里可能存在多个,多次查找会显示在不同的位置。 15.手动安装grub 16.修改内核参数 vi /etc/sysctl.conf  这里修改参数 sysctl -p  刷新后可用 17.在1-39内取随机数 RANDOM 随机数 %39 取余数 范围 0-38 18.限制apache每秒新建连接数为1,峰值为3 每秒新建连接数...
阅读全文