【发布时间】:2018-03-16 12:17:25
【问题描述】:
我需要一种方法来杀死当前目录中正在运行的所有内容。我对shell有点陌生,所以请原谅我愚蠢或可能不理解您的答案。我有一个不错的理解,但如果您愿意花额外的时间来解释您对我的问题的解决方案到底是什么,我们将不胜感激。
【问题讨论】:
-
使用
lsof列出它们。 -
有没有办法杀死它们,或者将进程设置为变量?
-
顺便说一句——如果你的目标是杀死一个进程及其所有子进程,我个人会创建并使用一个显式的锁定文件。也就是说,在启动程序之前
exec 3>file.lck,然后fuser file.lck来识别以后使用它的任何东西。fuser是否将目录中的存在视为具有目录的句柄并没有被 POSIX 很好地指定,并且在操作系统之间有所不同。 (适用于 MacOS,但我的测试并不全面)。 -
...尽管如果您的目标是执行繁重的流程监督,那么正确的做法是使用您的操作系统提供的东西。例如,如果你在 Linux 上,像 systemd 这样可以利用 cgroups 的东西在提供每个进程树的配额、控制和管理方面会做得更好。
-
@CharlesDuffy 这是特定于游戏服务器的。我想要一个脚本,它可以杀死在每个游戏服务器的根目录中运行的所有进程,无论格式如何。
标签: linux bash shell kill-process working-directory