Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Understanding syslogd

could anyone explain what the following line of code does

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true

and how is it different from

test -f /var/run/syslogd.pid && kill -HUP `cat /var/run/syslogd.pid`

[I know it should restart syslogd, but is there a difference between the two? bit of a linux noob, sorry]

like image 861
DaTaBomB Avatar asked Oct 16 '25 12:10

DaTaBomB


1 Answers

  1. /bin/kill -HUP <PID> - sends SIGHUP signal to process identified by <PID> (process identifier). Sending this signal to deamons (or services if you prefer) usually instructs them to reread (read again) their configuration
  2. cat /var/run/syslogd.pid 2> /dev/null - reads the /var/run/syslogd.pid file (which contains PID of the syslogd daemon) and prints it to standard output (file descriptor = 0 (zero)). The 2> /dev/null part of it redirects standard error stream (file descriptor = 2 (two)) to /dev/null to discard all error messages that occured while reading /var/run/syslogd.pid
  3. test -f /var/run/syslogd.pid - tests if the file /var/run/syslogd.pid exists. If it exists it (usually) means that the daemon (in this case syslogd) is up and running.

To summarise:

  1. The first command means: send SIGHUP to syslogd discard all error messages and return true if succeded.
  2. The second command means: if the syslogd daemon is running send SIGHUP to it
  3. /dev/null is a special device file that discards (ignores) everything that is written to it (like a bottomless well). Sometimes used to discard error messages (like in your case here).
like image 85
sirgeorge Avatar answered Oct 19 '25 01:10

sirgeorge