Command line and full screen utilities for browsing procfs, a "pseudo" file system dynamically generated by Linux to provide information about the status of entries in its process table.
Go to file
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
doc misc: Move Documentation to doc 2022-08-29 18:38:52 +10:00
library tests: Fix type for check_fatal_proc_unmounted 2022-12-06 22:23:08 +11:00
local build-sys: Move git-version-gen 2022-08-29 20:53:01 +10:00
man pgrep: Support matching on the presence of a userspace signal handler 2023-01-15 04:05:40 +00:00
po nls: update po and ro 2022-12-05 21:01:48 +11:00
po-man nls: Update man translation files 2022-12-09 22:56:14 +11:00
src pgrep: Support matching on the presence of a userspace signal handler 2023-01-15 04:05:40 +00:00
testsuite pgrep: Support matching on the presence of a userspace signal handler 2023-01-15 04:05:40 +00:00
.gitignore nls: Update the man-po logic 2022-11-10 21:52:19 +11:00
.gitlab-ci.yml test: Update gitlab CI YAML to use shared runner 2016-04-20 22:20:55 +10:00
AUTHORS Changed git site to gitlab 2015-05-10 14:57:50 +10:00
COPYING license: update FSF addresses 2012-03-04 08:04:24 +11:00
COPYING.LIB miscellaneous: clean up trailing whitespace once again 2013-04-07 18:05:01 +10:00
ChangeLog Changed git site to gitlab 2015-05-10 14:57:50 +10:00
INSTALL.md INSTALL.md: Replace blockquotes with code blocks 2020-04-24 18:56:16 +10:00
Makefile.am build-sys: Set library to 0:1:0 2022-12-05 21:04:05 +11:00
NEWS top: include the '5' toggle on the primary help screen 2023-01-15 15:02:39 +11:00
README.md misc: Fix typo 2021-10-14 07:57:27 +11:00
autogen.sh misc: Move all binaries to src 2022-08-29 18:29:28 +10:00
configure.ac revert: pidfd_open check 2022-11-09 21:32:26 +11:00
create-man-pot.sh build-sys: Rearrange the manual pages 2022-08-29 18:07:43 +10:00
sysctl.conf misc: Add some link examples to sysctl.conf (catch up) 2018-05-06 07:19:38 +10:00
translate-man.sh build-sys: Rearrange the manual pages 2022-08-29 18:07:43 +10:00

README.md

build status procps

procps is a set of command line and full-screen utilities that provide information out of the pseudo-filesystem most commonly located at /proc. This filesystem provides a simple interface to the kernel data structures. The programs of procps generally concentrate on the structures that describe the processess running on the system.

The following programs are found in procps:

  • free - Report the amount of free and used memory in the system
  • kill - Send a signal to a process based on PID
  • pgrep - List processes based on name or other attributes
  • pkill - Send a signal to a process based on name or other attributes
  • pmap - Report memory map of a process
  • ps - Report information of processes
  • pwdx - Report current directory of a process
  • skill - Obsolete version of pgrep/pkill
  • slabtop - Display kernel slab cache information in real time
  • snice - Renice a process
  • sysctl - Read or Write kernel parameters at run-time
  • tload - Graphical representation of system load average
  • top - Dynamic real-time view of running processes
  • uptime - Display how long the system has been running
  • vmstat - Report virtual memory statistics
  • w - Report logged in users and what they are doing
  • watch - Execute a program periodically, showing output fullscreen

Reporting Bugs

There are a few ways of reporting bugs or feature requests:

  1. Your distribution's bug reporter. If you are using a distribution your first port of call is their bug tracker. This is because each distribution has their own patches and way of dealing with bugs. Also bug reporting often does not need any subscription to websites.
  2. GitLab Issues - To the left of this page is the issue tracker. You can report bugs here.
  3. Email list - We have an email list (see below) where you can report bugs. The problem with this method is bug reports often get lost and cannot be tracked. This is especially a big problem when its something that will take time to resolve.

If you need to report bugs, there is more details on the Bug Reporting page.

Email List

The email list for the developers and users of procps is found at http://www.freelists.org/archive/procps/ This email list discusses the development of procps and is used by distributions to also forward or discuss bugs.