Gil*_*il' 13
通常的方法是更改监视器程序的配置,以便它不会继续做您不希望它做的事情。我假设您出于某种原因不能这样做,但其他任何方法都是一种在所有情况下都不起作用的解决方法。
您不能将进程列入黑名单:进程是运行时实体。该进程在启动之前不存在。一旦开始,阻止它开始就为时已晚。无论如何,您将如何确定不应该开始的流程?
您可以将某个程序,或更准确地说,将某个程序的特定安装列入黑名单。所有程序都从一个可执行文件启动。所以如果你安排可执行文件不存在,它就不会启动。你可以删除它,重命名它,甚至只是让它不可执行:
chmod a-x /path/to/program
Run Code Online (Sandbox Code Playgroud)
如果您出于某种原因不想或不能修改文件系统,但具有 root 访问权限,您甚至可以使用安全框架(例如 SELinux 或 AppArmor)来禁止监视器执行此特定程序。但这更复杂。
但是,如果监视器不断尝试重新生成该程序,那么如果可执行文件消失,它可能会也可能不会明智地应对。它可能会向您发送垃圾邮件(或一些带有错误消息的日志文件)。
假设该显示器只保持程序活着(相对于检查程序的功能,例如为Web服务器进程监视器会定期尝试访问一个网页,如果没有响应,请重新启动服务器),可以取代的由一个除了永远阻塞什么都不做的程序来编程。基本实用程序集合中没有执行此操作的程序,但您可以轻松编写一个程序:
#!/bin/sh
while sleep 999999999; do :; done
Run Code Online (Sandbox Code Playgroud)
根据你为什么要阻止该程序,你可能会或可能无法通过暂停原计划的过程实现了类似的结果,与pkill -STOP programname
或kill -STOP 1234
其中1234是进程ID。这将保持进程,但在明确恢复(使用kill -CONT
)之前什么都不做。该进程不会消耗任何 CPU 时间,并且当系统需要 RAM 用于其他事情时,它的内存将被换出,但它确实会继续消耗资源,例如打开的文件。