У меня есть скрипт, который работает, когда я запускаю его из командной строки, но когда я планирую его с, cron
я получаю ошибки, что он не может найти файлы или команды. Мой вопрос двоякий:
Когда я планирую использовать задание cron, использует
crontab -e
ли он мой идентификатор пользователя в качестве основы для своих разрешений? Или он использует какой-то идентификатор пользователя cron и связанные с ним разрешения?Когда запускается задание cron, каков рабочий каталог? Это каталог, в котором я указываю скрипт для запуска, или другой каталог?
Вот моя работа cron:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Вот фактический скрипт:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Вот ошибки, которые я получаю при просмотре mail
сообщения, созданного cron
:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
Он не может найти, template.txt
но находится в том же каталоге, что и скрипт. Он также не может работать ssmtp
, но я могу как мой пользователь. Чего мне не хватает, чтобы заставить это работать должным образом?
cron
меня есть своя собственнаяPATH
или я могу проверить моего пользователяPATH
? Я настроил ssmtp, чтобы он имел собственныйuser
иwheel
разрешающий доступ, думая, что это позволит любому использовать его (включая cron). Если это поможет, я на CENTOS 6.2