linux script per uccidere il processo java

Voglio linux script per uccidere programma java in esecuzione su console.

Seguente è il processo in esecuzione come jar.

[[email protected]-dlap0 ~]$ ps -ef |grep java
rapp    9473    1  0 15:03 pts/1    00:00:15 java -jar wskInterface-0.0.1-SNAPSHOT-jar-with-dependencies.jar
rapp   10177  8995  0 16:00 pts/1    00:00:00 grep java
[[email protected]-dlap0 ~]$
  • non pkill java conte?
InformationsquelleAutor d-man | 2012-12-04



4 Replies
  1. 88

    Si può semplicemente utilizzare pkill -f come questo:

    pkill -f 'java -jar'

    EDIT: Per uccidere un particolare processo di java in esecuzione il vostro specifico vaso di usare questa espressione regolare in base pkill comando:

    pkill -f 'java.*lnwskInterface'
    • posso uccidere dal nome del file jar ?
    • Sì, è possibile aggiungere il nome del file jar e.
    • ora il mio vaso in ps sembra rcapp 23671 1 16 11:23 pts/0 00:00:03 /usr/java/jdk1.6.0_37//bin/java -Xmx2048m -Drdc.log.file=/home/rapp/apps/LNWSKInterface/logs/dev.log -jar /home/rapp/apps/LNWSKInterface/jar/lnwskInterface.jar e se faccio pkill -f “java-jar” non funziona. posso utilizzare la wild card come segue pkill -f ‘java *-jar’ ?
    • È possibile utilizzare: pgrep -if 'java .*-jar'
    • questo lavoro per me “pgrep -f ‘java .*-jar'”
    • ma quando ho provato pkill -f pgrep -f ‘java .*-jar ” non ha funzionato… dà aiuto di opzione
    • Si può semplicemente fare: kill $(pgrep -f 'java .*-jar')
    • questo funziona anche kill -9 ps -ef | pgrep -f 'java .*-jar' ma mi piace ‘anubhava dell’ans è semplice.
    • mi dispiace, ma il mio nome jar è ‘lnwskInterface’ e non ci possono essere più di una vasetti di esecuzione voglio uccidere solo il mio vaso ho provato a “uccidere $(pgrep -f ‘java .*lnwskInterface-jar”)” mi potete aiutare pls
    • Non capisco qual è il problema, anche pkill -f 'java.*lnwskInterface' dovrebbe funzionare.
    • gr8 grazie anubhava
    • si sono molto utili, io sono grato a voi, una ultima domanda che ho esportare la variabile $app=lnwskInterface quando ho provato pkill -f ‘java.*$app’ non ha funzionato. grazie per l’aiuto in anticipo
    • provare i doppi apici invece come questo: pkill -f "java.*$app"
    • questo è impressionante funziona. grazie di nuovo.
    • Sto uccidendo il processo java utilizzando shell_exec(‘kill -9 $pid’) ma io voglio impostare il limite di tempo come questo, $pid del processo dovrebbe essere eliminato automaticamente dopo 1 minuto. Così, come posso impostare questo vincolo di tempo qui??
    • Probabilmente si può usare: sleep 60; kill -9 $pid
    • pkill -f “java-jar nameSpecific.jar’

  2. 36

    Se si desidera solo per uccidere qualsiasi/tutti i processi java, quindi tutto ciò che serve è;

    killall java

    Se, tuttavia, si vuole uccidere il wskInterface processo in particolare, allora il modo c’è, basta togliere l’id di processo;

    PID=`ps -ef | grep wskInterface | awk '{ print $2 }'`
    kill -9 $PID

    Dovrebbe farlo, probabilmente c’è un modo più semplice, anche se…

    • Sono sempre stupito di vedere greps convogliato in awks!!! Dovremmo chiamare questa Inutile l’Uso Di Grep? Comunque, è molto meglio usare pkill con il -f opzione come anubhava menzionato (se si dispone di pkill installato, naturalmente, e se ha l’ -f opzione).
    • Ho provato “PID=ps -ef | grep wskInterface | awk '{ print $2 }' kill -9 $PID” e trovato -bash: kill: (10395) – assenza di tale processo. effettivamente ucciso il processo, ma anche dare l’errore
    • Questo perché si è tentato di uccidere il ps processo stesso… :-(. Non usare questo metodo, utilizzare anubhava del posto.
    • Trovo grep per essere un po ‘ più facile quando si tratta di filtrare le righe. E sì, ho capito che questo metodo è un po ‘ spento quando ho digitato, ma dovrebbe funzionare. Ed è beardy, che mi piace.
    • ps -ef | grep wskInterface | grep -v grep | awk '{ print $2 }' ignora il proprio comando grep.
  3. 0

    Utilizzare jps elenco java in esecuzione processi. Il comando restituisce l’id di processo insieme con la classe principale. È possibile utilizzare il comando kill per uccidere il processo restituito l’id o usare uno script liner.

    kill $(jps | grep <MainClass> | awk '{print $1}')

    MainClass è una classe nel tuo esecuzione di un programma java che contiene il metodo main.

    • questo mi dà un errore di sintassi sul tubo
    • Tenta di uccidere $(jps -l | grep <fully.qualified.ClassName> | awk '{print $1}')
    • il problema sembra essere il grep. Uno dei vostri suggerimenti funziona solo una volta prendo il grep
  4. 0

    pkill -f per qualsiasi motivo non funziona per me. Qualsiasi cosa che fa, sembra molto pignolo su in realtà un grep attraverso ciò che ps aux mi mostra chiaramente c’è.

    Dopo un pomeriggio di giuramento sono andato per mettere i seguenti nel mio script di avvio:


    (ps aux | grep -v -e 'grep ' | grep MainApp | tr -s " " | cut -d " " -f 2 | xargs kill -9 ) || true

Lascia un commento