У меня 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 так же сильно, как и вы;)