linux: jak uruchomić polecenie w danym katalogu


16

Chcę po prostu uruchomić polecenie (właściwie skrypt powłoki) z danego katalogu jako zadanie crona. Jak mogę go uruchomić, aby był ustawiony na dany katalog bez użycia cd.

Odpowiedzi:


16

Twoje pytanie nie ma sensu. Zastosowanie cd. Jeśli poprosisz o odpowiedź, której nie chcesz użyć, cdponieważ wypróbowałeś ją i nie zadziałała, prawdopodobnie nie wpisałeś jej poprawnie w crontab.

Najprostszym sposobem byłoby napisanie małego skryptu powłoki, który wykona cd i uruchomi główne zadanie, a następnie cron skryptu.


1
Czy crontab może pozwolić mi na umieszczenie wielu poleceń w jednym zadaniu? Jeśli nie, musiałbym kodować cd [ścieżka]. Ścieżka może się zmienić, powodując irytujące problemy z wdrażaniem, a także decentralizując konfigurację, której unikam za wszelką cenę.
— Zombies

1
@Zombies: tak, możesz umieścić wiele poleceń w jednym zadaniu (np. Oddzielając je średnikami lub &&), ale możesz także napisać osobny skrypt, który zawiera wszystkie polecenia i po prostu umieścić ścieżkę do skryptu w cron, jak sugeruje Daenyth. Twój skrypt może zrobić coś takiego jak odczyt katalogu z pliku konfiguracyjnego, jeśli chcesz - chodzi o to, że jednak, jeśli chcesz wprowadzić nazwę katalogu do skryptu, nie jest to wymówka, aby go nie używać cd.
— David Z

Widzę. Będę chciał użyć cd bezpośrednio na crontabie, ponieważ jeśli napiszę go w pliku, będę musiał go edytować w każdym pliku, co czyni konfiguracje delikatnymi / łatwymi do złamania.
— Zombie

3
A jeśli umieścisz płytę CD w pliku crontab, będziesz musiał edytować ją w każdym pliku crontab. Nie rozumiem problemu. Może mógłbyś pełniej wyjaśnić, co próbujesz zrobić.
— garyjohn

Innym powodem uruchomienia skryptu powłoki z pliku crontab jest upewnienie się, że środowisko jest ustawione poprawnie. Środowisko przydzielone do zadania cron jest zwykle ledwo nawet minimalne, więc zwykle musisz zresetować go do czegoś bardziej użytecznego.
— Jonathan Leffler

60

Wystarczy podać ścieżkę do skryptu. Nie ma potrzeby cd:

0 12 * * * /path/to/script args

Jeśli twój skrypt szuka plików ., będziesz musiał użyć cd:

0 12 * * * cd /some/dir && /path/to/script args


4
&&, jak w odpowiedzi na linki @WillSheppard do, byłoby lepiej niż ;ponieważ &&uruchamia następne polecenie tylko wtedy, gdy poprzednie polecenie zakończyło się powodzeniem.
— Max Heiber,

1
@mheiber: naprawiono
— wstrzymano do odwołania.
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.