我有一个应用程序启动了许多 nodeJs 进程。这些进程并非都运行相同的 JS 代码,进程大约有三种类型的“角色”。目前,如果我运行类似htop
查看 CPU 使用率的程序,我无法区分正在运行的不同脚本(例如,如果某个脚本占用了大量 CPU,我无法知道节点进程正在运行哪个 JS 脚本)。
有人能建议一种方法来让我识别特定节点进程正在运行哪个 JS 脚本吗?(最好通过 shell)。
答案1
如果这些进程都是同一个脚本文件或可执行二进制文件,则无法判断,因为该信息保存在程序本身的“内部”。您可以通过查看进程打开的文件 (lsof) 或打开的网络连接 (netstat) 来间接推断。根据脚本的作用,类似的次要信息可能会提供线索。
另一方面,如果每个脚本实际上是系统上单独的可执行文件,那么您可以从 /proc/[pid]/cwd、/proc/[pid]/cmdline 和 /proc/[pid]/environ 中提取所需的信息。
如果其他方法都失败了,您可以选择在正在运行的进程上使用 Gnu 调试器 (gdb) 的困难方法。