2016-12-01 56 views
0

是否有任何命令可以使用PHP在遠程Ubuntu服務器中殺死特定進程?如何殺死使用PHP的遠程Ubuntu服務器中的進程?

也有任何命令列出遠程Ubuntu服務器上運行的所有PHP進程?

我所用,

的ps aux | grep php

列出所有PHP進程,使用ssh登錄到遠程機器後。但是,是否有可能從本地機器本身獲取進程列表?

注意:我每15分鐘運行一組cron作業。並在DB中保存每個進程的ID。我需要從我的監控工具(在另一臺服務器中)殺死某個進程ID。

如果有任何命令,那麼我可以在我的PHP腳本中調用。 謝謝!

回答

0

這個問題可以在askubuntu上。

如果您有SSH訪問您的服務器,您已登錄到它。

然後,你可以做sudo killall php來殺死所有PHP進程或sudo kill <idprocess>

請注意,如果您運行了Apache服務器,它可以創建新的進程。關閉Apache可以允許不創建新進程。

編輯:

根據this post你可以使用一個包直接給出密碼沒有互動。由此,您的腳本可能在服務器上登錄,然後終止進程,最後退出。

+0

我同意。但是,那麼,我需要通過代碼從一臺服務器(比如本地主機)殺死遠程服務器?爲什麼我在這裏問的意思是,如果假設我也可以使用PHP獲得其他解決方案,因爲我只需要通過代碼解決問題。 –

+0

我不明白你需要用腳本遠程執行它,而不用ssh登錄。 一個bash腳本可以做到這一點,不是嗎?該腳本可以登錄到服務器並終止進程。 – AnthonyB

+0

在問題中添加了更多詳細信息。 –

0

您可以使用posix_kill()函數將任何信號發送到進程。根據您的特權,您可能會看到或不會看到您期望的結果。

SIGKILL常數會發送(如您所料)SIGKILL。

在任何情況下,你都不應該執行任何涉及exec()sudo的組合。這意味着你的設置很容易受到很多潛在的討厭的人的影響。

+0

真正的問題是不殺死進程,這是遠程執行。但確實posix_kill似乎很有用。 – AnthonyB

+0

問題是關於使用PHP遠程執行它 - 我知道我只是在回答如何使用PHP在本地執行此操作,但PHP旨在用於遠程調用。用'curl'調用這個腳本應該沒問題,只要它已經具有身份驗證(我認爲它已經存在於其他應用程序中) – moopet

+0

只能使用Web服務器遠程調用PHP。所以你可以用Apache服務器(或其他)創建一個Web界面。這就像一個小網站,僅供您使用。隨着認證當然。 – AnthonyB