我为重新启动芹菜写了一个shell脚本。我的操作系统是Ubuntu 16.04.3。
我尝试运行此外壳脚本,只是杀死了芹菜过程,但没有开始一个新的芹菜过程。为什么?
这是我的代码。
ps -ef | grep celery | awk '{print $2}' | grep -v grep |xargs kill -9;
celery -A loan_app.tasks worker --loglevel=info --workdir=`pwd` --logfile=/tmp/celery.log --pidfile=/var/run/celery_pid -D
来自官方文档:http://docs.celeryproject.org/en/latest/userguide/workers.html请阅读以粗体突出显示的文本。
停止工人应使用术语信号来完成关闭。
启动关机时,工人将在实际终止任务之前完成所有当前执行任务。如果这些任务很重要,则应等待它完成,然后再执行任何刺激信号。
如果工人在体贴时间后不会关闭,因为被困在无限环或类似的情况下,您可以使用杀伤信号迫使终止工人:但是请注意,当前执行任务将丢失(即,即,除非任务具有acks_late选项集(。
同样,由于过程无法覆盖杀戮信号,工人将无法收获其子女;确保手动这样做。此命令通常可以解决:
$ pkill -9 -f '芹菜工人'如果您的系统上没有Pkill命令,则可以使用稍长的版本:
$ ps auxww |格雷普"芹菜工人" |awk'{print $ 2}'|Xargs Kill -9
以下命令中有一个失误。
ps -ef | grep celery | awk '{print $2}' | grep -v grep |xargs kill -9;
应该如下
ps -ef | grep celery | grep -v grep | awk '{print $2}' |xargs kill -9;
您仅在进行处理ID之后排除了" GREP"过程,而您永远找不到GREP Process ID
希望这有帮助
只是在下面像下面一样使用它可以解决您的问题: -
-
如果您只想停止所有过程
celery
使用以下命令ps -ef | grep [c]elery |awk '{print $2}' | xargs kill -9
-
如果要停止所有进程
celery
的实例,然后重新启动它,请使用下面的命令
ps -ef |grep [c] Elery | awk'{print $ 2}'|Xargs Kill -9
pids=$(ps -ef | grep [c]elery |awk '{print $2}')
if [ "$pids" != "" ]; then
PWD=$(pwd)
celery -A loan_app.tasks worker --loglevel=info --workdir=$PWD --logfile=/tmp/celery.log --pidfile=/var/run/celery_pid -D
else
echo "Failed to kill process celery"
fi
直截了当的示例: -
ps -ef | grep [c]elery |awk '{print $2}' | xargs kill -9 PWD=$(pwd) celery -A loan_app.tasks worker --loglevel=info --workdir=$PWD --logfile=/tmp/celery.log --pidfile=/var/run/celery_pid -D