Shell脚本执行失败

时间:2018-04-03 09:32:24

标签: linux shell ubuntu-16.04

我为重启芹菜写了一个shell脚本。我的操作系统是Ubuntu 16.04.3 我尝试运行这个shell脚本,只是杀死了芹菜进程,但没有启动 一个新的芹菜加工。为什么呢?
这是我的代码。

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

3 个答案:

答案 0 :(得分:0)

只需使用如下所示即可解决您的问题: -

  1. 如果您只想停止进程celery的所有实例,请使用以下命令

     ps -ef | grep [c]elery |awk '{print $2}' | xargs kill -9
    
  2. 如果您要停止流程celery的所有实例并重新启动它,请使用以下命令

  3. 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
      

答案 1 :(得分:0)

从官方文件: http://docs.celeryproject.org/en/latest/userguide/workers.html 请阅读以粗体突出显示的文本。

停止工人 应使用TERM信号完成关机。

启动关闭后,工作人员将在实际终止之前完成当前正在执行的所有任务。如果这些任务很重要,你应该等待它完成任何激烈的事情,比如发送KILL信号。

如果工作人员在考虑周期之后不会关闭,因为卡在无限循环或类似环境中,您可以使用KILL信号强制终止工作人员:但要注意当前执行的任务将丢失(即,除非任务设置了acks_late选项。)

由于进程无法覆盖KILL信号,工作人员将无法收获其子女;一定要手动完成。这个命令通常可以解决问题:

$ pkill -9 -f '芹菜工人' 如果您的系统上没有pkill命令,则可以使用稍长的版本:

$ ps auxww | grep'芹菜工人'| awk'{print $ 2}'| xargs kill -9

答案 2 :(得分:0)

以下命令存在错误。

print(MemoryLayout<Foo>.size) // 9
print(MemoryLayout<Bar>.size) // 16

应该如下

ps -ef | grep celery | awk '{print $2}' | grep -v grep |xargs kill -9;

您只是在处理过程ID之后排除了“grep”进程,而您永远找不到grep进程ID

希望这有帮助

相关问题