Почему не запускается скрипт через crontab -e от пользователя?

Дистрибутив Linux Ubuntu 13.10

* * * * * agent /bin/bash /home/agent/rails_projects/project/rake_script.sh 2> /home/agent/errors


Без крона скрипт работает

С crontab -e (или crontab -e -u agent) ошибка:
/bin/sh: 1: agent: not found

Странно, потому что:
agent:x:1000:1000:agent,,,:/home/agent:/bin/bash
в /etc/passwd

Пробовал и прописать в /etc/crontab (без результатов) :

* * * * * agent sh /home/agent/rails_projects/project/rake_script.sh 2> /home/agent/errors


Скрипт должен выполняться от пользователя.

Сам скрипт:
#!/bin/bash
cd /home/agent/rails_projects/project
bundle exec rake db:alarm


Подскажите пожалуйста.
  • Вопрос задан
  • 8095 просмотров
Решения вопроса 1
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
В задании крона нельзя указать пользователя. Там может быть только командная строка. Слово agent интерпретируется как команда, которой нет.

Кроме того, будьте готовы, что при таком запуске скрипта значение $PATH будет отличаться от того, что вы видите в интерактивной сессии, и нужно будет дополнительно сделать . /etc/profile или . ~/.bash_profile.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@inkvizitor68sl
Linux-сисадмин с 8 летним стажем.
В crontab -e пользователя указывать не нужно. Просто
* * * * * command

После 2> пробел уберите. Если собираетесь через -e делать, то добавьте пользователя в /etc/cron.allow

Потом сделайте chmod +x /home/agent/rails_projects/project/rake_script.sh и в крон пишите так:
# если в crontab -e, то
* * * * * /home/agent/rails_projects/project/rake_script.sh 2>home/agent/errors

# если в /etc/cron.d/sth или /etc/crontab, то
* * * * * agent /home/agent/rails_projects/project/rake_script.sh 2>home/agent/errors
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы