【问题标题】:Cron starts same process twiceCron 两次启动相同的进程
【发布时间】:2012-08-08 17:05:14
【问题描述】:

我的 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

在我看来,同一个进程似乎同时启动了两次,进程 1 的 PID 为 1296,进程 2 的 PID 为 1299。

这正常吗?为什么 ps 输出中有两个进程而不是一个?

【问题讨论】:

    标签: linux cron crontab


    【解决方案1】:

    看起来/bin/sh 用于调用您的 cron 选项卡,以便它们在自己的环境中运行,这是第一个过程。然后/bin/sh 调用 php 来运行您的实际脚本,而 php 是您的第二个进程。这没有什么问题。

    【讨论】:

      【解决方案2】:

      尝试在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替换

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-10-31
        • 1970-01-01
        • 1970-01-01
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多