Buscando resolução limpa para zumbis que foram causados por git fetch / ubuntu motd

2

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.

    
por Adam Monsen 26.03.2012 / 23:14

1 resposta

3

Se eu estou lendo isso certo, e eu gosto de pensar que eu sou ..

Então você está pedindo uma maneira muito indireta de desabilitar o update-motd no ubuntu.

Dê uma olhada em /etc/cron.d para /etc/cron.d/update-motd e, se tiver, mv to / tmp. Isso deve parar.

Eu não acho que você deva matar processos de longa duração. Eu acho que nenhum dano pode resultar em desativar o update-motd .

Você pode querer dar uma olhada no interior de /etc/update-motd.d

/usr/sbin/update-motd uses run-parts to execute each script in /etc/update-motd.d in lexigraphic order, concatenating the results with the message-of-the-day header, /etc/motd.tail.

In this way, users, or even other packages can drop scripts into /etc/update-motd.d to affect the MOTD. (Lifted from https://wiki.ubuntu.com/UpdateMotd)

Aqui está um blogpost de outra pessoa que odeia update-motd tanto quanto você;)

    
por 26.03.2012 / 23:21