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?
J'utilise habituellement juste pgrep et pkill
if pgrep myServer; then pkill myServer; fi
Vous pouvez tuer les processus par leur nom en utilisant pkill
ou killall
, en consultant leurs pages de manuel.
Une approche légèrement différente ressemblerait à ceci:
killall PROCESS || echo "Process was not running."
Cela évitera le 1
Error-Code renvoyé par la commande killall
, si le processus n’existait pas. La partie echo
n'entrera en action que si killall
renvoie 1
, alors que lui-même retournera 0
(succès).
Petit script que j'ai créé avec R & D. J'espère que tu l'aimeras
#!/bin/bash
echo " Enter the process name:"
read $proc_name
if pgrep $proc_name
then
echo " $proc_name running "
pkill $proc_name
echo "$proc_name got killed"
else
echo " $proc_name is not running/stopped "
fi
enregistrez-le sous un nom tel que script.sh puis
chmod +x script.sh
./script.sh
Puis donnez le nom de votre processus.
Note: J'ai essayé plusieurs fois avec ceci et c'est bien.
essayez d'utiliser:
Sudo kill `pidof process_name`
où nom_processus est le nom du processus à supprimer. 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 en un seul caprice.
Faites-moi savoir si cela aide.
Vérifiez si le processus existe avec pidof
. Si c'est le cas, tuez-le:
(! pidof process_name) || Sudo kill -9 $(pidof process_name)
Le code de sortie est toujours 0 après l'exécution de la commande ci-dessus.