Crontab-Uruchom w katalogu
Chciałbym ustawić zadanie, które będzie uruchamiane codziennie w głównej crontabie. Ale chciałbym, aby go uruchomić z określonego katalogu, aby mógł znaleźć wszystkie pliki, których potrzebuje, ponieważ aplikacja ma kilka ścieżek względnych.
W każdym razie, czy mogę powiedzieć crontabowi, aby działał z określonego katalogu?
2 answers
Wszystkie zadania są wykonywane przez powłokę, więc uruchom ten fragment powłoki poleceniem zmiany katalogu.
cd /path/to/directory && ./bin/myapp
Odnośnie użycia &&
zamiast ;
: normalnie nie robi to różnicy, ale jeśli polecenie cd
nie powiedzie się (np. ponieważ katalog nie istnieje) z &&
, aplikacja nie jest wykonywana, podczas gdy z ;
jest wykonywana (ale nie jest w zamierzonym katalogu ).
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2019-03-05 11:27:07
Czytanie man 5 crontab
powinno powiedzieć, że istnieje HOME
zbiór zmiennych, który można przedefiniować w pliku. Staje się Twoim katalogiem roboczym. Możesz również ustawić PATH
dla poleceń. Oczywiście wpływa to na wszystkie linie harmonogramu cron.
E. G.
Kilka zmiennych środowiskowych jest ustawianych automatycznie przez cron(8) daemon.
SHELL
jest ustawione na/bin/sh
, aLOGNAME
iHOME
są ustawione od linia/etc/passwd
właściciela crontabs.HOME
iSHELL
mogą być overridden by settings in crontab;LOGNAME
nie może.(Uwaga: zmienna
LOGNAME
jest czasami nazywanaUSER
w systemachBSD
i jest również ustawiana automatycznie).
W zależności od Twojego crona oczywiście, ale mój również ma MAILTO
, MAILFROM
CONTENT_TYPE
, CRON_TZ
, RANDOM_DELAY
, i MLS_LEVEL
.
Więc dla Twojej hipotetycznej aplikacji polecam nazwę pliku /etc/cron.d/hypothetical
zawierającą:
# Runs hypothetical app @ 00:01Z in its local path for reading its config or something.
SHELL=/bin/sh
HOME=/where/the/app/is
PATH=/where/the/app/is:/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
CRON_TZ=UTC
1 0 * * * theappuser hypothetical --with arguments
Na przykład z docker-compose
oparciem na cwd docker-compose.yml
:
SHELL=/bin/sh
HOME=/path/to/composed-app
5 5 * * * root docker-compose restart -t 10 service-name
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2020-10-20 17:49:50