Date: Wed, 14 Aug 2002 22:33:12 +0100 From: Matthew Seaman <m.seaman@infracaninophile.co.uk> To: Dan Nelson <dnelson@allantgroup.com> Cc: Tillman Hodgson <tillman@seekingfire.com>, freebsd-questions@FreeBSD.ORG Subject: Re: Extracting the 1-minute loadavg in a portable yet low-impact fashion Message-ID: <20020814213312.GD2827@happy-idiot-talk.infracaninophi> In-Reply-To: <20020814144729.GA50066@dan.emsphone.com> References: <20020814083253.C11913@seekingfire.com> <20020814144729.GA50066@dan.emsphone.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Wed, Aug 14, 2002 at 09:47:29AM -0500, Dan Nelson wrote:
> In the last episode (Aug 14), Tillman Hodgson said:
> > I'm trying to extract the 1-minute loadavg in a portable (between
> > RedHat Linux and FreeBSD, at least) way without having to invoke a
> > lot of expensive subprocesses. On Linux, awk '{print \$1}' <
> > /proc/loadavg has been working nicely (though non-portably). When I
> > log onto a BSD host and my NFS-mounted home dir follows me, this
> > obviously doesn't work very well :-)
> >
> > uptime | awk '{print $10}' works, but leaves a trailing comma. Adding
> > a sed statement to the end of that would start to get too expensive.
>
> That actually won't work, since if the system has been up for under an
> hour, you get
>
> 9:43AM up 28 mins, 6 users, load averages: 0.28, 0.67, 0.43
>
> How about uptime | sed -e 's/.*: \([0-9.]*\).*/\1/' ? That should work
> on any system where the loadavg is immediately preceded by ": ", which
> is every OS I can lay my hands on at the moment.
That should work. Or this trivial little bit of C code should be
portable to most Unixoid O/Ses:
happy-idiot-talk:/tmp:% cat ldavg.c
#include <stdio.h>
#include <stdlib.h>
int
main(int argc, char *argv[])
{
double ldavg;
if (getloadavg(&ldavg, 1) == -1) {
perror("Load average unavailable\n");
exit(EXIT_FAILURE);
} else {
printf("%.3f\n", ldavg);
}
exit(EXIT_SUCCESS);
}
Compile like so:
cc -o ldavg ldavg.c
That should be about as low impact as you can get, portably.
Cheers,
Matthew
--
Dr Matthew J Seaman MA, D.Phil. 26 The Paddocks
Savill Way
Tel: +44 1628 476614 Marlow
Fax: +44 0870 0522645 Bucks., SL7 1TH UK
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-questions" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020814213312.GD2827>
