最全的Linux教程,Linux从入门到精通
======================
-
linux从入门到精通(第2版)
-
Linux系统移植
-
Linux驱动开发入门与实战
-
LINUX 系统移植 第2版
-
Linux开源网络全栈详解 从DPDK到OpenFlow
第一份《Linux从入门到精通》466页
====================
内容简介
====
本书是获得了很多读者好评的Linux经典畅销书**《Linux从入门到精通》的第2版**。本书第1版出版后曾经多次印刷,并被51CTO读书频道评为“最受读者喜爱的原创IT技术图书奖”。本书第﹖版以最新的Ubuntu 12.04为版本,循序渐进地向读者介绍了Linux 的基础应用、系统管理、网络应用、娱乐和办公、程序开发、服务器配置、系统安全等。本书附带1张光盘,内容为本书配套多媒体教学视频。另外,本书还为读者提供了大量的Linux学习资料和Ubuntu安装镜像文件,供读者免费下载。
本书适合广大Linux初中级用户、开源软件爱好者和大专院校的学生阅读,同时也非常适合准备从事Linux平台开发的各类人员。
需要《Linux入门到精通》、《linux系统移植》、《Linux驱动开发入门实战》、《Linux开源网络全栈》电子书籍及教程的工程师朋友们劳烦您转发+评论
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
CPU使用状况 1.02%us, 0%sy, 0%ni, 98.98%id, 0%wa, 0%irq, 0%softirq
us:用户空间占用CPU百分比
sy:内核空间占用CPU百分比
ni:用户进程空间内改变过优先级的进程占用CPU百分比
id:空闲CPU百分比
wa:等待输入输出的CPU时间百分比
hi:硬件中断
si:软件中断
st:实时
1、top命令常用参数
2、P,M分别是按cpu和内存排序;mac系统使用o + 列名
3、sar -u 1 3 监控CPU状态
4、top -p 345 查看指定pid=345的进程,在mac中用-pid代替-p
5、%cpu参数不可靠,需要1查看每个CPU的使用率才可靠
free
-g```:以GB为显示单位,也可以-m以MB为显示单位
name | total | used | free | shared | buffers |cached
--- | --- | --- | --- | --- | --- | ---
Mem: | 125 | 125 | 0 | 0 | 0 | 109 |
-/+ buffers/cache: | | 15(上一行的used - buffers - cached) | 110(上一行的 free + buffers + cached)
Swap: | 0 | 0 | 0
对操作系统来讲,为了内存利用率最大化,会把剩余内存申请为cached,所以系统运行时间长了,cached就会比较大,对于频繁读写的系统就更加明显。used 和 free都是Mem的参数,所以 buffers/cached这两项对于操作系统来讲都是已经被使用的内存,所以呢 free的就比较少;
而对于应用程序来说呢,buffers/cached等同于可用的内存,因为buffers/cached可提高程序执行的性能,当程序使用内存时,buffers/cached很快就会被使用。
所以从应用程序的角度来看,应以(-/+ buffers/cached)的free 和 used为主,即我们主要与他相关的free和used就可以了
我们在观察Linux的内存使用情况时,只要没发现用swap的交换空间,就不必担心自己的内存太少。如果常常看到swap用了很多,那么你就要考虑加物理内存了,可以用`vmstat`查看swap IO状况。这也是在Linux服务器上看内存是否够用的标准。因为swap用的多,说明OS把本应该存在物理内存中的部分内存页调度到了磁盘,腾出空间给当前进程使用,等到其他进程运行时才会把这部分内存页再次调度到物理内存。
#### buffer/cache/shared memory区别与联系
#### pmap
1. 查看进程内存分布状况,可以用来分析线程堆栈:`pmap -d 12345 # 12345 是进程号`
#### 清理linux cache
Kernels 2.6.16 and newer provide a mechanism to have the kernel drop the page cache and/or inode and dentry caches on command, which can help free up a lot of memory.
This is a non-destructive operation and will only free things that are completely unused. Dirty objects will continue to be in use until written out to disk and are not freeable. If you run "sync" first to flush them out to disk, these drop operations will tend to free more memory.
To free pagecache:
# echo 1 > /proc/sys/vm/drop\_caches
To free dentries and inodes:
# echo 2 > /proc/sys/vm/drop\_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
> 遇到报错:```tcpdump: can't create rx ring on packet socket: cannot allocate memory```, 可以使用该命令清除cache
### 磁盘IO
#### 磁盘IOPS和Throughput
1. 磁盘的 IOPS,也就是在一秒内磁盘进行多少次 I/O 读写。磁盘的吞吐量,也就是每秒磁盘 I/O 的流量,即磁盘写入加上读出的数据的大小。每秒 I/O 吞吐量= IOPS\* 平均 I/O SIZE
2. 随机读写频繁的应用,如OLTP(Online Transaction Processing),IOPS是关键衡量指标;对于大量顺序读写的应用,如VOD(Video On Demand),则更关注吞吐量指标。
#### 影响IOPS的因素
1. 第一个\*\*寻址时间\*\*,考虑到被读写的数据可能在磁盘的任意一个磁道,既有可能在磁盘的最内圈(寻址时间最短),也可能在磁盘的最外圈(寻址时间最长),所以在计算中我们只考虑平均寻址时间,也就是磁盘参数中标明的那个平均寻址时间,这里就采用当前最多的10krmp硬盘的5ms。
2. 第二个\*\*旋转延时\*\*,和寻址一样,当磁头定位到磁道之后有可能正好在要读写扇区之上,这时候是不需要额外额延时就可以立刻读写到数据,但是最坏的情况确实要磁盘旋转整整一圈之后磁头才能读取到数据,所以这里我们也考虑的是平均旋转延时,对于10krpm的磁盘就是(60s/10k)\*(1/2) = 2ms。
3. 第三个\*\*传送时间\*\*,磁盘参数提供我们的最大的传输速度,当然要达到这种速度是很有难度的,但是这个速度却是磁盘纯读写磁盘的速度,因此只要给定了单次 IO的大小,我们就知道磁盘需要花费多少时间在数据传送上,这个时间就是IO Chunk Size / Max Transfer Rate。
#### I/O 读写的类型
大体上讲,I/O 的类型可以分为:读 / 写 I/O、大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。在这几种类型中,我们主要讨论一下:大 / 小块 I/O、连续 / 随机 I/O, 顺序 / 并发 I/O。
##### 大 / 小块 I/O
这个数值指的是控制器指令中给出的连续读出扇区数目的多少。如果数目较多,如 64,128 等,我们可以认为是大块 I/O;反之,如果很小,比如 4,8,我们就会认为是小块 I/O,实际上,在大块和小块 I/O 之间,没有明确的界限。
##### 连续 / 随机 I/O
连续 I/O 指的是本次 I/O 给出的初始扇区地址和上一次 I/O 的结束扇区地址是完全连续或者相隔不多的。反之,如果相差很大,则算作一次随机 I/O
连续 I/O 比随机 I/O 效率高的原因是:在做连续 I/O 的时候,磁头几乎不用换道,或者换道的时间很短;而对于随机 I/O,如果这个 I/O 很多的话,会导致磁头不停地换道,造成效率的极大降低。
##### 顺序 / 并发 I/O
从概念上讲,并发 I/O 就是指向一块磁盘发出一条 I/O 指令后,不必等待它回应,接着向另外一块磁盘发 I/O 指令。对于具有条带性的 RAID(LUN),对其进行的 I/O 操作是并发的,例如:raid 0+1(1+0),raid5 等。反之则为顺序 I/O。
#### [磁盘I/O那些事]( )
Linux下的IO监控与分析
iostat -xm 1 1
: 监控CPU状态和磁盘IO- iostat命令输出详解
系统端口占用信息和进程信息
lsof | grep pid/pname
查看进程信息lsof -i:port
查看端口号port使用的进程号和连接情况lsof -i@ip:port
使用@host:port来显示指定到指定主机的连接lsof -iTCP
显示TCP连接lsof -c abc
显示 abc 进程现在打开的文件lsof -p 12
看进程号为 12 的进程打开了哪些文件netstat -np/c/atux | grep pid/port/pname
查看进程号所占用的端口号和端口占用情况netstat -n | grep tcp | grep 侦听端口 | wc -l
: 监听端口连接数netstat -nat | grep 3306 -c
: 查看数据库连接使用数目ps aux
只能看到pid等信息,不能看到端口号ps -eLf | grep java | wc -l
: 监控java进程的线程数, 或者ps -eLf | grep 27955 -c
ps -eo pid,pcpu | sort -rn -k 2 | less
查看CPU高占用的进程pidps H -eo pid,tid,pcpu | sort -rn -k 3 | less
查看CPU高占用的pid及线程idcat /proc/进程号/task/线程号/status
查看线程具体信息printf "%x\n" 7444
线程id转成十六进制,可以用于jstack dump信息的搜索id- 远程登录
telnet hostname
sar命令查看网络、磁盘、CPU、内存信息
sar - Collect, report, or save system activity information.
参数说明
-A 汇总所有的报告
-a 报告文件读写使用情况
-B 报告附加的缓存的使用情况
-b 报告缓存的使用情况
-c 报告系统调用的使用情况
-d 报告磁盘的使用情况
-g 报告串口的使用情况
-h 报告关于buffer使用的统计数据
-m 报告IPC消息队列和信号量的使用情况
-n 报告命名cache的使用情况
-p 报告调页活动的使用情况
-q 报告运行队列和交换队列的平均长度
-R 报告进程的活动情况
-r 报告没有使用的内存页面和硬盘块
-u 报告CPU的利用率
-v 报告进程、i节点、文件和锁表状态
-w 报告系统交换活动状况
-y 报告TTY设备活动状况
系统平均load负载
sar -q 2 2
参数:
runq-sz:运行队列的长度(等待CPU时间片来运行的进程数)
plist-sz:进程列表中进程(processes)和线程(threads)的数量
ldavg-1:最后1分钟的系统平均负载 ldavg-5:过去5分钟的系统平均负载
ldavg-15:过去15分钟的系统平均负载
查看内存信息
sar -r 1 3
参数解释:
kbmemfree:剩余可用内存、单位K
kbmemused:已用内存、以K 为单位、该值不考虑内核自身所使用的内存
%memused:已用内存百分比
kbbuffers:已用buffer(内核所用)、单位K
kbcached:已用cache(内核所用)、单位K
kbswpfree:剩余Swap、单位K
kbswpused:已用Swap、单位K
%swpused:已用Swap百分比
kbswpcad:被缓存的Swap、单位K
内存分页统计
sar -B 5 3
参数解释:
pgpgin/s:表示每秒从磁盘或SWAP置换到内存的字节数(KB)
pgpgout/s:表示每秒从内存置换到磁盘或SWAP的字节数(KB)
fault/s:每秒钟系统产生的缺页数,即主缺页与次缺页之和(major + minor)
majflt/s:每秒钟产生的主缺页数.
系统交换活动状况
sar -w 1 3
参数:
pswpin/s:每秒系统换入的交换页面(swap page)数量
pswpout/s:每秒系统换出的交换页面(swap page)数量
CPU信息
sar -u 3 5
参数解释:
%user:显示在用户级别(application)运行使用 CPU 总时间的百分比
%nice:显示在用户级别,通过nice改变了进程调度优先级的进程,在用户模式下消耗的CPU时间的比例
%system:在内核级别(kernel)运行所使用 CPU 总时间的百分比
%iowait:显示用于等待I/O操作占用 CPU 总时间的百分比
%idle:显示 CPU 空闲时间占用 CPU 总时间的百分比
1)若 %iowait 的值过高(大于0的长时间值),表示硬盘或者网络存在I/O瓶颈
2)若 %idle 的值高但系统响应慢时,有可能是 CPU 等待分配内存,此时应加大内存容量
3)若 %idle 的值持续低于1,则系统的 CPU 处理能力相对较低,表明系统中最需要解决的资源是 CPU
磁盘信息
sar -b 3 5
tps:每秒磁盘的 I/O 传输总量
rtps:每秒从磁盘读出的数据总量
wtps:每秒向磁盘写入的数据总量
bread/s:每秒从磁盘读出的数据量,单位为 块/s
bwrtn/s:每秒向磁盘写入的数据量,单位为 块/s
网络IO
sar -n DEV 2 3
监控TCP连接状态
先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前在阿里
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
o-1715577356881)]
[外链图片转存中…(img-E03QZys0-1715577356882)]
[外链图片转存中…(img-NasFtwJ1-1715577356882)]
[外链图片转存中…(img-CdWv7jvU-1715577356882)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新