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?
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 haveps
. 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
spawn
s,exec
s, andfork
s influence/proc
, and whether enumerating and killing/proc/<pid>/task/<tid>
s is as effective as relying onps
– 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 aspawn ps ENOENT
error is thrown?