如何总结Linux或者Unix上给定命令的详细系统资源使用情况

时间:2020-01-09 10:42:25  来源:igfitidea点击:

在Linux,OS X Unix,BSD和类Unix操作系统上执行特定命令期间,如何确定系统资源使用情况?
您需要使用"/usr/bin/time"(以下称为"时间")命令来查找执行特定命令期间的系统资源使用情况。
可以从time命令获得以下信息:

  • 用户时间
  • 系统时间
  • 此命令获得的CPU百分比
  • 经过时间
  • 平均共享文字大小
  • 平均未共享数据大小
  • 平均堆栈大小
  • 平均总大小
  • 最大居民人数
  • 平均居民人数
  • 重大(需要I/O)页面错误
  • 轻微(回收框架)页面错误
  • 自愿上下文切换
  • 非自愿上下文切换
  • 掉期
  • 文件系统输入
  • 文件系统输出
  • 已发送套接字消息
  • 收到套接字消息
  • 传递信号
  • 页面大小(字节)
  • 退出状态

以上描述了当前进程或者命令所使用的资源,并且可以通过时间命令获得。
它在sys/resource.h中定义如下。

/* taken from OSX/FreeBSD unix */
     struct rusage {
             struct timeval ru_utime; /* user time used */
             struct timeval ru_stime; /* system time used */
             long ru_maxrss;          /* max resident set size */
             long ru_ixrss;           /* integral shared text memory size */
             long ru_idrss;           /* integral unshared data size */
             long ru_isrss;           /* integral unshared stack size */
             long ru_minflt;          /* page reclaims */
             long ru_majflt;          /* page faults */
             long ru_nswap;           /* swaps */
             long ru_inblock;         /* block input operations */
             long ru_oublock;         /* block output operations */
             long ru_msgsnd;          /* messages sent */
             long ru_msgrcv;          /* messages received */
             long ru_nsignals;        /* signals received */
             long ru_nvcsw;           /* voluntary context switches */
             long ru_nivcsw;          /* involuntary context switches */
     };

语法

在Linux上的语法如下:

/usr/bin/time -v command
/usr/bin/time -v command arg1 arg2

在FreeBSD或者OS X UNIX上,语法如下:

/usr/bin/time -l command
/usr/bin/time -l command arg1 arg2

例子

让我们在Linux上运行host命令,以查找执行期间host命令使用的资源:

$ /usr/bin/time -v host www.theitroad.local

让我们在OS X或者基于FreeBSD Unix的系统上运行date命令,以找出执行期间date命令使用的资源:

$ /usr/bin/time -l date

关于/usr/bin/time和time命令的注释

  • time是一个shell命令。
  • /usr/bin/time是一个外部命令,它提供其他信息,例如特定命令使用的资源。