我有一个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
答案 0 :(得分:1)
cron
会向您发送电子邮件。所以首先要查看你的邮箱(运行mailx
来访问它)。
如果没有邮件,请确保进程在出现问题时将消息写入stdout / stderr。
另外:检查您是否使用了正确的用户。在某些系统上,tcpdump
需要以root
运行,因此您需要将作业安装到root
的crontab(而不是普通用户)中。