
linux系统
文章平均质量分 75
啊浪的博客
细节决定一切。
最近会将很久之前总结的相关笔记整理成文章,以作总结。侵即删。
展开
-
/proc/loadavg
一、概念:系统平均负载(Load average)系统平均负载:在特定时间间隔内运行队列中的平均进程数。进程位于运行队列中必须满足下面条件:1、进程没有等待操作2、进程没有被停止二、例子[0] %cat /proc/loadavg 0.32 0.29 0.13 1/357 1909前三个是1、5、15分钟内的平均进程数。第四个的分子是正在运行的进原创 2017-01-06 11:13:04 · 6075 阅读 · 0 评论 -
Linux下开发-揭秘文件链接数
unlinkint unlink( const char* pathname);此函数删除目录项,并将由pathname所引用文件的链接计数减1。如果还有指向该文件的其它链接,则仍可通过其他链接访问该文件的数据。如果出错,则不对该文件做任何更改。只有当链接计数达到0时,该文件的内容才可被删除。关闭一个文件时,内核首先检查打开该文件的进程数。如果该数达到0,然后内核检查其链接数,如果原创 2017-11-04 14:05:14 · 2685 阅读 · 1 评论 -
Linux下开发-守护进程(daemon)
intdaemon(void){pid_t pid=fork();if(pid!=0)exit(0);//parent//first childrenif(setsid()==-1){printf("setsid failed\n");assert(0);exit(-1);}原创 2017-11-05 16:49:08 · 910 阅读 · 1 评论 -
Linux锁API
flock、lockf和fcntlLinux的文件锁主要有两种:flock和lockf。lockf只是fcntl系统调用的一个封装。lockf或fcntl实现了更细粒度文件锁,即记录锁,可以对文件的部分字节上锁,而flock只能对整个文件加锁。应该避免在多线程场景下使用flock对文件加锁,而lockf/fcntl则没有这个问题。建议锁和原创 2017-10-14 10:51:17 · 1302 阅读 · 0 评论 -
linux网络API细节
connect函数,是收到syn+ack,发送ack之后返回;accept函数跟三次握手没有关系,accept是从accept队列里面取一条已建立好的连接;bind函数只是进程占用ip+port;声明:该ip+port被这个进程占用了;backlog是listen函数传入的第二个参数客户端调用connect函数建立连接,内部是发送了一个SYN包到服务端.服务端原创 2017-10-08 11:44:22 · 656 阅读 · 1 评论 -
Linux IO模型
IO操作步骤(1)发起IO请求:IO请求一般需要请求特殊资源(如磁盘、RAM、文件、网络),当资源被上一个使用者使用没有被释放时,IO请求就会被阻塞,直到能够使用这个资源。(2)实际IO操作:真正进行数据接收(数据复制)。IO分类步骤1(发起IO请求):分为阻塞IO和非阻塞IO,区别主要是看发起IO请求是否阻塞进程。1、应用程序调用后,不能立即返回的称为原创 2017-11-05 14:49:16 · 312 阅读 · 0 评论 -
Linux下开发-资源详解
资源限制获取或设定资源使用限制。每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。非授权调用进程只可以将其软限制指定为0~硬限制范围中的某个值,同时能不可逆转地降低其硬限制。授权进程可以任意改变其软硬限制。RLIM_INFINITY的值表示不对资源限制。#includeint getrlimit(int resource, struct r原创 2017-11-05 23:23:46 · 257 阅读 · 0 评论 -
top命令浅析
第一行:同uptime命令 system time:系统当前时间15:29:53 system uptime:系统运行时间645天2小时25分 users:当前登入系统的用户数4 load average:过去的1分钟,5分钟,15分钟系统的负载情况(详情点击)。 第二行:进程相关221: 进程总数。 1:运行进程数目。正在运行和等待运行的进程(运行态和...原创 2017-01-07 13:04:08 · 2297 阅读 · 0 评论 -
/proc/stat
[root@lang]#cat /proc/stat cpu 15579 99 13680 698457 10939 40 651 00cpu0 1669 7 1974 338065 1396 5 9 0 0cpu1 13910 91 11705 360391 9542 35 641 0 0…//省略 第一行表示的是CPU总的使用情况。其他行分别为各个核的使用情况。单原创 2017-01-08 13:21:05 · 1958 阅读 · 0 评论 -
linux磁盘浅析
df查看磁盘使用情况[root@lang]#df –hFilesystem Size Used Avail Use% Mounted on/dev/sda1 9.9G 6.2G 3.3G 66% //dev/sda3 20G 1.5G 18G 8% /usr/local/dev/sda4 ...原创 2017-01-08 13:30:59 · 1531 阅读 · 0 评论 -
/proc/net/snmp
/proc/net/snmp udp相关[root@lang]#cat /proc/net/snmp|grep 'Udp:'|tail -n1|awk -F':' '{print $2}'Udp:InDatagrams NoPorts InErrors OutDatagrams RcvbufErrors SndbufErrors 4815312492632 170772401 7原创 2017-01-08 13:50:29 · 9587 阅读 · 0 评论 -
Linux内存布局、内存分配原理
Linux的虚拟内存管理有几个关键概念1.每个进程有独立的虚拟地址空间,进程访问的虚拟地址并不是真正的物理地址2.虚拟地址可通过每个进程的页表与物理地址进行映射,获得真正物理地址3.如果虚拟地址对应的物理地址不在物理内存中,则产生缺页中断,并真正分配物理地址,同时更新进程的页表;如果此时物理内存已耗尽,则根据内存替换算法淘汰部分页面至物理磁盘中。原创 2017-05-21 22:09:09 · 13310 阅读 · 1 评论 -
linux文件IO
{ char *buf = malloc(MAX_BUF_SIZE); strncpy(buf, src, , MAX_BUF_SIZE); fwrite(buf, MAX_BUF_SIZE, 1, fp); fclose(fp);}malloc的buf对应图层中applicationbuffer,即应用程序buffer;调用fwrite后,把数据从app原创 2017-05-21 23:07:28 · 2130 阅读 · 1 评论 -
程序优化的那些事
系统设计层面攒包/定时地进行批量处理。提高单包承载率,减少网络io、减少系统调用次数。数据处理(cpu消耗型代码)、io独立线程处理。多地部署,就近接入。分set,避免跨城、跨地区流量访问。消息队列尽量无锁化、一写一读等。尽量减少无用的代理层,去中间商。灰度机制。内核级优化(操作系统多队列网卡特性等)。数据自动报表化,多维度原创 2017-10-08 15:56:55 · 471 阅读 · 0 评论 -
free命令引发的思考
下文所操作机器已关闭swap。如描述有误,望轻拍,谢谢。本文理论基础free查看内存使用的基本命令第一行7625M是系统实际使用的所有内存,但其中包含了buffer/cache。237M是系统当前空闲的物理内存,这是不是意味着我们的系统内存不够呢?答案是不一定。什么是Buffer Cache和Page Cache?前者针对磁盘块的读写,后者针对文件in原创 2017-03-04 12:33:23 · 2491 阅读 · 1 评论 -
gdb调试手册
gdb原理:利用操作系统提供的系统调用pstrace。详情请看。gdb进行调试的进程建议编译参数添加-g、并去掉strip(-g3可在gdb打印宏)。启动方式gdb进程名 //(支持相对或绝对路径)gdb -p进程pidgdb进入后使用file指令指定调试进程或者attach piddetach原创 2017-03-05 17:54:32 · 3724 阅读 · 0 评论 -
Zookeeper集群搭建
前置条件准备Zookeeper Linux压缩包,版本3.4.8jdk 1.7 或以上mkdir -p /data/zk_data/datamkdir -p /data/zk_data/logsecho “1” > /data/zk_data/data/myid部署步骤解压安装包修改zookeeper-3.4.8/conf 目录下zoo.cfg配置文件,设置端口号,目录...原创 2019-05-15 11:13:51 · 238 阅读 · 0 评论