pkrumins / node-tree-kill

kill trees of processes
MIT License
333 stars 37 forks source link

Kill processes via `/proc` if `ps` is not available #36

Open ryanblock opened 3 years ago

ryanblock commented 3 years ago

Semi-related to https://github.com/pkrumins/node-tree-kill/issues/29

We recently ran into tree-kill failures because AWS Lambda's Linux container (Amazon Linux 2) does not have ps. I was able to work around this by detecting the Lambda environment and attempting to (mis)use the /proc dir to kill processes: https://github.com/architect/sandbox/pull/594/files

(Related: super open to feedback on whether you feel this approach was properly executed in the PR linked above. It's a bit mysterious how Node nested spawns, execs, and forks influence /proc, and whether enumerating and killing /proc/<pid>/task/<tid>s is as effective as relying on ps – but this approach does correctly terminate child processes in Lambda and non-Lambda Linux.)

Would you be amenable to a PR that makes a best effort to use ps on Linux, but then backs off to using /proc if a spawn ps ENOENT error is thrown?