Crontab - запустить в каталоге


170

Я хотел бы установить задание для ежедневного запуска в корневом crontab. Но я бы хотел, чтобы он выполнялся из определенного каталога, чтобы он мог найти все нужные ему файлы, поскольку в приложении имеется множество относительных путей.

В любом случае, я могу сказать crontab запускаться из определенного каталога?

Ответы:


318

Все задания выполняются оболочкой, поэтому запустите этот фрагмент оболочки командой, чтобы изменить каталог.

cd /path/to/directory && ./bin/myapp

Что касается использования &&вместо ;: обычно это не имеет значения, но если cdкоманда не выполняется (например, потому что каталог не существует) с &&приложением не выполняется, тогда как с ;выполнением (но не в намеченном каталоге ).


Вместо того, чтобы добавлять в основном дублированный ответ, позвольте мне добавить, что вы можете выбрать, какую оболочку (например, если вам нужен bash, а не sh), установив SHELLв вашем crontab.
Эдд Стил

12
+1. решение любого другого связанного вопроса состоит в том, чтобы переписать сценарий с абсолютными путями. это именно то, что мне нужно
Conrad.Dean

2
Из любопытства, не могли бы вы использовать точку с запятой ;вместо двойных амперсандов &&или это не сработало? И почему?
Джошуа Пинтер

32
@JoshPinter Обычно это не имеет значения. Но если cdкоманда терпит неудачу (например, потому что каталог не существует), с &&, приложение не выполняется. С помощью ;он выполняется (но не в намеченном каталоге).
Жиль "ТАК - перестань быть злым"

1
Я сделаю это для всех заданий cron моих приложений, вы спасли меня от изменения моих исходных файлов, большое спасибо
Бухгалтер م
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.