手动输入命令执行正确,但加入到定时任务中执行结果和期望不同

例如脚本里面有打开一个文件记录程序日志,手动输入脚本来执行,可以将程序日志记录下来, 但脚本放到定时任务里面,就没有日志了。

原因分析: 手动输入脚本来执行时,是当前用户在当前目录下执行,因此程序继承了这些环境 变量,当加入到定时任务里面时,这些环境变量和手动执行是不同的,因此存在差异。

我们在编写代码时需要注意在不同环境变量下的影响。

例如在程序执行时,通常都有一个工作目录或当前目录的概念,在linux下通过pwd命令可以查看 当前的工作目录绝对路径。在python中,我们可以通过os库的函数getpwd()来获取当前程序的 工作目录。 在程序执行时,我们通常使用绝对路径来打开文件,这就可以避免当前工作路径对 程序执行的影响。或者我们使用os.chdir(path)函数来改变当前的工作路径。

import os

print(os.getcwd()) os.system(‘mkdir hello’)

fd = open(“/var/log/hello”, “a”)

os.chdir(“/var/log/”) fd2 = open(“hello”, “a”)

总结一下,定时任务的编写需要注意环境变量。路径需要使用绝对路径。