Scripting
env 在 FreeBSD cronjob 中不工作
在我的 FreeBSD 伺服器上,我使用 Duplicity 設置了一個用於備份的 cron 腳本。該腳本如下:
#!/bin/sh export PASSPHRASE= export FTP_PASSWORD= keyid= remote= excludelist= /usr/local/bin/duplicity --volsize 1000 --max-blocksize=20480 --asynchronous-upload --full-if-older-than 1M --encrypt-key "$keyid" --exclude-filelist "$excludelist" /Data "$remote" /usr/local/bin/duplicity --force remove-all-but-n-full 1 "$remote" unset FTP_PASSWORD unset PASSPHRASE
(當然,敏感數據已編輯)。
該腳本位於 /etc/periodic/daily/duplicity 並且如果我直接從終端執行它可以正常工作。但是當 cron/periodic 執行它時它不起作用,這似乎是因為
env
執行不正常。最初,腳本的 hashbang 讀取
#!/usr/bin/env sh
,但導致錯誤env: sh: No such file or directory
。所以我把它改成了sh的直接路徑。我目前遇到的問題是重複性在
env
內部使用。所以目前,env: python2: No such file or directory
當 cron 嘗試執行它時,我得到了錯誤。為什麼
env
在 cronjobs 中不起作用,我該如何解決?
正如 Amiramix 所暗示的,問題出在環境變數上。更具體地說, 的值
PATH
。/etc/crontab包含以下行:
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
在我添加之後
/usr/local/bin
,我的腳本按預期工作。