sudo:抱歉,你必须有一个tty来运行sudo

我试图运行这个bash脚本作为一个cron工作,但我得到一个错误,说sudo: sorry, you must have a tty to run sudo 。 我在亚马逊EC2 linux实例中运行这个bash脚本。

 #!/bin/bash - #get instance id - used for putting metric INSTANCE_ID=`GET http://169.254.169.254/latest/meta-data/instance-id` #could be done using "free" or "vmstat" - use of less and grep is believed to provide widest compatibility - CJ 2011-11-24 memfree=`less /proc/meminfo | grep -i MemFree | grep -o [0-9]*` swaptotal=`less /proc/meminfo | grep -i SwapTotal | grep -o [0-9]*` swapfree=`less /proc/meminfo | grep -i SwapFree | grep -o [0-9]*` swapused=$(($swaptotal-$swapfree)) #mon-put-data to put metrics mon-put-data --metric-name MemoryFree --namespace EC2/Memory --value $memfree --unit Kilobytes --dimensions "InstanceId=$INSTANCE_ID" mon-put-data --metric-name SwapUsed --namespace EC2/Memory --value $swapused --unit Kilobytes --dimensions "InstanceId=$INSTANCE_ID" 

请帮我解决这个问题。

在sudoersconfiguration文件中,有一个选项 – requiretty – 这会阻止您在不作为真实用户login的情况下运行sudo。

 see sudoers(5) man page 

“requiretty”选项可以解决你的问题。

为什么不只是在你试图sudo的用户下安装cron作业呢?