Python popen进程不会继续运行

时间:2014-07-11 15:22:04

标签: python linux cron tcpdump

我有一个Python进程,它使用os.popen在后台运行tcpdump。然后它读取并处理来自tcpdump的输出。该进程在后台作为守护进程运行。当我从命令行执行此过程时,它运行得很好 - 它会启动tcpdump并正确读取输出。但是,我希望这个过程在启动时自动运行,我已经指示它在cron中这样做。当我这样做时,我的进程正在运行(根据ps命令),但tcpdump不是。

是否有某种原因导致cron中的进程与从命令行启动进程不同?我的代码看起来像这样:

p = os.popen('/usr/sbin/tcpdump -l -i eth0')
while True:
   data = p.readline()
   # do something with data

1 个答案:

答案 0 :(得分:1)

当出现问题时,

cron会向您发送电子邮件。所以首先要查看你的邮箱(运行mailx来访问它)。

如果没有邮件,请确保进程在出现问题时将消息写入stdout / stderr。

另外:检查您是否使用了正确的用户。在某些系统上,tcpdump需要以root运行,因此您需要将作业安装到root的crontab(而不是普通用户)中。