ps -aux | grep 节点结果:
root 2814 0.0 0.0 4344 0 ? S Mai27 0:00 sh -c node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js
root 2815 0.0 0.0 1358316 1096 ? Sl Mai27 0:17 node ./node_modules/webpack-dev-server/bin/webpack-dev-server.js
root 2881 0.0 0.0 4344 0 ? S Mai27 0:00 sh -c npx webpack --mode development && node ./build/bundle.js
root 2910 0.0 0.7 1262156 63004 ? Sl Mai27 0:47 node ./build/bundle.js
sudo Kill 2814 2815 1881 2910
导致权限被拒绝。
据我所知,如果您在没有 sudo 的情况下运行它,并且该用户不是您执行任务的用户,那么权限被拒绝是有意义的。但是,在这里我没有任何线索,有人可以解释为什么有时无法使用 sudo 杀死根进程吗?这有什么意义吗? (特别是因为这只是我自己项目的一个webpack过程,所以不太明白。)
最佳答案
由于您使用的是 Linux (Ubuntu) - 如果 sudo Kill
仍然给出 permission returned
那么可能是因为您正在容器化应用程序中运行(例如 Snap app)如VSCode的集成终端。尝试从另一个不是 Snap 应用程序的终端运行 sudo Kill
,例如 Alacritty、gnome-terminal、Konsole 等。
更多信息:
这些类型的容器化应用程序(Snap、Flatpak 等)通常受到 AppArmor 的限制配置文件可防止进行某些系统调用(也称为“系统调用”)。
kill
命令的工作原理是创建 signal()
系统调用。如果 signal
系统调用被应用于您正在使用的终端的 AppArmor 配置文件阻止,则可能会导致权限被拒绝。
您可以通过检查内核日志来检查是否发生这种情况(运行命令dmesg
)。示例:
[ 6405.232002] audit: type=1400 audit(1658415742.446:231): apparmor="DENIED" operation="signal" profile="docker-default" pid=89218 comm="kill" requested_mask="receive" denied_mask="receive" signal=kill peer="snap.code.code"
错误消息的关键部分是:apparmor="DENIED"operation="signal"... signal=kill
。这意味着 AppArmor 正在阻止试图终止进程的signal
系统调用。
关于ubuntu - sudo Kill 导致权限被拒绝,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56459443/