snipt

Ctrl+h for KB shortcuts

PHP

Show top 20 cpu hogging users

#!/usr/bin/php
<?php

$stats = array();

while ( true ) {
    exec('ps -eo %cpu,user', $processes);
    array_shift($processes); // Remove first line
    foreach($processes as $process) {
        $process = preg_replace('!\s+!', ' ', $process );
        list($cpu, $user) = split( ' ', trim( $process ) );
        $cpu = preg_replace( '/[^[0-9]]/', '', $cpu );
        if ( ctype_digit( $user ) ) {
          $info = posix_getpwuid( $user );
          $user = $info['name'];
        }
        if ( !isset($stats[$user]) ) $stats[$user] = 0;
        $stats[$user] += (float) $cpu/10;
    }
    natsort( $stats );
    $stats = array_reverse( $stats, true );
    // Clear screen
    print chr(27) . "[2J" . chr(27) . "[;H";

    $i = 0;
    foreach ( $stats as $user => $cpu ) {
      print ++$i . ": {$user} {$cpu}" . PHP_EOL;
      if ( $i > 19 ) break;
    }
    print PHP_EOL;
    sleep(1);
}

?>
https://snipt.net/embed/8d1c887006b1ba5f5124a2658b744a95/
/raw/8d1c887006b1ba5f5124a2658b744a95/
8d1c887006b1ba5f5124a2658b744a95
php
PHP
34
2019-05-25T07:40:31
True
False
False
/api/public/snipt/43702/
show-top-10-cpu-hogging-users-linux
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a> <a href="#L-20">20</a> <a href="#L-21">21</a> <a href="#L-22">22</a> <a href="#L-23">23</a> <a href="#L-24">24</a> <a href="#L-25">25</a> <a href="#L-26">26</a> <a href="#L-27">27</a> <a href="#L-28">28</a> <a href="#L-29">29</a> <a href="#L-30">30</a> <a href="#L-31">31</a> <a href="#L-32">32</a> <a href="#L-33">33</a> <a href="#L-34">34</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="x">#!/usr/bin/php</span> </span><span id="L-2"><a name="L-2"></a><span class="cp">&lt;?php</span> </span><span id="L-3"><a name="L-3"></a> </span><span id="L-4"><a name="L-4"></a><span class="nv">$stats</span> <span class="o">=</span> <span class="k">array</span><span class="p">();</span> </span><span id="L-5"><a name="L-5"></a> </span><span id="L-6"><a name="L-6"></a><span class="k">while</span> <span class="p">(</span> <span class="k">true</span> <span class="p">)</span> <span class="p">{</span> </span><span id="L-7"><a name="L-7"></a> <span class="nb">exec</span><span class="p">(</span><span class="s1">&#39;ps -eo %cpu,user&#39;</span><span class="p">,</span> <span class="nv">$processes</span><span class="p">);</span> </span><span id="L-8"><a name="L-8"></a> <span class="nb">array_shift</span><span class="p">(</span><span class="nv">$processes</span><span class="p">);</span> <span class="c1">// Remove first line</span> </span><span id="L-9"><a name="L-9"></a> <span class="k">foreach</span><span class="p">(</span><span class="nv">$processes</span> <span class="k">as</span> <span class="nv">$process</span><span class="p">)</span> <span class="p">{</span> </span><span id="L-10"><a name="L-10"></a> <span class="nv">$process</span> <span class="o">=</span> <span class="nb">preg_replace</span><span class="p">(</span><span class="s1">&#39;!\s+!&#39;</span><span class="p">,</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="nv">$process</span> <span class="p">);</span> </span><span id="L-11"><a name="L-11"></a> <span class="k">list</span><span class="p">(</span><span class="nv">$cpu</span><span class="p">,</span> <span class="nv">$user</span><span class="p">)</span> <span class="o">=</span> <span class="nb">split</span><span class="p">(</span> <span class="s1">&#39; &#39;</span><span class="p">,</span> <span class="nb">trim</span><span class="p">(</span> <span class="nv">$process</span> <span class="p">)</span> <span class="p">);</span> </span><span id="L-12"><a name="L-12"></a> <span class="nv">$cpu</span> <span class="o">=</span> <span class="nb">preg_replace</span><span class="p">(</span> <span class="s1">&#39;/[^[0-9]]/&#39;</span><span class="p">,</span> <span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="nv">$cpu</span> <span class="p">);</span> </span><span id="L-13"><a name="L-13"></a> <span class="k">if</span> <span class="p">(</span> <span class="nb">ctype_digit</span><span class="p">(</span> <span class="nv">$user</span> <span class="p">)</span> <span class="p">)</span> <span class="p">{</span> </span><span id="L-14"><a name="L-14"></a> <span class="nv">$info</span> <span class="o">=</span> <span class="nb">posix_getpwuid</span><span class="p">(</span> <span class="nv">$user</span> <span class="p">);</span> </span><span id="L-15"><a name="L-15"></a> <span class="nv">$user</span> <span class="o">=</span> <span class="nv">$info</span><span class="p">[</span><span class="s1">&#39;name&#39;</span><span class="p">];</span> </span><span id="L-16"><a name="L-16"></a> <span class="p">}</span> </span><span id="L-17"><a name="L-17"></a> <span class="k">if</span> <span class="p">(</span> <span class="o">!</span><span class="nb">isset</span><span class="p">(</span><span class="nv">$stats</span><span class="p">[</span><span class="nv">$user</span><span class="p">])</span> <span class="p">)</span> <span class="nv">$stats</span><span class="p">[</span><span class="nv">$user</span><span class="p">]</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> </span><span id="L-18"><a name="L-18"></a> <span class="nv">$stats</span><span class="p">[</span><span class="nv">$user</span><span class="p">]</span> <span class="o">+=</span> <span class="p">(</span><span class="nx">float</span><span class="p">)</span> <span class="nv">$cpu</span><span class="o">/</span><span class="mi">10</span><span class="p">;</span> </span><span id="L-19"><a name="L-19"></a> <span class="p">}</span> </span><span id="L-20"><a name="L-20"></a> <span class="nb">natsort</span><span class="p">(</span> <span class="nv">$stats</span> <span class="p">);</span> </span><span id="L-21"><a name="L-21"></a> <span class="nv">$stats</span> <span class="o">=</span> <span class="nb">array_reverse</span><span class="p">(</span> <span class="nv">$stats</span><span class="p">,</span> <span class="k">true</span> <span class="p">);</span> </span><span id="L-22"><a name="L-22"></a> <span class="c1">// Clear screen</span> </span><span id="L-23"><a name="L-23"></a> <span class="k">print</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">27</span><span class="p">)</span> <span class="o">.</span> <span class="s2">&quot;[2J&quot;</span> <span class="o">.</span> <span class="nb">chr</span><span class="p">(</span><span class="mi">27</span><span class="p">)</span> <span class="o">.</span> <span class="s2">&quot;[;H&quot;</span><span class="p">;</span> </span><span id="L-24"><a name="L-24"></a> </span><span id="L-25"><a name="L-25"></a> <span class="nv">$i</span> <span class="o">=</span> <span class="mi">0</span><span class="p">;</span> </span><span id="L-26"><a name="L-26"></a> <span class="k">foreach</span> <span class="p">(</span> <span class="nv">$stats</span> <span class="k">as</span> <span class="nv">$user</span> <span class="o">=&gt;</span> <span class="nv">$cpu</span> <span class="p">)</span> <span class="p">{</span> </span><span id="L-27"><a name="L-27"></a> <span class="k">print</span> <span class="o">++</span><span class="nv">$i</span> <span class="o">.</span> <span class="s2">&quot;: </span><span class="si">{</span><span class="nv">$user</span><span class="si">}</span><span class="s2"> </span><span class="si">{</span><span class="nv">$cpu</span><span class="si">}</span><span class="s2">&quot;</span> <span class="o">.</span> <span class="nx">PHP_EOL</span><span class="p">;</span> </span><span id="L-28"><a name="L-28"></a> <span class="k">if</span> <span class="p">(</span> <span class="nv">$i</span> <span class="o">&gt;</span> <span class="mi">19</span> <span class="p">)</span> <span class="k">break</span><span class="p">;</span> </span><span id="L-29"><a name="L-29"></a> <span class="p">}</span> </span><span id="L-30"><a name="L-30"></a> <span class="k">print</span> <span class="nx">PHP_EOL</span><span class="p">;</span> </span><span id="L-31"><a name="L-31"></a> <span class="nb">sleep</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span> </span><span id="L-32"><a name="L-32"></a><span class="p">}</span> </span><span id="L-33"><a name="L-33"></a> </span><span id="L-34"><a name="L-34"></a><span class="cp">?&gt;</span><span class="x"></span> </span></pre></div> </td></tr></table>
PHP, administration, console, cpu, linux