C'è un modo per fermare un programma Java in esecuzione utilizzando uno script di shell conoscendo le alone.I nome sto usando shell kshshell script per fermare un programma Java
risposta
Aggiungere una proprietà univoca alla JVM per identificarla facilmente, ad es. per Test.class
java -Duniquename=1 test
di ucciderlo:
ps ax | grep uniquename | grep -v grep | awk '{print $1}' | xargs kill
È possibile utilizzare pkill:
pkill your_java_program_name
Funzionerebbe se si esegue solo un'istanza del programma in esecuzione.
È possibile utilizzare i jps che identificano l'id di processo associato al nome del programma java avviato (jps è un gestore di processi per i programmi java). Con questo id puoi uccidere normalmente il processo.
assumendo che il mio nome file java sia test.java e stia eseguendo come trovarlo? – Harish
+1 per avermi introdotto in jps :) – sfussenegger
@Harish: Dopo averlo compilato ed eseguito, verrà visualizzato come 'test'. Se lo impacchettate in un jar eseguibile (test.jar) ed eseguite tramite 'java -jar test.jar', jps mostra 'test.jar'. – Mnementh
seguito su Mnementh' suggestion:
questo dovrebbe fare il lavoro
jps -l | grep org.example.MyMain | cut -d ' ' -f 1 | xargs -rn1 kill
jps -l
: lista java professionista terminare con "nome pacchetto completo per la classe principale dell'applicazione o il nome percorso completo del file JAR dell'applicazione".grep
: scegli il processo che ti piacecut -d -' ' -f 1
: dividere l'output in colonne utilizzando delimitatore '' e stampare solo la prima (il PID)xargs -rn1 kill
: eseguire uccidere per ogni PID (se presente)
nota che è necessario eseguire JPS e xargs con lo stesso utente (o root), come si sta eseguendo il processo
+1 per ogni' wow 'che ho detto su ogni riga.:) – Nishant
Questo funzionerà anche per le macchine Windows, ma sarà necessario eseguire un po 'di rilevamento dell'ambiente per capire quale 'kill' usare. –
@Odelya Ho appena aggiunto '-r' (' --no-run-if-empty') a 'xargs' per evitare questo errore. – sfussenegger
è possibile utilizzare l'opzione -o di ps per formattare la vostra uscita,
ps -eo cmd,pid | awk '!/awk/&&/mycommand/{cmd="kill -9 "$2;system(cmd)}'
- 1. come utilizzare uno script di shell per supervisionare un programma?
- 2. SQLite per script di shell
- 3. compilatori per gli script di shell
- 4. Come chiamare uno script di shell dal programma PLSQL
- 5. Come eseguire un file java tramite script di shell
- 6. Come fermare un ScheduledExecutorService?
- 7. Come ottenere lo stato di completamento del programma Java dallo script di shell unix?
- 8. Test di unità per script di shell
- 9. Come eseguire uno script di shell interattivo usando java runtime?
- 10. valore restituito da script SQL per shell script di
- 11. Esecuzione di uno script di shell bash in java
- 12. Come posso scoprire quale script, programma o shell è stato eseguito il mio script Perl?
- 13. Esecuzione di un programma java da un altro programma java
- 14. Test script shell
- 15. Script della shell MongoDb
- 16. Script Comandi shell Karaf?
- 17. Importazione funzione script shell
- 18. Shell array di script
- 19. shell start/stop per script python
- 20. Ottimizza script shell per più sostituzioni sed
- 21. Controllo versione per script di shell
- 22. Script di shell per inviare e-mail
- 23. Incorporare un binario eseguibile in uno script di shell
- 24. Impostazione di Shell Script per Vagrant Setup
- 25. script di shell: if
- 26. Shell script "per" la sintassi ciclo
- 27. Pretty-print per script di shell
- 28. Esecuzione di shell-script con parametri da java
- 29. Come passare argomenti dallo script della shell wrapper all'applicazione Java?
- 30. dquote> risultato dell'esecuzione di un programma di shell Linux
Sapendo che nome? Se conosci il nome dell'eseguibile (che normalmente è 'java'),' killall' è tuo amico. – sfussenegger
@sfussenegger: Probabilmente non vuole uccidere tutti i processi java, ma solo uno specifico. – Mnementh
@Mnementh è quello che mi aspetterei anch'io, ma dalle informazioni fornite questa è la cosa migliore che potrei raccomandare. – sfussenegger