diff --git a/NEWS b/NEWS index 083343db..289cf160 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,8 @@ procps-ng-3.3.8 Debian #707648 * eliminate the potential library segmentation fault Debian #706259, RedHat #951391 + * top now accomodates a window manager like 'screen' + RedHat #962022 procps-ng-3.3.7 diff --git a/ps/output.c b/ps/output.c index 6b5f19c0..0203d5c4 100644 --- a/ps/output.c +++ b/ps/output.c @@ -1533,6 +1533,9 @@ static const format_struct format_array[] = { {"login", "LOGNAME", pr_nop, sr_nop, 8, 0, BSD, AN|LEFT}, /*logname*/ /* double check */ {"logname", "LOGNAME", pr_nop, sr_nop, 8, 0, XXX, AN|LEFT}, /*login*/ {"longtname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, PO|LEFT}, +#ifdef WITH_SYSTEMD +{"lsession", "SESSION", pr_sd_session, sr_nop, 11, 0, LNX, ET|LEFT}, +#endif {"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, ET|RIGHT}, {"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, ET|RIGHT}, /* login ID */ {"luser", "LUSER", pr_nop, sr_nop, 8, USR, LNX, ET|USER}, /* login USER */ @@ -1545,6 +1548,9 @@ static const format_struct format_array[] = { {"m_size", "SIZE", pr_size, sr_size, 5, MEM, LNX, PO|RIGHT}, {"m_swap", "SWAP", pr_nop, sr_nop, 5, 0, LNx, PO|RIGHT}, {"m_trs", "TRS", pr_trs, sr_trs, 5, MEM, LNx, PO|RIGHT}, +#ifdef WITH_SYSTEMD +{"machine", "MACHINE", pr_sd_machine, sr_nop, 31, 0, LNX, ET|LEFT}, +#endif {"maj_flt", "MAJFL", pr_majflt, sr_maj_flt, 6, 0, LNX, AN|RIGHT}, {"majflt", "MAJFLT", pr_majflt, sr_maj_flt, 6, 0, XXX, AN|RIGHT}, {"min_flt", "MINFL", pr_minflt, sr_min_flt, 6, 0, LNX, AN|RIGHT}, @@ -1565,6 +1571,9 @@ static const format_struct format_array[] = { {"osz", "SZ", pr_nop, sr_nop, 2, 0, SUN, PO|RIGHT}, {"oublk", "OUBLK", pr_nop, sr_nop, 5, 0, BSD, AN|RIGHT}, /*oublock*/ {"oublock", "OUBLK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT}, /*oublk*/ +#ifdef WITH_SYSTEMD +{"ouid", "OWNER", pr_sd_ouid, sr_nop, 5, 0, LNX, ET|LEFT}, +#endif {"p_ru", "P_RU", pr_nop, sr_nop, 6, 0, BSD, AN|RIGHT}, {"paddr", "PADDR", pr_nop, sr_nop, 6, 0, BSD, AN|RIGHT}, {"pagein", "PAGEIN", pr_majflt, sr_maj_flt, 6, 0, XXX, AN|RIGHT}, @@ -1606,12 +1615,7 @@ static const format_struct format_array[] = { {"scnt", "SCNT", pr_nop, sr_nop, 4, 0, DEC, AN|RIGHT}, /* man page misspelling of scount? */ {"scount", "SC", pr_nop, sr_nop, 4, 0, AIX, AN|RIGHT}, /* scnt==scount, DEC claims both */ #ifdef WITH_SYSTEMD -{"sd_machine","MACHINE", pr_sd_machine, sr_nop, 31, 0, LNX, ET|LEFT}, -{"sd_ouid", "OWNER", pr_sd_ouid, sr_nop, 5, 0, LNX, ET|LEFT}, -{"sd_seat", "SEAT", pr_sd_seat, sr_nop, 11, 0, LNX, ET|LEFT}, -{"sd_session","SESSION", pr_sd_session, sr_nop, 11, 0, LNX, ET|LEFT}, -{"sd_unit", "UNIT", pr_sd_unit, sr_nop, 31, 0, LNX, ET|LEFT}, -{"sd_uunit", "UUNIT", pr_sd_uunit, sr_nop, 31, 0, LNX, ET|LEFT}, +{"seat", "SEAT", pr_sd_seat, sr_nop, 11, 0, LNX, ET|LEFT}, #endif {"sess", "SESS", pr_sess, sr_session, 5, 0, XXX, PO|PIDMAX|RIGHT}, {"session", "SESS", pr_sess, sr_session, 5, 0, LNX, PO|PIDMAX|RIGHT}, @@ -1679,6 +1683,9 @@ static const format_struct format_array[] = { {"uid_hack", "UID", pr_euser, sr_euser, 8, USR, XXX, ET|USER}, {"umask", "UMASK", pr_nop, sr_nop, 5, 0, DEC, AN|RIGHT}, {"uname", "USER", pr_euser, sr_euser, 8, USR, DEC, ET|USER}, /* man page misspelling of user? */ +#ifdef WITH_SYSTEMD +{"unit", "UNIT", pr_sd_unit, sr_nop, 31, 0, LNX, ET|LEFT}, +#endif {"upr", "UPR", pr_nop, sr_nop, 3, 0, BSD, TO|RIGHT}, /*usrpri*/ {"uprocp", "UPROCP", pr_nop, sr_nop, 8, 0, BSD, AN|RIGHT}, {"user", "USER", pr_euser, sr_euser, 8, USR, U98, ET|USER}, /* BSD n forces this to UID */ @@ -1686,6 +1693,9 @@ static const format_struct format_array[] = { {"usrpri", "UPR", pr_nop, sr_nop, 3, 0, DEC, TO|RIGHT}, /*upr*/ {"util", "C", pr_c, sr_pcpu, 2, 0, SGI, ET|RIGHT}, // not sure about "C" {"utime", "UTIME", pr_nop, sr_utime, 6, 0, LNx, ET|RIGHT}, +#ifdef WITH_SYSTEMD +{"uunit", "UUNIT", pr_sd_uunit, sr_nop, 31, 0, LNX, ET|LEFT}, +#endif {"vm_data", "DATA", pr_nop, sr_vm_data, 5, 0, LNx, PO|RIGHT}, {"vm_exe", "EXE", pr_nop, sr_vm_exe, 5, 0, LNx, PO|RIGHT}, {"vm_lib", "LIB", pr_nop, sr_vm_lib, 5, 0, LNx, PO|RIGHT}, diff --git a/ps/ps.1 b/ps/ps.1 index af249c2c..6311b48b 100644 --- a/ps/ps.1 +++ b/ps/ps.1 @@ -1311,6 +1311,10 @@ time the command started. See also .BR bsdstart , \ start , \ start_time ", and" \ stime . T} +lsession SESSION T{ +displays login session identifier of a process. +T} + lwp LWP T{ light weight process (thread) ID of the dispatchable entity (alias .BR spid , \ tid ). @@ -1319,6 +1323,10 @@ See for additional information. T} +machine MACHINE T{ +displays machine name for processes assigned to VM or container. +T} + maj_flt MAJFLT T{ The number of major page faults that have occurred with this process. T} @@ -1353,6 +1361,10 @@ if you want the kernel function name). Running tasks will display a dash ('\-') in this column. T} +ouid OWNER T{ +displays the Unix user identifier of the owner of the session of a process. +T} + pcpu %CPU T{ see .BR %cpu . @@ -1489,30 +1501,10 @@ SCHED_FIFO, SCHED_RR, SCHED_BATCH, SCHED_ISO, and SCHED_IDLE are respectively displayed as 0, 1, 2, 3, 4, and 5. T} -sd_machine MACHINE T{ -displays machine name for processes assigned to VM or container. -T} - -sd_ouid OWNER T{ -displays the Unix user identifier of the owner of the session of a process. -T} - -sd_seat SEAT T{ +seat SEAT T{ displays login session identifier of a process. T} -sd_session SESSION T{ -displays login session identifier of a process. -T} - -sd_unit UNIT T{ -displays systemd unit which a process belongs to. -T} - -sd_uunit UUNIT T{ -displays systemd user unit which a process belongs to. -T} - sess SESS T{ session ID or, equivalently, the process ID of the session leader. (alias .BR session , \ sid ). @@ -1732,6 +1724,10 @@ see .BR euser , \ user ). T} +unit UNIT T{ +displays systemd unit which a process belongs to. +T} + user USER T{ see .BR euser . @@ -1739,6 +1735,10 @@ see .BR euser , \ uname ). T} +uunit UUNIT T{ +displays systemd user unit which a process belongs to. +T} + vsize VSZ T{ see .BR vsz . diff --git a/top/top.c b/top/top.c index 4caf6580..2b05a601 100644 --- a/top/top.c +++ b/top/top.c @@ -350,16 +350,14 @@ static void at_eoj (void) { if (Ttychanged) { tcsetattr(STDIN_FILENO, TCSAFLUSH, &Tty_original); if (keypad_local) putp(keypad_local); - if (exit_ca_mode) + putp("\n"); + if (exit_ca_mode) { // this next will also replace top's most recent screen with the // original display contents that were visible at our invocation putp(exit_ca_mode); - else { - // but if we can't, we'll simply do it as old top always used to - putp(tg2(0, Screen_rows)); - putp("\n"); } putp(Cap_curs_norm); + putp(Cap_clr_eol); #ifndef RMAN_IGNORED putp(Cap_smam); #endif @@ -756,7 +754,6 @@ static int show_pmt (const char *str) { * Show a special coordinate message, in support of scrolling */ static inline void show_scroll (void) { PUTT(Scroll_fmts, tg2(0, Msg_row), Frame_maxtask); - putp(tg2(0, Msg_row)); } // end: show_scroll @@ -5445,7 +5442,7 @@ static void frame_hlp (int wix, int max) { * (*subordinate* functions invoked know WHEN the user's had) * (ENOUGH already. And at Frame End, it SHOULD be apparent) * (WE am d'MAN -- clearing UNUSED screen LINES and ensuring) - * (the CURSOR is STUCK in just the RIGHT place, know what I) + * (that those auto-sized columns are addressed, know what I) * (mean? Huh, "doesn't DO MUCH"! Never, EVER think or say) * (THAT about THIS function again, Ok? Good that's better.) * @@ -5474,7 +5471,10 @@ static void frame_make (void) { Tree_idx = Pseudo_row = Msg_row = scrlins = 0; summary_show(); Max_lines = (Screen_rows - Msg_row) - 1; - OFFw(Curwin, INFINDS_xxx); + OFFw(w, INFINDS_xxx); + + if (VIZISw(w) && CHKw(w, View_SCROLL)) show_scroll(); + else PUTT("%s%s", tg2(0, Msg_row), Cap_clr_eol); if (!Rc.mode_altscr) { // only 1 window to show so, piece o' cake @@ -5498,8 +5498,6 @@ static void frame_make (void) { putp(Cap_nl_clreos); PSU_CLREOS(Pseudo_row); } - if (VIZISw(w) && CHKw(w, View_SCROLL)) show_scroll(); - else PUTT("%s%s", tg2(0, Msg_row), Cap_clr_eol); fflush(stdout); /* we'll deem any terminal not supporting tgoto as dumb and disable