Backup
為什麼我的 cron 作業找不到特定命令?
我正在使用 duplicity 通過 FTP 創建伺服器的夜間備份。我編寫了一個腳本,它同時進行本地和遠端備份並記錄輸出結果。當我以 root 使用者身份執行此腳本時,它執行得很好。但是,當我將其設置為 cron 作業並執行它時,腳本會執行,但 ftp 部分會失敗。在我收到一條錯誤消息後不久,“ncftpls - 找不到命令,請安裝 ncftp 3.1.9 或更高版本”,但它已安裝!cron作業無法找到機器上存在的命令是否有某種原因?它有自己的 PATH 或類似的東西嗎?
任何幫助是極大的讚賞,
麥克風
你用的是絕對路徑嗎?Cron 作業不會打開互動式 shell,因此通常設置 PATH 的 bash 初始化腳本(bashrc、bash_profile 等)可能無法執行——如果是,它們將使用 root,而不是你的。如果您不確定該命令在哪裡,您可以使用它
which <command>
來找出絕對路徑。在處理 cron 腳本時,一般的經驗法則是,您要麼 (a) 要設置 PATH,要麼 (b) 使用絕對路徑。
祝你好運!
您應該提供要執行的命令的完整路徑,或者應該
PATH
在 cron 作業中定義。在不提供路徑的情況下執行 foobar 命令的範例:
PATH=/sbin:/bin:/usr/sbin:/usr/bin 01 * * * * root foobar
有一條路徑:
01 * * * * root /usr/bin/foobar
您還可以通過以下設置來指定執行作業的 shell
SHELL
:SHELL=/bin/bash
for bash。有關man 5 crontab
更多範例,請參閱。