如何在守护进程模式下启动/终止气流调度程序

时间:2017-06-22 22:06:46

标签: linux airflow apache-airflow airflow-scheduler

我和气流新手并且在守护进程模式下意外启动了气流调度程序。现在,我想杀死调度程序并可能重新启动它。我试着做了

    sudo kill -9 <list of pids>
    pkill <name>

什么都没发生。我跑的时候

    ps aux | grep 'airflow scheduler'

我看到这些条目:

    user1   2907  6.0  1.0 329788 62996 ?        Sl   17:37   1:26 /users/user1/anaconda2/bin/python /users/user1/anaconda2/bin/airflow scheduler -D
    user1   2909  0.0  0.9 327576 58948 ?        Sl   17:37   0:00 /users/user1/anaconda2/bin/python /users/user1/anaconda2/bin/airflow scheduler -D
    user1   2910  0.0  0.9 327576 58944 ?        Sl   17:37   0:00 /users/user1/anaconda2/bin/python /users/user1/anaconda2/bin/airflow scheduler -D
    user1   2911  0.0  0.9 327576 58944 ?        Sl   17:37   0:00 /users/user1/anaconda2/bin/python /users/user1/anaconda2/bin/airflow scheduler -D

...依此类推35条不同的pid行。

关于如何在不重新启动机器的情况下停止/终止气流调度程序的任何建议。我还检查了调度程序的pid文件并尝试杀死该pid但没有效果。

感谢任何帮助。谢谢!

6 个答案:

答案 0 :(得分:2)

Unfortuntely

kill $(ps -ef | grep "airflow scheduler" | awk '{print $2}')

我无法找到一个干净的解决方案。

同时查看代码

https://github.com/apache/incubator-airflow/blob/master/airflow/bin/cli.py

答案 1 :(得分:2)

转到pid文件所在的airflow目录,然后使用: cat airflow-webserver.pid | xargs kill

答案 2 :(得分:1)

另一种选择是:

/usr/bin/rm -f ${AIRFLOW_HOME}/airflow-scheduler.pid
/usr/bin/pkill -f "airflow-scheduler"

请注意最好删除旧的守护进程 .pid 文件;避免在守护进程模式下重启时出现任何问题。

您还可以看到:https://github.com/apache/airflow/issues/77

/bin/sh -c 'PATH=/bin:/sbin:/usr/bin:/usr/sbin  mPPID=`cat ${AIRFLOW_HOME}/airflow-scheduler.pid`;ps -o pid= --ppid $mPPID | xargs kill -15 && kill -15 $mPPID && rm -f ${AIRFLOW_HOME}/airflow-scheduler.pid'"

但是这个命令依赖于父 PID(.pid 文件),所以如果父进程被删除并且子进程仍在运行,它就不会工作。

所以在我看来,接受的答案是最好的。或者如果你已经安装使用 pkill

如果使用任何监控服务,即 github 链接中的 monit。 有效的停止命令是:

gPPID=`ps -ef | /usr/bin/grep 'airflow scheduler' | /usr/bin/grep -v grep | awk '{print $2}' `; echo $gPPID; | xargs kill -15 && rm -f ${AIRFLOW_HOME}/airflow-scheduler.pid

答案 3 :(得分:0)

$AIRFLOW_HOME中有airflow-webserver.pid文件,用于调度程序和工作程序。

答案 4 :(得分:0)

cd ~/airflow
cat airflow-scheduler.pid | xargs kill

答案 5 :(得分:0)

要杀死气流Web服务器和调度程序,可以使用以下命令

如果您对主管进行了气流配置,请先将其停止

supervisorctl stop all

kill -9 `ps aux | grep airflow | awk '{print $2}'`