一、 Linux
89309061d755b402f0379362d155b0769
d319431ac52e725d7
tcp/ip 协议栈
1、tcp 有大量 timewait 是怎么回事
在高并发短连接的 TCP 服务器上,当服务器处理完请求后立刻按照主动正常关闭
连接。。。这个场景下,会出现大量 socket 处于 TIMEWAIT 状态。如果客户端的并
发量持续很高,此时部分客户端就会显示连接不上。
2、tcp、udp 区别分别在哪,举例说出应用到 tcp、udp、的协议
TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。TCP 提供超时重发,丢弃重复
数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。数据可靠传输
UDP---用户数据报协议,UDP 不提供可靠性,没有超时重发等机制,故而传输速度很快
TCP:面向连接、传输可靠(保证数据正确性,保证数据顺序)、用于传输大量数据(流模式)、速
度慢,建立连接需要开销较多(时间,系统资源)。
UDP:面向非连接、传输不可靠、用于传输少量数据(数据包模式)、速度快。
一些要求比较高的服务一般使用这个协议,如 FTP、Telnet、SMTP (简单邮件传输协议)、HTTP、
POP3
UDP 是面向无连接的,使用这个协议的常见服务有 NFS(网络文件系统)、DNS、SNMP (简单
网络管理系统)、QQ
3 、 tcp 如何实现可靠传输 http://www.cnblogs.com/deliver/p/5471231.html
a、确认和重传:接收方收到报文就会确认,发送方发送一段时间后没有收到确认就重传。
b、数据校验
c、数据合理分片和排序:
UDP:IP 数据报大于 1500 字节,大于 MTU.这个时候发送方 IP 层就需要分片(fragmentation).
把数据报分成若干片,使每一片都小于 MTU.而接收方 IP 层则需要进行数据报的重组.这样就
会多做许多事情,而更严重的是,由于 UDP 的特性,当某一片数据传送中丢失时,接收方便无法
重组数据报.将导致丢弃整个 UDP 数据报.
tcp 会按 MTU 合理分片,接收方会缓存未按序到达的数据,重新排序后再交给应用层。
d、流量控制:当接收方来不及处理发送方的数据,能提示发送方降低发送的速率,防止包
丢失。
e、拥塞控制:当网络拥塞时,减少数据的发送。
4、tcp 滑动窗口什么情况下会变化,怎么变 http://www.cnblogs.com/luoquan/p/4886345.html
首先是第一次发送数据这个时候的窗口大小是根据链路带宽的大小来决定的。我们假设这
个时候窗口的大小是 3。这个时候接受方收到数据以后会对数据进行确认告诉发送方我下次
希望手到的是数据是多少。这里我们看到接收方发送的 ACK=3(这是发送方发送序列 2 的回
答确认,下一次接收方期望接收到的是 3 序列信号)。这个时候发送方收到这个数据以后就
知道我第一次发送的 3 个数据对方只收到了 2 个。就知道第 3 个数据对方没有收到。下次在
发送的时候就从第 3 个数据开始发。这个时候窗口大小就变成了 2 。
5、了解 fork()函数
fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,这个新产生的进程称
为子进程。一个进程调用 fork()函数后,系统先给新的进程分配资源,例如存储数据和代
码的空间。然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的
值不同。相当于克隆了一个自己。需要注意的一点:就是调用 fork 函数之后,一定是两个
进程同时执行的代码段是 fork 函数之后的代码,而之前的代码以及由父进程执行完毕。
Linux 基础知识
查看某服务是否打开:ps aux 或 netstat -tulnp (ps 是进程查看命令,netstat 是端口查看)
service 服务名 status
/sbin/service --status-all |grep "服务名"
chkconfig --list |grep "httpd"
一 次 性 关 闭 某 服 务 的 所 有 进 程 :
sar 是 System Activity Reporter(系统活跃情况报告)
killall -u zhangnq
pkill -u zhangnq
如何查看 Linux 系统性能
常用命令
1.mpstat Multiprocessor Statistics 的缩写其报告与 CPU 的一些统计信息
2.top3.vmstat
4.sar
5.iostat6.uptime
可以用 ps -aux 或者 top 来观察某一进程对 CPU 的消耗情况
Vmstat 列出: procs ------memory-----swap------io-----system-------cpu-- 情况
Uptime 列出:系统平均负载被定义为在特定时间间隔内运行队列中的平均进程数
Iostat 来获得系统磁盘的数据
Ifconfig | netstat –I
送数据或者接受数据的 5%以上),那么说明网络 严重堵塞。
linux 杀死僵尸进程
ps -A -ostat,ppid,pid,cmd | grep -e '^[Zz]'
运行结果参考如下
Z 12334 12339 /path/cmd
kill -HUP 12339(杀子) kill -HUP 12334(杀父)
procinfo
ifconfig 先 查看网络接口数据状态如果发现 collisions:0 数据很大(占发
ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' | awk '{print $2}' | xargs kill -9
$ ps -el 其中,有标记为 Z 的进程就是僵尸进程 S 代表休眠状态;D 代表不可中断的休眠状
态;R 代表运行状态;Z 代表僵死状态;T 代表停止或跟踪状态 Top 命令也可以查看僵尸进
程
系统开机启动流程
1、bios
2、MBR
块 8、执行不同级别脚本 9、用户自定义 local
3、GRUB
10、登录
4、内核 5、init 等级 6、网络 PATH
7 、内核模
加电检查了哪些外围设备,检查的顺序
CPU 及内存条、标准硬件设备,这些设备包括:硬盘、CD-ROM、软驱、串行接口和并行接
口等连接的设备条、即插即用设备
完整的自检包括了对 CPU、640K 基本内存、1M 以上的扩展内存、ROM、主板、CMOS 存贮
器、串并口、显示卡、软硬盘子系统及键盘的测试。
bios 存在的意义
自检及初始化程序、硬件中断处理:计算机开机的时候,BIOS 会告诉 CPU 等硬件设备的中
断号,当你操作时输入了使用某个硬件的命令后,它就会根据中断号使用相应的硬件来完成
命令的工作,最后根据其中断号跳回原来的状态。再有就是程序服务请求:它通过最特定的
数据端口发出指令,发送或接收各类外部设备的数据,从而实现软件应用程序对硬件的操作。
lost+found efi
/boot 分区的内容
symvers-2.6.32-642.el6.x86_64.gz
config-2.6.32-642.el6.x86_64
System.map-2.6.32-642.el6.x86_64 vmlinuz-2.6.32-642.el6.x86_64(系统内核)
如何找到 grub
****************************************************************************
grub 和 grub2 的区别
1.GRUB2 引导菜单启动项是从/boot 自动生成的,不是由 menu.lst 配置的。
grub
2. grub.cfg 文件被 update-grub 更新,改变配置文件之后,要执行 update-grub 才使新的配置生效
3.分区编号发生变化:第一个分区现在是 1 而不是 0,但第一个设备仍然以 0 开始计数,如 hd0
配置文件的不同更为明显:/boot/grub/menu.lst - 已经被/boot/grub/grub.cfg 代替。
******************************************************************************
内核是什么,功能,如何修改内核参数
内核”指的是一个提供硬件抽象层、磁盘及文件系统控制、多任务等功能的系统软件。
1、进程管理
内核负责创建和销毁进程, 并处理它们与外部世界的联系(输入和输出). 不同进程间通讯
(通过信号, 管道, 或者进程间通讯原语)对整个系统功能来说是基本的, 也由内核处理. 另
外, 调度器, 控制进程如何共享 CPU, 是进程管理的一部分. 更通常地, 内核的进程管理活
动实现了多个进程在一个单个或者几个 CPU 之上的抽象.
2、内存管理
计算机的内存是主要的资源, 处理它所用的策略对系统性能是至关重要的. 内核为所有进
程的每一个都在有限的可用资源上建立了一个虚拟地址空间. 内核的不同部分与内存管理
子系统通过一套函数调用交互, 从简单的 malloc/free 对到更多更复杂的功能.
3、文件系统
Unix 在很大程度上基于文件系统的概念; 几乎 Unix 中的任何东西都可看作一个文件. 内
核在非结构化的硬件之上建立了一个结构化的文件系统, 结果是文件的抽象非常多地在整
个系统中应用. 另外, Linux 支持多个文件系统类型, 就是说, 物理介质上不同的数据组织方
式. 例如, 磁盘可被格式化成标准 linux 的 ext3 文件系统, 普遍使用的 FAT 文件系统, 或
者其他几个文件系统.
4、设备控制
几乎每个系统操作最终都映射到一个物理设备上. 除了处理器, 内存和非常少的别的实体
之外, 全部中的任何设备控制操作都由特定于要寻址的设备相关的代码来进行. 这些代码称
为设备驱动. 内核中必须嵌入系统中出现的每个外设的驱动, 从硬盘驱动到键盘和磁带驱动
器. 内核功能的这个方面是本书中的我们主要感兴趣的地方.
5、网络
网络必须由操作系统来管理, 因为大部分网络操作不是特定于某一个进程: 进入系统的报
文是异步事件. 报文在某一个进程接手之前必须被收集, 识别, 分发. 系统负责在程序和网
络接口之间递送数据报文, 它必须根据程序的网络活动来控制程序的执行. 另外, 所有的路
由和地址解析问题都在内核中实现.
A、配置文件中修改(当前无效,重启永久生效)
sysctl -p
//向指定 IP 发送 ARP 请求
vim /etc/sysctl.conf 添加 net.ipv4.icmp_echo_ignore_all=1
让其修改后立刻生效
B、echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_al
C、sysctl -w net.ipv4.icmp_echo_ignore_all=1 (路径去掉/proc/sys/,且"/ "改成".")
**************************************************************************
linux 如何获取对方的 arp(arping)
arping 192.168.0.1
输出:ARPING 192.168.0.1 from 192.168.0.3 eth0
Unicast reply from 192.168.0.1 [00:21:27:9E:36:66] 2.480ms
******************************************************************************
linux 绑定双网卡,数据怎么走
mode=0(balance-rr)轮询的方式
mode=1(active-backup)表示主备模式
mode=2(balance-xor)(平衡策略) mode=3(broadcast)(广播策略)
mode=4(802.3ad)(IEEE 802.3ad 动态链接聚合) mode=5(balance-tlb)(适配器传输负载均衡)
mode=6(balance-alb)(适配器适应性负载均衡)
mode5 和 mode6 不需要交换机端的设置,网卡能自动聚合。mode4 需要支持 802.3ad。mode0,mode2 和 mode3 理论上需要静态聚合方式。
***************************************************************
写过什么 shell 脚本,实现功能
1、 目录文件计数:对 PATH 环境变量中定义的目录里的可执行文件进行计数
Sed for do done
2、 验证电话号码:awk
3、 解析邮件地址
*******************************************************************
文件及目录权限
文件的原始权限: 666
普通用户 umask: 002 --- --- -w-
rw- rw- r--
root 用户 umask: 022 --- -w- -w-
目录的原始权限: 777
rw- rw- rw-
664
rwx
rwx
rwx
644
*****************************************************************************
Linux 发行版本
RHEL(RedHat Enterprise Linux)
Fedora
CentOS (Comunity ENTerprise Operating System)社区企业操作系统
Debian
Kali
*******************************************************************************
常见的 http 状态码 http://www.cnblogs.com/loveyakamoz/archive/2011/09/03/2165266.html
1xx:信息响应类,表示接收到请求并且继续处理
2xx:处理成功响应类,表示动作被成功接收、理解和接受
200 OK eg: 一切正常,对 GET 和 POST 请求的应答文档跟在后面
3xx:重定向响应类,为了完成指定的动作,必须接受进一步处理
4xx:客户端错误,客户请求包含语法错误或者是不能正确执行
400 Bad Request
403 Forbidden
404 Not Found
5xx:服务端错误,服务器不能正确执行一个正确的请求
***************************************************************************
Netstat 常用命令
-a (all)显示所有选项,默认不显示 LISTEN 相关
-t (tcp)仅显示 tcp 相关选项
-u (udp)仅显示 udp 相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
请求出现语法错误。
资源不可用。
无法找到指定位置的资源
AIX HP-UNIX Solaris
386BSD FreeBSD Xenix(x86)
-e 显示扩展信息,例如 uid 等
-c 每隔一个固定时间,执行该 netstat 命令。
-l 仅列出有在 Listen (监听) 的服務状态
-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-s 按各个协议进行统计
提示:LISTEN 和 LISTENING 的状态只有用-a 或者-l 才能看到
*****************************************************************************
Linux 又叫 GNU/linux,GNU 与 linux 分别代表什么
Linux 只是一个操作系统内核而已,而 GNU 提供了大量的自由软件来丰富在其之上各种应用
程序。一个 Linux 发行套件包含大量的软件,比如软件开发工具,数据库,Web 服务器(例
如 Apache),X Window,桌面环境(比如 GNOME 和 KDE),办公套件(比如 OpenOffice.org)。
*******************************************************************************
常见的 unix 发行版
****************************************************************************
windows 和 linux 的区别
linux 是一种多任务多用户操作系统
#windows 是一种多任务单用户操作系统
*******************************************************************************
维护一个系统的安全有哪几方面
防火墙 iptables 安全外鞘 selinux 用户/文件权限的划分 user
*****************************************************************************
linux 常见的分区格式
文件系统:用来明确文件在分区上组织方法和数据结构
#windows: ntfs
#linux:
*************************************************************************
linux 常见的运行级别
运行级别(runlevel)
#关机
#单用户模式(用于维护,恢复 root 密码)
#无网络功能的多用户模式
#全功能多用户模式(命令行模式)
#保留
#图形化环境
#重启
VFAT 叫长文件名系统,这是一个与 Windows 系统兼容的 Linux 文件系统
ext2 ext3(加了日志功能) ext4 xfs
#用来控制系统启动模式
0
1
2
3
4
5
6
group
other
rwx
df -Th
fat32
***************************************************************************
Python 与 shell 的区别
如果使用 python 去写脚本来处理日常事务的话,相对于 shell 是一件比较麻烦的事情,因为
我可以使用 shell 在花费更少的时间内,比较熟练地使用 awk、sed 和 grep 这些常用的命令
在非常简短的脚本语句内,完成 python 一大段代码所能够完成的功能。Python 实现面向对
象的模块化设计、操作服务器数据库
**************************************************************************
dumpe2fs 的应用场景
显示 device 中文件系统的超级块和块组信息。
dumpe2fs [ -bfhixV ] [ -o superblock=superblock ] [ -o blocksize=blocksize ] device(/dev/sdax)
cat /proc/cpuinfo :如果有多个类似以下的项目,则为多核或多 CPU
: 0
: 1
*****************************************************************************
linux 如何看 cpu 型号及使用率
查看是几核 cpu:
processor
processor
看每个 CPU 的使用率:top -d 1
查看内核版本:uname –a
查看内存信息 cat /proc/meminfo
查看 CPU 型号: cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq –c
:或 dmidecode -s processor-version
查看线程数: grep 'processor' /proc/cpuinfo | sort -u | wc –l
*****************************************************************************
服务器知识
解释 CDN(Content Delivery Network)
尽可能的减少资源在转发、传输、链路抖动等情况下顺利保障信息的连贯性。
普通访问网站过程
访问经过 CDN 缓存后的网站的过程
*******************************************************************************
公钥私钥原理,公钥文件存放在哪里,权限是多少
(~/.ssh 目录,并把目录权限设置为 700),并且把它的用户权限设成 600。
*****************************************************************
对 raid 了解多少
RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)
RAID 的几种工作模式(仅讨论 RAID0,RAID1,RAID5,RAID10 这四种,这四种比较典型)