python - 如何kill掉后台中的tail -f

查看:193
本文介绍了python - 如何kill掉后台中的tail -f的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

目前有个脚本如下

tail -f access.log | python parse.py

但由于access.log是自动按天分割的,所以上面这个命令得每天重新跑一次
于是写到crontab中

0 0 * * * tail -f access.log | python parse.py

其中的Python脚本可以改写成到时间自动结束,但tail -f就不知道怎么退出了

之后又改写成shell脚本

#!/bin/sh
nohup tail -f access.log | python parse.py &
pid=$!
sleep 86400
kill $pid

再写到crontab中

0 0 * * * /path/to/shell_script

但似乎上面shell脚本中的pid只是拿到了管道最后一个命令的pid,也就是说只kill掉了python parse.py,最后变成了僵尸进程。

解决方案

感谢邀请,两个思路:

  1. 记录下tail的进程号,比如(tail -f access.log & echo $! > pid) | python parse.py,这样pid里面就有tail的进程号了,后面你懂的

  2. 在python代码里面去tail,比如用subprocess来调,或者自己实现一个简单的tail -f

这篇关于python - 如何kill掉后台中的tail -f的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆