Eu tenho jenkins e gitosis rodando no mesmo servidor [Ubuntu 10.04]. Jenkins obtém git commits de um repo servido por gitosis (também rodando no mesmo servidor). Muitos repos, na verdade, já que existem muitos trabalhos em Jenkins. De vez em quando eu acabo com um processo de who
de zumbi, onde a causa raiz parece ser alguns scripts específicos do Ubuntu para atualizar o / etc / motd. Veja como (parte da) tabela de processos se parecia hoje:
jenkins 30042 1 0 Mar19 ? 00:00:00 git fetch -t [email protected]:testRepo.git +refs/heads/*:refs/remotes/origin/*
jenkins 30060 30042 0 Mar19 ? 00:00:00 ssh [email protected] 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>
Para esclarecer, eu basicamente acabei de matar todos os pais do zumbi who
, então o zumbi desapareceu.
Alguma idéia de como evitar que isso aconteça ou lidar com isso de forma graciosa quando isso acontece?
Existe alguma maneira de desativar esses scripts às vezes ? Como, somente quando Jenkins está fazendo git fetch
? Na verdade, o que seria perfeito seria se eu pudesse de alguma forma desabilitar os scripts do MOTD sempre que o usuário da gitosis tentasse fazer o SSH (por exemplo, sempre que qualquer interação cliente / servidor do git ocorresse).
Talvez haja uma maneira direta com o Bash para matar qualquer processo do git que esteja funcionando por mais de uma hora? Ugh.
Eu geralmente gosto do manuseio fornecido por esses scripts, então não quero desabilitá-los completamente. Claro que seria legal se eles dessem tempo por conta própria. Por que diabos o motd é atualizado em cada login? Uma vez por dia parece ser muito.
Eu realmente não quero mudar para gitolite ou um servidor git diferente, a gitose funciona bem. Eu não quero mudar para outro protocolo além do SSH; A gitose depende do SSH. Como o gitosis está rodando no mesmo servidor, eu devo ser capaz de me referir aos repositórios git usando a sintaxe file:///
. Vou dar uma chance agora. Update ... não, isso não vai funcionar, já que ignora o gitolite e não permite que os jenkins redirecionem as tags para o upstream. Eu poderia dar jenkins mais ACLs, mas eu prefiro ficar com gitolite.
Nota: isso não ajuda, já que aparece o problema ocorre após a conexão SSH é estabelecida.