Убивать детские задания, длительностью более 20 минут

Поэтому у меня есть некоторые процессы, выполняющие фоновые задания (resque) на серверах, и некоторые из этих заданий запускают дочерний процесс, который иногда застревает. Я обнаружил, что если я убью этот дочерний процесс, все вернется к норме. У нас есть еще один скрипт, который может убить двоичный процесс, если он длится долго, но он, похоже, не работает здесь. Обычно я могу это сделать:

killall --older-than 20m <process> 

Но эти рабочие кажутся немного более сложными. Вот как они выглядят в ps:

 jbsmith@server:~$ ps aux | grep resque www-data 17652 0.0 1.8 794148 145940 ? Sl 11:03 0:05 resque-1.26.0: Processing email since 1494525823 [Email] www-data 1026 0.0 1.9 787712 157080 ? Sl 10:47 0:13 resque-1.26.0: Forked 17652 at 1494525823 

«Forked x at x» – это дочерний процесс и тот, который мне нужно убить. Есть ли одна команда liner, которую я могу использовать, чтобы найти процессы, которые могут соответствовать «Forked» и старше 20 минут, и убить их?

  • Почему этот сценарий не копирует файлы внутри моего исходного каталога?
  • Вложенный цикл while работает не так, как ожидалось
  • Сравните идентификационные номера с номерами ревизий в двух файлах, и если rev # для файла A меньше, чем файл B, замените строку на новый rev #?
  • Ctrl-C игнорируется pppd при установке сценария оболочки
  • Поддерживают ли оболочки рекурсию?
  • Как сделать паузу в сценарии оболочки?
  • распечатать определенную строку из нескольких файлов
  • Изменение шаблонов гвоздики zsh для использования с cp
  • One Solution collect form web for “Убивать детские задания, длительностью более 20 минут”

    «Однострочный», разделенный на две строки для меньшей прокрутки:

     ps aux | awk -v cutoff=$(( $(date +%s) - 20 * 60 )) \ '/resque.*Forked [0-9]+ at [0-9]+/ { if ($NF < cutoff) system("kill " $2) }' 

    Его можно было бы сделать более жестким, используя спецификатор вывода для ps чтобы ограничить вывод только полями PID и COMM и ARG, а затем, в частности, соответствием COMM и ARGS, но риски ложноположительного совпадения кажутся мне низкими.

    Linux и Unix - лучшая ОС в мире.