env 在 FreeBSD cronjob 中不起作用

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 的直接路径。

我目前遇到的问题是 duplicity 在内部使用。因此目前,当 cron 尝试运行它时env,我会收到错误。env: python2: No such file or directory

为什么不可以env在 cronjobs 中工作?我该如何修复它?

答案1

正如 Amiramix 所暗示的,问题出在环境变量上。更具体地说,是 的值PATH

/etc/crontab包含以下行:

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin

添加完/usr/local/bin这些之后,我的脚本就按预期运行了。

相关内容