python cronjob 中的脚本未将标准输出写入文件
python script in cronjob not writing stdout to files
我有一个 python 脚本,从正常 shell 启动时 运行 没问题。脚本的最终结果是 运行 使用 subprocess
一些命令并将输出写入许多文件 当 运行ning 通过 cron 时,脚本 运行s 但文件是从未创建过,我知道它 运行s 因为它将一些输出记录到系统日志,但我似乎无法让 cron 写入文件。
这是 cron 设置:
SHELL=/bin/bash
0 14 * * * echo 'source ~/venv/python3.8/bin/activate; python ~/scripts/myscript.py' | /bin/bash
脚本的相关部分:
for line in mylist:
cmd = f"/usr/local/bin/bgpq3 -J -A -z {line}"
filename = f"{line}.txt"
logging.debug(f"Running {cmd}")
ret = subprocess.run(
cmd, shell=True, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if ret.returncode == 0:
f = open(filename, "w")
f.write(ret.stdout)
f.close()
else:
print(ret.stderr)
logging.info(f"{ret.stderr} {line}")
结果可能会根据列表创建许多文件。就像我说的,当从正常 shell 启动时,这一切都完美无缺,当脚本 运行s 从 cron 启动时,但文件永远不会创建/写入。
谢谢
大声笑没关系。它正在将文件写入我的主目录。我希望它们与我 运行 来自
的脚本位于同一目录中
我有一个 python 脚本,从正常 shell 启动时 运行 没问题。脚本的最终结果是 运行 使用 subprocess
一些命令并将输出写入许多文件 当 运行ning 通过 cron 时,脚本 运行s 但文件是从未创建过,我知道它 运行s 因为它将一些输出记录到系统日志,但我似乎无法让 cron 写入文件。
这是 cron 设置:
SHELL=/bin/bash
0 14 * * * echo 'source ~/venv/python3.8/bin/activate; python ~/scripts/myscript.py' | /bin/bash
脚本的相关部分:
for line in mylist:
cmd = f"/usr/local/bin/bgpq3 -J -A -z {line}"
filename = f"{line}.txt"
logging.debug(f"Running {cmd}")
ret = subprocess.run(
cmd, shell=True, text=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
if ret.returncode == 0:
f = open(filename, "w")
f.write(ret.stdout)
f.close()
else:
print(ret.stderr)
logging.info(f"{ret.stderr} {line}")
结果可能会根据列表创建许多文件。就像我说的,当从正常 shell 启动时,这一切都完美无缺,当脚本 运行s 从 cron 启动时,但文件永远不会创建/写入。
谢谢
大声笑没关系。它正在将文件写入我的主目录。我希望它们与我 运行 来自
的脚本位于同一目录中