进程可以在运行时使用setproctitle
方法更新它们的"command"字段。这将改变进程在几个命令中的显示方式:
$ ps 33933
PID TT STAT TIME COMMAND
33933 s000 S 0:00.52 spring server | todo-mvc | started 45 hours ago
然而,spring
不是可执行文件,这实际上是一个ruby脚本,所以我要找的输出是/Users/rpatterson/.rvm/rubies/ruby-2.3.1/bin/ruby
。
这篇博文解释了如何使用一个看似没有文档的方法proc_pidpath
来获得真正的路径。活动监视器还正确显示ruby
,这将足够接近我找到并杀死相关进程。
如何在不编译自己的程序的情况下从命令行获得这些信息?
一个不完整的答案实际上实现了我的目标:
fuser $(which ruby) | xargs ps
这允许我识别哪些进程从特定的ruby
启动,但可能包括误报(例如,附加的调试器也将被列出)。