2011-12-26 70 views
1

我正在使用PHP庫phpseclib0.2.2將SSH連接自動化到我的一臺服務器中。我已將它設置爲每5分鐘運行一次的cron任務。遺留SSH進程/作業?

在設置它,確保它運行等後註銷,我看到以下內容:

$ logout 
There are stopped jobs. 
$ 

,我被迫使用

$ logout 

再次註銷。在我的服務器上運行的SSH進程/作業是否有一堆我永遠不會關閉如何使用bash命令(或更好的方式)在終端中「檢查此」?

以下是我使用的代碼。

<?php 
include('Net/SSH2.php'); 

$ssh = new Net_SSH2('www.domain.com'); 
if (!$ssh->login('username', 'password')) { 
    exit('Login Failed'); 
} 

echo $ssh->exec('some command'); 
?> 

回答

2

你可能已經開始了一些進程並將它們發送到後臺, G。與尾隨符號如sleep 60 &或按^Z

您可以使用jobs命令列出當前shell中正在運行或掛起的作業。如果你想在關閉shell之後讓它們繼續運行,你首先需要disown然後將它們發送到bg的後臺。

$ sleep 1000 & 
[1] 2345 
$ sleep 2000 
^Z 
[2]+ Stopped     sleep 2000 
$ jobs 
[1]- Running     sleep 1000 & 
[2]+ Stopped     sleep 2000 
$ kill %2 
$ kill %1 
[1]- Terminated    sleep 1000 
[2]+ Terminated    sleep 2000 

如果你想保持過程你已經退出外殼,並已經知道,事先你應該使用nohup來啓動這些進程或寫一個正確的初始化腳本運行後。

+1

你可以用'jobs'來請求他們。 – glglgl 2011-12-26 12:38:31

+0

好的謝謝。當我ssh進入並使用'作業'它不會返回任何東西。我認爲這意味着沒有剩下的工作正在運行? – lollercoaster 2011-12-26 23:04:43

+1

是的,如果'jobs'沒有輸出任何東西,那麼沒有任何作業連接到當前shell。 @glglgl:嗯,是的。我認爲這就是我寫的... – joschi 2011-12-27 12:08:58