2 votos

¿Cómo detectar cuándo se inicia un proceso en MacOS?

Lo que estoy tratando de hacer es: matar un proceso cuando se inicia. Así que me gustaría saber que cómo detectar cuando un proceso se inicia? ¿O cómo bloquear un proceso o una aplicación para que no se inicie?

¿Se agradece cualquier sugerencia?

0 votos

¿Hay algún proceso en particular del que quiera ocuparse? ¿Quiere matar el proceso o impedir que se inicie?

0 votos

@Mark No hay un proceso concreto. Impedir que se inicie sería mejor.

0 votos

Lo obvio es eliminar el ejecutable - Esto parece un problema de XY, ¿qué estás tratando de hacer. Algunos procesos se reinician automáticamente si se matan por muchos matar después de 5 segundos (como en la respuesta) es demasiado tarde han hecho el daño. Es mejor atacar el problema de otra manera

1voto

Pirooz Puntos 486

Crear la aplicación

Abrir esto en script Editor y exportarlo como un Sólo lectura aplicación y asegúrese de que permanecer abierto después de la ejecución del manipulador está apagado

Después de exportar siga este para evitar que aparezca en el muelle.

# Block Apps By Josh Brown
# Last Modified: Aug 23 2018
global applist

on run
    set applist to {"Google Chrome", "App Store"} -- Apps to limit
    if checkapps() then
        killall()
    end if
end run
on is_running(appName)
    try
        if (the length of (do shell script "pgrep -x " & quoted form of appName) > 0) then
            kill(do shell script "pgrep -x " & quoted form of appName)
        end if
    end try
end is_running

on checkapps()
    set x to false
    repeat with a from 1 to length of applist
        is_running(item a of applist)
    end repeat
    return x
end checkapps

on kill(theID)
    do shell script "kill -9 " & theID
end kill

Crear el LaunchDaemon

Nota: Debes ser un administrador para hacer esto.

Guarde el siguiente archivo en /Library/LaunchDaemons/

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
    <dict>
        <key>Label</key>
        <string>com.PlzUpvoteMy.answer</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/open</string>
            <string>-W</string>
            <string>**/path/to/application.app**</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>5</integer>
        <key>UserName</key>
        <string>**UserToBlock**</string>
    </dict>
</plist>

Cambie los permisos con el siguiente comando:

sudo chown root:wheel /Library/LaunchDaemons/com.MyName.plist

Cargar el Daemon

Nota: Debes ser administrador para hacer esto.

Para iniciar el demonio utilice este comando:

sudo launchctl load /Library/LaunchDaemons/com.MyName.plist 

El programa buscará las aplicaciones cada 5 segundos y las cerrará si se están ejecutando.

Para detener el Daemon utilice este comando

sudo launchctl unload /Library/LaunchDaemons/com.MyName.plist

0 votos

Gracias, @JBis . No estoy tratando de averiguar qué proceso se está ejecutando. Estoy tratando de evitar que un proceso se ejecute o se inicie. Si es imposible, estoy tratando de averiguar cómo matar a un proceso una vez que se inicia.

0 votos

@user174782 Por favor, comprueba el enlace. Si pones el límite de tiempo a 0/alteras el código a tus necesidades hará exactamente lo que buscas

0 votos

Muy buen trabajo, @JBis. ¿Hay alguna forma de mantenerlo en segundo plano? Para que al arrancar el sistema se inicie el script. Y añadirlo a los elementos de inicio de sesión del usuario no es una buena idea, porque la gente lo eliminará, ya sabes.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X