Я пытаюсь запустить этот сценарий bash как задание cron, но получаю сообщение об ошибке sudo: sorry, you must have a tty to run sudo
. Я запускаю этот сценарий bash в экземпляре amazon EC2 linux.
#!/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"
Пожалуйста, помогите мне разобраться в этом.
В конфигурационном файле sudoers есть опция - requiretty - которая не позволит вам запустить sudo без регистрации как реального пользователя.
see sudoers(5) man page
Опция «requiretty» может решить вашу проблему.
Почему бы просто не установить задание cron от имени пользователя, которому вы пытаетесь выполнить sudo?