linux - 了解系统日志

标签 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 菜鸟,抱歉]

最佳答案

  1. /bin/kill -HUP <PID> - 发送SIGHUP 信号给由<PID> 标识的进程(进程标识符)。将此信号发送给守护进程(或服务,如果您愿意)通常会指示它们重新读取(再次读取)它们的配置
  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)已启动并正在运行。

总结一下:

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

关于linux - 了解系统日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9679085/

相关文章:

linux - struct bio 中的字段 bi_sector 代表什么

linux - Scriptella:Jaybird 的 ResourceException

java - 如何在Android中的字符串中使用\n换行(从linux输入)

linux - 我在 shell 脚本中的 shell 脚本没有获取 int 变量

python - 为什么 python 不将异常记录到 syslog(但它确实记录了?)

c - 是否可以将 perror() 产生的消息发送到/var/log/syslog?

linux - 什么时候用引号括起 shell 变量?

bash - 解析日志文件的最佳方式

linux - 即使路径正确,shell 脚本 cd 也会失败

logging - 符合 RFC 5424 的 Logback TCP 系统日志