Crontab中的Python脚本:rm:无法删除,没有这样的文件或目录

时间:2018-11-28 16:16:46

标签: python linux cron

我有一个在Linux 3.10.0-862.9.1.el7.x86_64 x86_64上运行的crontab。在里面,我有 打印出要删除的某些文件的python脚本,然后将其通过管道传输到xargs rm

例如,我将运行脚本python delete_these.py,它将打印出以下内容:

/directory/to/delete1.txt
/directory/to/delete2.txt
/directory/to/delete3.txt
/directory/to/delete4.txt

,它们将通过在同一命令提示符下运行的| xargs rm删除。所以

python delete_these.py | xargs rm

该脚本在手动运行时运行良好,但是在cron上运行时,它会在运行作业时从邮件中检索到的stdout返回错误:

rm: cannot remove '/directory/to/delete1.txt': No such file or directory

这是我在crontab中输入的内容:

* * * * * ssh [confidential@stuff.com] python /location/where/my/python/script/is | xargs rm

我已经完成chmod +x /path/to/python/script并将完整命令(减去星号,但包括ssh)放在命令行上工作正常,但是在cron上运行它会返回“没有这样的文件或目录”错误。

我确定这些文件存在,并且它们不是符号链接。

我尝试通过附加相关的python绝对目录(usr/bin/)来重试它,但是它仍然无法正常工作。

我不知道为什么cron不起作用。另一个用户在crontab上设置的当前PATH是该盒子专用的usr/bin/stuff目录。 我认为PATH会有所不同,但是我认为在命令中指定绝对目录时,情况并非如此。

有什么想法吗?我对此深感困惑

1 个答案:

答案 0 :(得分:3)

您在一台计算机上运行python命令,而另一台计算机上运行rm

您可能应该引用管道(|),以使它不会分开东西

crontab行应为:

* * * * * ssh [confidential@stuff.com] "python /location/where/my/python/script/is | xargs rm"