背景
我使用Advanced Python Scheduler(APScheduler)使用类似下面的代码启动了几个作业。
sched = Scheduler()
sched.start()
sched.add_interval_job(function, minutes=1)
sleep(10000)
sched.shutdown()
我是从终端做到的。
python script.py
问题
我打算在关机前多次运行这些工作。不幸的是,我在sleep
阶段意外关闭了终端,然后才能使用sched.shutdown()
正确停止作业。
我相信这些工作仍然在后台运行,因为我有证据表明即使在终端关闭后function
也已应用。
问题
有没有办法确定哪些作业仍然在后台某处运行并关闭它们?提前谢谢!
答案 0 :(得分:2)
如果你运行你的脚本:
python scrip.py
关闭终端后,python进程将被终止,因此你的脚本停止运行。
但是如果你用&
运行你的脚本python scrip.py &
终止关闭后进程不会被终止,您可以使用
进行检查ps -e | grep python
您必须了解作业和系统过程之间的差异。关闭终端会终止进程。如果要检查哪些作业仍在工作,可以使用print_jobs()函数。
答案 1 :(得分:2)
使用kill <PID>
查找流程ID并终止流程,或只是pkill -f script.py
。