2

私はcrontabを次のように構成しました:

*/2 * * * * php /home/ec2-user/myapp/myscript.php >> /home/ec2-user/myapp/log/myapp.log 2>&1

ps auxを実行すると、次の出力が表示されます。

ec2-user  1296  0.0  0.0   2984   992 ?        Ss   15:36   0:00 /bin/sh -c /home/ec2-user/myapp/myscript.php >> /home/ec2-user/myapp/log/myapp.log 2>&1 SHELL=/bin/sh HOME=/home/ec2-user PATH=/usr/bin:/bin LOGNAME=ec2-user USER=ec2-user
ec2-user  1299  0.3  3.7  91528 63612 ?        S    15:36   0:16 /home/ec2-user/myapp/myscript.php SHELL=/bin/sh USER=ec2-user PATH=/usr/bin:/bin PWD=/home/ec2-user SHLVL=1 HOME=/home/ec2-user LOGNAME=ec2-user _=/usr/bin/php

私には、同じプロセスが同時に2回開始されたように見えます。1つはPID 1296で、2つはPID1299で処理されます。

それは正常ですか?なぜ2つのプロセスが1つではなくps出力にあるのですか?

4

2 に答える 2

7

cronタブを呼び出すために使用されているように見える/bin/shので、それらは独自の環境で実行されます。これが最初のプロセスです。次に/bin/sh、phpを呼び出して実際のスクリプトを実行します。phpは2番目のプロセスです。これには何の問題もありません。

于 2012-08-08T18:13:39.413 に答える
4

phpの前にexecを追加してみてください

*/2 * * * * exec /usr/bin/php /home/ec2-user/myapp/myscript.php >> /home/ec2-user/myapp/log/myapp.log 2>&1

シェルプロセス/bin/shはexecに置き換えられます

于 2013-08-25T10:31:36.273 に答える