Apache服務重啟時pid不變的問題

2021-08-25 13:58:07 字數 1070 閱讀 1491

昨天客戶現場的一台機器不知道什麼原因突然down掉了,然後重啟的時候一直報httpd(pid 6062) alaready running 

但是使用ps -ef|grep httpd 根本沒有沒有看到有相關的服務

再看看ps -ef|grep 6062

這個pid真的有程序在使用,但是這個並不是apache的服務程序,嘗試使用kill命令去把這個程序殺死,然而並沒有什麼作用,這個程序剛好也是不能被強制殺死

搞到這裡也沒有頭緒了,再加上已經是晚上11點了,就滾回家洗洗睡了;

今天早上過來的時候現場的同事反映說問題解決了,不能重啟的原因是pid被鎖定了,看到這裡,我突然靈光一閃,想起昨晚的都是使用service httpd restart這個命令來重啟apache的服務,會不會是這個restart命令不會變動pid呢,於是馬上驗證:

果然跟猜想的一樣!!!最後在一篇部落格上看到這麼一段話:

apache在呼叫restart的時候,先去讀取httpd.pid檔案中先前程序的pid值,並向其傳送乙個signalhup訊號,而啟動意外掛程式掉重啟,沒有執行stop指令,pid檔案沒有被移除,於是再次呼叫restart的時候,會認為該程序pid號是存在的,仍然會傳送乙個signalhup訊號給該程序號。由於系統剛啟動,恰巧這個程序號已經被新的程序占用了,而apache傳送的這個hup訊號,傳送給了另外的新程序,導致系統出現了異常,被掛起。

好吧,又漲姿勢了,下次遇到這樣的問題就可以解決了!

如何重啟apache2服務

假設當前linux使用者的apahce安裝目錄為 usr local apache2,那麼在命令列終端中使用以下命令啟動,停止和重啟apache。1.啟動apahce的命令 usr local apache2 bin apachectl start apache 2.停止apache的命令 usr ...

emqtt伺服器重啟配置不生效

按官方文件介紹的 重啟emttt服務的方法 是 bin目錄下 emqttd restart 但是我改了 etc 下的 emq.conf 然後按上面方法重啟emqtt 修改的配置並沒有生效 關閉emqtt服務 emqttd stop 然後 ps aux grep emq 可以看到 還有個emqtt 守...

讓 CentOS 啟動時不啟動桌面服務

修改 etc inittab檔案,將 id 5 initdefault 改為id 3 initdefault linux 系統任何時候都執行在乙個指定的執行級上,並且不同的執行級的程式和服務都不同,所要完成的工作和所要達到的目的都不同。centos設定了如下表所示的執行級,並且系統可以在這些執行級別...