Centos服務器怎樣查看端口是否被佔用,被佔用的端口進程ID不斷地變怎麼結束(殺死)?

在Linux服務器中,經常會以php-cli方式運行一些後臺服務,例如swoole, workmanWebSocket框架的服務,當這些服務出現了異常要結束或重啓時,很多人可能會找不到當時的運行物理路徑或物理路徑已經不存在了(例如是進入了部署目錄裏啓動的,但因爲發佈了新版本,所以原來的部署目錄文件夾被覆蓋或清理,已經不存在了),這樣就無法通過常規的方式去停止服務,只能先找到進程id,然後用kill -9 進程ID的方式來結束。

很多人會首先想到通過使用的端口來查找進程id,常用的命令如:netstat -tunpl | grep 端口號lsof -i :端口號,這樣確實能找到當前佔用端口的進程ID,但當執行kill -9 進程ID時發現會提示進程id不存在,再執行netstat -tunpl | grep 端口號命令會發現,顯示出來的端口號確實與上次的不一樣了,這是爲什麼呢?

原來我們所看到的子進程,是由主進程(master,亦稱爲守護進程)維護的,所以要達到停止進程的目的,要找到主進程的id,再執行kill命令,就能徹底結束掉這個服務了,具體怎麼做呢?

可以使用查找進程的命令:ps -aux | grep php,系統會列出當前所有的php進程,如下圖所示:
在這裏插入圖片描述
其中有一列會詳細列出進程類型(master)及cli進程的啓動文件,這個非常有用,能快速地根據啓動目錄和文件名找到我們想找的服務,然後調用 kill -9 進程ID,就能將服務徹底結束掉了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章