bin/90690: ps(1) errorneously respects terminal column settings when output is not to a terminal

Vadim Goncharov vadim_nuclight at mail.ru
Thu Dec 22 03:50:09 PST 2005


The following reply was made to PR bin/90690; it has been noted by GNATS.

From: Vadim Goncharov <vadim_nuclight at mail.ru>
To: bug-followup at FreeBSD.org
Cc: Oliver Fromme <olli at lurza.secnetix.de>
Subject: Re: bin/90690: ps(1) errorneously respects terminal column settings when output is not to a terminal
Date: Thu, 22 Dec 2005 05:26:00 +0600

 Hello Oliver,
 
 Wednesday, December 21, 2005, 11:00:06 PM, you wrote:
 
 OF> What you describe is standard BSD ps(1) behaviour, as is
 OF> documented in the manual page.
 
 It's not clarified there in the case of redirection.
 
 OF> Basically, the intent is that, when you redirect ps(1) output
 OF> somewhere (to a file or pipe), you get exactly the same that
 OF> is displayed on the screen.
 
 This is counter-intuitive. If I am redirecting output to file, I expect
 to see result somewhat later. It's somewhat strange that result will be
 not stable constant, but unpredictable, depending on terminal settings
 at the moment of running.
 
 OF> The rules are:  If ps(1) is running in a terminal, it's width
 OF> is used.  If it's not running in a terminal (e.g. via a cron
 OF> job) or the width cannot be determined, the default is 80
 OF> columns.  To determine the terminal width, any one of stdout,
 OF> stderr or stdin is used -- therefore, to let ps(1) ignore the
 OF> terminal width, you have to redirect stderr and stdin.
 OF> If you specify the -w option once, the limit is expanded to
 OF> 132 columns (unless your terminal width is already larger
 OF> than that).  Finally, if you specify -w twice, the width is
 OF> assumed to be unlimited.
 
 Compare it with ls(1) behavior. If output is not to a terminal, ls
 behaves as expected, not using any terminal crap. And this is clearly
 documented in ls man page.
 
 OF> When you use ps(1) in a pipe to grep for things, you should
 OF> always use the -ww options.  Also note that newer versions
 of FreeBSD (>> 4.x) have a pgrep(1) command which can be used
 OF> as a convenient replacement for ps | grep pipes.
 
 Yes, but grep is not the only thing used with redirection. Moreover,
 I've tried to run "ps aux > myprocs.txt" on Linux (Slackware 10) and it
 worked as I expected - full lines in file while on terminal they were
 truncated (and linux have pgrep(1) also).
 
 So, I insist that ps(1) behavior should be corrected. OK, developers may
 have another opinion, but in that case at least ps man page should be
 fixed, adding a paragraph clarifying this, somewhat like what you
 explained earlier in this post.
 
 -- 
   WBR, Vadim Goncharov 
 FidoNet 2:5005/106.426  ICQ#166852181
 


More information about the freebsd-bugs mailing list