CPU和HDD信息

时间:2015-10-14 19:40:24

标签: linux

我搜索了但是我找不到任何问题。 我想在Linux命令行中获得有关CPU使用率和本地HDD的信息,格式化文本与我的程序下面的示例完全相同。 这些示例是MS-Windows上的命令行输出。 我希望它也可以在Linux上使用。

谢谢

wmic logicaldisk where drivetype=3 get caption,freespace,size

Caption  FreeSpace     Size
C:       135314194432  255953203200
D:       126288519168  128033222656
E:       336546639872  1000194015232
F:       162184503296  1000194015232

wmic cpu get loadpercentage

LoadPercentage
4

2 个答案:

答案 0 :(得分:3)

您无法像您提供的输出那样找到完全的任何内容。 唯一的选择是用于磁盘空间df

Filesystem                   1K-blocks      Used Available Use% Mounted on
/dev/root                     73216256  27988724  41485276  41% /
devtmpfs                       8170164         0   8170164   0% /dev
tmpfs                          8203680       544   8203136   1% /dev/shm
tmpfs                          8203680     12004   8191676   1% /run
tmpfs                             5120         4      5116   1% /run/lock
tmpfs                          8203680         0   8203680   0% /sys/fs/cgroup
/dev/sdb1                       482922     83939    374049  19% /boot

对于cpu,你有更多的选择,例如 vmstat

procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
 0  0      0 11865304 149956 1474172    0    0    53    46  126  707  3  0 96  0  0

top -b | head

top - 21:48:43 up 54 min,  1 user,  load average: 0.13, 0.17, 0.22
Tasks: 188 total,   1 running, 187 sleeping,   0 stopped,   0 zombie
%Cpu(s):  3.0 us,  0.4 sy,  0.1 ni, 96.5 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem : 16407364 total, 11848936 free,  2888844 used,  1669584 buff/cache
KiB Swap:        0 total,        0 free,        0 used. 13230972 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
    1 root      20   0   40544   6440   3780 S   0.0  0.0   0:01.15 systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.00 kthreadd
    3 root      20   0       0      0      0 S   0.0  0.0   0:00.00 ksoftirqd/0

答案 1 :(得分:0)

没有命令可以为您提供cpu的负载百分比。通过系统调用实际上是不可能的(在Linux中也不是在Linux中)。您可以得到的是当前执行的刻度数(对于每个字段,用户,系统,io,irq空闲)...,然后在一段时间后再次调用它并计算它。这样就是如何使用所有命令来读取cpu百分比。

这里有一个脚本bash,它为您提供:(只需创建一个名为cpu.sh的文件,粘贴此代码并执行以查看结果)

_estado()
{
      cat /proc/stat | grep "cpu " |  sed -e 's/  */:/g' -e 's/^cpux//'
}

_ticksconcretos()
{
      echo $1 | cut -d ':' -f $2 

}

while true ; do
      INICIAL=$(_estado)
      sleep 1
      FINAL=$(_estado)

      UsuarioI=$(_ticksconcretos $INICIAL 1)
      UsuarioF=$(_ticksconcretos $FINAL 1)

      NiceI=$(_ticksconcretos $INICIAL 2)
      NiceF=$(_ticksconcretos $FINAL 2)

      SistemaI=$(_ticksconcretos $INICIAL 3)
      SistemaF=$(_ticksconcretos $FINAL 3)

      idleI=$(_ticksconcretos $INICIAL 4)
      idleF=$(_ticksconcretos $FINAL 4) 

      IOI=$(_ticksconcretos $INICIAL 5)
      IOF=$(_ticksconcretos $FINAL 5)

      IRQI=$(_ticksconcretos $INICIAL 6)
      IRQF=$(_ticksconcretos $FINAL 6)

      SOFTIRQI=$(_ticksconcretos $INICIAL 7)
      SOFTIRQF=$(_ticksconcretos $FINAL 7)   

      STEALI=$(_ticksconcretos $INICIAL 8)
      STEALF=$(_ticksconcretos $FINAL 8)   

      InactivoF=$(( $idleF + $IOF ))
      InactivoI=$(( $idleI + $IOI ))
      ActivoI=$(( $UsuarioI + $NiceI + $SistemaI + $IRQI + $SOFTIRQI + $STEALI ))
      ActivoF=$(( $UsuarioF + $NiceF + $SistemaF + $IRQF + $SOFTIRQF + $STEALF ))

      TOTALI=$(( $ActivoI + $InactivoI ))
      TOTALF=$(( $ActivoF + $InactivoF ))

      PORC=$(( ( ( ( $TOTALF - $TOTALI ) - ( $InactivoF - $InactivoI ) ) * 100 / ( $TOTALF - $TOTALI ) ) ))
      clear
      echo "CPU:  $PORC %"

      done

对于可用空间您可以使用以下内容:

df -h  -x tmpfs -x devtmpfs | awk -F " " '{print $1 " " $4 " " $2}'

将为您提供此输出:

Filesystem Free Size
/dev/sda1 16G 25G
/dev/sda5 46G 79G
/dev/sdb8 130G 423G

sda表示第一个磁盘,sda1表示第一个分区,sda2,第二个分区等。您可以在打印内添加(或更改)$ 6以获取挂载点而不是分区,更改顺序甚至更多内容。