2017-07-17 5 views
-1

Je suis en train de tuer un processus linuxTuer un processus linux

ps -aux 
root  14074 0.0 0.4 6586120 67452 pts/0 Sl 22:45 0:01 java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain 

tuer le processus dans le script d'arrêt en utilisant la commande ci-dessous

ps aux | grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | \ 
grep -v grep | awk '{print $2}' | xargs kill -9 

problème est cette commande fonctionne très bien quand cronscheduler.QuartzMain est en cours d'exécution. Mais quand ce processus est déjà tué alors la commande ci-dessus lance erreur

Usage: 
kill [options] <pid|name> [...] 

Vos entrées sur la suppression des erreurs sont appréciés

+1

Voulez-vous supprimer le message d'erreur ou simplement l'ignorer? – Evert

+0

Puisqu'il n'y aura pas de processus en cours, vous n'obtiendrez aucun identificateur de processus, donc la commande finale n'aura pas l'ID de processus – Gaurav

+0

@ Evert Je veux supprimer le message d'erreur – Zaks

Répondre

1

pkill peuvent effectuer des recherches par la ligne de commande complète. Essayez

pkill -9 -f 'java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain' 

Votre commande peut créer des erreurs, car il envoie plus que le pid (la ligne complète de ps) pour tuer.

+0

On dirait que vous venez de le retirer de la question mais normalement '-9 'devrait être évité. – hek2mgl

+0

Oui, vous devez utiliser '-9' uniquement si nécessaire. – clemens

0

Une de la solution que j'ai trouvé de rediriger le message d'erreur: chat /etc/*.conf 2>/dev/null

0
ps aux | grep httpd 

httpd 3486 0.0 0.1 4248 1432 ?  S Jul31 0:00 /usr/sbin/httpd -f /etc/httpd/httpd.conf 

# kill 3486 

OU

$ sudo kill 3486 
0

S'il vous plaît essayer ci-dessous ce aidera à effacer les identifiants de processus enfant aussi bien.

for i in `ps -ef| grep "java -cp target/cronscheduler-1.0-SNAPSHOT.jar com.cronscheduler.QuartzMain" | grep -v grep | awk '{print $2}'`   
do 
    ptree $i|awk '{print $1}' >>pids.txt 
done 
for i in $(cat pids.txt) 
do 
    kill -9 $i 
done