Linux服务器磁盘空间占满问题,二进制文件概述

零散记录:

下面我们一起来看一篇关于Linux服务器磁盘占满问题解决(/dev/sda3
满了),希望碰到此类问题的人能带来帮助。

《软件漏洞分析技术》笔记

  8086CPU寄存器都为16位的,可存放两个字节;AX、BX、CX、DX这4个寄存器是通常用来存放一般性的数据,被称为通用寄存器。
  AX:

 

PE文件:

图片 1

今天下班某电商技术部leader发现个问题,说他们服务器硬盘满了。把日志文件都删掉了,可硬盘空间依旧满。于是df
-h查看了下各个挂载点的状况(如下图)。

  PE(Portable
Executable)是win32平台下可执行遵守的数据格式。平时常见的比如*.exe和*.dll都是PE文件。

 

图片 2

  可执行文件:包含二进制代码,字符串,菜单,图标,位图字体等。

  以8086CPU而言,这四个寄存器都可分为两个可独立使用的8位寄存器使用,以-H和-L表示左右八位;
图片 3

/dev/sda3占用了100%,那么我们du -s -h ./*看下目录的占用情况(如下图)。

  运行时操作系统会按PE文件的约定定位资源并装载入内存。可执行文件
——>拆分——>若干数据节<——不同的资源。

 

 

  典型PE文件通常包含:.text(编译器产生,存放二进制代码,
反汇编和调试的对象)、.data(初始化数据块)、.idata(使用的外来函数如动态链接库与文件信息)、.rsrc(存放程序资源),还包括其他如.reloc、.edata、.tls、.rdata等。

    指令mov,add: 左操作数 = 左操作数与右操作数运算结果。

 

虚拟内存:

  8086CPU中给出物理地址方法: 两个16位地址合成一个20位物理地址:
    段地址×16+偏移地址 = 物理地址;
  ’段地址×16′
可视为基础地址;内存也以此分段的方式管理内存;段寄存器:CS 和
IP,二者指示了CPU当前要读取的指令的地址,CS为代码段寄存器,IP为指令指针寄存器;若CS中为M,IP中为N, 8086CPU将从内存M×16+N单元开始读取一条指令并执行。

 在工作中,我们也许会遇到这样的问题,发现某个磁盘空间快满了,于是,找到一些无用的大文件将其删除后,发现磁盘空间还是没有释放掉,这是什么原因呢?如何解决呢?下面来重现一下整个过程:

  Windows内存:1.物理内存层面;2.虚拟内存层面。

  CS和IP不能通过mov改变,可用 ‘jmp’命令,形如“jmp
段地址:偏移地址”,这是修改了两者的内容,若仅想修改IP的内容,可用“jmp
某一合法寄存器”,如 jmp ax 或 jmp bx。
  最后要注意CPU的工作过程:
    ①从CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲区;
    ②IP指向下一条指令;
    ③执行命令。(转到①重复步骤)。

查看磁盘空间情况

  物理内存通常内核级别ring0才能看到;通常用户模式下看见的为Windows用户态内存映射机制下的虚拟内存。

DOS中Debug的使用:
/*关于win10中debug用不了
  1.一个方法是可以通过开机时为出现开机界面时按 f8
进入模式选择命令行模式…

 [@74.114 var]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda2            9.7G  284M  8.9G   4% /
/dev/xvda1            251M   13M  226M   6% /boot
none                  1.1G     0  1.1G   0% /dev/shm
/dev/xvda10            97G   60G   33G  65% /home
/dev/xvda3            3.9G  2.7G  1.1G  72% /usr
/dev/xvda5            3.9G  3.6G   77M  98% /var

  内存管理器可以使进程在实际只有512MB物理内存的情况下使进程“认为”自己拥有4GB内存(其中包括代码,
栈空间,资源区,动态链接库等)。

  2.图形界面中:
    假如有debug最好,没有的话win+R输入command;再不行的话看下去;
    我的windows10家庭版没有了debug程序也无法运行command,只能自己想办法了,比如说度娘;emmm,分享一下。
    下载一个DOSBox,再直接打开搜狗搜索下载一个debug.exe;
    安装DOSBox,最好选择安装C盘(系统盘)外的盘,避免出问题,之后打开安装的文件夹的DOSBox
0.74 Options.bat文件,拉到最底部,添加如下代码:

var分区快满了,找到大文件,并删除

图片 4

  图片 5

[@74.114 var]# cd /var
[@74.114 var]# du –sh *
3.3G    account
111M    cache
53M     log
0       mail
156K    run
344K    spool

[@74.114 var]# rm –rf account/*

  这种情况和实际生活中银行相似,你需要用的钱其实并不等于你拥有的财富,银行实际存有的金额数小于所有储户的财富和。

  也可以将代码在DOSBox中输入,但这样做避免每次打开都要输一次。
  命令中D为作为虚拟盘的真实磁盘,:\DOSBOX_SELF为自定义的文件夹,之后加入没有自带的debug.exe,将下载的debug.exe放入该文件夹,打开DOSBox输入debug即可使用。

df –h 看一下,却依然是/var 为98%,一点都没释放。

  那万一有用户需要取出超出实际金额数怎么办,操作系统原理中有“虚拟内存”概念,
即在这种情况下有时会将“部分硬盘空间”暂时作为内存使用。(两者“虚拟内存“概念对象不一,不宜混淆)

 

[@74.114 var]# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/xvda2            9.7G  284M  8.9G   4% /
/dev/xvda1            251M   13M  226M   6% /boot
none                  1.1G     0  1.1G   0% /dev/shm
/dev/xvda10            97G   60G   33G  65% /home
/dev/xvda3            3.9G  2.7G  1.1G  72% /usr
/dev/xvda5            3.9G  3.6G   77M  98% /var

PE文件与虚拟内存之间的映射

  正常使用:

但du –sh * 却显示没有大文件了

  (1).文件偏移地址(File Offset):数据在PE文件中的地址,在磁盘上存放时相对于文件开头的偏移。

网站地图xml地图