RHEL 9.0.0 Alpha bootstrap
The content of this branch was automatically imported from Fedora ELN with the following as its source: https://src.fedoraproject.org/rpms/procps-ng#54e6aaca9f5621e4c6de1b015d5a480544b7672a
This commit is contained in:
parent
0fd219627e
commit
e0b30b9900
5
.gitignore
vendored
5
.gitignore
vendored
@ -0,0 +1,5 @@
|
||||
/procps-ng-3.3.12.tar.xz
|
||||
/procps-ng-3.3.13.tar.xz
|
||||
/procps-ng-3.3.14.tar.xz
|
||||
/procps-ng-3.3.15.tar.xz
|
||||
/procps-ng-3.3.16.tar.xz
|
52
README.md
Normal file
52
README.md
Normal file
@ -0,0 +1,52 @@
|
||||
[![build status](https://gitlab.com/ci/projects/2142/status.png?ref=master)](https://gitlab.com/ci/projects/2142?ref=master)
|
||||
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 distributions 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](https://gitlab.com/procps-ng/procps/blob/master/Documentation/bugs.md)
|
||||
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.
|
377
README.top
Normal file
377
README.top
Normal file
@ -0,0 +1,377 @@
|
||||
This file summarizes changes to the top program and supporting documentation
|
||||
introduced on March 31, 2011.
|
||||
|
||||
Contents:
|
||||
DOCUMENT Changes
|
||||
INTERNAL Improvements
|
||||
EXTERNAL Improvements
|
||||
BUGS Previously Fixed and Preserved
|
||||
BUGS Newly/Nearly Fixed
|
||||
BUGS/WISH-LISTS That Should Go Bye-bye
|
||||
BUGS FIXED You Didn't Know You Had
|
||||
OTHER Changes, Hopefully They Won't Bite You
|
||||
BENCHMARKS
|
||||
|
||||
|
||||
DOCUMENT Changes =========================================================
|
||||
. The entire file was cleaned up, standardized and expanded to include:
|
||||
- a new section "2. SUMMARY Display" added for symmetry with Fields
|
||||
- nine new fields were added to section "3a. DESCRIPTIONS of Fields"
|
||||
- a new section "3b. MANAGING Fields" replaced the obsolete section
|
||||
"2b. SELECTING and ORDERING Columns"
|
||||
- section "5c. SCROLLING a Window" was added for that new feature
|
||||
|
||||
. I don't know when the explanations for CODE and DATA were changed to
|
||||
show 'virtual' memory, but I think there's a reason their alternate
|
||||
names contain the word 'resident'. Thus they were changed back to
|
||||
say 'physical memory'.
|
||||
|
||||
. And as I indicated in a previous email, the former string identifier
|
||||
'ME' was restored as were the 'h' key/command conventions (vs. <h>).
|
||||
|
||||
Oops, the 'h' key/command conventions remain restored, but subsequent
|
||||
testing revealed problems with the .ME string identifier. Thus, it was
|
||||
changed to .WE (along with the companion .Me/.We id).
|
||||
|
||||
. Also previously mentioned, the 'man2html' program translates top.1 to
|
||||
HTML with near perfect fidelity. I take that to mean there should be
|
||||
no problems with the top.1 source on most other platforms.
|
||||
|
||||
To further improve translation to HTML, several .Bd and .Ed macros
|
||||
were added to preserve literal (fixed width) spacing.
|
||||
|
||||
|
||||
INTERNAL Improvements ====================================================
|
||||
. The old restriction of 26 fields has been lifted. With this new-top
|
||||
100+ fields are now possible. It currently supports up to 55, of
|
||||
which 35 are in use. Adding a new field is almost too easy.
|
||||
|
||||
. Task row construction has been considerably improved -- both from
|
||||
a programming perspective and a performance perspective.
|
||||
|
||||
. The column highlighting costs for sort field visibility were
|
||||
virtually eliminated.
|
||||
|
||||
An optional define (USE_X_COLHDR) can be enabled to completely
|
||||
eliminate any costs associated with the 'x' command toggle.
|
||||
|
||||
. The management of the HST_t structures, used for %cpu calculations,
|
||||
was optimized with a hashing scheme. Thus the need for a qsort then
|
||||
a binary search in each frame was completely eliminated.
|
||||
|
||||
An optional define can restore the former qsort/bsearch approach but
|
||||
with an internal inlined binary search function offering substantially
|
||||
better performance than the old top.
|
||||
|
||||
. This far more capable new-top executable is no larger than old top.
|
||||
|
||||
. The above combine to produce substantially improved performance
|
||||
whose details are documented below under BENCHMARKS.
|
||||
|
||||
|
||||
EXTERNAL Improvements ====================================================
|
||||
. Field management has been completely redesigned. It's now embodied
|
||||
on a single screen where display-ability, position and sort selection
|
||||
can be handled in one place -- for all windows at one time!
|
||||
|
||||
This function is dependent on cursor motion keys and should a device
|
||||
not have the customary arrow keys, alternatives are provided and
|
||||
documented under "Operation" near the beginning of the man page.
|
||||
|
||||
. The following new fields have been added:
|
||||
Group Id
|
||||
Minor Page Faults
|
||||
Number of Threads
|
||||
Process Group Id
|
||||
Real User Id
|
||||
Saved User Id
|
||||
Saved User Name
|
||||
Session Id
|
||||
Tty Process Group Id
|
||||
|
||||
. Scrolling keys now allow one to move the view of any window vertically
|
||||
or horizontally to reveal any desired task or column. Previously, only
|
||||
some tasks were viewable even with reversible, selectable sort columns.
|
||||
|
||||
Each of the four windows is capable of maintaining its own scrolled
|
||||
coordinates and an optional toggle ('C') displays a message aiding
|
||||
navigation within the available tasks and displayable fields.
|
||||
|
||||
. User interactive line oriented input now provides for true line
|
||||
editing supported by these new keys:
|
||||
Left/Right arrow keys, Delete key, Backspace and
|
||||
Home/End keys (likely limited to xterm, not terminal)
|
||||
|
||||
. User filtering via the -u | -U interactive commands is now window
|
||||
based which means that different windows could be used to filter
|
||||
different users.
|
||||
|
||||
. Signal handling has been normalized and is now consistent regardless
|
||||
of the particular top screen a user may have been using.
|
||||
|
||||
. The 'i' toggle now shows any task that has used *some* cpu since the
|
||||
last screen update. It's no longer limited to just running tasks.
|
||||
|
||||
. The summary area 'task states' line now reflects either 'Threads'
|
||||
or 'Tasks' depending on the -H toggle.
|
||||
|
||||
|
||||
BUGS Previously Fixed and Preserved ======================================
|
||||
( but not necessarily literally)
|
||||
. 228822, suspending top leaves xterm in slightly messed-up state
|
||||
. 256376, segfaults, if the xterm is to small
|
||||
. 320289, segv on sigwinch
|
||||
. 351065, wrong highlight 1st column (escape characters displayed)
|
||||
. 358724, accepts extra numeric args
|
||||
. 378695, seg fault if "/proc" is not mounted
|
||||
. 426782, UID field is too narrow
|
||||
. 458986, should check xterm for EOF/EIO
|
||||
. 459890, Irix mode should use %#4.1f when threads shown
|
||||
|
||||
|
||||
BUGS Newly/Nearly Fixed ==================================================
|
||||
. 225542, 'Unknown command' message blocks further commands
|
||||
The message is now displayed using usleep for 1.25 seconds, instead
|
||||
of the former full 2 seconds. And while it still blocks further
|
||||
commands, the delay is much more tolerable.
|
||||
|
||||
Can we consider this bug 'nearly' fixed?
|
||||
|
||||
. 410292, interface error when using backspace
|
||||
Full line editing was added but could be disabled via a #define.
|
||||
And via that define, even under basic termios support, the backspace
|
||||
problem was cured.
|
||||
|
||||
. 567509, top idle command ('i') not working for threaded programs
|
||||
Since the 'i' command now reflects tasks that have used *some* cpu,
|
||||
and is no longer dependent on an 'R' state, I *believe/hope* this
|
||||
bug has been swatted.
|
||||
|
||||
|
||||
BUGS/WISH-LISTS That Should Go Bye-bye ===================================
|
||||
. 340751, wish for hostname to benefit multiple top sessions
|
||||
Craig's suggestion regarding symlinks is the perfect solution.
|
||||
How dare Craig say that the solution was "not ideal" !
|
||||
|
||||
. 586497, wish for graceful degradation on small screen sizes
|
||||
This objective could be accomplished by setting up 2 symlinks for
|
||||
top, personalizing them for the 2 tiny phone displays, then writing
|
||||
the respective configuration files.
|
||||
|
||||
I shudder at the programming effort suggested by Paul. And when it
|
||||
was done you'd find everybody else would have different criteria.
|
||||
|
||||
|
||||
BUGS FIXED You Didn't Know You Had =======================================
|
||||
. Without amplifying the dirty details, the long standing occasionally
|
||||
reported display corruption, and an unreported source of performance
|
||||
degradation, has been eliminated. The cure is in the elimination of
|
||||
the Pseudo_cols variable and the improved PUFF macro.
|
||||
|
||||
. Line oriented input was not sensitive to screen width. Thus a user
|
||||
could hold down any key and ultimately line wrap, overwriting the
|
||||
columns header and the entire screen. New top prevents this.
|
||||
|
||||
. User filtering (-u|-U) via a user ID (not name) now validates that
|
||||
number. The old-top just made sure it was numeric, then blindly
|
||||
displayed no matching users (i.e. an empty window).
|
||||
|
||||
. The threads toggle ('H') is no longer window based but more properly
|
||||
applies to all windows. The previous implementation produced the
|
||||
following aberration if multiple windows were being shown:
|
||||
. -H would be acknowledged and applied to all visible windows
|
||||
. keying 'a' or 'w' would silently turn it off
|
||||
. then keying -H would turn it back on, but the user expected off
|
||||
|
||||
. If you hit ^Z on any help or fields screen to suspend old-top, after
|
||||
issuing 'fg' you would then be left with a seemingly hung application
|
||||
inviting ^C. In truth, one could recover with the space bar, but that
|
||||
was far from intuitive.
|
||||
|
||||
. The old-top consistently writes 1 extra byte for each task row or 1
|
||||
byte too few for columns headers, depending on your perspective.
|
||||
The new top writes the same number of bytes for each.
|
||||
|
||||
. By failing to clear to eol, old top left the display in a terrible
|
||||
state after exiting a 'fields' screen when only a few columns were
|
||||
being displayed.
|
||||
|
||||
. The old-top used a zero value for the L_NONE library flag which could
|
||||
cause repeated rebuilding of columns headers with each frame. In truth,
|
||||
this was not likely to happen in real life since only two fields actually
|
||||
used that flag. However, if it did happen, performance could be degraded
|
||||
by 800%.
|
||||
|
||||
|
||||
OTHER Changes, Hopefully They Won't Bite You =============================
|
||||
. The undocumented TOPRC environment variable is no longer supported.
|
||||
Any similar need can be met through a symlink alias.
|
||||
|
||||
. The use of environment variables to override terminal size is now
|
||||
off by default but could be enabled through '#define TTYGETENVYES'.
|
||||
|
||||
. The global 'bold enable' toggle is active by default and thus agrees
|
||||
with the documentation. It's been wrong ever since Al's wholesale
|
||||
'cosmetic' changes in procps-3.2.2.
|
||||
|
||||
. Task defaults now show bold (not reverse) and row highlighting.
|
||||
This agrees with what was always stated in the documentation.
|
||||
|
||||
. The 'H' toggle (thread mode) is not persistent. Persistence can be
|
||||
achieved with a simple shell script employing the -H switch.
|
||||
|
||||
. Then 'g' and 'G' commands were reversed to reflect their likely use.
|
||||
|
||||
|
||||
BENCHMARKS ===============================================================
|
||||
Tested as root with nice -10 and using only common fields
|
||||
( on a pretty old, slow laptop under Debian Lenny )
|
||||
but rcfiles specified identical sort fields and identical
|
||||
settings for the 'B', 'b', 'x' and 'y' toggles (even though
|
||||
the defaults are not necessarily identical).
|
||||
|
||||
In every case new-top outperforms old-top, but I've shown %
|
||||
improvements for only the most significant. Those cases mostly
|
||||
involve colors with both row & column highlighting. I suggested
|
||||
above that the highlighting cost was virtually eliminated in
|
||||
new-top, and these tests bare that out.
|
||||
|
||||
Note the much smaller differences for new-top between the 24x80
|
||||
window results and full screen (but don't mix apples_terminal
|
||||
with oranges_xterm). This is a reflection of the simplification
|
||||
of task row construction, also mentioned above.
|
||||
|
||||
It's always been the case that any top in an xterm outperforms
|
||||
that top under the terminal application, even when the xterm
|
||||
provides additional rows and columns. It's true below with
|
||||
Gnome and it was true nine years ago under KDE.
|
||||
|
||||
----------------------------------------------------------
|
||||
The following comparisons were run with:
|
||||
100 tasks & 160 threads
|
||||
-d0 -n5000
|
||||
new-top old-top
|
||||
xterm 24x80
|
||||
a 1 win, lflgs_none 11.2 secs 51.8 secs + 462.6%
|
||||
1 win, default 61.0 secs 66.8 secs
|
||||
1 win, colors w/ x+y 61.3 secs 83.0 secs + 135.4%
|
||||
1 win, thread mode 88.3 secs 94.2 secs
|
||||
b 1 win, every field on 99.7 secs 106.0 secs
|
||||
1 win, cmdline 71.2 secs 76.6 secs
|
||||
4 wins, defaults 101.3 secs 107.2 secs
|
||||
4 wins, colors w/ x+y 101.5 secs 122.8 secs + 121.0%
|
||||
|
||||
xterm, full screen (53x170)
|
||||
a 1 win, lflgs_none 15.9 secs 54.2 secs + 340.9%
|
||||
1 win, default 70.0 secs 73.2 secs
|
||||
1 win, colors w/ x+y 69.4 secs 131.3 secs + 189.2%
|
||||
1 win, thread mode 97.6 secs 102.6 secs
|
||||
c 1 win, every field on 122.1 secs 128.1 secs
|
||||
1 win, cmdline 80.8 secs 83.7 secs
|
||||
4 wins, defaults 111.4 secs 115.8 secs
|
||||
4 wins, colors w/ x+y 112.0 secs 172.9 secs + 154.4%
|
||||
|
||||
terminal 24x80
|
||||
a 1 win, lflgs_none 8.9 secs 58.6 secs + 658.4%
|
||||
1 win, default 70.1 secs 80.3 secs
|
||||
1 win, colors w/ x+y 70.6 secs 157.3 secs + 222.8%
|
||||
1 win, thread mode 104.7 secs 120.5 secs
|
||||
b 1 win, every field on 111.2 secs 134.5 secs
|
||||
1 win, cmdline 83.8 secs 94.5 secs
|
||||
4 wins, defaults 125.6 secs 146.7 secs
|
||||
4 wins, colors w/ x+y 125.6 secs 206.9 secs + 176.7%
|
||||
|
||||
terminal, full screen (39x125)
|
||||
a 1 win, lflgs_none 9.1 secs 60.6 secs + 665.9%
|
||||
1 win, default 74.3 secs 88.0 secs
|
||||
1 win, colors w/ x+y 73.9 secs 314.5 secs + 425.6%
|
||||
1 win, thread mode 113.0 secs 140.9 secs
|
||||
b 1 win, every field on 117.7 secs 154.9 secs
|
||||
1 win, cmdline 87.4 secs 107.2 secs
|
||||
4 wins, defaults 139.1 secs 166.7 secs
|
||||
4 wins, colors w/ x+y 157.3 secs 423.2 secs + 269.0%
|
||||
|
||||
----------------------------------------------------------
|
||||
The following comarisons were run with:
|
||||
300 tasks & 360 threads
|
||||
-d0 -n3000
|
||||
new-top old-top
|
||||
xterm, full screen (53x170)
|
||||
a 1 win, lflgs_none 14.3 secs 79.0 secs + 552.4%
|
||||
1 win, default 101.1 secs 104.5 secs
|
||||
1 win, colors w/ x+y 101.3 secs 140.0 secs + 138.2%
|
||||
1 win, thread mode 120.1 secs 123.1 secs
|
||||
c 1 win, every field on 179.8 secs 185.6 secs
|
||||
1 win, cmdline 124.9 secs 132.8 secs
|
||||
4 wins, defaults 174.8 secs 179.2 secs
|
||||
4 wins, colors w/ x+y 175.0 secs 215.2 secs + 123.0%
|
||||
|
||||
terminal, full screen (39x125)
|
||||
a 1 win, lflgs_none 12.3 secs 98.5 secs + 800.8%
|
||||
1 win, default 117.4 secs 134.0 secs
|
||||
1 win, colors w/ x+y 111.6 secs 296.1 secs + 265.3%
|
||||
1 win, thread mode 141.3 secs 155.3 secs
|
||||
b 1 win, every field on 197.7 secs 204.8 secs
|
||||
1 win, cmdline 143.9 secs 157.3 secs
|
||||
4 wins, defaults 204.0 secs 226.2 secs
|
||||
4 wins, colors w/ x+y 216.9 secs 434.5 secs + 200.3%
|
||||
|
||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
notes:
|
||||
a these results represent the library flags L_NONE zero value and
|
||||
thus the hidden cost of rebuilding column headers w/ every frame
|
||||
b while every common field was turned on, not all fields could be
|
||||
displayed due to limited screen width
|
||||
c only in a full screen xterm window could all common fields
|
||||
actually be displayed
|
||||
|
||||
|
||||
BENCHMARKS, Redux (for NLS) ==============================================
|
||||
December, 2011 benchmarks produced on a much more modern
|
||||
platform containing:
|
||||
Intel(R) Core(TM) i3-2310M CPU @ 2.10GHz
|
||||
SMP with 4 cpus
|
||||
reflected in the substantially reduced elapsed times.
|
||||
|
||||
Tested as root with nice -10 and using only common fields
|
||||
but rcfiles specified identical sort fields and identical
|
||||
settings for the 'B', 'b', 'x' and 'y' toggles (even though
|
||||
the defaults are not necessarily identical).
|
||||
|
||||
Each test was run outside of X-windows at a linux console
|
||||
offering 48 rows and 170 columns. This was done to reduce
|
||||
contention which sometimes made comparisons problematic.
|
||||
|
||||
old-top = procps-3.2.8 (debian patched and memory leaking)
|
||||
new-top = procps-ng-3.3.2 with NLS support
|
||||
|
||||
----------------------------------------------------------
|
||||
The following comparisons were run with
|
||||
-d0 -n5000
|
||||
140 tasks & 275 threads
|
||||
|
||||
linux console (48x170) new-top old-top
|
||||
d 1 win, lflgs_none 2.6 secs 15.0 secs + 577.0%
|
||||
1 win, default 16.1 secs 19.3 secs
|
||||
1 win, colors w/ x+y 16.6 secs 35.0 secs + 210.8%
|
||||
e 1 win, show cpus 16.2 secs 20.1 secs + 124.1%
|
||||
1 win, thread mode 31.8 secs 34.1 secs
|
||||
f 1 win, every field on 30.5 secs 34.0 secs
|
||||
1 win, cmdline 19.9 secs 23.1 secs
|
||||
4 wins, default 31.9 secs 35.2 secs
|
||||
4 wins, colors w/ x+y 29.2 secs 47.4 secs + 162.3%
|
||||
g 1 win, b&w w/ bold x 30.0 secs 33.2 secs
|
||||
h 1 win, scroll msg on 31.1 secs 33.9 secs
|
||||
|
||||
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
|
||||
|
||||
notes:
|
||||
d these represent the same anamoly as the original 'a' footnote
|
||||
e these represent the '1' toggle, where each of 4 cpus was shown
|
||||
(not possible on the original uniprocessor)
|
||||
f every common field was turned on and all fields were visible
|
||||
g on a black and white display, sort column was shown in bold
|
||||
(further proof of column highlighting improvements)
|
||||
h similar to 'g', but new top was showing scroll msg
|
||||
(old top has no such provision)
|
41
pidof-show-worker-threads.patch
Normal file
41
pidof-show-worker-threads.patch
Normal file
@ -0,0 +1,41 @@
|
||||
diff --git a/pidof.c b/pidof.c
|
||||
index b0d08cc..90ecb13 100644
|
||||
--- a/pidof.c
|
||||
+++ b/pidof.c
|
||||
@@ -142,6 +142,7 @@ static void select_procs (void)
|
||||
static int size = 0;
|
||||
char *cmd_arg0, *cmd_arg0base;
|
||||
char *cmd_arg1, *cmd_arg1base;
|
||||
+ char *stat_cmd;
|
||||
char *program_base;
|
||||
char *root_link;
|
||||
char *exe_link;
|
||||
@@ -167,9 +168,10 @@ static void select_procs (void)
|
||||
}
|
||||
}
|
||||
|
||||
- if (!is_omitted(task.XXXID) && task.cmdline && *task.cmdline) {
|
||||
+ if (!is_omitted(task.XXXID)) {
|
||||
|
||||
- cmd_arg0 = *task.cmdline;
|
||||
+ cmd_arg0 = (task.cmdline && *task.cmdline) ? *task.cmdline : "\0";
|
||||
+ stat_cmd = task.cmd ? task.cmd : "\0";
|
||||
|
||||
/* processes starting with '-' are login shells */
|
||||
if (*cmd_arg0 == '-') {
|
||||
@@ -191,12 +193,14 @@ static void select_procs (void)
|
||||
!strcmp(program_base, cmd_arg0) ||
|
||||
!strcmp(program, cmd_arg0) ||
|
||||
|
||||
+ !strcmp(program, stat_cmd) ||
|
||||
+
|
||||
!strcmp(program, exe_link_base) ||
|
||||
!strcmp(program, exe_link))
|
||||
{
|
||||
match = 1;
|
||||
|
||||
- } else if (opt_scripts_too && *(task.cmdline+1)) {
|
||||
+ } else if (opt_scripts_too && task.cmdline && *(task.cmdline+1)) {
|
||||
|
||||
cmd_arg1 = *(task.cmdline+1);
|
||||
|
61
procps-ng-3.3.12-ps-luid-format-option.patch
Normal file
61
procps-ng-3.3.12-ps-luid-format-option.patch
Normal file
@ -0,0 +1,61 @@
|
||||
diff -up ./ps/output.c.ori ./ps/output.c
|
||||
--- ./ps/output.c.ori 2016-07-09 23:49:25.825306872 +0200
|
||||
+++ ./ps/output.c 2018-02-26 15:09:38.291043349 +0100
|
||||
@@ -1201,6 +1201,34 @@ static int pr_sgi_p(char *restrict const
|
||||
return snprintf(outbuf, COLWID, "*");
|
||||
}
|
||||
|
||||
+/* LoginID implementation */
|
||||
+static int pr_luid(char *restrict const outbuf, const proc_t *restrict const pp){
|
||||
+ char filename[48];
|
||||
+ ssize_t num_read;
|
||||
+ int fd;
|
||||
+ u_int32_t luid;
|
||||
+
|
||||
+ snprintf(filename, sizeof filename, "/proc/%d/loginuid", pp->tgid);
|
||||
+
|
||||
+ if ((fd = open(filename, O_RDONLY, 0)) != -1) {
|
||||
+ num_read = read(fd, outbuf, OUTBUF_SIZE - 1);
|
||||
+ close(fd);
|
||||
+ if (num_read > 0) {
|
||||
+ outbuf[num_read] = '\0';
|
||||
+
|
||||
+ // processes born before audit have no LoginID set
|
||||
+ luid = (u_int32_t) atoi(outbuf);
|
||||
+ if (luid != -1)
|
||||
+ return num_read;
|
||||
+ }
|
||||
+ }
|
||||
+ outbuf[0] = '-';
|
||||
+ outbuf[1] = '\0';
|
||||
+ num_read = 1;
|
||||
+ return num_read;
|
||||
+}
|
||||
+
|
||||
+
|
||||
/************************* Systemd stuff ********************************/
|
||||
static int pr_sd_unit(char *restrict const outbuf, const proc_t *restrict const pp){
|
||||
return snprintf(outbuf, COLWID, "%s", pp->sd_unit);
|
||||
@@ -1513,7 +1541,7 @@ static const format_struct format_array[
|
||||
{"longtname", "TTY", pr_tty8, sr_tty, 8, 0, DEC, PO|LEFT},
|
||||
{"lsession", "SESSION", pr_sd_session, sr_nop, 11, SD, LNX, ET|LEFT},
|
||||
{"lstart", "STARTED", pr_lstart, sr_nop, 24, 0, XXX, ET|RIGHT},
|
||||
-{"luid", "LUID", pr_nop, sr_nop, 5, 0, LNX, ET|RIGHT}, /* login ID */
|
||||
+{"luid", "LUID", pr_luid, sr_nop, 5, 0, LNX, ET|RIGHT}, /* login ID */
|
||||
{"luser", "LUSER", pr_nop, sr_nop, 8, USR, LNX, ET|USER}, /* login USER */
|
||||
{"lwp", "LWP", pr_tasks, sr_tasks, 5, 0, SUN, TO|PIDMAX|RIGHT},
|
||||
{"lxc", "LXC", pr_lxcname, sr_lxcname, 8, LXC, LNX, ET|LEFT},
|
||||
diff -up ./ps/ps.1.ori ./ps/ps.1
|
||||
--- ./ps/ps.1.ori 2016-05-07 13:15:32.014390172 +0200
|
||||
+++ ./ps/ps.1 2018-02-26 15:09:38.292043345 +0100
|
||||
@@ -1322,6 +1322,10 @@ displays the login session identifier of
|
||||
if systemd support has been included.
|
||||
T}
|
||||
|
||||
+luid LUID T{
|
||||
+displays Login ID associated with a process.
|
||||
+T}
|
||||
+
|
||||
lwp LWP T{
|
||||
light weight process (thread) ID of the dispatchable entity (alias
|
||||
.BR spid , \ tid ).
|
11
procps-ng-3.3.13-build-fails-due-libio.patch
Normal file
11
procps-ng-3.3.13-build-fails-due-libio.patch
Normal file
@ -0,0 +1,11 @@
|
||||
diff -up ./procio.c.ori ./procio.c
|
||||
--- ./procio.c.ori 2018-04-05 13:16:16.926741440 +0200
|
||||
+++ ./procio.c 2018-04-05 13:16:31.076685287 +0200
|
||||
@@ -24,7 +24,6 @@
|
||||
#endif
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
-#include <libio.h>
|
||||
#include <limits.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
337
procps-ng-3.3.14-CVE-2018-1124.patch
Normal file
337
procps-ng-3.3.14-CVE-2018-1124.patch
Normal file
@ -0,0 +1,337 @@
|
||||
From 9d2ec74b76d220f5343e548fcb7058d723293a22 Mon Sep 17 00:00:00 2001
|
||||
From: Qualys Security Advisory <qsa@qualys.com>
|
||||
Date: Thu, 1 Jan 1970 00:00:00 +0000
|
||||
Subject: [PATCH 1/3] proc/alloc.*: Use size_t, not unsigned int.
|
||||
|
||||
Otherwise this can truncate sizes on 64-bit platforms, and is one of the
|
||||
reasons the integer overflows in file2strvec() are exploitable at all.
|
||||
Also: catch potential integer overflow in xstrdup() (should never
|
||||
happen, but better safe than sorry), and use memcpy() instead of
|
||||
strcpy() (faster).
|
||||
|
||||
Warnings:
|
||||
|
||||
- in glibc, realloc(ptr, 0) is equivalent to free(ptr), but not here,
|
||||
because of the ++size;
|
||||
|
||||
- here, xstrdup() can return NULL (if str is NULL), which goes against
|
||||
the idea of the xalloc wrappers.
|
||||
|
||||
We were tempted to call exit() or xerrx() in those cases, but decided
|
||||
against it, because it might break things in unexpected places; TODO?
|
||||
---
|
||||
proc/alloc.c | 20 ++++++++++++--------
|
||||
proc/alloc.h | 4 ++--
|
||||
2 files changed, 14 insertions(+), 10 deletions(-)
|
||||
|
||||
diff --git a/proc/alloc.c b/proc/alloc.c
|
||||
index 94af47f..1768d73 100644
|
||||
--- a/proc/alloc.c
|
||||
+++ b/proc/alloc.c
|
||||
@@ -37,14 +37,14 @@ static void xdefault_error(const char *restrict fmts, ...) {
|
||||
message_fn xalloc_err_handler = xdefault_error;
|
||||
|
||||
|
||||
-void *xcalloc(unsigned int size) {
|
||||
+void *xcalloc(size_t size) {
|
||||
void * p;
|
||||
|
||||
if (size == 0)
|
||||
++size;
|
||||
p = calloc(1, size);
|
||||
if (!p) {
|
||||
- xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size);
|
||||
+ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return p;
|
||||
@@ -57,20 +57,20 @@ void *xmalloc(size_t size) {
|
||||
++size;
|
||||
p = malloc(size);
|
||||
if (!p) {
|
||||
- xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size);
|
||||
+ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return(p);
|
||||
}
|
||||
|
||||
-void *xrealloc(void *oldp, unsigned int size) {
|
||||
+void *xrealloc(void *oldp, size_t size) {
|
||||
void *p;
|
||||
|
||||
if (size == 0)
|
||||
++size;
|
||||
p = realloc(oldp, size);
|
||||
if (!p) {
|
||||
- xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size);
|
||||
+ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
return(p);
|
||||
@@ -80,13 +80,17 @@ char *xstrdup(const char *str) {
|
||||
char *p = NULL;
|
||||
|
||||
if (str) {
|
||||
- unsigned int size = strlen(str) + 1;
|
||||
+ size_t size = strlen(str) + 1;
|
||||
+ if (size < 1) {
|
||||
+ xalloc_err_handler("%s refused to allocate %zu bytes of memory", __func__, size);
|
||||
+ exit(EXIT_FAILURE);
|
||||
+ }
|
||||
p = malloc(size);
|
||||
if (!p) {
|
||||
- xalloc_err_handler("%s failed to allocate %u bytes of memory", __func__, size);
|
||||
+ xalloc_err_handler("%s failed to allocate %zu bytes of memory", __func__, size);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
- strcpy(p, str);
|
||||
+ memcpy(p, str, size);
|
||||
}
|
||||
return(p);
|
||||
}
|
||||
diff --git a/proc/alloc.h b/proc/alloc.h
|
||||
index 19c91d7..6787a72 100644
|
||||
--- a/proc/alloc.h
|
||||
+++ b/proc/alloc.h
|
||||
@@ -10,9 +10,9 @@ typedef void (*message_fn)(const char *__restrict, ...) __attribute__((format(pr
|
||||
/* change xalloc_err_handler to override the default fprintf(stderr... */
|
||||
extern message_fn xalloc_err_handler;
|
||||
|
||||
-extern void *xcalloc(unsigned int size) MALLOC;
|
||||
+extern void *xcalloc(size_t size) MALLOC;
|
||||
extern void *xmalloc(size_t size) MALLOC;
|
||||
-extern void *xrealloc(void *oldp, unsigned int size) MALLOC;
|
||||
+extern void *xrealloc(void *oldp, size_t size) MALLOC;
|
||||
extern char *xstrdup(const char *str) MALLOC;
|
||||
|
||||
EXTERN_C_END
|
||||
--
|
||||
2.14.3
|
||||
|
||||
|
||||
From de660b14b80188d9b323c4999d1b91a9456ed687 Mon Sep 17 00:00:00 2001
|
||||
From: Qualys Security Advisory <qsa@qualys.com>
|
||||
Date: Thu, 1 Jan 1970 00:00:00 +0000
|
||||
Subject: [PATCH 2/3] proc/readproc.c: Harden file2str().
|
||||
|
||||
1/ Replace sprintf() with snprintf() (and check for truncation).
|
||||
|
||||
2/ Prevent an integer overflow of ub->siz. The "tot_read--" is needed to
|
||||
avoid an off-by-one overflow in "ub->buf[tot_read] = '\0'". It is safe
|
||||
to decrement tot_read here, because we know that tot_read is equal to
|
||||
ub->siz (and ub->siz is very large).
|
||||
|
||||
We believe that truncation is a better option than failure (implementing
|
||||
failure instead should be as easy as replacing the "tot_read--" with
|
||||
"tot_read = 0").
|
||||
---
|
||||
proc/readproc.c | 10 ++++++++--
|
||||
1 file changed, 8 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/proc/readproc.c b/proc/readproc.c
|
||||
index 9e3afc9..39235c7 100644
|
||||
--- a/proc/readproc.c
|
||||
+++ b/proc/readproc.c
|
||||
@@ -35,6 +35,7 @@
|
||||
#include <signal.h>
|
||||
#include <fcntl.h>
|
||||
#include <dirent.h>
|
||||
+#include <limits.h>
|
||||
#include <sys/types.h>
|
||||
#include <sys/stat.h>
|
||||
#ifdef WITH_SYSTEMD
|
||||
@@ -635,7 +636,7 @@ static void statm2proc(const char* s, proc_t *restrict P) {
|
||||
static int file2str(const char *directory, const char *what, struct utlbuf_s *ub) {
|
||||
#define buffGRW 1024
|
||||
char path[PROCPATHLEN];
|
||||
- int fd, num, tot_read = 0;
|
||||
+ int fd, num, tot_read = 0, len;
|
||||
|
||||
/* on first use we preallocate a buffer of minimum size to emulate
|
||||
former 'local static' behavior -- even if this read fails, that
|
||||
@@ -643,11 +644,16 @@ static int file2str(const char *directory, const char *what, struct utlbuf_s *ub
|
||||
( besides, with this xcalloc we will never need to use memcpy ) */
|
||||
if (ub->buf) ub->buf[0] = '\0';
|
||||
else ub->buf = xcalloc((ub->siz = buffGRW));
|
||||
- sprintf(path, "%s/%s", directory, what);
|
||||
+ len = snprintf(path, sizeof path, "%s/%s", directory, what);
|
||||
+ if (len <= 0 || (size_t)len >= sizeof path) return -1;
|
||||
if (-1 == (fd = open(path, O_RDONLY, 0))) return -1;
|
||||
while (0 < (num = read(fd, ub->buf + tot_read, ub->siz - tot_read))) {
|
||||
tot_read += num;
|
||||
if (tot_read < ub->siz) break;
|
||||
+ if (ub->siz >= INT_MAX - buffGRW) {
|
||||
+ tot_read--;
|
||||
+ break;
|
||||
+ }
|
||||
ub->buf = xrealloc(ub->buf, (ub->siz += buffGRW));
|
||||
};
|
||||
ub->buf[tot_read] = '\0';
|
||||
--
|
||||
2.14.3
|
||||
|
||||
|
||||
From 44a4b658f45bc3fbd7170662a52038a7b35c83de Mon Sep 17 00:00:00 2001
|
||||
From: Qualys Security Advisory <qsa@qualys.com>
|
||||
Date: Thu, 1 Jan 1970 00:00:00 +0000
|
||||
Subject: [PATCH 3/3] proc/readproc.c: Fix bugs and overflows in file2strvec().
|
||||
|
||||
Note: this is by far the most important and complex patch of the whole
|
||||
series, please review it carefully; thank you very much!
|
||||
|
||||
For this patch, we decided to keep the original function's design and
|
||||
skeleton, to avoid regressions and behavior changes, while fixing the
|
||||
various bugs and overflows. And like the "Harden file2str()" patch, this
|
||||
patch does not fail when about to overflow, but truncates instead: there
|
||||
is information available about this process, so return it to the caller;
|
||||
also, we used INT_MAX as a limit, but a lower limit could be used.
|
||||
|
||||
The easy changes:
|
||||
|
||||
- Replace sprintf() with snprintf() (and check for truncation).
|
||||
|
||||
- Replace "if (n == 0 && rbuf == 0)" with "if (n <= 0 && tot <= 0)" and
|
||||
do break instead of return: it simplifies the code (only one place to
|
||||
handle errors), and also guarantees that in the while loop either n or
|
||||
tot is > 0 (or both), even if n is reset to 0 when about to overflow.
|
||||
|
||||
- Remove the "if (n < 0)" block in the while loop: it is (and was) dead
|
||||
code, since we enter the while loop only if n >= 0.
|
||||
|
||||
- Rewrite the missing-null-terminator detection: in the original
|
||||
function, if the size of the file is a multiple of 2047, a null-
|
||||
terminator is appended even if the file is already null-terminated.
|
||||
|
||||
- Replace "if (n <= 0 && !end_of_file)" with "if (n < 0 || tot <= 0)":
|
||||
originally, it was equivalent to "if (n < 0)", but we added "tot <= 0"
|
||||
to handle the first break of the while loop, and to guarantee that in
|
||||
the rest of the function tot is > 0.
|
||||
|
||||
- Double-force ("belt and suspenders") the null-termination of rbuf:
|
||||
this is (and was) essential to the correctness of the function.
|
||||
|
||||
- Replace the final "while" loop with a "for" loop that behaves just
|
||||
like the preceding "for" loop: in the original function, this would
|
||||
lead to unexpected results (for example, if rbuf is |\0|A|\0|, this
|
||||
would return the array {"",NULL} but should return {"","A",NULL}; and
|
||||
if rbuf is |A|\0|B| (should never happen because rbuf should be null-
|
||||
terminated), this would make room for two pointers in ret, but would
|
||||
write three pointers to ret).
|
||||
|
||||
The hard changes:
|
||||
|
||||
- Prevent the integer overflow of tot in the while loop, but unlike
|
||||
file2str(), file2strvec() cannot let tot grow until it almost reaches
|
||||
INT_MAX, because it needs more space for the pointers: this is why we
|
||||
introduced ARG_LEN, which also guarantees that we can add "align" and
|
||||
a few sizeof(char*)s to tot without overflowing.
|
||||
|
||||
- Prevent the integer overflow of "tot + c + align": when INT_MAX is
|
||||
(almost) reached, we write the maximal safe amount of pointers to ret
|
||||
(ARG_LEN guarantees that there is always space for *ret = rbuf and the
|
||||
NULL terminator).
|
||||
---
|
||||
proc/readproc.c | 53 ++++++++++++++++++++++++++++++++---------------------
|
||||
1 file changed, 32 insertions(+), 21 deletions(-)
|
||||
|
||||
diff --git a/proc/readproc.c b/proc/readproc.c
|
||||
index 39235c7..94ca4e9 100644
|
||||
--- a/proc/readproc.c
|
||||
+++ b/proc/readproc.c
|
||||
@@ -665,11 +665,12 @@ static int file2str(const char *directory, const char *what, struct utlbuf_s *ub
|
||||
|
||||
static char** file2strvec(const char* directory, const char* what) {
|
||||
char buf[2048]; /* read buf bytes at a time */
|
||||
- char *p, *rbuf = 0, *endbuf, **q, **ret;
|
||||
+ char *p, *rbuf = 0, *endbuf, **q, **ret, *strp;
|
||||
int fd, tot = 0, n, c, end_of_file = 0;
|
||||
int align;
|
||||
|
||||
- sprintf(buf, "%s/%s", directory, what);
|
||||
+ const int len = snprintf(buf, sizeof buf, "%s/%s", directory, what);
|
||||
+ if(len <= 0 || (size_t)len >= sizeof buf) return NULL;
|
||||
fd = open(buf, O_RDONLY, 0);
|
||||
if(fd==-1) return NULL;
|
||||
|
||||
@@ -677,18 +678,23 @@ static char** file2strvec(const char* directory, const char* what) {
|
||||
while ((n = read(fd, buf, sizeof buf - 1)) >= 0) {
|
||||
if (n < (int)(sizeof buf - 1))
|
||||
end_of_file = 1;
|
||||
- if (n == 0 && rbuf == 0) {
|
||||
- close(fd);
|
||||
- return NULL; /* process died between our open and read */
|
||||
+ if (n <= 0 && tot <= 0) { /* nothing read now, nothing read before */
|
||||
+ break; /* process died between our open and read */
|
||||
}
|
||||
- if (n < 0) {
|
||||
- if (rbuf)
|
||||
- free(rbuf);
|
||||
- close(fd);
|
||||
- return NULL; /* read error */
|
||||
+ /* ARG_LEN is our guesstimated median length of a command-line argument
|
||||
+ or environment variable (the minimum is 1, the maximum is 131072) */
|
||||
+ #define ARG_LEN 64
|
||||
+ if (tot >= INT_MAX / (ARG_LEN + (int)sizeof(char*)) * ARG_LEN - n) {
|
||||
+ end_of_file = 1; /* integer overflow: null-terminate and break */
|
||||
+ n = 0; /* but tot > 0 */
|
||||
}
|
||||
- if (end_of_file && (n == 0 || buf[n-1]))/* last read char not null */
|
||||
+ #undef ARG_LEN
|
||||
+ if (end_of_file &&
|
||||
+ ((n > 0 && buf[n-1] != '\0') || /* last read char not null */
|
||||
+ (n <= 0 && rbuf[tot-1] != '\0'))) /* last read char not null */
|
||||
buf[n++] = '\0'; /* so append null-terminator */
|
||||
+
|
||||
+ if (n <= 0) break; /* unneeded (end_of_file = 1) but avoid realloc */
|
||||
rbuf = xrealloc(rbuf, tot + n); /* allocate more memory */
|
||||
memcpy(rbuf + tot, buf, n); /* copy buffer into it */
|
||||
tot += n; /* increment total byte ctr */
|
||||
@@ -696,29 +702,34 @@ static char** file2strvec(const char* directory, const char* what) {
|
||||
break;
|
||||
}
|
||||
close(fd);
|
||||
- if (n <= 0 && !end_of_file) {
|
||||
+ if (n < 0 || tot <= 0) { /* error, or nothing read */
|
||||
if (rbuf) free(rbuf);
|
||||
return NULL; /* read error */
|
||||
}
|
||||
+ rbuf[tot-1] = '\0'; /* belt and suspenders (the while loop did it, too) */
|
||||
endbuf = rbuf + tot; /* count space for pointers */
|
||||
align = (sizeof(char*)-1) - ((tot + sizeof(char*)-1) & (sizeof(char*)-1));
|
||||
- for (c = 0, p = rbuf; p < endbuf; p++) {
|
||||
- if (!*p || *p == '\n')
|
||||
+ c = sizeof(char*); /* one extra for NULL term */
|
||||
+ for (p = rbuf; p < endbuf; p++) {
|
||||
+ if (!*p || *p == '\n') {
|
||||
+ if (c >= INT_MAX - (tot + (int)sizeof(char*) + align)) break;
|
||||
c += sizeof(char*);
|
||||
+ }
|
||||
if (*p == '\n')
|
||||
*p = 0;
|
||||
}
|
||||
- c += sizeof(char*); /* one extra for NULL term */
|
||||
|
||||
rbuf = xrealloc(rbuf, tot + c + align); /* make room for ptrs AT END */
|
||||
endbuf = rbuf + tot; /* addr just past data buf */
|
||||
q = ret = (char**) (endbuf+align); /* ==> free(*ret) to dealloc */
|
||||
- *q++ = p = rbuf; /* point ptrs to the strings */
|
||||
- endbuf--; /* do not traverse final NUL */
|
||||
- while (++p < endbuf)
|
||||
- if (!*p) /* NUL char implies that */
|
||||
- *q++ = p+1; /* next string -> next char */
|
||||
-
|
||||
+ for (strp = p = rbuf; p < endbuf; p++) {
|
||||
+ if (!*p) { /* NUL char implies that */
|
||||
+ if (c < 2 * (int)sizeof(char*)) break;
|
||||
+ c -= sizeof(char*);
|
||||
+ *q++ = strp; /* point ptrs to the strings */
|
||||
+ strp = p+1; /* next string -> next char */
|
||||
+ }
|
||||
+ }
|
||||
*q = 0; /* null ptr list terminator */
|
||||
return ret;
|
||||
}
|
||||
--
|
||||
2.14.3
|
||||
|
425
procps-ng.spec
Normal file
425
procps-ng.spec
Normal file
@ -0,0 +1,425 @@
|
||||
# The testsuite is unsuitable for running on buildsystems
|
||||
%global tests_enabled 0
|
||||
|
||||
Summary: System and process monitoring utilities
|
||||
Name: procps-ng
|
||||
Version: 3.3.16
|
||||
Release: 1%{?dist}
|
||||
License: GPL+ and GPLv2 and GPLv2+ and GPLv3+ and LGPLv2+
|
||||
URL: https://sourceforge.net/projects/procps-ng/
|
||||
|
||||
Source0: http://downloads.sourceforge.net/%{name}/%{name}-%{version}.tar.xz
|
||||
# README files are missing in latest tarball
|
||||
# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/README.md
|
||||
Source1: README.md
|
||||
# wget https://gitlab.com/procps-ng/procps/raw/e0784ddaed30d095bb1d9a8ad6b5a23d10a212c4/top/README.top
|
||||
Source2: README.top
|
||||
|
||||
Patch1: pidof-show-worker-threads.patch
|
||||
|
||||
BuildRequires: ncurses-devel
|
||||
BuildRequires: libtool
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: automake
|
||||
BuildRequires: gcc
|
||||
BuildRequires: gettext-devel
|
||||
BuildRequires: systemd-devel
|
||||
BuildRequires: git
|
||||
|
||||
%if %{tests_enabled}
|
||||
BuildRequires: dejagnu
|
||||
%endif
|
||||
|
||||
Provides: procps = %{version}-%{release}
|
||||
Obsoletes: procps < 3.2.9-1
|
||||
|
||||
# usrmove hack - will be removed once initscripts are fixed
|
||||
Provides: /sbin/sysctl
|
||||
Provides: /bin/ps
|
||||
|
||||
|
||||
%description
|
||||
The procps package contains a set of system utilities that provide
|
||||
system information. Procps includes ps, free, skill, pkill, pgrep,
|
||||
snice, tload, top, uptime, vmstat, pidof, pmap, slabtop, w, watch
|
||||
and pwdx.
|
||||
The ps command displays a snapshot of running processes. The top command
|
||||
provides a repetitive update of the statuses of running processes.
|
||||
The free command displays the amounts of free and used memory on your
|
||||
system. The skill command sends a terminate command (or another
|
||||
specified signal) to a specified set of processes. The snice
|
||||
command is used to change the scheduling priority of specified
|
||||
processes. The tload command prints a graph of the current system
|
||||
load average to a specified tty. The uptime command displays the
|
||||
current time, how long the system has been running, how many users
|
||||
are logged on, and system load averages for the past one, five,
|
||||
and fifteen minutes. The w command displays a list of the users
|
||||
who are currently logged on and what they are running. The watch
|
||||
program watches a running program. The vmstat command displays
|
||||
virtual memory statistics about processes, memory, paging, block
|
||||
I/O, traps, and CPU activity. The pwdx command reports the current
|
||||
working directory of a process or processes.
|
||||
|
||||
%package devel
|
||||
Summary: System and process monitoring utilities
|
||||
Requires: %{name}%{?_isa} = %{version}-%{release}
|
||||
Provides: procps-devel = %{version}-%{release}
|
||||
Obsoletes: procps-devel < 3.2.9-1
|
||||
|
||||
%description devel
|
||||
System and process monitoring utilities development headers
|
||||
|
||||
%package i18n
|
||||
Summary: Internationalization pack for procps-ng
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
|
||||
# fortunately the same release number for f21 and f22
|
||||
Conflicts: man-pages-de < 1.7-3
|
||||
Conflicts: man-pages-fr < 3.66-3
|
||||
Conflicts: man-pages-pl < 0.7-5
|
||||
|
||||
%description i18n
|
||||
Internationalization pack for procps-ng
|
||||
|
||||
%prep
|
||||
%autosetup -S git
|
||||
cp -p %{SOURCE1} .
|
||||
cp -p %{SOURCE2} top/
|
||||
|
||||
%build
|
||||
# The following stuff is needed for git archives only
|
||||
#echo "%{version}" > .tarball-version
|
||||
#./autogen.sh
|
||||
|
||||
autoreconf --verbose --force --install
|
||||
|
||||
%configure \
|
||||
--exec-prefix=/ \
|
||||
--docdir=/unwanted \
|
||||
--disable-static \
|
||||
--disable-w-from \
|
||||
--disable-kill \
|
||||
--enable-watch8bit \
|
||||
--enable-skill \
|
||||
--enable-sigwinch \
|
||||
--enable-libselinux \
|
||||
--with-systemd \
|
||||
--disable-modern-top
|
||||
|
||||
make CFLAGS="%{optflags}"
|
||||
|
||||
|
||||
%if %{tests_enabled}
|
||||
%check
|
||||
make check
|
||||
%endif
|
||||
|
||||
|
||||
%install
|
||||
%make_install
|
||||
|
||||
# translated man pages
|
||||
find man-po/ -type d -maxdepth 1 -mindepth 1 | while read dirname; do cp -a $dirname %{buildroot}%{_mandir}/ ; done
|
||||
rm -f %{buildroot}%{_mandir}/translate/{de,fr,pl,pt_BR,sv,uk}/kill.1
|
||||
|
||||
%find_lang %{name} --all-name --with-man
|
||||
|
||||
ln -s %{_bindir}/pidof %{buildroot}%{_sbindir}/pidof
|
||||
|
||||
%ldconfig_scriptlets
|
||||
|
||||
%files
|
||||
%doc AUTHORS Documentation/bugs.md Documentation/FAQ NEWS README.md top/README.top Documentation/TODO
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING COPYING.LIB
|
||||
%{_libdir}/libprocps.so.*
|
||||
%{_bindir}/*
|
||||
%{_sbindir}/*
|
||||
%{_mandir}/man1/*
|
||||
%{_mandir}/man8/*
|
||||
%{_mandir}/man5/*
|
||||
|
||||
|
||||
%exclude %{_libdir}/libprocps.la
|
||||
%exclude /unwanted/*
|
||||
|
||||
%files devel
|
||||
%{!?_licensedir:%global license %%doc}
|
||||
%license COPYING COPYING.LIB
|
||||
%{_libdir}/libprocps.so
|
||||
%{_libdir}/pkgconfig/libprocps.pc
|
||||
%{_includedir}/proc
|
||||
%{_mandir}/man3/*
|
||||
|
||||
%files i18n -f %{name}.lang
|
||||
%exclude %{_mandir}/translated/*
|
||||
|
||||
%changelog
|
||||
* Tue Aug 18 2020 Jan Rybar <jrybar@redhat.com> - 3.3.16-1
|
||||
- Rebase to newest upstream version
|
||||
|
||||
* Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Fri Jul 24 2020 Jan Rybar <jrybar@redhat.com> - 3.3.15-8
|
||||
- pidof: show PIDs for kernel worker threads
|
||||
|
||||
* Tue Jul 14 2020 Tom Stellard <tstellar@redhat.com> - 3.3.15-8
|
||||
- Use make macros
|
||||
- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro
|
||||
|
||||
* Thu Jan 30 2020 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Fri Jul 26 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-6
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Sat Feb 02 2019 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-5
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.15-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Mon Jul 02 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-3
|
||||
- Translated manual pages moved to i18n subpackage
|
||||
- Spec file cleanup
|
||||
|
||||
* Thu Jun 14 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-2
|
||||
- General rebuild after commit revert
|
||||
|
||||
* Wed Jun 06 2018 Jan Rybar <jrybar@redhat.com> - 3.3.15-1
|
||||
- Rebase to 3.3.15 (contains a LOT of CVE fixes)
|
||||
- Manpage translations temporarily unavailable
|
||||
|
||||
* Fri May 18 2018 Kamil Dudka <kdudka@redhat.com> - 3.3.14-2
|
||||
- fix integer overflows leading to heap overflow (CVE-2018-1124 CVE-2018-1126)
|
||||
|
||||
* Mon Apr 16 2018 Jan Rybar <jrybar@redhat.com> - 3.3.14-1
|
||||
- Rebase to 3.3.14
|
||||
- Translated man-pages returned
|
||||
|
||||
* Thu Apr 05 2018 Jan Rybar <jrybar@redhat.com> - 3.3.13-2
|
||||
- Build fails due to removal of libio.h from glibc-headers
|
||||
- Translated manpages deactivated since missing from 3.3.13 tarball
|
||||
|
||||
* Tue Apr 03 2018 Jan Rybar <jrybar@redhat.com> - 3.3.13-1
|
||||
- Rebase to 3.3.13
|
||||
|
||||
* Mon Feb 26 2018 Jan Rybar <jrybar@redhat.com> - 3.3.12-2
|
||||
- ps: LUID (LoginID) format option available
|
||||
|
||||
* Wed Feb 21 2018 Michael Cronenworth <mike@cchtml.com> - 3.3.12-1
|
||||
- Upgrading to 3.3.12
|
||||
|
||||
* Fri Feb 09 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.3.10-18
|
||||
- Escape macros in %%changelog
|
||||
|
||||
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-17
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Sat Feb 03 2018 Igor Gnatenko <ignatenkobrain@fedoraproject.org> - 3.3.10-16
|
||||
- Switch to %%ldconfig_scriptlets
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-15
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-13
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Mon Nov 28 2016 Lubomir Rintel - 3.3.10-12
|
||||
- Fix FTBFS with new systemd
|
||||
|
||||
* Thu Feb 04 2016 Fedora Release Engineering <releng@fedoraproject.org> - 3.3.10-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Thu Jan 14 2016 Jaromir Capik <jcapik@redhat.com> - 3.3.10-10
|
||||
- Enhancing find_elf_note to allow calling lib functions with dlopen (#1287752)
|
||||
|
||||
* Fri Aug 14 2015 Adam Jackson <ajax@redhat.com> 3.3.10-9
|
||||
- Use %%configure so the hardened cflags get applied correctly
|
||||
|
||||
* Mon Aug 10 2015 Jaromir Capik <jcapik@redhat.com> - 3.3.10-8
|
||||
- Fixing crashes in 'top' when a deep forking appears (#1153642)
|
||||
|
||||
* Thu Jun 18 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.10-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Sat Feb 21 2015 Till Maas <opensource@till.name> - 3.3.10-6
|
||||
- Rebuilt for Fedora 23 Change
|
||||
https://fedoraproject.org/wiki/Changes/Harden_all_packages_with_position-independent_code
|
||||
|
||||
* Tue Nov 25 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.10-5
|
||||
- Fixing locale dirs ownership (#1167443)
|
||||
|
||||
* Mon Oct 20 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.10-4
|
||||
- Bringing the old 'top' defaults back (#1153049)
|
||||
|
||||
* Mon Oct 06 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.10-3
|
||||
- Resolving file conflicts with man-pages-*
|
||||
- Replacing hardcoded paths with macros
|
||||
- Making the i18n subpackage noarch
|
||||
|
||||
* Tue Sep 30 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.10-2
|
||||
- Removing explicit dependency on systemd-libs
|
||||
- Removing /etc/sysctl.d (ownership quietly stolen by systemd)
|
||||
|
||||
* Tue Sep 09 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.10-1
|
||||
- Upgrading to 3.3.10
|
||||
|
||||
* Sun Aug 17 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.9-12
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Thu Jul 31 2014 Tom Callaway <spot@fedoraproject.org> - 3.3.9-11
|
||||
- fix license handling
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.9-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Wed Apr 30 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-9
|
||||
- Dropping Cached -= Shmem (#963799)
|
||||
|
||||
* Tue Apr 08 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-8
|
||||
- Documenting the 't' process state code in the ps manual (#946864)
|
||||
|
||||
* Fri Mar 14 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-7
|
||||
- Fixing sysctl line length limit (#1071530)
|
||||
|
||||
* Thu Feb 27 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-6
|
||||
- Subtracting Shmem from Cached (#1070736)
|
||||
|
||||
* Wed Feb 05 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-5
|
||||
- Support for timestamps & wide diskstat (#1053428, #1025833)
|
||||
- Fixing fd leak in watch
|
||||
- Fixing format-security build issues
|
||||
|
||||
* Fri Jan 24 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-4
|
||||
- Skipping trailing zeros in read_unvectored (#1057600)
|
||||
|
||||
* Mon Jan 20 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-3
|
||||
- 'vmstat -w' was not wide enough (#1025833)
|
||||
|
||||
* Tue Jan 07 2014 Jaromir Capik <jcapik@redhat.com> - 3.3.9-2
|
||||
- Replacing the /sbin/pidof wrapper with symlink
|
||||
|
||||
* Tue Dec 03 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.9-1
|
||||
- Update to 3.3.9
|
||||
|
||||
* Mon Nov 04 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-17
|
||||
- Fixing pidof compilation warnings
|
||||
- RPM workaround - changing sysvinit-tools Conflicts/Obsoletes (#1026504)
|
||||
|
||||
* Wed Oct 16 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-16
|
||||
- Introducing pidof (#987064)
|
||||
|
||||
* Tue Sep 17 2013 Aristeu Rozanski <aris@redhat.com> - 3.3.8-15
|
||||
- Introduce namespaces support (#1016242)
|
||||
|
||||
* Tue Sep 17 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-14
|
||||
- top: Fixing missing newline when running in the batch mode (#1008674)
|
||||
|
||||
* Fri Aug 09 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-13
|
||||
- Including forgotten man fixes (#948522)
|
||||
|
||||
* Wed Aug 07 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-12
|
||||
- Fixing the license tag
|
||||
|
||||
* Wed Aug 07 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-11
|
||||
- Support for libselinux (#975459)
|
||||
- Support for systemd (#994457)
|
||||
- Support for 'Shmem' in free (#993271)
|
||||
|
||||
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.8-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Fri Jul 19 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-9
|
||||
- RH man page scan (#948522)
|
||||
|
||||
* Tue Jul 02 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-8
|
||||
- Extending the end-of-job patch disabling the screen content restoration
|
||||
|
||||
* Mon Jul 01 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-7
|
||||
- Disabling screen content restoration when exiting 'top' (#977561)
|
||||
- Enabling SIGWINCH flood prevention
|
||||
|
||||
* Wed Jun 26 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-6
|
||||
- Avoiding "write error" messages when piping to grep (#976199)
|
||||
|
||||
* Wed Jun 26 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-5
|
||||
- Disabling tests - unsuitable for running on buildsystems
|
||||
|
||||
* Mon Jun 17 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-4
|
||||
- Enabling skill and snice (#974752)
|
||||
|
||||
* Wed Jun 12 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-3
|
||||
- Adding major version in the libnuma soname
|
||||
|
||||
* Thu May 30 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-2
|
||||
- watch: enabling UTF-8 (#965867)
|
||||
|
||||
* Wed May 29 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.8-1
|
||||
- Update to 3.3.8
|
||||
|
||||
* Wed May 22 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.7-4
|
||||
- top: inoculated against a window manager like 'screen' (#962022)
|
||||
|
||||
* Tue Apr 16 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.7-3
|
||||
- Avoid segfaults when reading zero bytes - file2str (#951391)
|
||||
|
||||
* Mon Apr 15 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.7-2
|
||||
- Moving libprocps.pc to the devel subpackage (#951726)
|
||||
|
||||
* Tue Mar 26 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.7-1
|
||||
- Update to 3.3.7
|
||||
- Reverting upstream commit for testsuite/unix.exp
|
||||
|
||||
* Tue Feb 05 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.6-4
|
||||
- Fixing empty pmap output on ppc/s390 (#906457)
|
||||
|
||||
* Tue Jan 15 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.6-3
|
||||
- Typo in the description, pdwx instead of pwdx (#891476)
|
||||
|
||||
* Tue Jan 08 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.6-2
|
||||
- Rebuilding with tests disabled (koji issue #853084)
|
||||
|
||||
* Tue Jan 08 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.6-1
|
||||
- Update to 3.3.6
|
||||
- Changing URL/Source from gitorious to recently created sourceforge page
|
||||
- Replacing autogen.sh with autoreconf
|
||||
|
||||
* Mon Jan 07 2013 Jaromir Capik <jcapik@redhat.com> - 3.3.5-1
|
||||
- Update to 3.3.5
|
||||
|
||||
* Tue Dec 11 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.4-2
|
||||
- fixing the following regressions:
|
||||
- negative ETIME field in ps (#871819)
|
||||
- procps states a bug is hit when receiving a signal (#871824)
|
||||
- allow core file generation by ps command (#871825)
|
||||
|
||||
* Tue Dec 11 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.4-1
|
||||
- Update to 3.3.4
|
||||
|
||||
* Tue Sep 25 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.3-3.20120807git
|
||||
- SELinux spelling fixes (#859900)
|
||||
|
||||
* Tue Aug 21 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.3-2.20120807git
|
||||
- Tests enabled
|
||||
|
||||
* Tue Aug 07 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.3-1.20120807git
|
||||
- Update to 3.3.3-20120807git
|
||||
|
||||
* Sat Jul 21 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 3.3.2-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Thu Mar 08 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.2-3
|
||||
- Second usrmove hack - providing /bin/ps
|
||||
|
||||
* Tue Mar 06 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.2-2
|
||||
- Fixing requires in the devel subpackage (missing %%{?_isa} macro)
|
||||
- License statement clarification (upstream patch referrenced in the spec header)
|
||||
|
||||
* Mon Feb 27 2012 Jaromir Capik <jcapik@redhat.com> - 3.3.2-1
|
||||
- Initial version
|
Loading…
Reference in New Issue
Block a user