Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 30 Nov 2012 03:20:29 -0600 (CST)
From:      Robert Bonomi <bonomi@mail.r-bonomi.com>
To:        pschmehl_lists@tx.rr.com
Cc:        freebsd-questions@freebsd.org
Subject:   Re: Unexepected results when piping syslog to a fifo
Message-ID:  <201211300920.qAU9KTcF043099@mail.r-bonomi.com>
In-Reply-To: <C25A8455A7709875B53BE78B@Pauls-MacBook-Pro.local>

Next in thread | Previous in thread | Raw E-Mail | Index | Archive | Help

> Date: Thu, 29 Nov 2012 22:21:30 -0600
> From: Paul Schmehl <pschmehl_lists@tx.rr.com>
> Subject: Re: Unexepected results when piping syslog to a fifo
>
> Now I'm even more confused.  According to man (5) syslog.conf, a pipe 
> should redirect its output to /dev/null.
>
>          " A vertical bar (``|''), followed by a command to pipe the 
> selected
>          messages to.  The command is passed to sh(1) for evaluation, so 
> usual
>          shell metacharacters or input/output redirection can occur.  (Note
>          however that redirecting stdio(3) buffered output from the invoked
>          command can cause additional delays, or even lost output data in 
> case
>          a logging subprocess exited with a signal.)  The command itself 
> runs
>          with stdout and stderr redirected to /dev/null."
>
> And yet this:
>
> *.* |cat > /var/run/program/program.fifo results in the log data going both 
> to the fifo and to /var/log/messages.  I really don't want to fill up the 
> messages log with this stuff.  Any suggestions?


to clear up the confusion:
 1) syslogd creates an environment where stdout/stderr are set to /dev/null,
    invokes sh in that environment, passing it the command string for 
    evaluation/execution. If the command string does *not* redirect 
    stdout/stderr, they are /dev/null.*IF* redirected in he command string,
    things go where redirected.
 2) syslogd writes messages to _every_ destination where the selection
    criteria match.  To accomplish what you want you'll need something
    like:
	 +remotehost
	 *.*     |cat >fifo
	 -remotehost
	 {console criteria}  /dev/console
	 {'messages' criteria}  /var/log/messages
	 {{ etc., etc.}}
    [ you may need "+* on it's own line just before "-remotehost"





Want to link to this message? Use this URL: <http://docs.FreeBSD.org/cgi/mid.cgi?201211300920.qAU9KTcF043099>