Как установить задание cron для запуска сценария оболочки?

Я установил работу cron:

20 * * * * /usr/bin/sh /home/lucky/myfile.sh

Основная проблема заключается в том, что в указанное время возникает ошибка: "почту отправили в /var/spool/mail/lucky".

Содержимое myfile.sh:

mkdir jh
cd jh 

2 ответа

Решение

Это не нормально для скрипта, который установлен как задание cron:

mkdir jh
cd jh 

Вы должны дать полный путь, где jh каталог должен быть создан. Также по этому пути у вас должно быть разрешение на создание новых файлов / каталогов.

Например, ваш скрипт должен выглядеть так:

#!/bin/sh

mkdir /home/lucky/jh
cd /home/lucky/jh

Также /usr/bin/sh это не правильный путь для sh, Правильный путь /bin/sh, Вы можете проверить это с whereis sh команда. И даже в этом случае ваша работа cron должна выглядеть так:

20 * * * * /home/lucky/myfile.sh

Не забудьте сделать скрипт исполняемым:

chmod +x /home/lucky/myfile.sh

Путь, в котором создается папка, /, Это потому что crontab требуется полный путь к папке и файлам во всех файлах, которые он выполняет.

Поэтому путь в myfile.sh должен быть

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.sh Эта строка правильная, хотя вы должны проверить путь, чтобы увидеть, существует ли sh в / usr / bin / sh или нет (используйте which sh чтобы увидеть путь, где существует sh; мой был / бин / ш)

Если вы спешите начать писать crontab, эта ссылка имеет довольно хорошие примеры

http://www.thegeekstuff.com/2009/06/15-practical-crontab-examples/

Другие вопросы по тегам