Убивать детские задания, длительностью более 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 минут, и убить их?

  • Как переместить файл, если имя папки содержит имя файла
  • Получение полной командной строки, вызвавшей ERR, в то время как ловушка
  • sed: захват и замена всех данных между последней обратной косой чертой и запятой
  • Восстановление опции в конце функции в zsh
  • Как захватить вывод из команды в сценарии оболочки
  • Тысяча разделителей в awk
  • поиск имен папок на основе списка, содержащегося в файле .txt
  • Запускать while в сценарии systemd
  • 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, но риски ложноположительного совпадения кажутся мне низкими.

    Interesting Posts

    i3wm: более 10 рабочих пространств с двойным ключом-модификатором?

    Как использовать SSH-ключи для SSH без пароля через приложения X11 (например, nautilus)?

    Debian / Jessie: Самый простой способ подключения к VPN (Ipsec)

    Закрытие терминала при использовании команды «login»

    Что означает ACPI NMI LINT? и почему он меняет версию ядра?

    Неполадка установки раздела диска GPT

    Настройки по умолчанию для машин VirtualBox?

    Как использовать замещение процесса внутри case-case без получения синтаксических ошибок?

    Fail2Ban не может запретить!

    Debian не может найти загрузочное устройство

    Возможно ли, чтобы завершение bash проходило через альтернативы?

    Что такое эквивалентная опция gnu-netcat в -ncat?

    Linux KVM uefi vs bios & PCI-Passthrough

    Обновления приложений внутри контейнеров Docker?

    Что мне нужно в моем скрипте, чтобы иметь возможность изменять право собственности на структуру каталогов, принадлежащую root, текущему пользователю, выполняющему сценарий bash?

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