![sudo:抱歉,您必须有一个 tty 才能运行 sudo](https://linux22.com/image/572446/sudo%EF%BC%9A%E6%8A%B1%E6%AD%89%EF%BC%8C%E6%82%A8%E5%BF%85%E9%A1%BB%E6%9C%89%E4%B8%80%E4%B8%AA%20tty%20%E6%89%8D%E8%83%BD%E8%BF%90%E8%A1%8C%20sudo.png)
我正在尝试将此 bash 脚本作为 cron 作业运行,但收到一条错误消息
sudo: sorry, you must have a tty to run sudo
。我在 amazon 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"
请帮助我解决这个问题。
答案1
在 sudoers 配置文件中,有一个选项 - requiretty - 它将阻止您在未以真实用户身份登录的情况下运行 sudo。
see sudoers(5) man page
答案2
“requiretty”选项可能会解决您的问题。
为什么不直接在您尝试使用 sudo 的用户下安装 cron 作业?