Cómo usar el nombre de una aplicación para matarlo desde un script

3

Estoy tratando de crear un trabajo cron para evitar que los niños en una escuela ejecuten el servidor de Minecraft. (Realmente los necesitamos para ejecutar el cliente de Minecraft porque lo usamos para enseñar programación). El nombre del PROCESO siempre es "java". Eso no es útil para mí.

Encontré una forma de utilizar jps y lsof para obtener el tamaño de archivo de todos los archivos .jar en ejecución. Podría matar procesos basados en eso, pero parece desordenado.

El nombre de la Aplicación (no el proceso) que ejecuta el servidor de Minecraft (como se muestra con el logotipo de Apple en la esquina superior izquierda de la pantalla) Y su nombre de clase de Java son net.minecraft.server. MinecraftServer pero nunca puedo obtener esa cadena desde la línea de comandos, sin importar cuántas variaciones de ps intento. ps y top siempre llaman al proceso "java". Es fácil encontrar el nombre del archivo que se está utilizando, pero es inútil porque se modifica fácilmente.

¿Hay una manera buena y limpia de encontrar si la aplicación o la clase de Java net.minecraft.server.MinecraftServer se está ejecutando y cuál es su proceso?

    
pregunta eje211 14.03.2014 - 06:44

1 respuesta

2

El servidor de Minecraft debe ser detectable a través de los argumentos pasados a su proceso java .

Sobre en Unix & Linux, la pregunta proceso de eliminación basado en argumentos aborda este problema: cómo para matar un proceso java específico basado en sus argumentos de línea de comando.

La respuesta principal recomienda usar pkill con el indicador -f para eliminar según los argumentos asociados con un proceso específico. El comando final puede ser tan simple como:

pkill -f 'MinecraftServer'

Con respecto al uso de cron , esto está bien, pero Apple recomienda migrar a launchd como cron es menos eficiente .

    
respondido por el Graham Miln 14.03.2014 - 09:23

Lea otras preguntas en las etiquetas