2012-03-13 36 views
3

任何人都可以解釋一下下面的代碼行確實理解的syslogd

/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,但那裏的之間的差異也不同二? bit的一個linux noob,對不起]

回答

6
  1. /bin/kill -HUP <PID> - 發送SIGHUP信號處理由<PID>(進程標識符)標識。 (如果你喜歡或服務)這個信號發送到守護程序通常指示他們重讀(再次讀取),其配置
  2. cat /var/run/syslogd.pid 2> /dev/null - 讀取/var/run/syslogd.pid文件(其中包含PID的是syslogd守護進程),並將其輸出到標準輸出(文件描述符= 0(零))。它的2> /dev/null部分重定向標準錯誤流(文件描述符= 2(2)),以/dev/null丟棄,而讀/var/run/syslogd.pid
  3. test -f /var/run/syslogd.pid所發生的所有錯誤消息 - 測試文件/var/run/syslogd.pid存在。如果它存在(通常)意味着守護進程(在本例中爲syslogd)已啓動並正在運行。

總結:

  1. 第一個命令方式:發送SIGHUP的syslogd丟棄所有的錯誤信息,如果succeded返回true。
  2. 第二條命令的意思是:如果是syslogd守護運行發送SIGHUP
  3. /dev/null是丟棄被寫入到它(就像一個無底洞)(忽略)一切特殊的設備文件。有時用於丟棄錯誤消息(就像你的情況一樣)。
0

第二個命令是用來檢查是否有名爲/var/run/syslog.pid的文件存在,這個文件存儲了正在運行的syslog服務的pid,命令的第二部分將殺死該進程