寻求干净的决议僵尸谁造成的git fetch / ubuntu motd

我有同样的[Ubuntu 10.04]服务器上运行jenkinsgitosis。 Jenkins从gitosis(也运行在同一台服务器上)的回购中获取git提交。 实际上,因为jenkins有很多工作,所以很多回购。 我偶尔who遇到一个僵尸进程,其根本原因似乎是Ubuntu特定的脚本来更新/ etc / motd。 以下是今天早些时候stream程表的一部分(部分):

 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> 

为了清除它,我基本上杀死了僵尸的每一个家长,然后僵尸消失了。

任何想法如何防止这种情况发生或优雅地处理它呢?

有时候有一些方法可以禁用这些motd脚本吗? 就像Je​​nkins只在做git fetch ? 实际上,当gitosis用户试图进入SSH(例如,任何git客户端/服务器交互发生)时,我可以以某种方式禁用motd脚本。

也许有一个简单的方法Bash杀死任何git进程剩下一个多小时? 啊。

我通常喜欢这些脚本提供的方便motd,所以我不想完全禁用它们。 如果他们自己超时,肯定会很好。 为什么在每次login时都更新了motd? 一天一天好像很多。

我真的不想切换到gitolite或不同的git服务器,gitosis否则工作正常。 除了SSH之外,我不想切换到另一个协议。 gitosis依靠SSH。 由于gitosis运行在同一台服务器上,我应该可以使用file:///语法来引用git存储库。 我现在就给一个镜头。 更新… nope,这将无法正常工作,因为它绕过gitolite,不会允许jenkins推回标签上游。 我可以给jenkins更多的ACL,但我宁愿坚持gitolite。

注意: 这将不会有帮助,因为在SSH连接build立出现问题。

如果我正在阅读这个权利,我喜欢认为我是..

然后你要求一个非常迂回的方式来禁用ubuntu上的update-motd

看一下/etc/cron.d/etc/cron.d/update-motd ,如果你已经有了,可以把它改为/ tmp。 这应该阻止它。

我不认为你应该杀死长时间运行的进程。 我认为,尽pipe禁用update-motd没有什么坏处。

你可能想看看/etc/update-motd.d

/ usr / sbin / update-motd使用运行部分按照文字顺序执行/etc/update-motd.d中的每个脚本,并将结果与​​当日消息标题/etc/motd.tail连接起来。

通过这种方式,用户甚至其他软件包可以将脚本拖放到/etc/update-motd.d中以影响MOTD。 (从https://wiki.ubuntu.com/UpdateMotd解除&#xFF09;

这里有一个别人跟你一样讨厌更新的博客post ;)