Crontab - Uruchom w katalogu

170

Chciałbym ustawić codzienne uruchamianie zadania w głównym katalogu crontab. Ale chciałbym, aby wykonywał go z określonego katalogu, aby mógł znaleźć wszystkie potrzebne pliki, ponieważ aplikacja ma kilka ścieżek względnych.

W każdym razie, czy mogę powiedzieć crontabowi, aby działał z określonego katalogu?

user333746
źródło

Odpowiedzi:

318

Wszystkie zadania są wykonywane przez powłokę, więc uruchom ten fragment powłoki poleceniem zmiany katalogu.

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

Jeśli chodzi o użycie &&zamiast ;: normalnie nie robi to różnicy, ale jeśli cdpolecenie zawiedzie (np. Ponieważ katalog nie istnieje), &&aplikacja nie jest wykonywana, podczas ;gdy jest wykonywana (ale nie w zamierzonym katalogu ).

Gilles 'SO- przestań być zły'
źródło
Zamiast dodawać w większości zduplikowaną odpowiedź, dodam tylko, że możesz wybrać powłokę (na przykład jeśli potrzebujesz bash zamiast sh), ustawiając ją SHELLw swoim crontab.
Edd Steel
12
+1. rozwiązaniem każdego innego pytania pokrewnego jest przepisanie skryptu z bezwzględnymi ścieżkami. to jest dokładnie to, czego potrzebowałem
Conrad Dean
2
Z ciekawości, czy możesz użyć średnika ;zamiast podwójnych ampersandów, &&czy to nie zadziała? I dlaczego?
Joshua Pinter
32
@JoshPinter Zwykle to nie robi różnicy. Ale jeśli cdpolecenie się nie powiedzie (np. Ponieważ katalog nie istnieje), &&aplikacja nie zostanie wykonana. W programie ;jest wykonywany (ale nie w odpowiednim katalogu).
SO- Gilles 'SO- przestań być zły'
1
Zrobię to dla wszystkich zadań crona moich aplikacji, uratowałeś mnie przed zmianą moich plików źródłowych, dziękuję bardzo
Księgowy م