我看到每隔 30 秒就会git status -s
出现一次top
,但不知道是什么调用了此命令。它显示 CPU 使用率为 20%–60%(在运行 Debian 8.1 的繁忙的 24gb 生产 Linode 上),所以我想消除这种情况。
关于如何追查此问题的根源,您有什么想法吗?我没有调用 git 的 cronjobs,也没有经常运行的 cronjobs。
8332 myusername 20 0 177936 5564 4940 R 17.9 0.0 0:00.54 git status -s
... 30sec later
8395 myusername 20 0 177936 5616 4992 R 21.6 0.0 0:00.65 git status -s
... 30sec later
8444 myusername 20 0 177936 5508 4880 R 23.2 0.0 0:00.70 git status -s
... etc
我猜有一种方法可以监视正在运行的命令并捕获有关它的信息以跟踪源。PID 每次调用时都会发生变化,因此它不是一个长时间运行的过程,而且只存在一两秒钟,因此很难深入挖掘。
非常感谢您的帮助!
更新:事实证明它与 pm2 有某种关系,请参阅:https://github.com/Unitech/PM2/issues/924
我有一个简单的节点应用程序,它连接到 redis 和 socket.io 并向用户广播实时通知。
我的应用程序没有显示任何重启,pm2 monit
并且我已将所有节点模块和 pm2 更新到最新版本,但我仍然看到git status -s
每 30 秒出现在顶部。
答案1
您应该能够让审计子系统来帮助您。添加一条在执行 /bin/git(或您的 git 所在的任何地方)时触发的规则
auditctl -w /bin/git -p x -k git_was_run
-w file to watch
-p what to watch for
-k a key to log
然后您可以使用 ausearch 查找相关的日志条目
ausearch -k git_was_run
应该会产生大量的输出,可能会帮助你回溯。