我有一个使用ThreadPool进行多线程处理的python程序。该程序是Shell脚本中的第一步。当我在命令行上手动执行shell脚本时,整个流程将按预期工作。但是,当我以cronjob身份执行shell脚本时,似乎流程会在python多线程步骤完全完成之前转到下一步。

在python程序内部,我确实调用AsyncResult.get(timeout)以等待所有结果返回后再继续。

最佳答案

也可以通过batch(1)运行程序(请参见man batch命令的输出)。如果可以,但cron版本不行,则几乎可以肯定是环境变量设置存在问题。要验证这一点,请从交互式 shell 程序中运行printenv,以检查那里的环境。然后在crontab中执行相同的操作(您只需为其临时设置一个额外的cron条目)。尝试在调用Python之前在shell脚本中设置变量。

另一方面,如果它也不能通过batch(1)起作用,则可能与代码已打开的文件有关。尝试运行从/dev/null重定向的输入并将输出转到文件的shell脚本:

$ /usr/local/bin/myscript </dev/null >|/tmp/outfile.txt 2>&1

10-08 02:25