当前位置 主页 > 服务器问题 > Linux/apache问题 >

    带你入门Linux中size命令的6个例子

    栏目:Linux/apache问题 时间:2019-10-07 19:31

    前言

    正如你所知道的那样,Linux 中的目标文件或着说可执行文件由多个段组成(比如文本段和数据段)。若你想知道每个段的大小,那么确实存在这么一个命令行工具 —— 那就是 size。在本教程中,我们将会用几个简单易懂的案例来讲解该工具的基本用法。

    在我们开始前,有必要先声明一下,本文的所有案例都在 Ubuntu 16.04 LTS 中测试过了。

    Linux size 命令

    size 命令基本上就是输出指定输入文件各段及其总和的大小。下面是该命令的语法:

    size [-A|-B|--format=compatibility]
      [--help]
      [-d|-o|-x|--radix=number]
      [--common]
      [-t|--totals]
      [--target=bfdname] [-V|--version]
      [objfile...]

    man 页是这样描述它的:

    GNU 的 size 程序列出参数列表中各目标文件或存档库文件的段大小 — 以及总大小。默认情况下,对每个目标文件或存档库中的每个模块都会产生一行输出。

    objfile... 是待检查的目标文件。如果没有指定,则默认为文件 a.out。

    下面是一些问答方式的案例,希望能让你对 size 命令有所了解。

    Q1、如何使用 size 命令?

    size 的基本用法很简单。你只需要将目标文件/可执行文件名称作为输入就行了。下面是一个例子:

    size apl

    该命令在我的系统中的输出如下:

    How to use size command

    前三部分的内容是文本段、数据段和 bss 段及其相应的大小。然后是十进制格式和十六进制格式的总大小。最后是文件名。

    Q2、如何切换不同的输出格式?

    根据 man 页的说法,size 的默认输出格式类似于 Berkeley 的格式。然而,如果你想的话,你也可以使用 System V 规范。要做到这一点,你可以使用 --format 选项加上 SysV 值。

    size apl --format=SysV

    下面是它的输出:


    How to switch between different output formats

    Q3、如何切换使用其他的单位?

    默认情况下,段的大小是以十进制的方式来展示。然而,如果你想的话,也可以使用八进制或十六进制来表示。对应的命令行参数分别为 o 和 -x。


    How to switch between different size units

    关于这些参数,man 页是这么说的:

    -d

    -o

    -x

    --radix=number

    使用这几个选项,你可以让各个段的大小以十进制(-d 或 --radix 10)、八进制(-o 或 --radix 8);或十六进制(-x 或 --radix 16)数字的格式显示。--radix number 只支持三个数值参数(8、 10、 16)。总共大小以两种进制给出; -d 或 -x 的十进制和十六进制输出,或 -o 的八进制和十六进制输出。

    Q4、如何让 size 命令显示所有对象文件的总大小?

    如果你用 size 一次性查找多个文件的段大小,则通过使用 -t 选项还可以让它显示各列值的总和。

    size -t [file1] [file2] ...

    下面是该命令的执行的截屏:


    How to make size command show totals of all object files