2016-07-29 11 views
0

私はapache2/PHPを実行しているDebianサーバを持っています。このウェブサイトから、私は時間の経過とともに多くのPythonスクリプトを実行できます。私は彼らが積み重ならないように一定の時間の後にこれらのスクリプトを殺すことができるようにしたい。 pythonスクリプトはwww-dataによって所有されています。www-dataプロセスを強制終了するにはどうすればよいですか?

私は、PIDと実行のタイムスタンプを保存し、これらのすべてをループして、指定された時間より古いものを見つけることによって、Pythonスクリプトを強制終了しようとしました。

for($x = 0; $x < $arraylen; $x++) { 
    if (round(microtime(true)) - $timearray[$x] > 60){ 
     $command = "kill -9 " . $pidarray[$x]; 
     $killme = exec($command); 
    } 
} 

私はこれを使用してPIDをつかむ:

$PID = shell_exec('/usr/bin/python2.7 /var/www/worker.py ......'); 

私はPHPは、これらのプロセスを殺すために取得するように見えることはできません。しかし、私はプロセスのPIDを知っていれば、私は罰金

sudo su www-data 
kill "PID of the process" 

を作品の端末にこれを入力することができますどのように私はPHPは、独自のプロセスのうちの1つを殺すために得るのですか?

+1

ユーザwww-dataは、たとえそれが自分の子供であっても、他のプロセスを殺す権利をもっていない可能性が非常に高いです。しかし、私はむしろ、ハングしたプロセスを殺すためにウェブプロセスよりもcron-jobを使うと思うので、アクセス権があるならrootとして実行することができます。私はさらに、ここでlinux/unix-speficic SEと話すことをお勧めします。 – syck

答えて

0
exec("sudo -u <YOURUSER> -S kill $PID"); 
+0

は、$ PIDが ""の内側にあり、最後の部分がではないと仮定しています。 $ PID – skeldoor

+0

このコードスニペットは問題を解決するかもしれませんが、[説明を含む](// meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)本当にあなたの投稿の質を向上させるのに役立ちます。将来読者の質問に答えていることを覚えておいてください。そうした人々はあなたのコード提案の理由を知らないかもしれません。また、コードと説明の両方の可読性が低下するため、説明的なコメントを使用してコードを混乱させないようにしてください。 – FrankerZ

関連する問題