【问题标题】:Schedule python script with crontab, shutil.move doesn't work使用 crontab 调度 python 脚本,shutil.move 不起作用
【发布时间】: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 的邮件 - 有时会在那里邮寄错误。

标签: python linux cron


【解决方案1】:

Cron 需要正确的路径:

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin:/snap/bin

0 15 * * * root cd /usr/local/sbin/import-file/ && ./myscript.py

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-26
    • 2013-01-12
    • 1970-01-01
    • 2018-06-26
    • 1970-01-01
    • 2023-03-22
    • 2012-06-10
    • 2017-07-01
    相关资源
    最近更新 更多