Завершение с использованием подстановочных знаков в именах каталогов в bash [дубликат]

Lo normal sería cambiar la configuración del programa monitor para que no siga haciendo lo que no quieres que haga. Asumiré que no puede hacer eso por alguna razón, pero cualquier otra cosa es una solución que no funcionará en todas las circunstancias.

No puede incluir en la lista negra un proceso:un proceso es una entidad de tiempo de ejecución. El proceso no existe hasta que se inicia. Una vez que se inicia, es demasiado tarde para evitar que se inicie. ¿Y cómo identificaría el proceso que, de todos modos, no debería haber comenzado?

Puede incluir en la lista negra un programa , o más precisamente, una instalación particular de un programa. Todos los programas se inician desde un archivo ejecutable. Entonces, si hace arreglos para que el archivo ejecutable no exista, no se iniciará. Puede eliminarlo, cambiarle el nombre o simplemente hacer que no sea ejecutable:

chmod a-x /path/to/program

Si no quiere o no puede modificar el sistema de archivos por alguna razón, pero tiene acceso de root, incluso podría usar un marco de seguridad como SELinux o AppArmor para prohibir que el monitor ejecute este programa en particular. Pero eso es más complicado.

Sin embargo, si un monitor sigue intentando reaparecer ese programa, puede o no hacer frente con sensatez si el ejecutable desaparece. Puede enviarle spam (o algunos archivos de registro con mensajes de error ).

Suponiendo que el monitor solo mantiene vivo el programa (en lugar de verificar la funcionalidad del programa, p. un monitor para un proceso de servidor web podría intentar acceder periódicamente a una página web y reiniciar el servidor si no responde ), podría reemplazar el programa por un programa que no hace más que bloquear para siempre. No hay ningún programa que haga esto en la colección de utilidades básicas,pero puedes escribir uno fácilmente:

#!/bin/sh
while sleep 999999999; do :; done

Dependiendo de por qué desea bloquear ese programa, puede o no lograr un resultado similar al suspender el proceso del programa original, con pkill -STOP programnameo kill -STOP 1234donde 1234 es el ID del proceso. Esto mantiene el proceso, pero no hace nada hasta que se reanuda explícitamente (conkill -CONT). El proceso no consumirá tiempo de CPU y su memoria se intercambiará cuando el sistema requiera RAM para otras cosas, pero sigue consumiendo recursos, como archivos abiertos.

3
01.09.2016, 02:01
0 ответов

Теги

Похожие вопросы