了解syslogd

DaT*_*omB 3 linux shell syslog

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

/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
Run Code Online (Sandbox Code Playgroud)

它与它有何不同?

test -f /var/run/syslogd.pid && kill -HUP `cat /var/run/syslogd.pid`
Run Code Online (Sandbox Code Playgroud)

[我知道它应该重启syslogd,但两者之间有区别吗?有点Linux的菜鸟,对不起]

sir*_*rge 7

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

总结一下:

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