📄 load.c
字号:
/* $Header: /cvsroot/watchdog/watchdog/src/load.c,v 1.2 2006/07/31 09:39:23 meskes Exp $ */#ifdef HAVE_CONFIG_H#include "config.h"#endif#include <errno.h>#include <unistd.h>#include <stdlib.h>#include <string.h>#include "extern.h"#include "watch_err.h"#if USE_SYSLOG#include <syslog.h>#endifint check_load(void){ int avg1, avg5, avg15; char buf[40], *ptr; /* is the load average file open? */ if (load == -1 || maxload1 == 0 || maxload5 == 0 || maxload15 == 0) return (ENOERR); /* position pointer at start of file */ if (lseek(load, 0, SEEK_SET) < 0) { int err = errno;#if USE_SYSLOG syslog(LOG_ERR, "lseek /proc/loadavg gave errno = %d = '%m'", err);#else /* USE_SYSLOG */ perror(progname);#endif /* USE_SYSLOG */ if (softboot) return (err); return (ENOERR); } /* read the line (there is only one) */ if (read(load, buf, sizeof(buf)) < 0) { int err = errno;#if USE_SYSLOG syslog(LOG_ERR, "read /proc/loadavg gave errno = %d = '%m'", err);#else /* USE_SYSLOG */ perror(progname);#endif /* USE_SYSLOG */ if (softboot) return (err); return (ENOERR); } /* we only care about integer values */ avg1 = atoi(buf); /* if we have incorrect data we might not be able to find */ /* the blanks we're looking for */ ptr = strchr(buf, ' '); if (ptr != NULL) { avg5 = atoi(ptr); ptr = strchr(ptr + 1, ' '); } if (ptr != NULL) avg15 = atoi(ptr); else {#if USE_SYSLOG syslog(LOG_ERR, "/proc/loadavg does not contain any data (read = %s)", buf);#else /* USE_SYSLOG */ perror(progname);#endif /* USE_SYSLOG */ if (softboot) return (ENOLOAD); return (ENOERR); }#if USE_SYSLOG if (verbose && logtick && ticker == 1) syslog(LOG_INFO, "current load is %d %d %d", avg1, avg5, avg15);#endif /* USE_SYSLOG */ if (avg1 > maxload1 || avg5 > maxload5 || avg15 > maxload15) {#if USE_SYSLOG syslog(LOG_ERR, "loadavg %d %d %d is higher than the given threshold %d %d %d!", avg1, avg5, avg15, maxload1, maxload5, maxload15);#endif /* USE_SYSLOG */ return (EMAXLOAD); } return (ENOERR);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -