2011-12-26 6 views
1

私はPHPライブラリphpseclib0.2.2を使用して、自分のサーバーの1つに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を使用すると、現在のシェルで実行中または中断中のジョブを一覧表示できます。シェルを閉じた後にそれらを実行し続ける場合は、最初に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 

あなたがシェルを終了し、すでに事前にあなたがこれらのプロセスを起動したり、適切なinitスクリプトを書くことnohupを使用する必要があることを知っていました後に、実行中のプロセスを維持したい場合。

+1

そして、あなたは 'jobs'でそれらを求めることができます。 – glglgl

+0

ありがとう。私がsshを使って 'jobs'を使うと、何も返されません。私はこれがジョブの実行中に残っていないことを意味します – lollercoaster

+1

はい、 'jobs'が何も出力しない場合、現在のシェルに接続されたジョブはありません。 @glglgl:うん、はい。私はそれが私が書いたものだと思う... – joschi

関連する問題