zoukankan      html  css  js  c++  java
  • 获取CPU内存磁盘使用情况

    获取CPU内存磁盘使用情况

    program hardware;
    
    {$APPTYPE CONSOLE}
    
    {$R *.res}
    
    uses
      {$IFDEF mswindows}        Winapi.Windows, {$ENDIF}
      {$IFDEF posix}
      posix.SysStatvfs, {$ENDIF}
      system.Classes,
      System.Math,
      System.SysUtils;
    
    var
      Times: TThread.TSystemTimes;
    
    function CPUUsage: string;
    begin
      result := 'cpu usage: ' + TThread.GetCPUUsage(Times).ToString + '%';
    end;
    
    {$IFDEF posix}
    function meminfo: string;
    var
      FS: TFileStream;
      ch: Char;
      Line: string;
      mem, res: TStringList;
    begin
      result := '';
      FS := TFileStream.Create('/proc/meminfo', fmOpenRead);
      mem := TStringList.create;
      res := TStringList.create;
      try
        Line := '';
        ch := #0;
        while (FS.Read(ch, 1) = 1) and (ch <> #13) do
        begin
          Line := Line + ch;
        end;
        mem.text := line;
        mem.NameValueSeparator := ':';
        var total: string := mem.Values['MemTotal'];
        var available: string := mem.Values['MemAvailable'];
        var ifree: string := mem.Values['MemFree'];
        res.Values['MemTotal'] := total;
        res.Values['MemAvailable'] := available;
        res.Values['MemFree'] := ifree;
        result := res.text;
      finally
        FS.Free;
        mem.free;
        res.free;
      end;
    end;
    {$ENDIF}
    {$IFDEF posix}
    
    function diskinfo: string;
    var
      disk: _statvfs;
      res: tstringlist;
    begin
      result := '';
      res := tstringlist.Create;
      try
        statvfs('/', disk);
        var available: Single := disk.f_bsize * disk.f_bavail;
        var capacity: Single := disk.f_bsize * disk.f_blocks;
        var used: Single := (disk.f_blocks - disk.f_bfree) * disk.f_frsize;
        res.Values['DiskUsed'] := floattostr(roundto(used / 1024 / 1024, 2)) + ' MB';
        res.Values['DiskTotal'] := floattostr(roundto(capacity / 1024 / 1024, 2)) + ' MB';
        res.Values['DiskAvailable'] := floattostr(roundto(available / 1024 / 1024, 2)) + ' MB';
        result := res.text;
      finally
        res.free;
      end;
    end;
    {$ENDIF}
    
    {$IFDEF  mswindows}
    
    function memInfo: string;
    var
      info: TMemoryStatus;
    begin
      result := 'memory: ';
      GlobalMemoryStatus(info);
      result := result + inttostr(info.dwMemoryLoad) + '%';
    end;
    
    function diskInfo(const disk: string = 'c:'): string;
    var
      FreeSpace, TotalSpace: Int64;
    begin
      if System.SysUtils.GetDiskFreeSpaceEx(PChar(disk), FreeSpace, TotalSpace, nil) then
      begin
        var res: tstringlist := tstringlist.Create;
        try
          var t: Single := roundto(TotalSpace / 1024 / 1024, 2);
          res.Values['DiskTotal'] := t.ToString + ' MB';
          t := roundto(FreeSpace / 1024 / 1024, 2);
          res.Values['DiskFree'] := t.ToString + ' MB';
          result := res.Text;
        finally
          res.free;
        end;
      end;
    end;
    {$ENDIF}
    
    begin
      try
        TThread.GetSystemTimes(Times);
        while True do
        begin
          writeln(CPUUsage);
          writeln(diskInfo);
          writeln(meminfo);
          sleep(5000);
        end;
      except
        on E: Exception do
          Writeln(E.ClassName, ': ', E.Message);
      end;
    end.
    

      

      

  • 相关阅读:
    javascript 对象属性的添加,删除,json对象和字符串转换方法等
    利用jquery.form.js实现将form提交转为ajax方式提交的方法(带上传的表单提交)
    js封装的一行半显示省略号。(字数自由控制)
    jq和js中click 事件的几种方式总结和click事件的累加问题解决办法
    jquery $(document).ready() 与js原生的window.onload的区别总结
    jquery中attr和prop的区别
    织梦文档按权重排序
    织梦channelartlist标签内使用currentstyle
    dedecms无法下载远程jpeg图片 织梦不能提取文章内容中的jpeg图片生成缩略图
    织梦dedecms去除友情链接中的li和span
  • 原文地址:https://www.cnblogs.com/hnxxcxg/p/14485264.html
Copyright © 2011-2022 走看看