Como l0b0 mencionou em sua resposta , o arquivo crontab especifica apenas a hora de início dos trabalhos. Não importa se o trabalho leva horas para ser executado e será bem-sucedido quando o próximo horário de início chegar, mesmo que a encarnação anterior do trabalho ainda esteja em execução.
A partir de sua descrição, parece que você deseja que a tarefa B seja iniciada se a tarefa A demorar muito para ser executada.
Você pode conseguir isso combinando as duas tarefas em um único script e o mesmo:
#!/bin/sh
timeout=600 # time before task B is started
lockfile=$(mktemp)
trap 'rm -f "$lockfile"' EXIT INT TERM QUIT
# Start task A
# A "lock file" is created to signal that the task is still running.
# It is deleted once the task has finished.
( touch "$lockfile" && start_task_A; rm -f "$lockfile" ) &
task_A_pid="$!"
sleep 1 # allow task A to start
# If task A started, sleep and then check whether the "lock file" exists.
if [ -f "$lockfile" ]; then
sleep "$timeout"
if [ -f "$lockfile" ]; then
# This is task B.
# In this case, task B's task is to kill task A (because it's
# been running for too long).
kill "$task_A_pid"
fi
fi