Linux下的Cache/Buffer
经常在使用 Linux 的时候会发现有一些内存经常被 Cache 和 Buffer 占用,而关于这两者之间的关系与区别却不了解,这篇文章主要就是介绍一下两者的区别与相关的运维手段。 一、含义 Cache(缓存):指 CPU 和内存之间高速缓存,为了调高CPU和内存之间数据交换而设计,用来给文件做缓存(相关的是PageCache),主要是针对读操作设计的; Buffer(缓冲):指在写入磁盘前的存储在内存中的内容,为了提高内存和硬盘(或其他I/O设备的数据交换而设计),主要是针对写操作设计的; 下面为Linux下free指令显示的信息,以下简单描述一下各选项的含义: [root@* ~]# free -g total used free shared buff/cache availableMem: 125 2 109 1 13 120Swap: 7 ...
共享库LD_PRELOAD环境变量分析
一、简介LD_PRELOAD是Linux/Unix系统的一个环境变量,它影响程序的运行时的链接(Runtime linker),它允许在程序运行前定义优先加载的动态链接库。这个功能主要就是用来有选择性的载入不同动态链接库中的相同函数。通过这个环境变量,我们可以在主程序和其动态链接库的中间加载别的动态链接库,甚至覆盖正常的函数库。一方面,我们可以以此功能来使用自己的或是更好的函数(无需别人的源码),而另一方面,我们也可以以向别人的程序注入程序,从而达到特定的目的。 动态库的搜索路径搜索的先后顺序是: 编译目标代码时指定的动态库搜索路径(可指定多个搜索路径,按照先后顺序依次搜索); 环境变量LD_LIBRARY_PATH指定的动态库搜索路径(可指定多个搜索路径,按照先后顺序依次搜索); 配置文件/etc/ld.so.conf中指定的动态库搜索路径(可指定多个搜索路径,按照先后顺序依次搜索); 默认的动态库搜索路径/lib; 默认的动态库搜索路径/usr/lib; 二、模拟实现这里并不是直接替换系统中的函数调用,而是采用添加hook的方式进行; main.c #include...
RPM打包记录
一、简介RPM(Redhat Package Manager)是一个开放的软件包管理系统,用于Redhat、CentOS、Fedora等Linux 分发版的常见的软件包管理器。因为它允许分发已编译的软件,所以用户只用一个命令就可以安装软件。 RPM拥有功能强大的查询选项。我们可以搜索数据库来查询软件包或文件。RPM软件包中的文件是以压缩格式存放的,拥有一个定制的二进制头文件,其中包含有关包和内容的信息,可以让我们对单个软件包的查询简便又快速。 RPM另一个强大的功能是进行软件包的验证。如果我们担心误删了某个软件包中的某个文件,我们就可以对它进行验证。任何非正常现象将会被通知。如果需要的话还可以重新安装该软件包。在重新安装过程中,所有被修改过的配置文件将被保留。 RPM设计目标之一就是要保持软件包的原始特征, 就象该软件的原始发布者发布软件时那样。通过使用RPM我们可以拥有最初的软件和最新的补丁程序,还有详细的软件构建信息。 概括的说:RPM有五种基本的操作功能(不包括创建软件包):安装、卸载、升级、查询、和验证。 二、打包基础2.1...
使用snoopy进行execve/execv、connect、init_module hook
一、简述Snoopy旨在通过提供已执行命令的日志来帮助系统管理员,它对用户和应用程序是完全透明,通过将它链接到程序中,以提供对execve()调用的封装,记录信息通过syslog完成。 Snoopy development has been migrated to github. Please follow the link “Snoopy Logger Web Site” below. Snoopy is designed to aid a sysadmin by providing a log of commands executed. Snoopy is completely transparent to the user and applications. It is linked into programs to provide a wrapper around calls to execve(). Logging is done via...
网站收藏列表
一、网站分类列表1.1、推荐技术类网站 编程狂人周刊 码农周刊 开发者头条-今日头条 阿里-数据库内核月报 阿里-中间件团队博客 美团技术团队 360核心安全技术博客 1.2、设计类网站 Icon-阿里巴巴矢量图标库 Easyicon图标下载 艺术字体在线生成 1.3、在线工具 在线工具箱 站长工具 ATOOL在线工具 ProcessOn在线流程图 在线编程工具 搞定设计-在线PS 图片背景抠除 1.4、阅读类 少数派 MottoIN-专注于互联网信息安全的科技媒体 InfoQ 1.5、搜索/导航类 鸠摩搜书-电子书搜索引擎 DuckDuckGo 一款不追踪你的搜索引擎 Bing搜索 安全圈-信息安全导航页 1.6、国内镜像站 PHPComposer 清华大学开源软件镜像站 1.7、在线学习 合天网安实验室 1.8、其他工具 射手网(伪)字幕下载 [Archive网站历史记录查询](
GDB使用笔记
GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 对于一名Linux下工作的c++程序员,gdb是必不可少的工具; 一、 gdb基本指令介绍1.1 gdb交互命令 start:开始调试; n:一条一条的执行; backtrace/bt:查看函数调用栈帧; info/i locals:查看当前栈帧局部变量; frame/f:选择栈帧,在查看局部变量; print/p:打印变量的值; finish:运行到当前函数返回; set var sum=0:修改变量的值; list/l 行号或函数名:列出源码; display/undisplay sum:每次停下显示变量的值/取消跟踪; x/7b input:打印存储器内容,b–每个字节一组,7–7组; disassemble:反汇编当前函数或指定函数; si:一条指令一条指令调试 而 s 是一行一行代码; info registers:显示所有寄存器的当前值; x/20...
博客转移至GitHub Pages
一、前言已经很久没有写博客了,加上毕业之后腾讯云以及阿里云的一些针对学生的服务器优惠政策已经没法使用了,并且刚开始工作的资金比较紧张,在前段时候腾讯云的服务器过期之后,自己也没再续费,只是把域名续费了,把之前写的一些文章导出保存了下来,想着有精力的时候再拾起来,转眼之间,2018年已经快过去了,也是时候该整了一下了。 使用了很久的Ghost,对它的各种使用都很欣赏,也很感谢它培养了我的Markdown的写作习惯,但是需要花费一些金钱上的精力去维护一个自留地,多少成为了我逐渐放弃Ghost的原因;转移到GitHub Pages上很大的原因还是不需要去维护自己的服务器,只是去简单的记录,没有多余的担心,这一点比Ghost好了很多;自己博客上的文章倒是没有多少,但是的确是跟了自己很多年的心血,带着自己的当初的努力与骄傲。 二、博客迁移 GitHub Pages + Hexo + Melody Theme Disqus 微博图床 + 七牛云 + URL替换脚本 百度统计 + Google Analytics 三、GitHub Pages + Hexo + Melody...
Tmux使用记录
一、简介Tmux是Linux中一款终端窗口复用的工具。对比与iTerm来说,iTerm只是作为一款GUI软件,在一个窗口中只能显示一个Shell的内容,但是Tmux却可以在一个窗口中显示多个Shell内容;对比与Screen来说,Screen是GNU 软件,而 Tmux 使用的是 BSD 协议,最为重要的是 Tmux 支持 Vi/Emacs 风格的键盘映射,更好的接口和文档,以及更好的脚本控制。 二、基本概念Tmux的主要元素分为三层: Session :一组窗口的集合,通常用来概括同一个任务,可以设置不同的名字以便于任务之间的切换; Window: 单个可见窗口,Window有自己的编号,也可以认为和 iTerm2 中的 Tab 类似; Pane: 窗格,被划分成小块的窗口,类似于 Vim 中 C-w +v 后的效果; 三、安装与使用3.1、安装brew install tmux # OSXpacman -S tmux # archlinuxapt-get install tmux # Ubuntuyum install...