我编写了一个从服务器收集数据的bash脚本 并将其发送到由a监视的日志文件 splunkforwarder。服务器运行FreeBSD并有一个ZPool 通过Samba共享。所以当然是我喜欢的事情之一 请密切注意的是,在这个份额上使用了多少空间。
为了保持可读性,我从我的脚本中提取了实现此目的的行:
#!/usr/bin/env bash
while read disk used avail ; do
# In reality I pass these values to a function
# that adds some formatting, but let's keep it
# simple for the moment
echo $disk " " $used " " $avail
done < <(df | awk '/datapool\// {print $1, $3, $4}')
当我从命令行运行这些行时,我得到了正确的答案
数字(我已将输出与zfs list
进行比较)。
但是当我通过cron运行这个脚本时,我得到的数字都是
加倍。
让我们看一下我机器上的确切输出:
# Manually
datapool/myshare 4842023944 24758292883
# Via cron
datapool/myshare 9684047889 49516585766
这只发生在FreeBSD上。我有另一个ZFS存储服务器 在Debian上运行,当我在那里运行完全相同的脚本时, 我总是得到正确的数字。
我尝试以不同的用户身份运行cron作业 (包括root),但它总是相同的结果。我也有 将PATH环境变量设置为与我相同的值 当我手动运行此脚本(而不是缩短 cron通常使用的版本。)
我完全不知道这个问题的原因 我真的不知道如何调试这个问题。再加上我 无法在互联网上找到任何均匀的信息 远程与此问题有关。
我真的希望你能在这里帮助我,任何提示都是 非常感谢:)