外壳脚本执行失败



我为重新启动芹菜写了一个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

希望这有帮助

只是在下面像下面一样使用它可以解决您的问题: -

  1. 如果您只想停止所有过程celery使用以下命令

     ps -ef | grep [c]elery |awk '{print $2}' | xargs kill -9
    
  2. 如果要停止所有进程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
  1. 直截了当的示例: -

    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
    

最新更新