Hi,

Some time ago the process id was aded to process accounting.  It
would be useful to have the pid in lastcomm(1) output for post
mortem analysis.  I put it in brackets after the command, like
syslogd does it in log files.  Without additional column, existing
parsers should not be too confused.

old:
ssh                      -       bluhm                            ttyp9      
0.31 secs Fri Jan 27 20:57 (0:00:08.72)

new:
ssh[48913]                            -       bluhm                            
ttyp9      0.31 secs Fri Jan 27 20:57 (0:00:08.72)

The line was rather long before, my diff does not make it much
worse.

ok?

bluhm

Index: usr.bin/lastcomm/lastcomm.c
===================================================================
RCS file: /data/mirror/openbsd/cvs/src/usr.bin/lastcomm/lastcomm.c,v
retrieving revision 1.31
diff -u -p -r1.31 lastcomm.c
--- usr.bin/lastcomm/lastcomm.c 4 Dec 2022 23:50:48 -0000       1.31
+++ usr.bin/lastcomm/lastcomm.c 27 Jan 2023 20:03:31 -0000
@@ -106,6 +106,8 @@ main(int argc, char *argv[])
                err(1, "%s", acctfile);
 
        for (;;) {
+               char commpid[sizeof(ab.ac_comm) + 13];
+
                if (fread(&ab, sizeof(struct acct), 1, fp) != 1)
                        err(1, "%s", acctfile);
 
@@ -117,12 +119,14 @@ main(int argc, char *argv[])
                            p < &ab.ac_comm[sizeof ab.ac_comm] && *p; ++p)
                                if (!isprint((unsigned char)*p))
                                        *p = '?';
+               snprintf(commpid, sizeof(commpid), "%s[%d]",
+                   ab.ac_comm, ab.ac_pid);
                if (!*argv || requested(argv, &ab)) {
                        t = expand(ab.ac_utime) + expand(ab.ac_stime);
                        (void)printf("%-*.*s %-7s %-*.*s %-*.*s %6.2f secs 
%.16s",
-                           (int)sizeof ab.ac_comm,
-                           (int)sizeof ab.ac_comm,
-                           ab.ac_comm, flagbits(ab.ac_flag), UT_NAMESIZE,
+                           (int)sizeof commpid,
+                           (int)sizeof commpid,
+                           commpid, flagbits(ab.ac_flag), UT_NAMESIZE,
                            UT_NAMESIZE, user_from_uid(ab.ac_uid, 0),
                            UT_LINESIZE, UT_LINESIZE, getdev(ab.ac_tty),
                            t / (double)AHZ, ctime(&ab.ac_btime));

Reply via email to