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.
Vergeleken met ps heeft Procs een aantal voordelen.
De eenvoudigste manier om Procs te installeren is door het kant en klare binaire programmabestand te downloaden.
dany@pindabook:~$ wget https://github.com/dalance/procs/releases/download/v0.14.4/procs-v0.14.4-x86_64-linux.zip
--2024-02-11 14:34:22-- https://github.com/dalance/procs/releases/download/v0.14.4/procs-v0.14.4-x86_64-linux.zip
Herleiden van github.com (github.com)... 140.82.121.3
Verbinding maken met github.com (github.com)|140.82.121.3|:443... verbonden.
HTTP-verzoek is verzonden; wachten op antwoord... 302 Found
Locatie: https://objects.githubusercontent.com/github-production-release-asset-2e65be/167957539/a47a50fa-462e-4b5b-8e5e-91fb7d173814?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240211%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240211T133423Z&X-Amz-Expires=300&X-Amz-Signature=3a2f614491d81a156d0afd1298f818bcda09a8c672ce74f1ca2cfe94d98ce44f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=167957539&response-content-disposition=attachment%3B%20filename%3Dprocs-v0.14.4-x86_64-linux.zip&response-content-type=application%2Foctet-stream [volgen...]
--2024-02-11 14:34:23-- https://objects.githubusercontent.com/github-production-release-asset-2e65be/167957539/a47a50fa-462e-4b5b-8e5e-91fb7d173814?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAVCODYLSA53PQK4ZA%2F20240211%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20240211T133423Z&X-Amz-Expires=300&X-Amz-Signature=3a2f614491d81a156d0afd1298f818bcda09a8c672ce74f1ca2cfe94d98ce44f&X-Amz-SignedHeaders=host&actor_id=0&key_id=0&repo_id=167957539&response-content-disposition=attachment%3B%20filename%3Dprocs-v0.14.4-x86_64-linux.zip&response-content-type=application%2Foctet-stream
Herleiden van objects.githubusercontent.com (objects.githubusercontent.com)... 185.199.110.133, 185.199.109.133, 185.199.108.133, ...
Verbinding maken met objects.githubusercontent.com (objects.githubusercontent.com)|185.199.110.133|:443... verbonden.
HTTP-verzoek is verzonden; wachten op antwoord... 200 OK
Lengte: 3133613 (3,0M) [application/octet-stream]
Wordt opgeslagen als: ‘procs-v0.14.4-x86_64-linux.zip’
procs-v0.14.4-x86_64-linux.z 100%[==============================================>] 2,99M 11,9MB/s in 0,3s
2024-02-11 14:34:24 (11,9 MB/s) - '‘procs-v0.14.4-x86_64-linux.zip’' opgeslagen [3133613/3133613]
dany@pindabook:~$ unzip procs-v0.14.4-x86_64-linux.zip
Archive: procs-v0.14.4-x86_64-linux.zip
inflating: procs
dany@pindabook:~$ sudo mv procs /usr/local/bin/
[sudo] wachtwoord voor root:
dany@pindabook:~$ sudo chmod +x /usr/local/bin/procs
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:
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.
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.
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.
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
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 verwijder je eenvoudig door het programmabestand te verwijderen:
dany@pindabook:~$ sudo rm /usr/local/bin/procs
[sudo] wachtwoord voor root: