最近我正在使用puppeteer来自动获取和保存一些网页。铬使用suid chrome_sandbox作为沙箱。
问题在于,有时脚本崩溃是由于我做的一些愚蠢的错误,例如使用等待异步方法或系统耗尽资源。在脚本崩溃后我发现有几个chrome_sandbox仍然存活并由systemd检索,其用户是root用户因为suid。
对情况的一个主要猜测是,node.js可能会将sigkill发送到其子进程,以便立即杀死chrome进程。但由于chrome_sandbox是由root运行的,因此node.js可能无法发送信号SIGKILL并获得“权限被拒绝”。
我想知道在任何情况下脚本都能正常关闭铬吗?以及node.js如何处理它有异常并具有子进程的情况?它发送sigint sighup sigkill或sigterm吗?我很困惑。