“未找到命令”-无法运行 bash 脚本

“未找到命令”-无法运行 bash 脚本

可能重复:
未找到我的 cron 任务报告命令

我正在尝试运行一个 bash 脚本

#!/bin/bash

export AWS_CLOUDWATCH_URL=https://monitoring.amazonaws.com

# get ec2 instance id
instanceid=`wget -q -O - http://169.254.169.254/latest/meta-data/instance-id`

memtotal=`free -m | grep 'Mem' | tr -s ' ' | cut -d ' ' -f 2`
memfree=`free -m | grep 'buffers/cache' | tr -s ' ' | cut -d ' ' -f 4`
let "memused=100-memfree*100/memtotal"

mon-put-data --metric-name "FreeMemoryMBytes" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memfree" --u$

mon-put-data --metric-name "UsedMemoryPercent" --namespace "System/Linux" --dimensions "InstanceId=$instanceid" --value "$memused" --$

我已经在 cron 中添加了这个 bash 脚本,但是当我检查 cron 时,它说未找到命令,即“mon-put-data”

当我输入命令时,它运行正常。问题是什么

答案1

该命令可能mon-put-data不在标准路径中。在终端中,您可以通过输入 来检查which mon-put-data,然后尝试在脚本中使用完整路径。

这是因为从 cron 启动的 bash 脚本不会读取您的.bashrc.bash_profile,这可能会覆盖默认路径。

答案2

尝试添加 mon-put-data 的完整路径。您可以在命令行中使用以下命令找到它:

which mon-put-data

答案3

问题在于执行脚本的用户没有与您相同的环境(具体来说,不是相同的 PATH)。

此外,我建议您使用 $(command) 而不是 `command`,因为后者已被弃用并且可能会导致引用问题。

答案4

您使用的是同一个 shell 吗?检查一下。您可能csh在终端中使用,而脚本可能使用bash

相关内容