Commit Graph

3735 Commits

Author SHA1 Message Date
Jim Warner f9afbabce7 misc: eliminated some instances of trailing whitespace
Signed-off-by: Jim Warner <james.warner@comcast.net>
2023-01-24 12:15:19 +11:00
Craig Small 2532b5d2dd ps: Add configurable date format for lstart field
The lstart field has been converted to use the strftime()
function so that it uses the locale. A new option -D
allows the user to define the format that would want this
field to show.

This may mean the field will be longer than it should be,
especially for French locales and the user defined field,
but the field length can be specified too.

---

This commit started off making all the relevant fields use the
locale correctly so it could solve #226 as well. The issue
is there an implied restriction (or not) around
strftime("%b") and probably strftime("%a") for abbrievated month
and day names respectively.

English, and some/most other languages put an additional
restriction that all abbreviations are 3 characters long.
The problem is, not all languages do this.

French is a good example:
janv. févr. mars avril mai juin juil. août sept. oct. nov. déc.

Maybe strip the . at the end?
 That helps for some months, not all
Maybe take the first three characters?
 Several wide languages will have big issues
Maybe convert wide, get wcslen then use that.
 Even after that June "juin" and July "juil" are both "jui".

So, anything that uses the month (bsdstart,start) use ctime which
doesn't use locale. That solves the length issue.

stime does, which means it has this issue but its been like that
for years. You get stuff like this:

janv.13 482261
00:00 1151918
 2022 1458628
06:12 1957584

The only way to fix that would be to
 a)Make the field two characters longer
 b)Convert it back to ctime() which means everyone else
   loses.

This could have be oh-so easy if everyone made %b and %a three
(wide) characters everywhere.

References:
 procps-ng/procps#228
 procps-ng/procps#226

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2023-01-18 17:46:06 +11:00
Craig Small bfe65a2cce docs: Cleanup vmstat.8
Made it follow the standard format and removed some cruft.
Added notes about you do need special permissions for some things
such as slabs.
2023-01-18 17:35:44 +11:00
Qin Fandong 0a5ccbdd42 vmstat: precision issues in unitConvert()
Fix conversion errors due to precision issues in function unitConvert

For example: unitConvert(98720620) will return 98720624, not 98720620.

Because we do (unsigned long)(float)98720620 in function unitConvert
and this is wrong! We should do (unsigned long)(double)98720620 here.

Signed-off-by: Craig Small <csmall@dropbear.xyz>

References:
 procps-ng/procps!75
2023-01-18 17:02:53 +11:00
Sanskriti Sharma 68e2c0fc53 vmstat: Fixed initial si,so,bi,bo,in & cs values
In the default display option, the first line of stats output in the
above mentioned columns was incorrect.

References:
 https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=668580
 procps-ng/procps!74
 procps-ng/procps#15

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2023-01-18 16:56:24 +11:00
Justin Gottula 8a65a304e0 watch: Fix buggy line-deletion behaviour with --no-linewrap
This change is largely based upon Justin's patch, I just moved the
reset_ansi() parts out otherwise you get strange colour reset
behaviours.

Original patch message:
I used the --no-linewrap (-w) option for the first time today, watching
some wide output that didn't quite fit in my tmux pane. Quickly I
noticed a problem: while --no-linewrap did indeed eliminate the
spillover of lines too long for the terminal "window" width, it *also*
resulted in a bunch of lines from the program output being hidden
entirely.

After some fiddling around, the exact problematic behavior appears to be
as follows:
 1. Lines which would have wrapped (more than $COLUMNS chars long) are
    handled correctly.
 2. Lines which would *not* have wrapped (shorter than $COLUMNS) are
    printed; but then the next line is *not* printed! For long sequences
    of non-wrap-length lines, you get an every-other-line-is-visible
    sort of effect.

The logic underlying the problem seems to be this: in the run_command
loop, if the x loop goes all the way to completion (meaning we've
reached the right-side edge of the window area), there's a small block
of code for --no-linewrap whose main purpose is to call find_eol, which
eats input until it hits a newline (or EOF). Clearly this is intended to
be done for lines that are too long, so that the excess characters are
discarded and the input pointer is ready to go for the subsequent line.

However, this code isn't in any way conditional on the value of eolseen!
Short/wouldn't-wrap lines will have encountered a newline character
before exhausting the entire x loop, and therefore eolseen will be true.
Long/would-wrap lines will not have encountered a newline when the x
loop is exhausted, and so eolseen will be false.

Nevertheless, find_eol is called in *both* cases. For long lines, it
does what it's meant to do. For short lines, *the newline has already
been encountered and dealt with*, and so the actual effect of find_eol
is to eat the entirety of the next line, all the way through to its
newline, such that it isn't printed at all.

References:
 procps-ng/procps!157

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2023-01-18 16:46:52 +11:00
Craig Small b2bfd76b06 watch: add -r to not rexec on terminal resize
If you have the watched program doing some other thing every time its
run and you resize the window, you might get unexpected results. The
-r option lets you run only when the interval has expired.

References:
 procps-ng/procps!125
 procps-ng/procps#190
2023-01-17 20:45:48 +11:00
Craig Small 5f4074a250 watch: Pass through bell
Based upon merge request 104, closes #174

References:
 procps-ng/procps!104
 procps-ng/procps#174
2023-01-17 16:59:00 +11:00
Craig Small aa461df0a7 docs: Minor manpage fixes
References:
 procps-ng/procps#230
2023-01-16 18:29:50 +11:00
Craig Small dbde44b528 doc: free.1 total memory doesn't include reserved memory
Updated the definition of total, because its not *all* of
the installed memory but close to it.

References:
 procps-ng/procps#247

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2023-01-16 17:29:36 +11:00
Craig Small 647a2aa9e1 testsuite: Test for uptime --pretty
References:
 procps-ng/procps#263
2023-01-16 17:22:26 +11:00
Leonard Janis Robert König d70879fb9c docs: Update drs description in ps.1 from top.1
References:
 procps-ng/procps!156
2023-01-15 15:37:49 +11:00
Craig Small 7b0c87f095 misc: Add NEWS for w --pids
References:
 commit 5baf1e6226
 procps-ng/procps!159
2023-01-15 15:19:38 +11:00
Jan Pazdziora 5baf1e6226 w: add --pids option to display the pid of the login and best processes. 2023-01-15 04:15:32 +00:00
Craig Small 3cfe83a25c misc: Add NEWS for pgrep -H
References:
 commit 866abacf88
 procps-ng/procps!165
2023-01-15 15:11:02 +11:00
Chris Down 866abacf88 pgrep: Support matching on the presence of a userspace signal handler
In production we've had several incidents over the years where a process
has a signal handler registered for SIGHUP or one of the SIGUSR signals
which can be used to signal a request to reload configs, rotate log
files, and the like. While this may seem harmless enough, what we've
seen happen repeatedly is something like the following:

1. A process is using SIGHUP/SIGUSR[12] to request some
   application-handled state change -- reloading configs, rotating a log
   file, etc;
2. This kind of request is deprecated and removed, so the signal handler
   is removed. However, a site where the signal might be sent from is
   missed (often logrotate or a service manager);
3. Because the default disposition of these signals is terminal, sooner
   or later these applications are going to be sent SIGHUP or similar
   and end up unexpectedly killed.

I know for a fact that we're not the only organisation experiencing
this: in general, signal use is pretty tricky to reason about and safely
remove because of the fairly aggressive SIG_DFL behaviour for some
common signals, especially for SIGHUP which has a particularly ambiguous
meaning. Especially in a large, highly interconnected codebase,
reasoning about signal interactions between system configuration and
applications can be highly complex, and it's inevitable that on occasion
a callsite will be missed.

In some cases the right call to avoid this will be to migrate services
towards other forms of IPC for this purpose, but inevitably there will
be some services which must continue using signals, so we need a safe
way to support them.

This patch adds support for the -H/--require-handler flag, which matches
on processes with a userspace handler present for the signal being sent.

With this flag we can enforce that all SIGHUP reload cases and SIGUSR
equivalents use --require-handler. This effectively mitigates the case
we've seen time and time again where SIGHUP is used to rotate log files
or reload configs, but the sending site is mistakenly left present after
the removal of signal handler, resulting in unintended termination of
the process.

Signed-off-by: Chris Down <chris@chrisdown.name>
2023-01-15 04:05:40 +00:00
Jim Warner 1db14dafd9 top: include the '5' toggle on the primary help screen
When the p/e-cores support (via the '5' key) was added
in the patch referenced below, I intentionally omitted
that key from the top primary help screen. This seemed
appropriate since it only applied to select Intel cpus
and, besides, that screen was getting kind of crowded.

[ it remains an objective to fit on a 80x24 terminal ]

Upon reflection, I found a way to squeeze it into that
help screen and have decided to included it. Hopefully
its presence will encourage use of top's new provision
on any Intel platforms that distinguish between cores.

Reference(s):
Sep, 2022 - exploit p/e-cores provision
commit 00f5c74b1b

Signed-off-by: Jim Warner <james.warner@comcast.net>
2023-01-15 15:02:39 +11:00
Jim Warner 28f44729da top: lessen overhead when 'bottom window' isn't active
In the commits referenced below special code was added
to make the bottom window sticky and fix the bug after
'Cap_nl_clreos' was traded for the 'Cap_clr_eol' loop.

However, there's always major overhead associated with
interacting with a terminal. So we'll only abandon the
single 'Cap_nl_clreos' putp in favor of repeated calls
with 'Cap_clr_eol' when a bottom window isn't present.

Reference(s):
. May, 2022 - bottom window batch bug fix
commit 793f3e85ae
. May, 2022 - bottom window made sticky
commit 0f2a755b0b

Signed-off-by: Jim Warner <james.warner@comcast.net>
2023-01-15 15:02:39 +11:00
Jim Warner 548c6a05ba top: tweak whitespace in some #defines for consistency
Please, do not look at the actual changes made by this
commit. Trust me they will vastly improve performance.

Signed-off-by: Jim Warner <james.warner@comcast.net>
2023-01-15 15:02:39 +11:00
Ingo Saitz 7e24816538 vmstat: Update memory statistics
vmstat <n> would update most fields, but the memory statistics
were only fetched the first time.

References:
 https://bugs.debian.org/1027963

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2023-01-06 13:30:39 +11:00
Craig Small dd3cb0892d ps: Correct BSD c option
procps 3.3.17 the c option changed the command/args field
to cmd but this got removed as part of newlib

Functionality is back in with a test case.

References:
 https://bugs.debian.org/1026326

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-12-19 16:50:12 +11:00
Craig Small ab978d62ae docs: ps.1 - comm can show command name changes
The man page said it cannot show changes to comm, such as when you
use prctl(). In fact, ps can see this. The args field may not change
because its due to the path of the executable but comm can.
2022-12-13 16:36:56 +11:00
Craig Small 838de1de67 docs: ps.1 remove defunct from comm
The field comm no longer shows defunct for zombie processes, use the
state field for this as it could be obscured if not the last
column anyhow.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-12-12 16:59:23 +11:00
Craig Small 20d1e70b48 Merge branch 'master' of gitlab.com:procps-ng/procps 2022-12-12 16:48:21 +11:00
Craig Small f7a33746f8 skill: Restore the -p flag functionality
When the skill program was ported to the new API the code to filter
on PID, used by the -p option, was missed. It is now restored.

References:
 https://bugs.debian.org/1025915
2022-12-12 16:46:36 +11:00
Craig Small c444c55ce8 nls: Update man translation files 2022-12-09 22:56:14 +11:00
Werner Fink 31117ae10e build-sys: Remove duplicate manpages
Fix the building of the man pages instead of installing the same
english ones twice.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-12-06 22:30:35 +11:00
Craig Small 82d8e3faf3 tests: Fix type for check_fatal_proc_unmounted
While ps used the correct type for PIDS_VM_RSS the test
did not. For some reason this only appeared to be an issue
for s390x

References:
 https://bugs.debian.org/1025495

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-12-06 22:23:08 +11:00
Craig Small 3c7a0c7cea Integrate the 'newlib' branch with the 'master' branch
[ with the histories of both branches also preserved ]

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-12-05 22:44:27 +11:00
Craig Small 135069f2b2 build-sys: Set library to 0:1:0
There was a bug fix in the library but no functions add/moved/changed
Revision incremented.
2022-12-05 21:04:05 +11:00
Craig Small 04ba0d5111 nls: update po and ro 2022-12-05 21:01:48 +11:00
Craig Small 493198dce3 nls: Update translations
Added po and ro languages too.

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-12-05 20:59:00 +11:00
Craig Small 86d1f9fd82 NEWS: Change to 4.0.2 2022-11-26 08:55:21 +11:00
Craig Small 9bfa9a3e56 nls: Update 2022-11-26 08:53:54 +11:00
Craig Small c594a742a3 nls: Update translations
Side-effect of previous commit

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-11-10 21:56:22 +11:00
Craig Small 5ed8add969 nls: Update the man-po logic
Put the man-po pot file under version control like its po/*.pot sibling.

Makefile now auto-matically generates the list of man pages as they are
in a single directory. There were some missing!

pot file target is dependent on the untranslated man pages

When downloading from translation project, run po4a to sync the new
po files correctly.

Downloaded man po files from translation project and synched.

Thanks to @gorean for the info

References:
 procps-ng/procps#258

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-11-10 21:52:19 +11:00
Chris Down c92da2adc5 pkill: Don't show --echo twice
Commit c8384e682c ("pgrep: add pwait") changed from the old i_am_pkill
logic, but mistakenly missed a break in the pkill case. This results in
showing -e/--echo twice when running `pkill -h'.

Signed-off-by: Chris Down <chris@chrisdown.name>
2022-11-09 10:51:12 +00:00
Craig Small d9c3e3676d revert: pidfd_open check
This change confused the pidfd_open check with the existance
of NR_pidfd_open
2022-11-09 21:32:26 +11:00
Fabrice Fontaine 17f94796a9 fix pifd_open check
Replace AC_CHECK_FUNC by AC_CHECK_FUNCS otherwise HAVE_PIDFD_OPEN will
never be defined resulting in the following build failure if pidfd_open
is available but __NR_pidfd_open is not available:

pgrep.c: In function 'pidfd_open':
pgrep.c:748:17: error: '__NR_pidfd_open' undeclared (first use in this function); did you mean 'pidfd_open'?
  748 |  return syscall(__NR_pidfd_open, pid, flags);
      |                 ^~~~~~~~~~~~~~~
      |                 pidfd_open

This build failure is raised since the addition of pwait in version
3.3.17 and
c8384e682c

Fixes:
 - http://autobuild.buildroot.org/results/f23a5156e641b2ebdd673973dec0f9c87760c688

Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
2022-11-09 10:15:05 +00:00
Craig Small d99c213af9 w: Show time with TIME_BITS=64 on 32bit env
Thanks to @kabe-gl for this patch.

w command shows ????? for LOGIN@ column when compiled on 32bit environment with -D_TIME_BITS=64.

References:
 #256

Signed-off-by: Craig Small <csmall@dropbear.xyz>
2022-11-09 21:02:09 +11:00
Jim Warner 2647eb57da top: also adapted to absent 'core id' in /proc/cpuinfo
Just as our library was made responsive to a potential
missing 'core id', the top program should also change.

That's because he has his own PRETENDECORE #define and
if that was activated on a platform without 'core id',
the 'CpP' notations would have otherwise been omitted.

Reference(s):
. Oct, 2022 - library fix for missing 'core id'
commit b89e3230b2

Signed-off-by: Jim Warner <james.warner@comcast.net>
2022-10-30 21:18:30 +11:00
Craig Small 474e22eb0b misc: Add NEWS item for missing core_id
Tracking what we do to the library so the N:N:N version strings are
updated. This is just a NEWS item for previous commit.

References:
 commit b89e3230b2
2022-10-25 20:18:35 +11:00
Jim Warner b89e3230b2 library: adapted for absent 'core id' in /proc/cpuinfo
A big oops on my part - with a big thanks to Dr. Fink.

[ this version eliminates an extraneous startup call ]
[ to the 'stat_cores_verify' function as superfluous ]

Reference(s):
https://www.freelists.org/post/procps/For-procpsng4001-No-core-id-in-eg-aarch65-or-ppc64le-proccpuinfo

Prototyped by: Dr. Werner Fink <werner@suse.de>
Signed-off-by: Jim Warner <james.warner@comcast.net>
2022-10-25 20:16:12 +11:00
Craig Small a423367450 nls: Fix polish translation (again) 2022-10-20 22:15:31 +11:00
Jim Warner 6eba357054 top: whack an obsolete string plus its associated code <=== port of newlib 244f2b33
______________________________ original newlib message
----------------------------------- ( minus git hash )

When long command line options were introduced, in the
patch shown below, the string associated with the enum
'WRONG_switch_fmt' became obsolete. However, that enum
and its string were never removed. Well, now they are.

Reference(s):
. Sep, 2021 - getopt and long cmdline options
commit ........................................

Signed-off-by: Jim Warner <james.warner@comcast.net>
2022-10-20 21:44:14 +11:00
Craig Small 06e3cd6e51 NEWS: Set version to 4.0.1 2022-10-20 20:58:25 +11:00
Craig Small 06bb25ee4a nls: Last translation update for 4.0.1 2022-10-20 20:56:17 +11:00
Craig Small c2092ad537 nls: Update translations 2022-10-16 20:06:14 +11:00
Jim Warner 57774f0332 top: restore missing support for 'MEMGRAPH_OLD' define
When support for graphs was refactored, in that commit
referenced below, the logic for our 'MEMGRAPH_OLD' was
lost while the #define itself remained in the .h file.

Faced with deleting the #define or restoring the logic
I chose the latter. Thus, if one wanted to be reminded
how overstated 'used' memory once was, it can be done.

Reference(s):
. Sep, 2022 - refactored graph support
commit 2d5b51d1a2

Signed-off-by: Jim Warner <james.warner@comcast.net>
2022-10-16 19:56:19 +11:00
Jim Warner 244f2b33f2 top: whack an obsolete string plus its associated code
When long command line options were introduced, in the
patch shown below, the string associated with the enum
'WRONG_switch_fmt' became obsolete. However, that enum
and its string were never removed. Well, now they are.

Reference(s):
. Sep, 2021 - getopt and long cmdline options
commit c91b371485

Signed-off-by: Jim Warner <james.warner@comcast.net>
2022-10-16 19:56:19 +11:00