#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