了解syslogd

时间:2012-03-13 06:01:45

标签: linux shell syslog

任何人都可以解释下面的代码行

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

有什么不同
test -f /var/run/syslogd.pid && kill -HUP `cat /var/run/syslogd.pid`

[我知道它应该重启syslogd,但两者之间有区别吗?一点点的linux noob,抱歉]

2 个答案:

答案 0 :(得分:7)

  1. /bin/kill -HUP <PID> - 将 SIGHUP 信号发送给<PID>标识的进程(进程标识符)。将此信号发送给deamons(或服务,如果您愿意)通常会指示他们重新读取(再次阅读)他们的配置
  2. cat /var/run/syslogd.pid 2> /dev/null - 读取/var/run/syslogd.pid文件(包含 syslogd 守护程序的 PID )并将其打印到标准输出(文件描述符= 0(零))。 2> /dev/null部分会将标准错误流(文件描述符= 2(两个))重定向到/dev/null,以丢弃在阅读/var/run/syslogd.pid时发生的所有错误消息
  3. test -f /var/run/syslogd.pid - 测试文件/var/run/syslogd.pid是否存在。如果存在,则(通常)表示守护程序(在本例中为 syslogd )已启动并正在运行。
  4. 总结:

    1. 第一个命令表示:将 SIGHUP 发送到 syslogd 会丢弃所有错误消息,如果成功则返回true。
    2. 第二个命令表示:如果 syslogd 守护程序正在运行,则向其发送 SIGHUP
    3. /dev/null是一个特殊的设备文件,它丢弃(忽略)写入它的所有内容(如无底洞)。有时用于丢弃错误消息(如您​​的情况)。

答案 1 :(得分:0)

第二个命令用于检查名为/var/run/syslog.pid的文件是否存在,此文件存储正在运行的syslog服务的pid,该命令的第二部分将终止该进程