可能重复:
未找到我的 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
。