python - Crontab 中的 Python 脚本:rm:无法删除,没有这样的文件或目录
问题描述
我有一个在 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 上运行时,它会在运行作业时从邮件中检索到的标准输出中返回错误:
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 不起作用。PATH
另一个用户设置的 crontab 上的当前目录usr/bin/stuff
是特定于该框的目录。我认为这将是一个PATH
不同的问题,但我认为不是这种情况,因为我在命令中指定了绝对目录。
有任何想法吗?我完全被这个难住了
解决方案
您在一台计算机上运行python
命令,rm
在另一台计算机上运行
您可能应该引用管道 ( |
),这样它就不会分隔事物
猜测 crontab 行应该是:
* * * * * ssh [confidential@stuff.com] "python /location/where/my/python/script/is | xargs rm"