技术头条(投递你的文章)     搜索本站     邮件订阅     微信号:IT技术博客大学习
您现在的位置首页 --> Linux
    学玩*nux时候,碰到的一些问题,弄明白了后也就过去了。今天看到旁边的同学对目录权限有些模糊,给解释了一下。想想不如把这些问题都记下来。 设计其实包含的是一套约定。能运行、解决问题的约定都是可用的约定。但解决的多种约定方式或说是设计中,作一些比较可以感觉到哪个会更统一更简单。
    分享一些可能你不知道的shell用法和脚本,简单&强大!在阅读以下部分前,强烈建议读者打开一个shell实验,这些都不是shell教科书里的大路货哦:)
    Swap分区,即交换区,Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。这样,系统总是在物理内存不够时,才进行Swap交换。其实,Swap的调整对Linux服务器,特别是Web服务器的性能至关重要。通过调整Swap,有时可以越过系统性能瓶颈,节省系统升级费用。
    下面是Kristóf Kovács收集的28个Unix/Linux下的28个命令行下的工具(原文链接),有一些是大家熟悉的,有一些是非常有用的,有一些是不为人知的。这些工具都非常不错,希望每个人都知道。本篇文章还在Hacker News上被讨论,你可以过去看看。我以作者的原文中加入了官网链接和一些说明。
    想必不少人体会过在Linux下误删文件的欲哭无泪的感觉。我整理出一份比较安全的rm脚本,贴在这里。 特性 接管原生的/bin/rm命令,将待删除的文件mv至回收站,便于统一管理,或者更重要的,...
    流程:从 history 命令中得到最近1000条命令。 删除每行的行号。记录每一行中的命令。行首的第一个英文单词,以及管道后面的第一个英文单词,视为命令名称。将得到的命令列表排序。统计每个命令的出现次数,先以次数降序排列,再以命令名称升序排列。
    最近在优化一段代码的过程中,用到了gcc的内联汇编。代码中有用到了许多全局变量,比如: char mi[10]={...}; 开始的时候,我对全局变量的取址是这样的: __asm__ (\"movq (%2, %1, 1 ), %0\" :\"=r\"(cookie) :\"r\"(index),\"r\"(mi) ); 在一个函数中使用这段代码,一条指令完成了对mi数组的访问,但同时也存在问题,即mi的地址会占用一个寄存器,mi的地址要在早先的时间内被装载到寄存器中(指令由编译器自动生成),同时,被mi占用的寄存器有些情况下不能被其他手工内联的汇编指令随便写入,编译器还没有那么智能帮你讲寄存器的内容保存好。 综上,使用这种方法会存在两方面问题: 1、使用至少两条指令来读取全局变量 2、正确性要小心呵护。
    还是面某M的时候,面试官问我:“用过gdb么?” 答:“用过,调了两年bug了”。“那好,给我解释下gdb是怎么工作的?或者说跟内核什么地方有关系?”。 是阿,gdb凭什么可以调试一个程序?凭什么能够接管一个程序的运行?我以前也想过这样的问题,但是后来居然忘记去查看了。我想到了我们的二进制翻译器,想到了intel的pin,Dynamo。这些都是将翻译后的代码放到codecache中去运行,然后接管整个程序的执行。gdb是不是也一样呢? 如果真是这样,为什么我记得用gdb跑一个程序,这个程序会有一个单独的进程?gdb的attach功能又是怎么实现的? 想了想,我还是没有答上来。面试就是由这么一个又一个细节的小杯具最后汇集成一个大杯具。 那么,gdb到底是凭什么接管的一个进程的执行呢?其实,很简单,通过一个系统调用:ptrace。
    信号就是通知某个进程发了某个事件,也称为软件中断。信号提供了一种处理异步事件的方法。信号通常是异步发生的,进程预先不知道信号准确发生的时刻。后端程序(daemon)往往需要提供7*24不间断的服务,因此,编程daemon程序时对信号的正确处理尤为重要。下面和大家分享编写daemon程序时信号处理的注意事项,内容都来自Internet,只是进行了整理和总结。关于信号的基础只是请参考APUE。
    我们知道,在KVM里测试内核会碰到一个很严重的问题:那就是在 host 编译的内核不能直接在 guest 里使用。有两个原因:一是 host 和 guest 的硬件可能不一样,所以需要的 config 不一样;二是内核模块即便是安装进了 initramfs 也仍有很多需要安装到 /lib/modules/`uname -r`。
    最近由于一些控制IO带宽的需求,开始研究CFQ以及对应的IO cgroup,今天baidu了一下,竟然发现没有多少中文的介绍,所以准备写一个系列,介绍一下这个调度器,粗粗想了一下,大概可以灌四篇水,包括CFQ的基本介绍,CFQ各个配置参数的含义和调优,CFQ的基本架构以及CFQ+cgroup。各位看官要是觉得还有什么值得写的,请留言给我或者直接新浪微博 @淘伯瑜。闲话少说,言归正传。 CFQ是Completely Fair Queuing的缩写,顾名思义,他存在的主要目的就是为了保证公平性, 并为此做了大量的工作。为了说明他的公平性,让我们先来简单看看另外目前kernel另外两个IO调度器,noop和deadline。那么怎么看自己目前硬盘的调度器呢?
    每个程序员,在职业生涯的某个时刻,总会发现自己需要知道一些Linux方面的知识。我并不是说你应该成为一个Linux专家,我的意思是,当面对linux命令行任务时,你应该能很熟练的完成。事实上,学会了下面8个命令,我基本上能完成任何需要完成的任务。注意:下面的每个命令都有十分丰富的文档说明。这篇文章并不是来详尽的展示每个命令的各种功用的。我在这里要讲的是这几个最常用的命令的最常见用法。如果你对linux命令并不是很了解,你想找一些这方面的资料学习,那这篇文章将会给你一个基本的指导。
    第六招,仍然会讲解tcpdump的过滤表达式,这次思路很简单,就是直接举例子,其实就是man tcpdump中的例子,很直观,很受用。
    前四招都是围绕tcpdump的选项来介绍的,从这招起,我们会把目光转向更加常用的“过滤表达式”内容。 通过这几招的学习,你将具备“心无旁骛,潜心专注”的武功。 可以给tcpdump传送“过滤表达式”来起到网络包过滤的作用,而且可以支持传入单个或多个过滤表达式,从这一点来说tcpdump还是很大肚能容的。 当你传入的过滤表达式含有shell通配符时,别忘使用单引号把表达式括起来,以防shell自作主张的把含有通配符的表达式先进行了解释和通配。
    本文会是“选项内容”的最后一期讲解,主要会讲讲-w和-r两个选项。tcpdump的选项很多,多达50个,其他我没有涉及的选项,还是要大家自己通过man tcpdump的方式来学习了。实在研究不懂的,可以找我探讨:) == 做过网络流量分析的同学,或许都有一个共同的需求,那就是“流量保存”和“流量回放”,这就恰好对应了今天要讲解的-w选项和-r选项。 “流量保存”就是把抓到的网络包能存储到磁盘上,保存下来,为后续使用。 “流量回放”就是把历史上的某一时间段的流量,重新模拟回放出来,用于流量分析。
     上篇文章说过,tcpdump会分成“选项”、“过滤表达式”和“输出信息”三部分讲解。 截止到目前,我们一直在围绕tcpdump的选项部分进行讲解,已经介绍过的选项包括-i选项、-nn选项、-c选项、-X选项、-e选项、-l选项。 今天仍然不例外,我们继续有关选项的内容。
    在第一招中,我们给大家演示了用tcpdump抓包的简单方法。接下来,我们会比较系统的来介绍tcpdump工具了。 从我的理解来看,tcpdump可以分为三大部分内容,第一是“选项”,第二是“过滤表达式”,第三是“输出信息”。 下面的文章,会分别从这三个方面来重点介绍。 == tcpdump的选项,我还真是专门数了一下,总共有50个之多。在这个系列文章中,实在很难全都覆盖,我尽量挑选重要且常用的选项来讲解, 一些不常用的选项,大家抽空可以自己去了解一下。 在《第一招》中讲到了-i选项、-nn选项、-c选项、-X选项。今天,我们继续介绍另外两个重要的选项,即-e选项和-l选项。
    通俗的说,tcpdump是一个抓包工具,用于抓取互联网上传输的数据包。 形象的说,tcpdump就好比是国家海关,驻扎在出入境的咽喉要道,凡是要入境和出境的集装箱,海关人员总要打开箱子,看看里面都装了点啥。 学术的说,tcpdump是一种嗅探器(sniffer),利用以太网的特性,通过将网卡适配器(NIC)置于混杂模式(promiscuous)来获取传输在网络中的信息包。
    今天4月份在高阳同学的IO协议栈相关的PPT里面发现了这张图,忍不住还是贴了出来。 这张图很清晰的把linux IO协议栈的层次给勾出来了,而且内容很与时俱进,特别是SCSI设备的层次对大家理解sg3这样的包非常有帮助,强烈推荐大家好好研习!
    通过本文,您即可以: 1. 存储器硬件结构; 2.分段以及对应的组织方式; 3.分页以及对应的组织方式。
[共441篇文章][第5页/共23页][1][2][3][4][5][6][7][8][9][10][>|]
© 2009 - 2017 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号