Musimy mieć / usr / local / bin na ścieżce crona dla wszystkich użytkowników. Czy istnieje sposób na ustawienie go w systemie, bez konieczności edytowania pliku crontab każdego użytkownika?
Próbowaliśmy dodać PATH do / etc / crontab:
# grep PATH /etc/crontab
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
Ale kiedy użytkownicy mają to w swoim crontab:
$ crontab -l | grep PATH
* * * * * echo $PATH > /tmp/current_cron_path
... ujawnia, że ich ścieżka jest wciąż ustawiona na domyślną:
$ cat /tmp/current_cron_path
/usr/bin:/bin
echo
cronie jest prawdopodobnie zawodne .Odpowiedzi:
Możesz skonfigurować PATH w pliku konfiguracyjnym crontab, jak pokazano w pierwszym kodzie, chyba że tam . Najpierw określ zmienne env, a następnie zadania.
UPD: Ponieważ link jest zepsuty, oto fragment:
źródło
sudo crontab -e
Ustawienie zmiennej PATH powinno działać w Ubuntu, jak możesz powiedzieć, że nie działa?
Patrz nr 14: Linux Crontab: 15 świetnych przykładów zadań Crona
źródło
Nie mogłem też znaleźć rozwiązania tego problemu. Najbliższe mi godne rozwiązanie jest następujące (pochodzi z https://raymii.org/s/tutorials/Better_cron_env_and_shell_control_with_the_SHELL_variale.html ).
SHELL=/path/to/setup/cron.bash
Na przykład:
Wada: wymaga to określenia
SHELL=...
na górze każdego kumpla. Zaleta: będziesz używać zwykłych zmiennych środowiskowych i nie będziesz musiał się martwić o utrzymanie spójności między zmiennymi cron i innymiźródło
Jeśli możesz być rootem, czy możesz spróbować edytować
/etc/init.d/cron
i zmienić ŚCIEŻKĘ w tym miejscu? Nie testowałem tego, ale warto sprawdzić.źródło