J'ai essayé ce code et ça ne marche pas
#!/bin/sh
#Find the Process ID for syncapp running instance
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
Kill -9 PID
fi
Il montre une erreur près de awk.
Toutes les suggestions s'il vous plaît.
En fait, le moyen le plus simple consiste à passer des arguments de type kill, comme ci-dessous:
ps -ef | grep your_process_name | grep -v grep | awk '{print $2}' | xargs kill
J'espère que ça aide.
Cela fonctionne bien pour moi.
PID = `ps -eaf | grep syncapp | grep -v grep | awk '{print $ 2}' ` if [[" "!! =" $ PID "]]; puis echo "massacre $ PID" tuer -9 $ PID fi
J'utilise la commande pkill
pour ceci:
NAME
pgrep, pkill - look up or signal processes based on name and
other attributes
SYNOPSIS
pgrep [options] pattern
pkill [options] pattern
DESCRIPTION
pgrep looks through the currently running processes and lists
the process IDs which match the selection criteria to stdout.
All the criteria have to match. For example,
$ pgrep -u root sshd
will only list the processes called sshd AND owned by root.
On the other hand,
$ pgrep -u root,daemon
will list the processes owned by root OR daemon.
pkill will send the specified signal (by default SIGTERM)
to each process instead of listing them on stdout.
Si votre code est exécuté via un interpréteur (Java, python, ...), le nom du processus est le nom de l'interpréteur Vous devez utiliser l'argument --full. Cela correspond au nom de la commande et aux arguments.
Vous vouliez probablement écrire
`ps -ef | grep syncapp | awk '{print $2}'`
mais je vais approuver la réponse de @ PaulR - killall -9 syncapp
est une bien meilleure alternative.
De nombreux systèmes * NIX ont également pkill (1) et killall (1) , ou les deux, ce qui vous permet de tuer les processus par leur nom. En les utilisant, vous pouvez éviter tout le problème d'analyse ps
.
Entré quelque part ... pensais que c'est simple et utile
Vous pouvez utiliser la commande directement dans crontab,
* * * * * ps -lf | grep "user" | Perl -ane '($h,$m,$s) = split /:/,$F
+[13]; kill 9, $F[3] if ($h > 1);'
ou, nous pouvons l'écrire en tant que script Shell,
#!/bin/sh
# longprockill.sh
ps -lf | grep "user" | Perl -ane '($h,$m,$s) = split /:/,$F[13]; kill
+ 9, $F[3] if ($h > 1);'
Et appelez ça crontab comme ça,
* * * * * longprockill.sh
Cela devrait tuer tous les processus correspondant au grep que vous êtes autorisé à tuer.
-9 signifie "Tuez tous les processus que vous pouvez tuer".
kill -9 $(ps -ef | grep [s]yncapp | awk '{print $2}')
#!/bin/sh
#Find the Process ID for syncapp running instance
PID=`ps -ef | grep syncapp 'awk {print $2}'`
if [[ -z "$PID" ]] then
---> Kill -9 PID
fi
Vous ne savez pas si cela vous aidera, mais «tuer» n'est pas orthographié correctement… .. c'est en majuscule.
Essayez de "tuer" à la place.