Je lance gunicorn avec la commande Django 'python manage.py run_gunicorn'. Comment puis-je arrêter gunicorn?
Remarque: j'ai un déploiement de serveur semi-automatisé avec fabric. Donc, utiliser quelque chose comme ps aux | grep gunicorn
pour tuer le processus manuellement par pid n'est pas une option.
Une option serait d'utiliser Supervisor
pour gérer Gunicorn.
Encore une fois, je ne vois pas pourquoi vous ne pouvez pas tuer le processus via Fabric
. En supposant que vous laissiez Gunicorn écrire un fichier pid vous pourriez facilement lire ce fichier dans une commande Fabric
.
Quelque chose comme ça devrait marcher:
run("kill `cat /path/to/your/file/gunicorn.pid`")
Pour voir les processus est ps ax|grep gunicorn
et arrêter gunicorn_Django est pkill gunicorn
.
kill -9 `ps -eo pid,command | grep 'gunicorn.*${moduleName:appName}' | grep -v grep | sort | head -1 | awk '{print $1}'`
ps -eo pid,command
ne récupérera que l'identifiant de processus, la commande et les arguments
grep -v grep
pour supprimer les sorties telles que 'grep --color = auto xxx'
sort | head -1
pour faire un tri croissant et obtenir la première ligne
awk '{print $1}'
à récupérer
Une dernière chose à laquelle vous devrez peut-être faire attention: Où est installé gunicorn et lequel vous utilisez?
Gunicorn est installé par défaut dans Ubuntu 16, le fichier exécutable est gunicorn3 et se trouve dans/usr/bin/gunicorn3. S'il est installé par pip, il se trouve dans/usr/local/bin/gunicorn. Vous devrez utiliser which gunicorn
et gunicorn -v
pour le savoir.
pkill gunicorn
arrête tous les démons gunicorn. Donc, si vous exécutez plusieurs instances de gunicorn avec différents ports, essayez ce script Shell.
#!/bin/bash
Port=5000
pid=`ps ax | grep gunicorn | grep $Port | awk '{split($0,a," "); print a[1]}' | head -n 1`
if [ -z "$pid" ]; then
echo "no gunicorn deamon on port $Port"
else
kill $pid
echo "killed gunicorn deamon on port $Port"
fi
ps ax | grep gunicorn | grep $Port
affiche les démons avec un port spécifique.