I've been configuring my OpenMediaVault NAS server for RSyslog shipping logs to my centralised RSyslog setver, when I experienced a cryptic error:
rsyslog startup failure: error reading "fork pipe": No such file or directory
rsyslog didn't start, so it took me a bit to investigate.
Turns out, the issue was mismatch of RSyslog config syntax: OMV used one version, my templates used another.
Specifically, I'm using old-syntax multi-line way of describing global TLS settings for configuring client side of RSyslog:
global( DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/rsyslog.d/ca.crt" DefaultNetstreamDriverCertFile="/etc/rsyslog.d/helios4.crt" DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/helios4.key" )
But earlier in the file I used a more recent way of configuring RSyslog modules:
module(load="imtcp") input(type="imtcp" port="514")
It seems RSyslog doesn't suppot this kind of mixing config styles – so one of these config stanzas needs rewriting. In my case, I actually only needed imtcp for debug purposes – so I just commented it out and RSyslog restarted just fine.