如何杀死气流调度程序和网络服务器?

时间:2021-01-10 17:26:02

标签: airflow airflow-scheduler

我是气流的新手,试图通过启动气流网络服务器和调度程序来运行 dag。在我关闭调度程序和气流网络服务器后,气流进程仍在运行。

ps aux | grep airflow 显示了 2 个正在运行的气流网络服务器,以及为所有 dag 运行的调度程序。

我尝试运行 kill $(ps aux | grep airflow | awk '{print $2}'),但没有帮助。

我没有 sudo 权限和网络服务器 UI 访问权限。 enter image description here

1 个答案:

答案 0 :(得分:2)

如果您在本地运行 Airflow 并使用 airflow schedulerairflow webserver 两个命令启动它,那么这些进程将在前台运行。因此,只需为每个进程按 Ctrl-C 即可终止它们及其所有子进程。

如果您没有在前台运行这两个进程,还有另一种方法。 Airflow 在其主目录(默认为 ~/airflow/)中创建带有调度程序和 gunicorn 服务器进程 ID 的文件。

运行

kill $(cat ~/airflow/airflow-scheduler.pid)

应该终止调度程序。

不幸的是,airflow-webserver.pid 包含 gunicorn 服务器的 PID,而不是启动它的初始 Airflow 命令(它是 gunicorn 进程的父进程)。所以,我们首先要找到gunicorn进程的父进程PID,然后杀死父进程。

运行

kill $(ps -o ppid= -p $(cat ~/airflow/airflow-webserver.pid))

应该终止网络服务器。

如果简单地为这些进程运行 kill(即发送 SIGTERM)不起作用,您可以随时尝试发送 SIGKILL:kill -9 <pid>。这绝对应该杀死他们。