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?

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 ).


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 م
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.