我的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
对我而言,看起来同一个过程同时启动两次,使用PID 1296处理一个,使用PID 1299处理两个。
这是正常的吗?为什么两个进程都是ps输出而不是一个?
答案 0 :(得分:7)
看起来/bin/sh
用于调用您的cron选项卡,以便它们在自己的环境中运行,这是第一个进程。然后/bin/sh
调用php来运行你的实际脚本,而php是你的第二个进程。这没什么不对。
答案 1 :(得分:3)
尝试在php之前添加exec
*/2 * * * * exec /usr/bin/php /home/ec2-user/myapp/myscript.php >> /home/ec2-user/myapp/log/myapp.log 2>&1
shell进程/ bin / sh将被exec替换