Я создал примитивный сценарий тестирования только, чтобы создать каталог, видеть, работает ли crontab:
#!/bin/bash
mkdir test_folder
exit
сценарий расположен здесь /home/root/test/test.sh
Я сделал этот исполняемый файл сценария с:
sudo chmod u+x test.sh
когда я запускаю скрипт вручную sudo /home/root/test/test.sh
"test_folder" создается. Однако, когда я добавляю его к crontab, чем ничего не происходит!
Я открыл crontab с sudo crontab -e
и я добавил следующие правила:
00 * * * * /home/root/test/test.sh
10 * * * * /home/root/test/test.sh
20 * * * * /home/root/test/test.sh
30 * * * * /home/root/test/test.sh
40 * * * * /home/root/test/test.sh
50 * * * * /home/root/test/test.sh
когда я проверяю crontab с sudo crontab -l
Я могу ясно видеть, что правила там, но папка НЕ создается! Сценарий просто не работает!
Позже я нашел, что проблема может быть с точкой на название сценария..., таким образом, я изменил имя от test.sh
кому: test_sh
... сделанный этим исполняемый файл с sudo chmod u+x test_sh
, попробованный это вручную, тестовая папка была создана..., чем я добавил к crontab sudo crontab -e
:
00 * * * * /home/root/test/test_sh
10 * * * * /home/root/test/test_sh
20 * * * * /home/root/test/test_sh
30 * * * * /home/root/test/test_sh
40 * * * * /home/root/test/test_sh
50 * * * * /home/root/test/test_sh
Но снова ничто... Что я делаю неправильно? Это - примитивный сценарий, он должен работать без проблем! Я забыл относительно чего-то?
Править: Спасибо всем... особенно heemayl и Gauthier: "Попытайтесь дать полный путь в своем сценарии (mkdir /home/root/test/test_folder
)." это добилось цели... теперь, кажется, что сценарий работает... так никакие относительные директора... Большое спасибо
Проверить root
корневой каталог, каталог test_folder
создается там, точно /root/test_folder
. Обратите внимание, что, Вы вставили сценарий root
cron
таблица путем выполнения sudo crontab -e
таким образом, каталог был бы /root/test_folder
.
cron
значения по умолчанию к корневому каталогу рабочего пользователя (root
в этом случае) прежде, чем выполнить любую задачу, поэтому поскольку у Вас есть относительный путь т.е. только test_folder
, каталог будет создан в root
корневой каталог.
Это также подобно другим случаям, где относительные пути используются в сценарии, и каждый запускает скрипт от другого местоположения; PWD
будет всегда обращаться к каталогу от того, где скрипт запускается, не, где сценарий хранится.
Отметьте это, exit
в конце избыточно.