我是气流的新手,试图通过启动气流网络服务器和调度程序来运行 dag。在我关闭调度程序和气流网络服务器后,气流进程仍在运行。
ps aux | grep airflow
显示了 2 个正在运行的气流网络服务器,以及为所有 dag 运行的调度程序。
我尝试运行 kill $(ps aux | grep airflow | awk '{print $2}')
,但没有帮助。
答案 0 :(得分:2)
如果您在本地运行 Airflow 并使用 airflow scheduler
和 airflow 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>
。这绝对应该杀死他们。