我有一个在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
会有所不同,但是我认为在命令中指定绝对目录时,情况并非如此。
有什么想法吗?我对此深感困惑
答案 0 :(得分:3)
您在一台计算机上运行python
命令,而另一台计算机上运行rm
您可能应该引用管道(|
),以使它不会分开东西
crontab行应为:
* * * * * ssh [confidential@stuff.com] "python /location/where/my/python/script/is | xargs rm"