【问题标题】:getting cron specific pid获取 cron 特定的 pid
【发布时间】:2013-09-06 07:12:25
【问题描述】:

我正在开发一个我想创建和销毁 cronjobs 的系统。 现在,例如,当我创建以下 cronjobs 时:

1****    /path/users.php?id=2
1****    /path/users.php?id=3

那我想杀掉第一个cronjob users.php?id=2 我想知道每个 cron 是否通过 unix 创建了一个特定的 processid (PID),如果是这样,我怎样才能捕获这个特定的 processid?

我已经尝试过echo $$ 命令,但是我怀疑这个命令会生成这个特定的 Cron PID。

【问题讨论】:

  • 我通常做的是深入/proc文件系统,遍历进程目录并读取其中包含名称的文件。

标签: php linux cron pid


【解决方案1】:

如果你直接用php而不是通过http调用脚本,你可以把它放在你的php脚本中:

file_put_contents("/absolute_path/cronjob_users_id_2.pid", getmypid());

这会将进程的 PID 写入文件中。

如果脚本最终结束,您可以简单地删除文件:

unlink($pidfile);

【讨论】:

  • 解决方案实际上是在我当时正在执行的脚本 (users.php) 上使用 echo $$ 命令。我读到 getmypid() 函数不是杀死该特定进程的正确函数。
【解决方案2】:

试试这个

function remove($id)
    {
        $file = file(path/to/cron_file);
        $content = '';

        foreach( $file as $line )
        {
            list($url, $t_id) = explode('?id=', $line);

            if( trim($t_id) != $id )
            {
                $content .= $line;
            }
        }

        file_put_contents(path/to/cron_file, $content);
    }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-16
    • 2014-11-11
    • 2023-03-08
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多