Назад | Перейти на главную страницу

избегайте зомби-процессов при использовании в

я использую в для планирования сценария в контейнере Docker на основе Centos.

например echo "bash /path/to/script.sh" | at now + 1 minute

В основном он работает так, как ожидалось, за исключением того, что он каждую минуту вызывает зомби-процесс. Я предполагаю, что поведение связано с этой строкой в ​​документации:

  1. Ат-задание выполняется при отдельном вызове оболочки, выполняемой в отдельной группе процессов без управляющего терминала, за исключением переменных среды, текущего рабочего каталога, маски создания файла (см. Umask (1)) и ограничений системных ресурсов .

Я видел и пробовал предложения от Удалить процесс-зомби из таблицы процессов но безрезультатно.

Могу ли я заставить zombie ps исчезнуть или есть альтернативный способ сделать это, который не приведет к такому же результату zombie ps?

РЕДАКТИРОВАТЬ: содержимое одного из скриптов:

#!/bin/bash
exec 1> >(logger -s -t $(basename $0)) 2>&1 
#probe the seed node if this isn't the seed node
# set -ex
[[ `hostname` =~ -([0-9]+)$ ]] || exit 1
ordinal=${BASH_REMATCH[1]}
#if this is the first node then attempt to probe second until successful
if [[ $ordinal -eq 0 ]]; then
  while ! gluster peer probe {{gluster.service_name}}-1.{{gluster.service_name}}.default.svc.cluster.local; do sleep 2; done
fi
#if this is the second node then probe the first to create the trusted pool
if [[ $ordinal -eq 1 ]]; then
  while ! gluster peer probe {{gluster.service_name}}-0.{{gluster.service_name}}.default.svc.cluster.local; do sleep 2; done
fi

Я забыл опубликовать ответ, что я обошел это, просто используя cron.

(crontab -l 2>/dev/null; echo "*/1 * * * * /path/to/job -with args") | crontab -

Видеть https://stackoverflow.com/a/9625233/400048

Обратите внимание: если вы работаете в Docker, вам необходимо запустить crond.