ps(1) cleanup + comments
This commit is contained in:
parent
3516186e4c
commit
f462025156
20
ps.c
20
ps.c
@ -69,7 +69,7 @@ psout(struct procstat *ps)
|
|||||||
char *ttystr, *myttystr;
|
char *ttystr, *myttystr;
|
||||||
int tty_maj, tty_min;
|
int tty_maj, tty_min;
|
||||||
uid_t myeuid, peuid, puid;
|
uid_t myeuid, peuid, puid;
|
||||||
unsigned sut;
|
unsigned sutime;
|
||||||
time_t start;
|
time_t start;
|
||||||
struct sysinfo info;
|
struct sysinfo info;
|
||||||
struct passwd *pw;
|
struct passwd *pw;
|
||||||
@ -79,10 +79,9 @@ psout(struct procstat *ps)
|
|||||||
if (ps->pid == ps->sid)
|
if (ps->pid == ps->sid)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
sut = (ps->stime + ps->utime) / sysconf(_SC_CLK_TCK);
|
|
||||||
|
|
||||||
devtotty(ps->tty_nr, &tty_maj, &tty_min);
|
devtotty(ps->tty_nr, &tty_maj, &tty_min);
|
||||||
ttystr = ttytostr(tty_maj, tty_min);
|
ttystr = ttytostr(tty_maj, tty_min);
|
||||||
|
|
||||||
/* Only print processes that are associated with
|
/* Only print processes that are associated with
|
||||||
* a terminal and they are not session leaders */
|
* a terminal and they are not session leaders */
|
||||||
if (flags & PS_aflag) {
|
if (flags & PS_aflag) {
|
||||||
@ -92,6 +91,9 @@ psout(struct procstat *ps)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This is the default case, only print processes that have
|
||||||
|
* the same controlling terminal as the invoker and the same
|
||||||
|
* euid as the current user */
|
||||||
if (!(flags & (PS_aflag | PS_Aflag | PS_dflag))) {
|
if (!(flags & (PS_aflag | PS_Aflag | PS_dflag))) {
|
||||||
myttystr = ttyname(STDIN_FILENO);
|
myttystr = ttyname(STDIN_FILENO);
|
||||||
if (myttystr) {
|
if (myttystr) {
|
||||||
@ -100,6 +102,8 @@ psout(struct procstat *ps)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
/* The invoker has no controlling terminal - just
|
||||||
|
* go ahead and print the processes anyway */
|
||||||
ttystr[0] = '?';
|
ttystr[0] = '?';
|
||||||
ttystr[1] = '\0';
|
ttystr[1] = '\0';
|
||||||
}
|
}
|
||||||
@ -111,9 +115,12 @@ psout(struct procstat *ps)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sutime = (ps->stime + ps->utime) / sysconf(_SC_CLK_TCK);
|
||||||
|
|
||||||
if (!(flags & PS_fflag)) {
|
if (!(flags & PS_fflag)) {
|
||||||
printf("%5d %-6s %02u:%02u:%02u %s\n", ps->pid, ttystr,
|
printf("%5d %-6s %02u:%02u:%02u %s\n", ps->pid, ttystr,
|
||||||
sut / 3600, (sut % 3600) / 60, sut % 60, ps->comm);
|
sutime / 3600, (sutime % 3600) / 60, sutime % 60,
|
||||||
|
ps->comm);
|
||||||
} else {
|
} else {
|
||||||
procuid(ps->pid, &puid);
|
procuid(ps->pid, &puid);
|
||||||
errno = 0;
|
errno = 0;
|
||||||
@ -123,11 +130,14 @@ psout(struct procstat *ps)
|
|||||||
|
|
||||||
if (sysinfo(&info) < 0)
|
if (sysinfo(&info) < 0)
|
||||||
eprintf("sysinfo:");
|
eprintf("sysinfo:");
|
||||||
|
|
||||||
start = time(NULL) - info.uptime;
|
start = time(NULL) - info.uptime;
|
||||||
start += (ps->starttime / sysconf(_SC_CLK_TCK));
|
start += (ps->starttime / sysconf(_SC_CLK_TCK));
|
||||||
strftime(stimestr, sizeof(stimestr),
|
strftime(stimestr, sizeof(stimestr),
|
||||||
"%H:%M", localtime(&start));
|
"%H:%M", localtime(&start));
|
||||||
|
|
||||||
|
/* For kthreads/zombies /proc/<pid>/cmdline will be
|
||||||
|
* empty so use ps->comm in that case */
|
||||||
if (parsecmdline(ps->pid, cmdline, sizeof(cmdline)) < 0)
|
if (parsecmdline(ps->pid, cmdline, sizeof(cmdline)) < 0)
|
||||||
cmd = ps->comm;
|
cmd = ps->comm;
|
||||||
else
|
else
|
||||||
@ -136,7 +146,7 @@ psout(struct procstat *ps)
|
|||||||
printf("%-8s %5d %5d ? %5s %-5s %02u:%02u:%02u %s%s%s\n",
|
printf("%-8s %5d %5d ? %5s %-5s %02u:%02u:%02u %s%s%s\n",
|
||||||
pw->pw_name, ps->pid,
|
pw->pw_name, ps->pid,
|
||||||
ps->ppid, stimestr, ttystr,
|
ps->ppid, stimestr, ttystr,
|
||||||
sut / 3600, (sut % 3600) / 60, sut % 60,
|
sutime / 3600, (sutime % 3600) / 60, sutime % 60,
|
||||||
(cmd == ps->comm) ? "[" : "", cmd,
|
(cmd == ps->comm) ? "[" : "", cmd,
|
||||||
(cmd == ps->comm) ? "]" : "");
|
(cmd == ps->comm) ? "]" : "");
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user