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

21

Я установил задание cron:

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

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

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

mkdir jh
cd jh 
    
задан Abhishek Tripathi 27.09.2013 в 20:17
источник

2 ответа

37

Это не нормально для скрипта, который задан как задание 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
    
ответ дан Radu Rădeanu 27.09.2013 в 21:42
источник
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, my was / bin / sh)

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

Ссылка

    
ответ дан penguinRaider 27.09.2013 в 21:53