Actuellement, j'utilise une ligne comme celle-ci dans mon fichier de script sh:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Mais je me demande comment l'appeler uniquement si le processus ( myServer
ici) est en cours d'exécution?
bash
command-line
kill
myWallJSON
la source
la source
kill
uniquement lorsque le processus est en cours d'exécution, car il existe une condition de concurrence entre le test et l'invocation dekill
(il est possible que le processus se soit arrêté pour une autre raison dans ce court laps de temps). Vous devez utiliserpkill
oukillall
qui font exactement la même chose que ce que vous essayez de faire, mais avec moins à taper (et probablement aussi d'autres avantages).Réponses:
J'utilise habituellement juste pgrep et pkill
la source
pkill myServer
oukillall -q myServer
? Il n'y a aucun inconvénient à tenter de tuer des processus inexistants.|| true
ensuite.if ! killall -q myServer; then echo ERROR; fi
?Vous pouvez tuer les processus par leur nom en utilisant
pkill
oukillall
, consultez leurs pages de manuel.la source
kill
, cela ne tue que si le processus est en cours d'exécution. Par exemplepkill -u myuser -f myprocess\.[0-9]+
Un peu d'une approche différente serait quelque chose comme ceci:
Cela évitera le
1
code d'erreur renvoyé par lakillall
commande, si le processus n'existait pas. Laecho
partie n'entrera en action que si ellekillall
revient1
, tandis que elle-même reviendra0
(succès).la source
killall -q
vaut mieux utiliserkillall -q
n'est pas pris en charge sur toutes les versions Unix, macOS Catalina ne l'a toujours pas.essayez d'utiliser:
où nom_processus est le nom du processus que vous souhaitez tuer. Ce qui est génial, c'est que pidof listera les pid de tous les processus correspondant au nom donné. Puisque kill accepte plusieurs pid, il les tuera tous dans un seul caprice.
Faites-moi savoir si cela aide.
la source
kill `pidof process_name
. S'il retourne une liste vide, sautez l'appel kill.Petit script que j'ai créé avec R&D. J'espère que tu l'aimeras
enregistrez-le avec un nom comme script.sh puis
Donnez ensuite le nom de votre processus.
Remarque: j'ai essayé plusieurs fois avec cela et c'est bien.
la source
Vérifiez si le processus existe avec
pidof
. Si c'est le cas, tuez-le:Le code de sortie est toujours 0 après avoir exécuté la commande ci-dessus.
la source
Utiliser
pkill
avec option-f
L'option
-f
est le modèle qui correspond normalement au nom du processus.la source
J'utiliserais:
Le
xargs -r
dit d'exécuter kill uniquement s'il y a une entrée. Leps --no-header -eo pid,cmd
obtient la sortie dans un meilleur format pour l'analyse.la source