Come usare un nome di applicazione per ucciderlo da uno script

3

Sto provando a creare un cron job per impedire ai bambini di una scuola di eseguire il server Minecraft. (In realtà abbiamo bisogno che eseguano il client di Minecraft perché lo usiamo per insegnare la programmazione.) Il nome del PROCESSO è sempre "java". Non è utile per me.

Ho trovato un modo usando jps e lsof di ottenere il file di tutti i file .jar in esecuzione. Potrei uccidere processi basati su questo, ma sembra complicato.

Il nome dell'applicazione (non del processo) che esegue il server Minecraft (come mostrato dal logo Apple nell'angolo in alto a sinistra dello schermo) E il suo nome classe Java sono entrambi net.minecraft.server. MinecraftServer ma non riesco mai a ottenere quella stringa dalla riga di comando, indipendentemente da quante varianti di ps provo. ps e top chiamano sempre il processo "java". È facile trovare il nome del file in uso, ma è inutile perché è facilmente modificabile.

C'è un modo buono e pulito per scoprire se l'applicazione o la classe Java net.minecraft.server.MinecraftServer è in esecuzione e qual è il suo processo?

    
posta eje211 14.03.2014 - 06:44
fonte

1 risposta

2

Minecraft Server dovrebbe essere rilevabile tramite gli argomenti passati al suo processo java .

Over su Unix & Linux, la domanda kill process in base agli argomenti affronta questo problema: come per uccidere uno specifico processo java in base ai suoi argomenti della riga di comando.

La risposta in alto consiglia di utilizzare pkill con il flag -f da eliminare in base agli argomenti associati a un processo specifico. Il comando finale può essere semplice come:

pkill -f 'MinecraftServer'

Per quanto riguarda l'utilizzo di cron , questo va bene, ma Apple consiglia di migrare a launchd come cron è meno efficiente .

    
risposta data 14.03.2014 - 09:23
fonte

Leggi altre domande sui tag