Tips en Trucs 2024

Procesinformatie weergeven met Procs

Procs is een terminalprogramma om informatie te tonen over actieve en draaiende processen. Het is net als de traditionele ps opdracht, maar met wat extra mogelijkheden. De ontwikkelaar zegt dat Procs een moderne vervanging is voor de ps-opdracht.

Procs is een cross-platform applicatie geschreven in de programmeertaal Rust. Procs ondersteunt Linux volledig. MacOS en Windows worden experimenteel ondersteund.

Eigenschappen

Vergeleken met ps heeft Procs een aantal voordelen.

Procs installeren

De eenvoudigste manier om Procs te installeren is door het kant en klare binaire programmabestand te downloaden.

Informatie over alle processen bekijken

Om informatie te tonen over alle draaiende processen op je Linux systeem, voer je gewoon het volgende uit:

dany@pindabook:~$ sudo procs
 PID:▲ User              TTY   CPU MEM CPU Time  Command                                                                                                                                                               
                               [%] [%]                                                                                                                                                                                 
 1     root                    0.0 0.2 00:00:01  /sbin/init                                                                                                                                                            
 2     root                    0.0 0.0 00:00:00  [kthreadd]                                                                                                                                                            
 3     root                    0.0 0.0 00:00:00  [rcu_gp]                                                                                                                                                              
 4     root                    0.0 0.0 00:00:00  [rcu_par_gp]                                                                                                                                                          
 5     root                    0.0 0.0 00:00:00  [slub_flushwq]                                                                                                                                                        
 6     root                    0.0 0.0 00:00:00  [netns]                                                                                                                                                               
 8     root                    0.0 0.0 00:00:00  [kworker/0:0H-events_highpri]                                                                                                                                         
 9     root                    0.0 0.0 00:00:00  [kworker/u16:0-flush-8:0]                                                                                                                                             
 10    root                    0.0 0.0 00:00:00  [mm_percpu_wq]                                                                                                                                                        
 11    root                    0.0 0.0 00:00:00  [rcu_tasks_kthread]                                                                                                                                                   
 12    root                    0.0 0.0 00:00:00  [rcu_tasks_rude_kthread]                                                                                                                                              
 13    root                    0.0 0.0 00:00:00  [rcu_tasks_trace_kthread]                                                                                                                                             
 14    root                    0.0 0.0 00:00:00  [ksoftirqd/0]                                                                                                                                                         
 15    root                    0.0 0.0 00:00:00  [rcu_preempt]                                                                                                                                                         
 16    root                    0.0 0.0 00:00:00  [migration/0]                                                                                                                                                         
 18    root                    0.0 0.0 00:00:00  [cpuhp/0]                                                                                                                                                             
 19    root                    0.0 0.0 00:00:00  [cpuhp/1]                                                                                                                                                             
 20    root                    0.0 0.0 00:00:00  [migration/1]                                                                                                                                                         
 21    root                    0.0 0.0 00:00:00  [ksoftirqd/1]                                                                                                                                                         
 23    root                    0.0 0.0 00:00:00  [kworker/1:0H-events_highpri]                                                                                                                                         
 24    root                    0.0 0.0 00:00:00  [cpuhp/2]                                                                                                                                                             
 25    root                    0.0 0.0 00:00:00  [migration/2]                                                                                                                                                         
 26    root                    0.0 0.0 00:00:00  [ksoftirqd/2]                                                                                                                                                         
 28    root                    0.0 0.0 00:00:00  [kworker/2:0H-events_highpri]                                                                                                                                         
:

Zoals je kunt zien, toont Procs informatie over alle processen. Procs toont de informatie per pagina. Als het aantal regels de terminalhoogte overschrijdt, wordt automatisch een pager gebruikt. Je kunt de volgende pagina van de informatie bekijken door op de Return te drukken, de vorige pagina met b. Pijltoetsen en kunnen worden gebruikt om per regel te scrollen. De navigatietoetsen zijn echter afhankelijk van de pager die standaard op jouw systeem wordt gebruikt.

Druk op q of Ctrl + c om Procs te verlaten.

Om gedetailleerdere informatie weer te geven, kan je vooringestelde configuraties gebruiken (of eigen configuraties samenstellen). Met de optie --use-config large geeft Procs extra kolommen met informatie weer:

dany@pindabook:~$ sudo procs --use-config large

En je krijgt:

Procs

Dit komt in grote lijnen overeen met de opdracht ps aux, maar de informatie wordt beter weergegeven (kleurondersteuning) en toont wat extra informatie zoals TCP/UDP-poortnummer, lees-/schrijfdoorvoer, enz.

Zoeken naar een proces

Procs kunnen processen weergeven die overeenkomen met een specifiek trefwoord. De volgende opdracht geeft processen weer die overeenkomen met het trefwoord "sshd".

dany@pindabook:~$ sudo procs sshd
 PID:▲ User  TTY   CPU MEM CPU Time  Command                                                
                   [%] [%]                                                                  
 748   root        0.0 0.1 00:00:00  sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups
 1997  root        0.0 0.1 00:00:00  sshd: dany [priv]                                      
 2008  dany        0.0 0.1 00:00:00  sshd: dany@pts/1                                       
 2257  root  pts/1 0.0 0.1 00:00:00  sudo procs sshd                         
 2259  root  pts/2 0.0 0.0 00:00:00  sudo procs sshd                         

Op dezelfde manier kunnen we informatie weergeven over processen die overeenkomen met het tekstfragment "help".

dany@pindabook:~$ sudo procs help
 PID:▲ User    TTY   CPU MEM CPU Time  Command                                                                                                                                                               
                     [%] [%]                                                                                                                                                                                 
 640   avahi         0.0 0.0 00:00:00  avahi-daemon: chroot helper                                                                                                                                           
 1107  nobody        0.0 0.0 00:00:00  /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper                                
 1108  root          0.0 0.0 00:00:00  /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper                                
 1182  root          0.0 0.2 00:00:00  /usr/lib/x86_64-linux-gnu/sddm/sddm-helper --socket /tmp/sddm-auth6db6204a-b9e3-4f5b-b80e-6aee90e26bfb --id 1 --start /usr/bin/startplasma-x11 --user dany --autologin
 1284  dany          0.0 0.1 00:00:00  /usr/libexec/pulse/gsettings-helper                                                                                                                                   
 3057  root    pts/1 0.0 0.1 00:00:00  sudo procs help                                                                                                                                        
 3059  root    pts/2 0.0 0.0 00:00:00  sudo procs help                                                                                                                                        

Merk op dat het alle processen weergeeft die het opgegeven tekstfragment bevat. Het is niet specifiek voor een gebruiker of opdracht, maar mag overal voorkomen, ook als deel van een woord.

Het is ook mogelijk om procesinformatie weer te geven die overeenkomt met numerieke sleutelwoorden zoals PID, TCP, UDP. De volgende opdracht geeft bijvoorbeeld procesdetails weer die overeenkomen met nummer 22:

dany@pindabook:~$ sudo procs 22 --use-config large
 PID:▲ User  State Nice TTY CPU MEM  VmSize   VmRSS TCP  UDP  Read Write  CPU Time Start             Command                                                
                            [%] [%] [bytes] [bytes]          [B/s] [B/s]                                                                                    
 22    root  I        0     0.0 0.0       0       0 []   []      0     0  00:00:00 2024/02/13 15:09  [kworker/1:0-events]                                   
 748   root  S        0     0.0 0.1 15.051M  9.133M [22] []      0     0  00:00:00 2024/02/13 15:09  sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups

Zoals je in het bovenstaande voorbeeld kunt zien, staat het getal 22 in de kolommen PID en TCP.

Boomstructuur weergave

Voer het volgende uit om informatie over alle processen in een boomstructuur weer te geven:

dany@pindabook:~$ sudo procs -t
              PID    User              TTY    CPU MEM CPU Time  Command                                                                                                                                                               
                                              [%] [%]                                                                                                                                                                                 
 ├┬────────── 1      root                     0.0 0.2 00:00:01  /sbin/init                                                                                                                                                            
 │├────────── 291    root                     0.0 0.2 00:00:00  /lib/systemd/systemd-journald                                                                                                                                         
 │├────────── 320    root                     0.0 0.1 00:00:00  /lib/systemd/systemd-udevd                                                                                                                                            
 │├┬───────── 578    systemd-timesync         0.0 0.1 00:00:00  /lib/systemd/systemd-timesyncd                                                                                                                                        
 ││└───────── [595]  systemd-timesync         0.0 0.1 00:00:00  sd-resolve                                                                                                                                                            
 │├┬───────── 599    root                     0.0 0.1 00:00:00  /usr/libexec/accounts-daemon                                                                                                                                          
 ││├───────── [627]  root                     0.0 0.1 00:00:00  gmain                                                                                                                                                                 
 ││└───────── [665]  root                     0.0 0.1 00:00:00  gdbus                                                                                                                                                                 
 │├┬───────── 629    avahi                    0.0 0.0 00:00:00  avahi-daemon: running [pindabook.local]                                                                                                                               
 ││└───────── 640    avahi                    0.0 0.0 00:00:00  avahi-daemon: chroot helper                                                                                                                                           
 │├────────── 630    root                     0.0 0.0 00:00:00  /usr/sbin/cron -f                                                                                                                                                     
 │├────────── 631    messagebus              11.5 0.1 00:00:02  /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only                                                              
 │├┬───────── 633    root                     0.0 0.1 00:00:00  /usr/sbin/iio-sensor-proxy                                                                                                                                            
 ││├───────── [671]  root                     0.0 0.1 00:00:00  gmain                                                                                                                                                                 
 ││└───────── [676]  root                     0.0 0.1 00:00:00  gdbus                                                                                                                                                                 
 │├┬───────── 635    polkitd                 34.5 0.1 00:00:00  /usr/lib/polkit-1/polkitd --no-debug                                                                                                                                  
 ││├───────── [644]  polkitd                  0.0 0.1 00:00:00  gmain                                                                                                                                                                 
 ││└───────── [659]  polkitd                 11.5 0.1 00:00:00  gdbus                                                                                                                                                                 
 │├────────── 636    root                     0.0 0.1 00:00:00  /usr/sbin/smartd -n                                                                                                                                                   
 │├────────── 637    root                     0.0 0.1 00:00:00  /lib/systemd/systemd-logind                                                                                                                                           
 │├────────── 638    root                     0.0 0.1 00:00:00  /lib/systemd/systemd-machined                                                                                                                                         
 │├┬───────── 639    root                     0.0 0.2 00:00:00  /usr/libexec/udisks2/udisksd                                                                                                                                          
 ││├───────── [646]  root                     0.0 0.2 00:00:00  gmain                                                                                                                                                                 
 ││├───────── [660]  root                     0.0 0.2 00:00:00  gdbus                                                                                                                                                                 

Alle processen worden gesorteerd op afhankelijkheidsvolgorde en de afhankelijkheidsboom wordt aan de linkerkant weergegeven.

De ps opdracht kan ook procesinformatie in boomstructuur weergeven:

dany@pindabook:~$ ps axjf
   PPID     PID    PGID     SID TTY        TPGID STAT   UID   TIME COMMAND
      0       2       0       0 ?             -1 S        0   0:00 [kthreadd]
      2       3       0       0 ?             -1 I<       0   0:00  \_ [rcu_gp]
      2       4       0       0 ?             -1 I<       0   0:00  \_ [rcu_par_gp]
      2       5       0       0 ?             -1 I<       0   0:00  \_ [slub_flushwq]
      2       6       0       0 ?             -1 I<       0   0:00  \_ [netns]
      2       8       0       0 ?             -1 I<       0   0:00  \_ [kworker/0:0H-events_highpri]
      2      10       0       0 ?             -1 I<       0   0:00  \_ [mm_percpu_wq]
      2      11       0       0 ?             -1 I        0   0:00  \_ [rcu_tasks_kthread]
      2      12       0       0 ?             -1 I        0   0:00  \_ [rcu_tasks_rude_kthread]
      2      13       0       0 ?             -1 I        0   0:00  \_ [rcu_tasks_trace_kthread]
      2      14       0       0 ?             -1 S        0   0:00  \_ [ksoftirqd/0]
      2      15       0       0 ?             -1 I        0   0:00  \_ [rcu_preempt]
      2      16       0       0 ?             -1 S        0   0:00  \_ [migration/0]
      2      18       0       0 ?             -1 S        0   0:00  \_ [cpuhp/0]
      2      19       0       0 ?             -1 S        0   0:00  \_ [cpuhp/1]
      2      20       0       0 ?             -1 S        0   0:00  \_ [migration/1]
      2      21       0       0 ?             -1 S        0   0:00  \_ [ksoftirqd/1]
      2      22       0       0 ?             -1 I        0   0:00  \_ [kworker/1:0-events]
      2      23       0       0 ?             -1 I<       0   0:00  \_ [kworker/1:0H-events_highpri]
      2      24       0       0 ?             -1 S        0   0:00  \_ [cpuhp/2]
      2      25       0       0 ?             -1 S        0   0:00  \_ [migration/2]
      2      26       0       0 ?             -1 S        0   0:00  \_ [ksoftirqd/2]
      2      28       0       0 ?             -1 I<       0   0:00  \_ [kworker/2:0H-events_highpri]
      2      29       0       0 ?             -1 S        0   0:00  \_ [cpuhp/3]

Of:

dany@pindabook:~$ ps -ejH
    PID    PGID     SID TTY          TIME CMD
      2       0       0 ?        00:00:00 kthreadd
      3       0       0 ?        00:00:00   rcu_gp
      4       0       0 ?        00:00:00   rcu_par_gp
      5       0       0 ?        00:00:00   slub_flushwq
      6       0       0 ?        00:00:00   netns
      8       0       0 ?        00:00:00   kworker/0:0H-events_highpri
     10       0       0 ?        00:00:00   mm_percpu_wq
     11       0       0 ?        00:00:00   rcu_tasks_kthread
     12       0       0 ?        00:00:00   rcu_tasks_rude_kthread
     13       0       0 ?        00:00:00   rcu_tasks_trace_kthread
     14       0       0 ?        00:00:00   ksoftirqd/0
     15       0       0 ?        00:00:00   rcu_preempt
     16       0       0 ?        00:00:00   migration/0
     18       0       0 ?        00:00:00   cpuhp/0
     19       0       0 ?        00:00:00   cpuhp/1
     20       0       0 ?        00:00:00   migration/1
     21       0       0 ?        00:00:00   ksoftirqd/1
     22       0       0 ?        00:00:00   kworker/1:0-events
     23       0       0 ?        00:00:00   kworker/1:0H-events_highpri
     24       0       0 ?        00:00:00   cpuhp/2
     25       0       0 ?        00:00:00   migration/2

Het Procs boomformaat is echter beter uitgelijnd dan de uitvoer van de ps opdracht.

Sorteren

Met Procs kan je de volgorde van de kolommen user, state, Nice value, cpu time, vmsize, vmrss, read/write throughput naar wens wijzigen. Je kunt de kolommen in oplopende of aflopende volgorde sorteren.

Als je bijvoorbeeld de volgorde van de kolom cpu time in oplopende volgorde wilt sorteren, gebruik je de optie --sorta (sort ascending) zoals hieronder:

dany@pindabook:~$ sudo procs --sorta CpuTime
 PID  User              TTY   CPU MEM CPU Time:▲ CPU Time  Command                                                                                                                                                               
                              [%] [%]                                                                                                                                                                                            
 3    root                    0.0 0.0 00:00:00   00:00:00  [rcu_gp]                                                                                                                                                              
 23   root                    0.0 0.0 00:00:00   00:00:00  [kworker/1:0H-events_highpri]                                                                                                                                         
 546  root                    0.0 0.0 00:00:00   00:00:00  [kworker/u17:1-rb_allocator]                                                                                                                                          
 1828 dany                    0.0 1.5 00:00:00   00:00:00  /usr/lib/x86_64-linux-gnu/libexec/DiscoverNotifier                                                                                                                    
 2093 dany                    0.0 0.1 00:00:00   00:00:00  sshd: dany@pts/1                                                                                                                                                      
 48   root                    0.0 0.0 00:00:00   00:00:00  [kblockd]                                                                                                                                                             
 465  root                    0.0 0.0 00:00:00   00:00:00  [kworker/u16:6-events_unbound]                                                                                                                                        
 12   root                    0.0 0.0 00:00:00   00:00:00  [rcu_tasks_rude_kthread]                                                                                                                                              
 21   root                    0.0 0.0 00:00:00   00:00:00  [ksoftirqd/1]                                                                                                                                                         
 1180 dany                    0.0 0.2 00:00:00   00:00:00  /lib/systemd/systemd --user                                                                                                                                           
 4291 root                    0.0 0.0 00:00:00   00:00:00  [kworker/u16:0-ext4-rsv-conversion]                                                                                                                                   
 1704 dany                    0.0 1.6 00:00:00   00:00:00  /usr/lib/x86_64-linux-gnu/libexec/polkit-kde-authentication-agent-1                                                                                                   
 42   root                    0.0 0.0 00:00:00   00:00:00  [oom_reaper]                                                                                                                                                          
 1015 dany                    0.0 0.2 00:00:00   00:00:00  /usr/sbin/apache2 -k start                                                                                                                                            
 829  root                    0.0 0.1 00:00:00   00:00:00  sshd: /usr/sbin/sshd -D [listener] 0 of 10-100 startups                                                                                                               

Om aflopend te sorteren, gebruik je --sortd (sort descending):

dany@pindabook:~$ sudo procs --sortd CpuTime
 PID  User              TTY   CPU MEM CPU Time:▼ CPU Time  Command                                                                                                                                                               
                              [%] [%]                                                                                                                                                                                            
 1675 dany                    0.0 3.5 00:00:16   00:00:16  /usr/bin/plasmashell --no-respawn                                                                                                                                     
 1337 dany                    0.0 2.1 00:00:04   00:00:04  /usr/bin/kwin_x11 --replace                                                                                                                                           
 688  messagebus              0.0 0.1 00:00:03   00:00:03  /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only                                                              
 3074 root                    0.0 1.3 00:00:03   00:00:03  /usr/libexec/fwupd/fwupd                                                                                                                                              
 857  root                    0.0 1.3 00:00:03   00:00:03  /usr/lib/xorg/Xorg -nolisten tcp -auth /var/run/sddm/{7d64d382-285d-4855-838c-556e9cf33ff0} -background none -noreset -displayfd 17 -seat seat0 vt7                   
 1336 dany                    0.0 1.9 00:00:01   00:00:01  /usr/bin/kded5                                                                                                                                                        
 295  root                    0.0 0.2 00:00:01   00:00:01  /lib/systemd/systemd-journald                                                                                                                                         
 1660 Debian-exim             0.0 0.2 00:00:01   00:00:01  /usr/sbin/exim4 -bd -q30m                                                                                                                                             
 1705 dany                    0.0 0.6 00:00:01   00:00:01  /usr/lib/x86_64-linux-gnu/libexec/org_kde_powerdevil                                                                                                                  
 321  root                    0.0 0.1 00:00:01   00:00:01  /lib/systemd/systemd-udevd                                                                                                                                            
 3147 dany                    0.0 0.2 00:00:01   00:00:01  /usr/lib/x86_64-linux-gnu/libexec/kf5/kio_http_cache_cleaner                                                                                                          
 1    root                    0.0 0.2 00:00:01   00:00:01  /sbin/init                                                                                                                                                            
 42   root                    0.0 0.0 00:00:00   00:00:00  [oom_reaper]                                                                                                                                                          
 30   root                    0.0 0.0 00:00:00   00:00:00  [migration/3]                                                                                                                                                         
 695  root                    0.0 0.1 00:00:00   00:00:00  /lib/systemd/systemd-machined                                                                                                                                         
 11   root                    0.0 0.0 00:00:00   00:00:00  [rcu_tasks_kthread]                                                                                                                                                   
 160  root                    0.0 0.0 00:00:00   00:00:00  [scsi_eh_0]                                                                                                                                                           

De namen van de kolommen kan je opvragen met de opdracht:

dany@pindabook:~$ procs --list
Column kind list:
  Ccgroup    : Control group by compressed format
  Cgroup     : Control group
  Command    : Command with all arguments
  ContextSw  : Context switch count
  CpuTime    : Cumulative CPU time
...
  VmSwap     : Swapped-out virtual memory size
  Wchan      : Process sleeping kernel function
  WorkDir    : Current working directory
  WriteBytes : Write bytes to storage

Monitor mode

Procs ondersteunt een watch mode, net als de top opdracht. De informatie van de top opdracht wordt standaard automatisch met een interval van 3 seconden bijgewerkt. Procs kan de informatie ook automatisch bijwerken met door de gebruiker opgegeven intervallen. Om de uitvoer van Procs bijvoorbeeld elke 2 seconden bij te werken, voer je uit:

dany@pindabook:~$ sudo procs --watch-interval 2
 Interval: 2000ms, Last Updated: 2024/02/13 15:51:59 ( Next: n, Prev: p, Ascending: a, Descending: d, Quit: q or Ctrl-C )

l-C )

 PID:▲ User  TTY CPU MEM CPU Time  Command                      
                 [%] [%]                                        
 1     root      0.0 0.2 00:00:01  /sbin/init                   
 2     root      0.0 0.0 00:00:00  [kthreadd]                   
 3     root      0.0 0.0 00:00:00  [rcu_gp]                     
 4     root      0.0 0.0 00:00:00  [rcu_par_gp]                 
 5     root      0.0 0.0 00:00:00  [slub_flushwq]               
 6     root      0.0 0.0 00:00:00  [netns]                      
 8     root      0.0 0.0 00:00:00  [kworker/0:0H-events_highpri]
 10    root      0.0 0.0 00:00:00  [mm_percpu_wq]               
 11    root      0.0 0.0 00:00:00  [rcu_tasks_kthread]          
 12    root      0.0 0.0 00:00:00  [rcu_tasks_rude_kthread]     

Procs verwijderen

Procs verwijder je eenvoudig door het programmabestand te verwijderen:

dany@pindabook:~$ sudo rm /usr/local/bin/procs
[sudo] wachtwoord voor root: