谁能解释一下下面这行代码的作用
/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 菜鸟,抱歉]
最佳答案
-
/bin/kill -HUP <PID>
- 发送SIGHUP 信号给由<PID>
标识的进程(进程标识符)。将此信号发送给守护进程(或服务,如果您愿意)通常会指示它们重新读取(再次读取)它们的配置 -
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
-
test -f /var/run/syslogd.pid
- 测试文件是否为/var/run/syslogd.pid
存在。如果它存在(通常)意味着守护进程(在本例中为 syslogd)已启动并正在运行。
总结一下:
- 第一个命令的意思是:发送SIGHUP到syslogd,丢弃所有错误信息,如果成功则返回true。
- 第二个命令意味着:如果 syslogd 守护进程正在运行,发送 SIGHUP 给它
-
/dev/null
是一个特殊的设备文件,它会丢弃(忽略)写入它的所有内容(就像一口无底井)。有时用于丢弃错误消息(例如您的情况)。
关于linux - 了解系统日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679085/