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

  • Обмен одной колонки из файла1 с файлами из файла2
  • Конец трубы, когда программа возвращает более 1 строки
  • Как проверить несколько условий в выражении IF
  • Shellscript для удаления определенных тегов в файле HTML
  • rsync - копировать содержимое каталога только в том случае, если определенный файл не существует
  • Группировка строк в гетерогенные подмножества
  • Убивать именованный процесс старше X минут? (нет killall -o)
  • Как проверить число, меньшее другого числа
  • 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

    Почему мой ровно 100 разделов MiB при размере блока 1 KiB имеют соответствующие доступные блоки / пробелы?

    Изменение опции загрузки по умолчанию в CentOS

    может ли RandR отображать две части одного экрана на одном дисплее?

    Система WHEN снизилась (выключение питания)

    Solaris: найдите день последнего понедельника, вторника, … воскресенье с помощью сценария оболочки

    Может ли apt-get очистить с помощью apt?

    Насколько безопасно sudo при запуске от root для запуска приложения в качестве менее привилегированного пользователя?

    какая команда / пакет «играть» доступна по умолчанию в Linux Mint и как ее удалить

    Существует ли эмулятор терминала, который запоминает выходные данные своего последнего запуска?

    Открыть интерактивный текст в emacs в новом / соседнем окне

    Добавление псевдонима в / etc / hosts для Linux OVM

    Объединение двух файлов в столбцы

    Инструмент, подобный Grep, для отображения определенной области текста относительно шаблона

    Что означает :: 1 в Exim mainlog в rip и lip в журнале?

    Как смонтировать / usr на другом разделе, но использовать папку с именем / usr в этом разделе вместо использования / as / usr?

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