On Fri, 2011-07-29 at 15:35 +0200, Remy Zandwijk wrote:
Hi list,
I use syslog-ng to create log files from within a script. The script
sends the message through a pipe to syslog-ng, which I use as command
line tool. In the syslog-ng.conf I created a source which reads the
standard input. very simplified:
Config:
source src { pipe("/dev/fd/0"); };
destination dst { file("/tmp/test.log"); };
log { source(src); destination(dst); };
Called as:
echo "test" | /usr/sbin/syslog-ng -f /tmp/syslog-ng.conf
This works perfectly in 2.0.9. Now I am in the process of upgrading
the system and syslog-ng 3.2.4. With this version of syslog-ng the
config file above results in an error:
Error opening file for reading; filename='/dev/fd/0', error='Text
file busy (26)'
Error initializing source driver; source='src', id='src#0'
Error initializing message pipeline;
I tried several things to get rid of this error, like replacing 'pipe'
in 'file', but nothing seems to work.
hmm... the text file busy error is returned by the kernel. Are you sure
you only changed syslog-ng to a newer version and you are otherwise
running on the same system?
But in any case, I'd try to diagnose the problem using strace, what does
syslog-ng try and what error does the kernel return if any?
ETXTBSY
pathname refers to an executable image which is currently being executed and write access was requested
syslog-ng indeed opens the file read-write (which it probably
shouldn't), but I can't remember changing this recently. (maybe I did
though).
Can you confirm that this is the case.