#include <stdio.h>
#include <string.h>
#include <sys/acct.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>
#define STR(I) #I
int main(int argc, char **argv)
{
char debian_default[] = "/var/log/account/pacct";
char usage[] = "Usage: acctmem accounting-file\n";
char *file;
if (argc == 2) {
if (argv[1][0] == '-' && argv[1][1] == 'h') {
fprintf (stderr, "%s", usage);
return 0;
} else {
file = argv[1];
}
}
else {
file = debian_default;
}
printf ("Using %s\n", file);
int fd = open (file, O_RDONLY);
if (fd < 0) {
perror ("Can not open file");
return 1;
}
struct acct_v3 entry;
for (;;) {
ssize_t bytes = read (fd, &entry, sizeof entry);
if (bytes < 0) {
perror("Can not read file");
return 1;
}
if (bytes == sizeof entry)
printf ("%6u: %-" STR(ACCT_COMM) "s(%3u): %uk\n",
entry.ac_uid,
(char*)&(entry.ac_comm),
entry.ac_exitcode,
entry.ac_mem);
else
break;
}
return 0;
}
// Local Variables:
// compile-command: "gcc -o acctmem acctmem.c"
// End:
Montag, 10. Februar 2014
Using BSD process accounting to list the memory usage
Sometimes the memory usage of a program is of interest. The following program can be used to list the memory usage reported by the BSD process accounting.
Abonnieren
Kommentare zum Post (Atom)
Keine Kommentare:
Kommentar veröffentlichen