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

Поиск чистого разрешения для зомби, вызванного git fetch / ubuntu motd

У меня jenkins и gitosis работают на одном сервере [Ubuntu 10.04]. Дженкинс получает коммиты git из репозитория, обслуживаемого gitosis (также работающего на том же сервере). На самом деле много репозиториев, поскольку в Jenkins много рабочих мест. Время от времени я получаю зомби who процесс, где основной причиной, по-видимому, являются некоторые специфичные для Ubuntu сценарии для обновления / etc / motd. Вот как (часть) таблицы процессов сегодня выглядела ранее:

jenkins  30042     1  0 Mar19 ?        00:00:00 git fetch -t gitosis@example.com:testRepo.git +refs/heads/*:refs/remotes/origin/*
jenkins  30060 30042  0 Mar19 ?        00:00:00 ssh gitosis@example.com git-upload-pack 'testRepo.git'
root     30066   703  0 Mar19 ?        00:00:00 sshd: gitosis [priv]
root     30096 30066  0 Mar19 ?        00:00:00 sh -c /usr/bin/env -i PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin /bin/run-parts --lsbsysinit /etc/update-motd.d > /var/run/motd.new
root     30097 30096  0 Mar19 ?        00:00:00 /bin/run-parts --lsbsysinit /etc/update-motd.d
root     30129 30097  0 Mar19 ?        00:00:00 /bin/sh /etc/update-motd.d/50-landscape-sysinfo
root     30148 30129  0 Mar19 ?        00:00:00 /usr/bin/python /usr/bin/landscape-sysinfo
root     30451 30148  0 Mar19 ?        00:00:00 [who] <defunct>

Чтобы прояснить это, я просто убил всех родителей зомби who, затем зомби исчез.

Есть идеи о том, как предотвратить это или изящно справиться с этим, когда это произойдет?

Есть ли способ отключить эти скрипты motd иногда? Мол, только когда Дженкинс делает git fetch? На самом деле, было бы идеально, если бы я мог каким-то образом отключить сценарии motd всякий раз, когда пользователь gitosis пытается подключиться к SSH (например, всякий раз, когда происходит какое-либо взаимодействие git клиент / сервер).

Может быть, с помощью Bash есть простой способ убить любой процесс git, работающий более часа? Тьфу.

Я вообще лайк удобный motd, предоставляемый этими скриптами, поэтому я не хочу полностью их отключать. Конечно, было бы неплохо, если бы они отключили тайм-аут самостоятельно. Какого черта motd обновляется при каждом входе в систему? Один раз в день кажется достаточно.

Я действительно не хочу переключаться на гитолит или другой сервер git, иначе гитозис работает нормально. Я не хочу переключаться на другой протокол, кроме SSH; gitosis полагается на SSH. Поскольку gitosis работает на том же сервере, я должен иметь возможность обращаться к репозиториям git, используя file:/// синтаксис. Я сделаю это сейчас. Обновить ... нет, это не сработает, так как это обходит гитолит и не позволяет Дженкинсу возвращать теги вверх по течению. Я мог бы дать Дженкинсу больше ACL, но я бы предпочел гитолита.

Примечание: этот не поможет, так как кажется, что проблема возникает после соединение SSH установлено.

Если я правильно это читаю и мне нравится думать, что я ...

Тогда вы просите очень окольный способ отключить update-motd на убунту.

Посмотреть в /etc/cron.d для /etc/cron.d/update-motd, и если он у вас есть, перенесите его в / tmp. Это должно остановить это.

Я не думаю, что вам следует убивать долго работающие процессы. Я считаю, что отключение не принесет вреда update-motd хотя.

Возможно, вы захотите заглянуть внутрь /etc/update-motd.d

/ usr / sbin / update-motd использует run-parts для выполнения каждого скрипта в /etc/update-motd.d в лексиграфическом порядке, объединяя результаты с заголовком сообщения дня, /etc/motd.tail.

Таким образом, пользователи или даже другие пакеты могут помещать скрипты в /etc/update-motd.d, чтобы повлиять на MOTD. (Снято с https://wiki.ubuntu.com/UpdateMotd)

Вот пост в блоге от кого-то еще, кто ненавидит update-motd так же сильно, как и вы;)