Miałem problem z uruchomieniem skryptu z crontab. Po kilku badaniach zrozumiałem, że problem polegał na tym, że parametr PATH nie zawiera / sbin.
Spojrzałem, co to zawiera w / etc / crontab:
PATH=/sbin:/bin:/usr/sbin:/usr/bin
Jako test - proste zadanie crona do wydrukowania zmiennej PATH:
* * * * * echo $PATH &> /root/TMP.log
dane wyjściowe to:
cat /root/TMP.log
/usr/bin:/bin
Nie rozumiem tego zachowania ... Jak ustawić zmienną PATH ..? Lub lepiej - jak dodać do niego ścieżki?
bash -lc
nie pomaga. Na razie jestem dobry z ręcznym ustawieniem PATH, ale jeśli zainstaluję niektóre skrypty, chcę, aby były rozpoznawane w cronjobs bez podawania pełnych ścieżek. Jestem pewien, że jest to możliwe ibash -lc
jest w drodze do rozwiązania :)Jeśli potrzebujesz domyślnych zmiennych systemowych PATH i innych zmiennych ENV (które zdefiniowano w /etc/profile.d), po prostu wstaw następujące informacje:
źródło
Możliwe jest ustawienie PATH (lub innych parametrów) w linii cronjob lub w pojedynczej linii. Ale nie możesz używać rozszerzenia powłoki jak
PATH=$PATH:/usr/local/bin
. Ale tylda jest dozwolona w przypadku skrótów do katalogu domowego.Z książek:
Zobacz
man 5 crontab
po więcej informacji.To powinno działać:
źródło
Miałem ten sam problem i znalazłem inny sposób na uruchomienie skryptu w crontab. Myślę, że najłatwiejszym sposobem na uruchomienie programu jest stworzenie skryptu, który mógłby cd do katalogu twojego programu. Następnie wywołaj swój program w tym skrypcie.
to jest przykład skryptu (nazwa skryptu = launcher.sh):
następnie uczyń skrypt wykonalnym:
I wreszcie dodaj swój skrypt do crontab
i dodaj tę linię na końcu:
(Ustawiam program do uruchamiania przy każdym ponownym uruchomieniu)
źródło