![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux系统
圆月弯刀丶
重剑无锋 大巧不工
展开
-
Linux进程地址空间和进程的内存分布
一 进程空间分布概述 对于一个进程,其空间分布如下图所示: 程序段(Text):程序代码在内存中的映射,存放函数体的二进制代码。初始化过的数据(Data):在程序运行初已经对变量进行初始化的数据。未初始化过的数据(BSS):在程序运行初未对变量进行初始化的数据。栈(Sta...转载 2019-12-28 22:41:22 · 612 阅读 · 0 评论 -
Linux惊群效应详解(最详细的了吧)
Linux惊群效应详解(最详细的了吧) linux惊群效应详细的介绍什么是惊群,惊群在线程和进程中的具体表现,惊群的系统消耗和惊群的处理方法。1、惊群效应是什么? 惊群效应也有人叫做雷鸣群体效应,不过叫什么,简言之,惊群现象就是多进程(多线程)在同时阻塞等待同一个事件的时候(休眠状态),如果等待的这个事件发生,那么他就会唤醒等待的所有进程(或者线程),但是最终却只可...转载 2018-07-27 15:28:43 · 813 阅读 · 0 评论 -
Epoll模型设计海量级连接服务器
转自:http://blog.sina.com.cn/s/blog_659c1e660100p5hk.html 最近在参与一个海量级(20000以上)远程连接的服务器设计,由于用户要求的硬件平台仅限于Linux,因此选择了epoll模型来实现对海量客户端连接的处理。 先聊一下epoll模型的基本情况。(一般来说,非海量级客户端连接的服务器,可能用不到epoll模型。一方面...转载 2018-07-27 15:17:01 · 635 阅读 · 0 评论 -
Linux网络编程“惊群”问题总结
1、前言 我从事Linux系统下网络开发将近4年了,经常还是遇到一些问题,只是知其然而不知其所以然,有时候和其他人交流,搞得非常尴尬。如今计算机都是多核了,网络编程框架也逐步丰富多了,我所知道的有多进程、多线程、异步事件驱动常用的三种模型。最经典的模型就是Nginx中所用的Master-Worker多进程异步驱动模型。今天和大家一起讨论一下网络开发中遇到的“惊群”现象。之前只是听说过这个现象...转载 2018-07-27 15:14:10 · 265 阅读 · 0 评论 -
孤儿进程与僵尸进程[总结]
孤儿进程与僵尸进程[总结]1、前言 之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。2、基本概念 我们知道在unix/linux中,正常情况下,子进程是通过...转载 2018-07-21 09:26:49 · 146 阅读 · 0 评论 -
libevent源码浅析: http库
libevent自带了一个http库,用它可以很简单的实现一个http服务器,本文非常简单地分析之.evhttp evhttp库有几个主要的结构体,它们之间的联系非常龌龊:其中,结构体event, min_heap, evsignal_info, eventop, event_base在前面几篇文章中已经介绍过了,这里不再啰嗦.evbuffer evbuffer用于读或写缓冲,图示为:和evb...转载 2018-06-03 12:36:30 · 4274 阅读 · 1 评论 -
Linux文件误删除恢复操作
本文参考http://write.blog.csdn.net/postedit?ticket=ST-491405-OGjDDusZeyMgVQ7bHW7f-passport.csdn.net前言作为一个多用户、多任务的操作系统,Linux下的文件一旦被删除,是难以恢复的。尽管删除命令只是在文件节点中作删除标记,并不真正清除文件内容,但是其他用户和一些有写盘动作的进程会很快覆盖这些数转载 2018-01-11 11:07:10 · 119076 阅读 · 6 评论 -
执行shell命令的popen和system函数封装
linux下执行shell命令的popen和system函数封装:#include #include #include #include #include int shell_popen(const char * cmd) { if(!cmd) { printf("shell_popen cmd is NULL!\n"); return -1; }原创 2017-11-21 14:54:15 · 993 阅读 · 0 评论 -
linux top VIRT RES SHR SWAP DATA内存参数详解
Linux top VIRT RES SHR SWAP DATA内存参数详解 其实很早之前就想开博客,写一写码农几年自己积攒下来的知识与见解。看过很多文章有过很多感触,有些收获很值得梳理一下认真思考反思的。今天就先从基本的top开始吧,在网上看了很多关于top讲解内存参数的文章,千篇一律,大部分都是不经深思的转载,自我验证的却只有少数,也许大家忙于工作,急于找到问题并快速解决,而转载 2017-11-23 11:25:37 · 722 阅读 · 0 评论 -
uWSGI+Nginx安装、配置
1、关闭SELINUX:1[root@PYTHON27 /]# vim /etc/selinux/config1将SELINUX=enforcing修改为SELINUX=disabled2、关闭防火墙:转载 2017-11-13 09:17:57 · 420 阅读 · 0 评论 -
和菜鸟一起学linux内核源码之基础准备篇
注:以下大部分内容摘自linux内核编程入门篇和linux内核完全注释 在工作的这段时间,发现我的visio画图熟悉了点点,总喜欢把什么源码啊,结构啊之类的就当作流程图来画来理解,因为对于图,有一个很直观的认识,所以接下去也是以图为中心。 关于linux内核体系结构 说到操作系统,我们都会知道windows操作系统,linux操作系转载 2017-11-10 17:27:05 · 248 阅读 · 0 评论 -
谈谈Linux下动态库查找路径的问题
学习到了一个阶段之后,就需要不断的总结、沉淀、清零,然后才能继续“上路”。回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里那真叫一个难受。那时候脑袋里曾经也犯过嘀咕,为啥Linux不弄成windows那样呢,装个软件那个麻烦不说,连运行软件都这么恼火呢?如果那样的话就不叫Linux了。借用小米公司CEO雷军一句话:小米,为发烧而生。我认为:转载 2017-10-27 10:58:46 · 335 阅读 · 0 评论 -
linux shell “永久环境变量”、“临时环境变量”和"普通变量"之完全解读
这个年代, 大家写点书, 也无非就是为了搞点钱, 基本都是罗列一些知识点, 基本都是写给已经会了的人看的。 真正用心写书的人, 不多。 如果真正用心写书, 且站在读者的角度去写, 那就少之又少了。 关于linux shell环境变量, 我看了四本linux相关书的介绍, 结果, 没有一本书的讲解让我完全满意, 总感觉没有说清楚。所以呢, 我打算自己来写一下,如有不转载 2017-10-18 11:56:15 · 2590 阅读 · 1 评论 -
详解操作系统中断
2016-11-02中断这个特性相比大家都不会陌生,稍微懂点操作系统知识的人都可以说到一二。但是要真正把中断描述清楚,以及LInux中和windows中的实现方式,这可能还是有点难度的。今天笔者就想彻头彻尾的把中断给详细分析下。 说到中断还不得不从现代操作系统的特性说起,无论是桌面PC操作系统还是嵌入式都是多任务的操作系统,而很遗憾,处理器往往是单个的,即使在硬件成本逐转载 2017-10-17 17:06:08 · 29832 阅读 · 5 评论 -
关于linux的进程中的各个线程cpu占用情况的分析和查看
我们常常会在新开的服搭建一个游戏的server,有时候要进行压力測试,那么怎样来看呢,一般我们会通过top命令查看各个进程的cpu和内存占用情况,获得到了我们的进程id,然后我们或许会通过pstack命令查看里边的各个线程id以及相应的线程如今正在做什么事情,分析多组数据就能够获得哪些线程里有慢操作影响了server的性能,从而得到解决方式。比方这种以组数据:[root@AY1308161...转载 2018-12-06 14:07:06 · 7141 阅读 · 0 评论 -
linux问题排查 - 高cpu占用率的进程和线程
1.简介 一个程序,完成它预设的功能,并不能说明它是一个优良的程序。好的程序,应该是对资源的合理利用,亦或是用更少的资源(使用合理的算法),实现更多有效的产出。 影响程序的资源一般而言分为4个:CPU、内存、IO、网络。本文着重讲解一下在linux系统下,如何查看高CPU占用率的进程,线程。 2.python代码 为了模拟真实...转载 2018-12-06 14:14:03 · 1648 阅读 · 0 评论 -
Linux 内存中的Cache,真的能被回收么?
Linux 内存中的Cache,真的能被回收么?您真的了解Linux的free命令么?在Linux系统中,我们经常用free命令来查看系统内存的使用状态。在一个RHEL6的系统上,free命令的显示内容大概是这样一个状态:这里的默认显示单位是kb,我的服务器是128G内存,所以数字显得比较大。这个命令几乎是每一个使用过Linux的人必会的命令,但越是这样的命令,似乎真正明白的人越少...转载 2019-08-07 11:19:54 · 216 阅读 · 0 评论 -
6 个 Linux 运维典型问题,大牛的分析解决思路在这里
作为一名合格的 Linux 运维工程师,一定要有一套清晰、明确的解决故障思路,当问题出现时,才能迅速定位、解决问题,这里给出一个处理问题的一般思路: 重视报错提示信息:每个错误的出现,都是给出错误提示信息,一般情况下这个提示基本定位了问题的所在,因此一定要重视这个报错信息,如果对这些错误信息视而不见,问题永远得不到解决。 查阅日志文件:有时候报错信息只是给出了问题的表面现象,...转载 2019-07-29 14:47:53 · 220 阅读 · 0 评论 -
Linux系统日志及分析
Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息。大部分Linux发行版默认的日志守护进程为 syslog,位于 /etc/syslog 或 /etc/syslogd 或/etc/rsyslog.d,默认配置文件为 /etc/syslog.conf 或 rsyslog.conf,任何希望生成日志的程序都可以向 syslog 发送信息...转载 2019-07-29 14:19:53 · 971 阅读 · 0 评论 -
虚拟地址与虚拟内存的理解
在最开始看书的时候,我知道程序在运行时,不是全部加入内存当中的,当然,这个现在依旧正确,在有了虚拟地址空间这个概念以后,我一直认为是在硬盘中划分出一块虚拟内存出来,然后给每个程序4G的硬盘空间,作为这个程序的虚拟内存,然后就需要运行哪一块然后哪一块装入内存当中。后来发现这个是错误的。大家可以在我错误的地方来看看自己的理解,纠正自己的问题。首先,虚拟地址空间是不等于虚拟内...转载 2019-04-16 10:38:00 · 2014 阅读 · 0 评论 -
Linux内存管理(最透彻的一篇)
摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与用户内存管理之间的关系,希望大家最终能驾驭Linux内存管理。前言内存管理一向是所有操作系统书籍不惜笔墨重点讨论的内容,...转载 2019-04-16 10:13:41 · 372 阅读 · 0 评论 -
Linux中top和free命令详解(转)
top:命令提供了实时的对系统处理器的状态监视.它将显示系统中CPU最“敏感”的任务列表.该命令可以按CPU使用.内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定.统计信息区前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:15:20.36 表示的是当前时间up ...转载 2019-04-16 08:45:22 · 728 阅读 · 0 评论 -
动态库(.so)链接静态库(.a)的总结 - 很实用讲解很清楚
动态库(.so)链接静态库(.a)的情况总结动态库(.so)链接静态库(.a)的情况总结 一般来说在链接时想要使用静态库有三种方法:1、link时加上 -static 选项;当加上 -static选项后,gcc会把所有用到的库都做静态连接。2、link时直接指定想要静态连接的.a文件的绝对路径。优点是除非.a文件不存在,否则肯定有效;缺点也是很明显,拿到其他机器上编译时,.a文件也...转载 2019-01-30 09:02:46 · 3430 阅读 · 0 评论 -
自己在linux上编译、链接、动态库和静态库的学习笔记
在平常的项目中,我们都是使用公司要求的makefile、makedebug一类的文件,因此,在编译、链接、生成和链接动态库与静态库的时候,我们只是简单的使用一些已经设置的变量,只是简单的修改、添加一些文件名,或许这次我们编译通过了,但是,在某一个时候,可能出现了一个问题,无论简单与否,因为平常没有留意,导致的结果可能是花了好长时间才能解决。而如果平常只是简单的留一下心,或许这些问题都是可以避免的。...转载 2019-01-28 13:59:43 · 671 阅读 · 0 评论 -
shell脚本之shell内部变量和环境变量
这篇博客介绍:1、部分常用的内部变量2、环境变量变量的分类可以参考:点击打开链接1、部分常用的内部变量: ⑴ # 说明:$#变量是命令行参数或位置参数的数量 ⑵ - 说明:$-变量是传递给shell脚本的执行标志 ⑶ ? 说明:$? 变量是最近一次执行的命令或shell脚本的出口状态 ⑷ $...转载 2019-01-11 17:28:25 · 1104 阅读 · 0 评论 -
Linux 问题故障定位,看这一篇就够了
1. 背景有时候会遇到一些疑难杂症,并且监控插件并不能一眼立马发现问题的根源。这时候就需要登录服务器进一步深入分析问题的根源。那么分析问题需要有一定的技术经验积累,并且有些问题涉及到的领域非常广,才能定位到问题。所以,分析问题和踩坑是非常锻炼一个人的成长和提升自我能力。如果我们有一套好的分析工具,那将是事半功倍,能够帮助大家快速定位问题,节省大家很多时间做更深入的事情。2. 说明本篇文...转载 2018-12-06 14:36:26 · 3529 阅读 · 0 评论 -
linux下代替system的基于管道的popen和pclose函数
linux下使用system需要谨慎,那么代替它的方法是什么呢?标准I/O函数库提供了popen函数,它启动另外一个进程去执行一个shell命令行。这里我们称调用popen的进程为父进程,由popen启动的进程称为子进程。popen函数还创建一个管道用于父子进程间通信。父进程要么从管道读信息,要么向管道写信息,至于是读还是写取决于父进程调用popen时传递的参数。下在给出p转载 2017-09-12 09:27:16 · 1104 阅读 · 0 评论 -
Linux下使用system()函数一定要谨慎
转载自:http://my.oschina.net/renhc/blog/53580linux尽量避免使用system。曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入。只是简单的知道用这个函数执行一个系统命令,这远远不够,它的返回值、它所执行命令的返回值以及命令执行失败原因如何定位,这才是重点。当初因为这个函数风险较多,故转载 2017-09-12 09:25:53 · 331 阅读 · 0 评论 -
正则表达式30分钟入门教程
正则表达式30分钟入门教程版本:v2.33 (2013-1-10) 作者:deerchao 转载请注明来源目录跳过目录本文目标如何使用本教程正则表达式到底是什么东西?入门测试正则表达式元字符字符转义重复字符类分枝条件反义分组后向引用零宽断言负向零宽断言注释贪婪与懒惰处理选项平衡组/递归匹配还有些什么东西转载 2013-08-14 18:32:40 · 773 阅读 · 0 评论 -
初窥Linux 之 我最常用的20条命令
玩过Linux的人都会知道,Linux中的命令的确是非常多,但是玩过Linux的人也从来不会因为Linux的命令如此之多而烦恼,因为我们只需要掌握我们最常用的命令就可以了。当然你也可以在使用时去找一下man,他会帮你解决不少的问题。然而每个人玩Linux的目的都不同,所以他们常用的命令也就差异非常大,而我主要是用Linux进行C/C++和shell程序编写的,所以常用到的命令可以就会跟一个管理Li转载 2013-09-16 17:23:23 · 1365 阅读 · 0 评论 -
Makefile经典教程(掌握这些足够)
makefile很重要什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,转载 2013-10-15 13:43:26 · 1115 阅读 · 2 评论 -
数据存储简介
程序员不能不懂数据存储 从个人电脑到互联网时代的数据存储是如何演进的,原理是怎样的,了解了这些,有利于程序员更好的优化性能,系统架构,本文意在讨论这个话题。一、硬盘 一般情况下的电脑,主要存储设备是内存和硬盘,内存是带电存储,硬盘是持久化存储,内存的访问速度比硬盘快。应用软件或者信息化项目,在运行期间,所用到的数据有一转载 2013-12-03 17:40:34 · 1460 阅读 · 0 评论 -
GCC使用教程
gccmakefile写法蓝森林 http://www.lslnet.com 2001年3月22日 08:44作 者: 许明彦Abstract: 在 Unix 上写程式的人大概都碰过 Makefile,尤其是用 C 来开发程式的人。用 make来开发和编译程式的确很方便,可是要写出一个 Makefile就不简单了。偏偏介绍 Make转载 2014-08-06 08:39:14 · 1575 阅读 · 0 评论 -
使用CMake构建项目的简明示例
1.需求[1].使用第三方动/静太库[2].本身代码部分编译为动/静态库[3]多项目管理2.构建一个单独的项目[1]目的:这个项目将生成可执行文件,动态和静态库。先在workspace(or anywhere you like)下建立项目的目录(文件)结构:workspace |—— HelloWorld转载 2014-11-15 12:12:07 · 1032 阅读 · 0 评论 -
GDB十分钟教程
GDB十分钟教程作者: liigo原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx日期: 2006年1月16日本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功转载 2015-07-17 09:52:34 · 499 阅读 · 0 评论 -
GDB用法详解
本文来自:http://blog.chinaunix.net/space.php?uid=23860671&do=blog&id=233571GDB是一个强大的命令行调试工具。虽然X Window提供了GDB的图形版DDD,但是我仍然更钟爱在命令行模式下使用GDB。大家知道命令行的强大就是在于,其可以形成执行序列,形成脚本。UNIX下的软件全是命令行的,这给程序开发提代供了极大的便利,转载 2015-07-17 11:58:07 · 549 阅读 · 0 评论 -
gcc编译选项
gcc提供了大量的警告选项,对代码中可能存在的问题提出警告,通常可以使用-Wall来开启以下警告: -Waddress -Warray-bounds (only with -O2) -Wc++0x-compat -Wchar-subscripts -Wimplicit-int -Wimplicit-function-declaration转载 2016-07-15 14:19:37 · 691 阅读 · 0 评论 -
GitHub详细教程
阅读目录1.1.1 Git是何方神圣?1.1.2 重要的术语1.1.3 索引1.3.1 用户信息1.3.2 高亮显示1.3.3 忽略特定的文件1.3.4 使用.gitkeep来追踪空的文件夹1.4.1 创建内容1.4.2 创建仓库、添加文件和提交更改1.4.3 diff命令与commit更改1.4.4 Status, Diff 和 Commit Log1.4.5 更正提交的信息转载 2016-08-24 16:15:45 · 577 阅读 · 0 评论 -
【linux】linux中ifconfig后不显示eth0网卡的解决方法
【环境参数】VMware:10.0.1 build-1379776 Host OS:Win7 32bit Host IP:192.168.0.101Client IP:无网卡Client OS:CentOS 6.5 x86_64,i686,最小化安装(Minimal)。在安装自定义组件包时,(1)Base System只安装了Base转载 2016-09-29 15:18:57 · 36493 阅读 · 0 评论 -
linux磁盘分区详解
在学习 Linux的过程中,安装 Linux 是每一个初学者的第一个门槛。在这个过程中间,最大的困惑莫过于给硬盘进行分区。虽然,现在各种发行版本的 Linux已经提供了友好的图形交互界面,但是很多的人还是感觉无从下手。这其中的原因主要是不清楚 Linux的分区规定,以及它下面最有效的分区工具― Fdisk的使用方法。首先我们要对硬盘分区的基本概念进行一些初步的了解,转载 2016-09-27 10:07:35 · 531 阅读 · 0 评论