簡體   English   中英

Crontab中的Python腳本:rm:無法刪除,沒有這樣的文件或目錄

[英]Python Script in Crontab: rm: cannot remove, no such file or directory

我有一個在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刪除 | 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會有所不同是一個問題,但我認為在命令中指定絕對目錄時,情況並非如此。

有任何想法嗎? 我對此深感困惑

您在一台計算機上運行python命令,而另一台計算機上運行rm

您可能應該用引號( | )引號,這樣它就不會分開

猜測crontab行應該是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM