Re: more contrib: log rotator

scott.marlowe <scott.marlowe@ihs.com>

From: "scott.marlowe" <scott.marlowe@ihs.com>
To: "Ed L." <pgsql@bluepolka.net>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Peter Eisentraut <peter_e@gmx.net>, Andrew Sullivan <andrew@libertyrms.info>, <pgsql-hackers@postgresql.org>
Date: 2003-04-04T21:17:41Z
Lists: pgsql-hackers
On Fri, 4 Apr 2003, Ed L. wrote:

> On Friday April 4 2003 11:58, Tom Lane wrote:
> > "scott.marlowe" <scott.marlowe@ihs.com> writes:
> > > rotatelogs is in my path and all, it just never sees it.
> >
> > You mean the command fails?  Or just that it doesn't capture output?
> >
> > > "$po_path" ${1+"$@"} </dev/null | $PGPATH/rotatelogs $logfile $DURATION
> > > 2>&1 &
> >
> > Most if not all of the postmaster's log output goes to stderr, so you'd
> > need
> >
> > "$po_path" ${1+"$@"} </dev/null 2>&1 | $PGPATH/rotatelogs ...
> >
> > to have any hope of useful results.
> 
> Hmmm.  I would have agreed 2>&1 was needed, too, but this command seems to 
> routinely capture all output, including ERRORs:
> 
> 	nohup pg_ctl start | nohup rotatelogs server_log.%a 86400

OK, So I tried putting the 2>&1 before the | and all.  No matter what I 
try, every from the | on is ignored.  ps doesn't show it, and neither does 
pg_ctl status.  Both show a command line of 
/usr/local/pgsql/bin/postmaster as the only input to start the server.

Now, the thing is, I've tried this with hardcoded values, like:

"$po_path" ${1+"$@"} </dev/null 2>&1 /usr/local/pgsql/bin/rotatelogs 
/mnt/d1/data/logs/pglog 86400

where I know the logs directory exists.  It works if I do:

pg_ctl start | rotatelogs $PGDATA/pglog 86400 2>1&

and puts the log files there.

I've copied rotatelogs into the /usr/local/pgsql/bin directory as well.

So, I'm thinking this is my weakness in shell scripting that's getting me 
here, and that the shell is eating the |, not passing it out with the 
postmaster to be used when it starts.