Aqui está uma solução simples de script; você provavelmente pode fazer o mesmo no script cron.php. Na verdade, ele verifica se há processos que duram muito tempo; para um sistema automatizado, esta é provavelmente uma boa ideia.
#!/bin/bash
# Exit if process is already running
if test -e /tmp/wordpress-job.pid; then
# Check if the pid that was stored in /tmp/wordpress-job.pid does exist
if ps ax -o pid= | grep $(cat /tmp/wordpress-job.pid ) &> /dev/null; then
exit 0
fi
fi
# Create the file that marks this process as running
echo $$ > /tmp/wordpress-job.pid
# Some extra security check to prevent the pid file
# to survive.
trap "rm -f /tmp/wordpress-job.pid" EXIT TERM INT HUP
# Start the long-running process in the background
sleep 3600 & # long-running process
# Sleep some time before trying to kill that process
sleep 300
# Kill job if it takes longer than it should
kill %1
# Delete the file that marks this process as running
rm -f /tmp/wordpress-job.pid
Você tem que substituir o "sleep 3600" pela sua linha de comando do php, e mudar o 300 abaixo para o tempo máximo que o seu script deve ter permissão para rodar.