【问题标题】:Cannot kill a process by a PHP Script running behind nohup无法通过在 nohup 后面运行的 PHP 脚本终止进程
【发布时间】:2022-01-13 07:52:34
【问题描述】:

我有一个 php 脚本,可以在杀死一些旧进程后执行一些操作。

act.php

$pids = shell_exec('ps aux | grep "saso" | awk \'{print $2}\'');
$pids = str_replace("\n", ' ', $pids);
$pids = array_filter(explode(' ', $pids));

foreach ($pids as $pid) {
    shell_exec('kill -9 ' . $pid . ' > /dev/null 2>&1 &');
}

// reset of the code . ..

脚本运行php act.php 运行良好。它获取进程 ID,将其杀死,然后运行重置。

但是当我运行nohup php act.php &nohup php act.php 时它不起作用。进程没有被杀死。

我需要nohup 在后台运行脚本而不会挂断。

PHP 脚本不能获取 nohup 后面的 pids 吗?还有其他选择吗?

提前致谢。

【问题讨论】:

    标签: php linux nohup


    【解决方案1】:

    如果搜索得当,可以找到result

    试试:

    $output = shell_exec('/usr/bin/nohup php script.php >/dev/null 2>&1 &');
    

    或者:

    exec('/usr/bin/nohup php script.php >/dev/null 2>&1 &');
    

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    • 我明白了。这个想法是:nohup 不能得到pids,它总是返回空列表,但是如果我在没有nohup 的情况下运行脚本:php script.php 它会得到pids
    猜你喜欢
    • 2013-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多