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

44

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

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

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

Содержимое файла myfile.sh:

mkdir jh
cd jh 
Абхишек Трипати
источник
Это может вам помочь: help.ubuntu.com/community/CronHowto
PeppeDAlterio
2
если myfile.sh установлен как исполняемый файл?
rogerdpack

Ответы:

61

Это не нормально для скрипта, который установлен как задание 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
Раду Рэдяну
источник
Потрясающе, спас мне жизнь :) У меня нормально работает вот так. 0 7 * * * / bin / sh /root/Scripts/command.sh> / dev / null 2> & 1
Louwki
5

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

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

mkdir <absolutePath>/jh

cd <absolutePath>/jh

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

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

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

penguinRaider
источник