Change ps(1) output width to unlimited if not interactive
Apply patch submitted with PR 217159 to make ps use unlimited width when not associated with a terminal (i.e., none of stdout, stdin, or stderr is a tty). Update comments and man page correspondingly. This change was requested to work around lack of -ww in scripts from third-party packages, including Hadoop, and adds a small measure of Linux compatibility. Hopefully few if any non-interactive scripts depend on the old default of 79. PR: 217159 Submitted by: n.deepak at gmail.com Reviewed by: vangyzen jhb Differential Revision: https://reviews.freebsd.org/D14614
This commit is contained in:
parent
3b632a05ab
commit
7f22cba406
16
bin/ps/ps.1
16
bin/ps/ps.1
@ -101,6 +101,14 @@ The default output format includes, for each process, the process' ID,
|
||||
controlling terminal, state, CPU time (including both user and system time)
|
||||
and associated command.
|
||||
.Pp
|
||||
If the
|
||||
.Nm
|
||||
process is associated with a terminal, the default output width is that of the
|
||||
terminal; otherwise the output width is unlimited.
|
||||
See also the
|
||||
.Fl w
|
||||
option.
|
||||
.Pp
|
||||
The options are as follows:
|
||||
.Bl -tag -width indent
|
||||
.It Fl -libxo
|
||||
@ -257,13 +265,15 @@ option implies the
|
||||
.Fl m
|
||||
option.
|
||||
.It Fl w
|
||||
Use 132 columns to display information, instead of the default which
|
||||
is your window size.
|
||||
Use at least 132 columns to display information, instead of the default which
|
||||
is the window size if
|
||||
.Nm
|
||||
is associated with a terminal.
|
||||
If the
|
||||
.Fl w
|
||||
option is specified more than once,
|
||||
.Nm
|
||||
will use as many columns as necessary without regard for your window size.
|
||||
will use as many columns as necessary without regard for the window size.
|
||||
Note that this option has no effect if the
|
||||
.Dq command
|
||||
column is not the last column displayed.
|
||||
|
@ -202,6 +202,11 @@ main(int argc, char *argv[])
|
||||
* any of stdout, stderr, or stdin is a terminal. The intent
|
||||
* is that "ps", "ps | more", and "ps | grep" all use the same
|
||||
* default line length unless -w is specified.
|
||||
*
|
||||
* If not interactive, the default length was traditionally 79.
|
||||
* It has been changed to unlimited. This is mostly for the
|
||||
* benefit of non-interactive scripts, which arguably should
|
||||
* use -ww, but is compatible with Linux.
|
||||
*/
|
||||
if ((cols = getenv("COLUMNS")) != NULL && *cols != '\0')
|
||||
termwidth = atoi(cols);
|
||||
@ -209,7 +214,7 @@ main(int argc, char *argv[])
|
||||
ioctl(STDERR_FILENO, TIOCGWINSZ, (char *)&ws) == -1 &&
|
||||
ioctl(STDIN_FILENO, TIOCGWINSZ, (char *)&ws) == -1) ||
|
||||
ws.ws_col == 0)
|
||||
termwidth = 79;
|
||||
termwidth = UNLIMITED;
|
||||
else
|
||||
termwidth = ws.ws_col - 1;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user