From 7a39b2d750cdd6de11de6df2174debae5b482d5e Mon Sep 17 00:00:00 2001 From: Daniel Caujolle-Bert Date: Wed, 8 Apr 2026 15:28:41 +0200 Subject: [PATCH] Fix "top" command parsing on FreeBSD (tested in FreeBSD 13.5 jail, running 1.38.1). --- scripts/ZoneMinder/lib/ZoneMinder/Server.pm | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/scripts/ZoneMinder/lib/ZoneMinder/Server.pm b/scripts/ZoneMinder/lib/ZoneMinder/Server.pm index 5e8addae4..9f3910c2d 100644 --- a/scripts/ZoneMinder/lib/ZoneMinder/Server.pm +++ b/scripts/ZoneMinder/lib/ZoneMinder/Server.pm @@ -24,6 +24,7 @@ package ZoneMinder::Server; use 5.006; use strict; use warnings; +use Config; require ZoneMinder::Base; require ZoneMinder::Config; @@ -127,7 +128,13 @@ sub CpuUsage { } else { # Get CPU utilization percentages - my $top_output = `top -b -n 1 | grep -i "^%Cpu(s)" | awk '{print \$2, \$4, \$6, \$8}'`; + my $top_output = ''; + ## FreeBSD + if (@Config{qw(uname)} == 'freebsd') { + $top_output = `top -b -n 1 | grep "^CPU" | sed 's/%//g' | awk '{print \$2, \$6, \$4, \$10}'`; + } else { + $top_output = `top -b -n 1 | grep -i "^%Cpu(s)" | awk '{print \$2, \$4, \$6, \$8}'`; + } my ($user, $system, $nice, $idle) = split(/ /, $top_output); $user =~ s/[^\d\.]//g; $system =~ s/[^\d\.]//g;