【发布时间】:2017-11-08 22:03:08
【问题描述】:
您好,我使用 cron.d 安排我的脚本,除了将某些文件从一个文件夹移动到另一个文件夹的功能外,一切正常。
功能是:
def move_imported_file():
all_file=get_file()
for files in all_file:
#print (files)
shutil.move("/mnt/test-file/"+files, "/mnt/test-file/imported/"+files)
我的 cron.d 文件是这样的:
10 12 * * * root cd /usr/local/sbin/import-file/ && ./myscript.py
如果我尝试手动运行脚本,函数会移动 all_file,但如果我运行 cron.d 任务,则什么也不会发生
有没有可能记录函数正在做什么?
谢谢
获取文件:
def get_file():
my_file = []
os.chdir("/mnt/test-file")
files = glob.glob('*.ics')
for file in files:
my_file.append(file)
#print (my_file)
return my_file
【问题讨论】:
-
get_file()是做什么的?它返回什么?它是如何实施的?如果取消注释print(),cron 会记录什么? -
get_file() 将一些文件附加到列表中。 print (files) 打印我的文件列表:file1.txt file2.txt ...
-
Cron 作业不会在与登录用户相同的环境中执行。
get_file()中可能有些东西依赖于环境中的某些东西,例如一个主目录。显示get_file()的实现并打印它返回的内容可能会有所帮助(然后您可以从 cron 的日志中挖掘出来,或者将脚本的输出重定向到您以后可以阅读的文件)。 -
我添加了get_file功能
-
好的,
get_file()中的代码没有明显错误。当 cron 运行作业时,文件系统是否安装在/mnt上?您是否检查过日志是否有错误?还要检查root的邮件 - 有时会在那里邮寄错误。