summaryrefslogtreecommitdiff
path: root/px.c
diff options
context:
space:
mode:
Diffstat (limited to 'px.c')
-rw-r--r--px.c35
1 files changed, 19 insertions, 16 deletions
diff --git a/px.c b/px.c
index 2abcf07..877baee 100644
--- a/px.c
+++ b/px.c
@@ -1,3 +1,11 @@
+/*
+ * px - search for processes and print top(1)-like status
+ *
+ * To the extent possible under law, Leah Neukirchen <leah@vuxu.org>
+ * has waived all copyright and related or neighboring rights to this work.
+ * http://creativecommons.org/publicdomain/zero/1.0/
+ */
+
#include <sys/auxv.h>
#include <sys/sysinfo.h>
@@ -47,9 +55,7 @@ print_time(time_t t) {
int
main(int argc, char *argv[])
{
- proc_t **result;
int clktck;
-
if ((clktck = getauxval(AT_CLKTCK)) <= 0)
if ((clktck = sysconf(_SC_CLK_TCK)) <= 0)
clktck = 100; /* educated guess */
@@ -59,7 +65,8 @@ main(int argc, char *argv[])
time_t now = time(0);
- result = readproctab(PROC_FILLMEM | PROC_FILLCOM | PROC_FILLUSR |
+ proc_t **result;
+ result = readproctab(PROC_FILLCOM | PROC_FILLUSR |
PROC_FILLSTAT | PROC_FILLSTATUS);
int matched = 0;
@@ -82,29 +89,28 @@ match:
printf(" PID USER %%CPU VSZ RSS START ELAPSED CPUTIME COMMAND\n");
printf("%5d", p->tid);
+
printf(" %-8.8s", p->euser);
double pcpu = 0;
- time_t seconds;
- time_t cputime;
-
+ time_t seconds, cputime;
cputime = (p->utime + p->stime) / clktck;
seconds = si.uptime - p->start_time / clktck;
if (seconds)
pcpu = (cputime * 100.0) / seconds;
-
printf(" %4.1f", pcpu);
+
print_human(p->vm_size*1024);
+
print_human(p->vm_rss*1024);
+ char buf[7];
time_t start;
time_t seconds_ago;
start = (now - si.uptime) + p->start_time / clktck;
seconds_ago = now - start;
if (seconds_ago < 0)
seconds_ago = 0;
-
- char buf[7];
if (seconds_ago > 3600*24)
strftime(buf, sizeof buf, "%b%d", localtime(&start));
else
@@ -115,17 +121,14 @@ match:
print_time(cputime);
- if (p->cmdline) {
- for (int i = 0; p->cmdline[i]; i++) {
+ if (p->cmdline)
+ for (int i = 0; p->cmdline[i]; i++)
printf(" %s", p->cmdline[i]);
- }
- } else {
- // kernel threads
+ else // kernel threads
printf(" [%s]", p->cmd);
- }
-
if (p->state == 'Z')
printf(" <defunct>");
+
printf("\n");
}